react-native-theoplayer 1.7.1 → 1.7.2

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 (38) hide show
  1. package/android/src/main/java/com/theoplayer/VideoEventEmitter.java +148 -12
  2. package/android/src/main/java/com/theoplayer/track/MediaTrackEventType.java +11 -0
  3. package/android/src/main/java/com/theoplayer/track/MediaTrackType.java +11 -0
  4. package/android/src/main/java/com/theoplayer/track/TrackEventType.java +2 -1
  5. package/android/src/main/java/com/theoplayer/track/TrackListInfo.java +123 -101
  6. package/ios/THEOplayerRCTAdAggregator.swift +3 -0
  7. package/ios/THEOplayerRCTBridge.m +2 -0
  8. package/ios/THEOplayerRCTMetadataAggregator.swift +59 -45
  9. package/ios/THEOplayerRCTTrackEventTypes.swift +17 -0
  10. package/ios/THEOplayerRCTView.swift +27 -3
  11. package/ios/THEOplayerRCTViewAdEventHandler.swift +7 -5
  12. package/ios/THEOplayerRCTViewMediaTrackEventHandler.swift +185 -0
  13. package/ios/THEOplayerRCTViewTextTrackEventHandler.swift +26 -9
  14. package/lib/commonjs/api/THEOplayerView.js.map +1 -1
  15. package/lib/commonjs/api/event/TrackEvent.js +17 -1
  16. package/lib/commonjs/api/event/TrackEvent.js.map +1 -1
  17. package/lib/commonjs/internal/THEOplayerView.js +14 -0
  18. package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
  19. package/lib/commonjs/internal/THEOplayerView.web.js +71 -20
  20. package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
  21. package/lib/module/api/THEOplayerView.js.map +1 -1
  22. package/lib/module/api/event/TrackEvent.js +14 -0
  23. package/lib/module/api/event/TrackEvent.js.map +1 -1
  24. package/lib/module/internal/THEOplayerView.js +14 -0
  25. package/lib/module/internal/THEOplayerView.js.map +1 -1
  26. package/lib/module/internal/THEOplayerView.web.js +72 -21
  27. package/lib/module/internal/THEOplayerView.web.js.map +1 -1
  28. package/lib/typescript/lib/commonjs/api/event/TrackEvent.d.ts +4 -0
  29. package/lib/typescript/lib/module/api/event/TrackEvent.d.ts +2 -0
  30. package/lib/typescript/src/api/THEOplayerView.d.ts +11 -3
  31. package/lib/typescript/src/api/event/TrackEvent.d.ts +49 -3
  32. package/lib/typescript/src/internal/THEOplayerView.d.ts +5 -1
  33. package/lib/typescript/src/internal/THEOplayerView.web.d.ts +4 -1
  34. package/package.json +1 -1
  35. package/src/api/THEOplayerView.ts +13 -3
  36. package/src/api/event/TrackEvent.ts +58 -2
  37. package/src/internal/THEOplayerView.tsx +18 -0
  38. package/src/internal/THEOplayerView.web.tsx +80 -19
@@ -165,6 +165,18 @@ class THEOplayerView extends _react.PureComponent {
165
165
  }
166
166
  });
167
167
 
168
+ _defineProperty(this, "_onMediaTrackListEvent", event => {
169
+ if (this.props.onMediaTrackListEvent) {
170
+ this.props.onMediaTrackListEvent(event.nativeEvent);
171
+ }
172
+ });
173
+
174
+ _defineProperty(this, "_onMediaTrackEvent", event => {
175
+ if (this.props.onMediaTrackEvent) {
176
+ this.props.onMediaTrackEvent(event.nativeEvent);
177
+ }
178
+ });
179
+
168
180
  _defineProperty(this, "_onAdEvent", event => {
169
181
  if (this.props.onAdEvent) {
170
182
  this.props.onAdEvent(event.nativeEvent);
@@ -299,6 +311,8 @@ class THEOplayerView extends _react.PureComponent {
299
311
  onNativeSegmentNotFound: this._onSegmentNotFound,
300
312
  onNativeTextTrackListEvent: this._onTextTrackListEvent,
301
313
  onNativeTextTrackEvent: this._onTextTrackEvent,
314
+ onNativeMediaTrackListEvent: this._onMediaTrackListEvent,
315
+ onNativeMediaTrackEvent: this._onMediaTrackEvent,
302
316
  onNativeAdEvent: this._onAdEvent,
303
317
  onNativeFullscreenPlayerWillPresent: this._onFullscreenPlayerWillPresent,
304
318
  onNativeFullscreenPlayerDidPresent: this._onFullscreenPlayerDidPresent,
@@ -1 +1 @@
1
- {"version":3,"names":["THEOplayerView","PureComponent","constructor","props","reset","onSourceChange","maybeChangeBufferingState","onLoadStart","onLoadedData","event","onLoadedMetadata","nativeEvent","duration","decodeNanInf","error","setState","onError","onProgress","onPlay","onPlaying","onPause","onSeeking","onSeeked","onEnded","readyState","onReadyStateChange","onTimeUpdate","onDurationChange","onSegmentNotFound","onTextTrackListEvent","onTextTrackEvent","onAdEvent","onFullscreenPlayerWillPresent","onFullscreenPlayerDidPresent","onFullscreenPlayerWillDismiss","onFullscreenPlayerDidDismiss","_root","React","createRef","state","initialState","_adsApi","THEOplayerNativeAdsAPI","componentWillUnmount","Platform","OS","destroyTheoPlayer","node","findNodeHandle","current","command","UIManager","Commands","destroy","params","dispatchViewManagerCommand","seek","time","isNaN","Error","setNativeProps","nativeHandle","ads","nativeProps","isBuffering","wasBuffering","paused","newIsBuffering","onBufferingStateChange","buildWrapperProps","targetVideoQuality","Object","assign","Array","isArray","render","wrapperProps","styles","base","style","source","_onSourceChange","_onLoadStart","_onLoadedData","_onLoadedMetadata","_onError","_onProgress","_onPlay","_onPlaying","_onPause","_onSeeking","_onSeeked","_onEnded","_onReadStateChange","_onTimeUpdate","_onDurationChange","_onSegmentNotFound","_onTextTrackListEvent","_onTextTrackEvent","_onAdEvent","_onFullscreenPlayerWillPresent","_onFullscreenPlayerDidPresent","_onFullscreenPlayerWillDismiss","_onFullscreenPlayerDidDismiss","StyleSheet","absoluteFill","undefined","LINKING_ERROR","select","ios","default","ComponentName","THEOplayerRCTView","getViewManagerConfig","requireNativeComponent"],"sources":["THEOplayerView.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { findNodeHandle, StyleSheet, requireNativeComponent, View, UIManager, Platform, NativeSyntheticEvent, HostComponent } from 'react-native';\nimport type {\n DurationChangeEvent,\n ErrorEvent,\n LoadedMetadataEvent,\n ReadyStateChangeEvent,\n THEOplayerViewComponent,\n THEOplayerViewProps,\n TimeUpdateEvent,\n ProgressEvent,\n PlayerError,\n SegmentNotFoundEvent,\n TextTrackListEvent,\n TextTrackEvent,\n AdEvent,\n AdsAPI,\n} from 'react-native-theoplayer';\n\nimport styles from './THEOplayerView.style';\nimport type { SourceDescription } from 'react-native-theoplayer';\nimport { THEOplayerNativeAdsAPI } from './ads/THEOplayerNativeAdsAPI';\nimport { decodeNanInf } from './utils/TypeUtils';\n\ninterface THEOplayerRCTViewProps extends THEOplayerViewProps {\n ref: React.RefObject<THEOplayerViewNativeComponent>;\n src: SourceDescription;\n seek?: number;\n\n onNativeSourceChange: () => void;\n onNativeLoadStart: () => void;\n onNativeLoadedData: () => void;\n onNativeLoadedMetadata: (event: NativeSyntheticEvent<LoadedMetadataEvent>) => void;\n onNativeReadyStateChange?: (event: NativeSyntheticEvent<ReadyStateChangeEvent>) => void;\n onNativeError: (event: NativeSyntheticEvent<ErrorEvent>) => void;\n onNativeProgress: (event: NativeSyntheticEvent<ProgressEvent>) => void;\n onNativePlay: () => void;\n onNativePlaying: () => void;\n onNativePause: () => void;\n onNativeSeeking: () => void;\n onNativeSeeked: () => void;\n onNativeEnded: () => void;\n onNativeTimeUpdate: (event: NativeSyntheticEvent<TimeUpdateEvent>) => void;\n onNativeDurationChange: (event: NativeSyntheticEvent<DurationChangeEvent>) => void;\n onNativeSegmentNotFound: (event: NativeSyntheticEvent<SegmentNotFoundEvent>) => void;\n onNativeTextTrackListEvent: (event: NativeSyntheticEvent<TextTrackListEvent>) => void;\n onNativeTextTrackEvent: (event: NativeSyntheticEvent<TextTrackEvent>) => void;\n onNativeAdEvent: (event: NativeSyntheticEvent<AdEvent>) => void;\n onNativeFullscreenPlayerWillPresent?: () => void;\n onNativeFullscreenPlayerDidPresent?: () => void;\n onNativeFullscreenPlayerWillDismiss?: () => void;\n onNativeFullscreenPlayerDidDismiss?: () => void;\n}\n\ninterface THEOplayerRCTViewState {\n isBuffering: boolean;\n error?: PlayerError;\n}\n\ninterface THEOplayerViewNativeComponent extends THEOplayerViewComponent, HostComponent<THEOplayerViewProps> {\n setNativeProps: (props: Partial<THEOplayerRCTViewProps>) => void;\n}\n\nexport class THEOplayerView extends PureComponent<THEOplayerViewProps, THEOplayerRCTViewState> implements THEOplayerViewComponent {\n private readonly _root: React.RefObject<THEOplayerViewNativeComponent>;\n private readonly _adsApi: THEOplayerNativeAdsAPI;\n\n private static initialState: THEOplayerRCTViewState = {\n isBuffering: false,\n error: undefined,\n };\n\n constructor(props: THEOplayerRCTViewProps) {\n super(props);\n this._root = React.createRef();\n this.state = THEOplayerView.initialState;\n this._adsApi = new THEOplayerNativeAdsAPI(this);\n }\n\n componentWillUnmount() {\n if (Platform.OS === 'ios') {\n // on iOS, we trigger an explicit 'destroy' to clean up the underlying THEOplayer\n this.destroyTheoPlayer();\n }\n }\n\n private destroyTheoPlayer() {\n const node = findNodeHandle(this._root.current);\n const command = (UIManager as { [index: string]: any })['THEOplayerRCTView'].Commands.destroy;\n const params: any[] = [];\n UIManager.dispatchViewManagerCommand(node, command, params);\n }\n\n public seek(time: number): void {\n if (isNaN(time)) {\n throw new Error('Specified time is not a number');\n }\n this.setNativeProps({ seek: time });\n }\n\n public get nativeHandle(): number | null {\n return findNodeHandle(this._root.current);\n }\n\n public get ads(): AdsAPI {\n return this._adsApi;\n }\n\n private reset() {\n this.setState(THEOplayerView.initialState);\n }\n\n private setNativeProps(nativeProps: Partial<THEOplayerRCTViewProps>) {\n if (this._root?.current) {\n this._root.current.setNativeProps(nativeProps);\n }\n }\n\n private maybeChangeBufferingState(isBuffering: boolean) {\n const { isBuffering: wasBuffering, error } = this.state;\n const { paused } = this.props;\n\n // do not change state to buffering in case of an error or if the player is paused\n const newIsBuffering = isBuffering && !error && !paused;\n this.setState({ isBuffering: newIsBuffering });\n\n // notify change in buffering state\n if (newIsBuffering !== wasBuffering && this.props.onBufferingStateChange) {\n this.props.onBufferingStateChange(isBuffering);\n }\n }\n\n private _onSourceChange = () => {\n this.reset();\n\n if (this.props.onSourceChange) {\n this.props.onSourceChange();\n }\n };\n\n private _onLoadStart = () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(true);\n\n if (this.props.onLoadStart) {\n this.props.onLoadStart();\n }\n };\n\n private _onLoadedData = () => {\n if (this.props.onLoadedData) {\n this.props.onLoadedData();\n }\n };\n\n private _onLoadedMetadata = (event: NativeSyntheticEvent<LoadedMetadataEvent>) => {\n if (this.props.onLoadedMetadata) {\n this.props.onLoadedMetadata({\n ...event.nativeEvent,\n duration: decodeNanInf(event.nativeEvent.duration),\n });\n }\n };\n\n private _onError = (event: NativeSyntheticEvent<ErrorEvent>) => {\n const { error } = event.nativeEvent;\n this.setState({ error });\n\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n if (this.props.onError) {\n this.props.onError(event.nativeEvent);\n }\n };\n\n private _onProgress = (event: NativeSyntheticEvent<ProgressEvent>) => {\n if (this.props.onProgress) {\n this.props.onProgress(event.nativeEvent);\n }\n };\n\n private _onPlay = () => {\n if (this.props.onPlay) {\n this.props.onPlay();\n }\n };\n\n private _onPlaying = () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n if (this.props.onPlaying) {\n this.props.onPlaying();\n }\n };\n\n private _onPause = () => {\n if (this.props.onPause) {\n this.props.onPause();\n }\n };\n\n private _onSeeking = () => {\n if (this.props.onSeeking) {\n this.props.onSeeking();\n }\n };\n\n private _onSeeked = () => {\n if (this.props.onSeeked) {\n this.props.onSeeked();\n }\n };\n\n private _onEnded = () => {\n if (this.props.onEnded) {\n this.props.onEnded();\n }\n };\n\n private _onReadStateChange = (event: NativeSyntheticEvent<ReadyStateChangeEvent>) => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(event.nativeEvent.readyState < 3);\n\n if (this.props.onReadyStateChange) {\n this.props.onReadyStateChange(event.nativeEvent);\n }\n };\n\n private _onTimeUpdate = (event: NativeSyntheticEvent<TimeUpdateEvent>) => {\n if (this.props.onTimeUpdate) {\n this.props.onTimeUpdate(event.nativeEvent);\n }\n };\n\n private _onDurationChange = (event: NativeSyntheticEvent<DurationChangeEvent>) => {\n if (this.props.onDurationChange) {\n this.props.onDurationChange({\n duration: decodeNanInf(event.nativeEvent.duration),\n });\n }\n };\n\n private _onSegmentNotFound = (event: NativeSyntheticEvent<SegmentNotFoundEvent>) => {\n if (this.props.onSegmentNotFound) {\n this.props.onSegmentNotFound(event.nativeEvent);\n }\n };\n\n private _onTextTrackListEvent = (event: NativeSyntheticEvent<TextTrackListEvent>) => {\n if (this.props.onTextTrackListEvent) {\n this.props.onTextTrackListEvent(event.nativeEvent);\n }\n };\n\n private _onTextTrackEvent = (event: NativeSyntheticEvent<TextTrackEvent>) => {\n if (this.props.onTextTrackEvent) {\n this.props.onTextTrackEvent(event.nativeEvent);\n }\n };\n\n private _onAdEvent = (event: NativeSyntheticEvent<AdEvent>) => {\n if (this.props.onAdEvent) {\n this.props.onAdEvent(event.nativeEvent);\n }\n };\n\n private _onFullscreenPlayerWillPresent = () => {\n if (this.props.onFullscreenPlayerWillPresent) {\n this.props.onFullscreenPlayerWillPresent();\n }\n };\n\n private _onFullscreenPlayerDidPresent = () => {\n if (this.props.onFullscreenPlayerDidPresent) {\n this.props.onFullscreenPlayerDidPresent();\n }\n };\n\n private _onFullscreenPlayerWillDismiss = () => {\n if (this.props.onFullscreenPlayerWillDismiss) {\n this.props.onFullscreenPlayerWillDismiss();\n }\n };\n\n private _onFullscreenPlayerDidDismiss = () => {\n if (this.props.onFullscreenPlayerDidDismiss) {\n this.props.onFullscreenPlayerDidDismiss();\n }\n };\n\n private buildWrapperProps(): THEOplayerViewProps {\n const { targetVideoQuality } = this.props;\n return Object.assign(\n {},\n {\n ...this.props,\n // Always pass an array for targetVideoQuality.\n targetVideoQuality: !targetVideoQuality ? [] : Array.isArray(targetVideoQuality) ? targetVideoQuality : [targetVideoQuality],\n },\n );\n }\n\n public render(): JSX.Element {\n const wrapperProps = this.buildWrapperProps();\n return (\n <View style={[styles.base, wrapperProps.style]}>\n <THEOplayerRCTView\n ref={this._root}\n src={this.props.source || {}}\n onNativeSourceChange={this._onSourceChange}\n onNativeLoadStart={this._onLoadStart}\n onNativeLoadedData={this._onLoadedData}\n onNativeLoadedMetadata={this._onLoadedMetadata}\n onNativeError={this._onError}\n onNativeProgress={this._onProgress}\n onNativePlay={this._onPlay}\n onNativePlaying={this._onPlaying}\n onNativePause={this._onPause}\n onNativeSeeking={this._onSeeking}\n onNativeSeeked={this._onSeeked}\n onNativeEnded={this._onEnded}\n onNativeReadyStateChange={this._onReadStateChange}\n onNativeTimeUpdate={this._onTimeUpdate}\n onNativeDurationChange={this._onDurationChange}\n onNativeSegmentNotFound={this._onSegmentNotFound}\n onNativeTextTrackListEvent={this._onTextTrackListEvent}\n onNativeTextTrackEvent={this._onTextTrackEvent}\n onNativeAdEvent={this._onAdEvent}\n onNativeFullscreenPlayerWillPresent={this._onFullscreenPlayerWillPresent}\n onNativeFullscreenPlayerDidPresent={this._onFullscreenPlayerDidPresent}\n onNativeFullscreenPlayerWillDismiss={this._onFullscreenPlayerWillDismiss}\n onNativeFullscreenPlayerDidDismiss={this._onFullscreenPlayerDidDismiss}\n style={StyleSheet.absoluteFill}\n {...wrapperProps}\n />\n </View>\n );\n }\n}\n\nconst LINKING_ERROR =\n `The package 'react-native-theoplayer' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nconst ComponentName = 'THEOplayerRCTView';\n\nconst THEOplayerRCTView =\n UIManager.getViewManagerConfig(ComponentName) != null\n ? requireNativeComponent<THEOplayerRCTViewProps>(ComponentName)\n : () => {\n throw new Error(LINKING_ERROR);\n };\n"],"mappings":";;;;;;;AAAA;;AACA;;AAkBA;;AAEA;;AACA;;;;;;;;;;;;AAyCO,MAAMA,cAAN,SAA6BC,oBAA7B,CAA2H;EAShIC,WAAW,CAACC,KAAD,EAAgC;IACzC,MAAMA,KAAN;;IADyC;;IAAA;;IAAA,yCA4DjB,MAAM;MAC9B,KAAKC,KAAL;;MAEA,IAAI,KAAKD,KAAL,CAAWE,cAAf,EAA+B;QAC7B,KAAKF,KAAL,CAAWE,cAAX;MACD;IACF,CAlE0C;;IAAA,sCAoEpB,MAAM;MAC3B;MACA,KAAKC,yBAAL,CAA+B,IAA/B;;MAEA,IAAI,KAAKH,KAAL,CAAWI,WAAf,EAA4B;QAC1B,KAAKJ,KAAL,CAAWI,WAAX;MACD;IACF,CA3E0C;;IAAA,uCA6EnB,MAAM;MAC5B,IAAI,KAAKJ,KAAL,CAAWK,YAAf,EAA6B;QAC3B,KAAKL,KAAL,CAAWK,YAAX;MACD;IACF,CAjF0C;;IAAA,2CAmFdC,KAAD,IAAsD;MAChF,IAAI,KAAKN,KAAL,CAAWO,gBAAf,EAAiC;QAC/B,KAAKP,KAAL,CAAWO,gBAAX,CAA4B,EAC1B,GAAGD,KAAK,CAACE,WADiB;UAE1BC,QAAQ,EAAE,IAAAC,uBAAA,EAAaJ,KAAK,CAACE,WAAN,CAAkBC,QAA/B;QAFgB,CAA5B;MAID;IACF,CA1F0C;;IAAA,kCA4FvBH,KAAD,IAA6C;MAC9D,MAAM;QAAEK;MAAF,IAAYL,KAAK,CAACE,WAAxB;MACA,KAAKI,QAAL,CAAc;QAAED;MAAF,CAAd,EAF8D,CAI9D;;MACA,KAAKR,yBAAL,CAA+B,KAA/B;;MAEA,IAAI,KAAKH,KAAL,CAAWa,OAAf,EAAwB;QACtB,KAAKb,KAAL,CAAWa,OAAX,CAAmBP,KAAK,CAACE,WAAzB;MACD;IACF,CAtG0C;;IAAA,qCAwGpBF,KAAD,IAAgD;MACpE,IAAI,KAAKN,KAAL,CAAWc,UAAf,EAA2B;QACzB,KAAKd,KAAL,CAAWc,UAAX,CAAsBR,KAAK,CAACE,WAA5B;MACD;IACF,CA5G0C;;IAAA,iCA8GzB,MAAM;MACtB,IAAI,KAAKR,KAAL,CAAWe,MAAf,EAAuB;QACrB,KAAKf,KAAL,CAAWe,MAAX;MACD;IACF,CAlH0C;;IAAA,oCAoHtB,MAAM;MACzB;MACA,KAAKZ,yBAAL,CAA+B,KAA/B;;MAEA,IAAI,KAAKH,KAAL,CAAWgB,SAAf,EAA0B;QACxB,KAAKhB,KAAL,CAAWgB,SAAX;MACD;IACF,CA3H0C;;IAAA,kCA6HxB,MAAM;MACvB,IAAI,KAAKhB,KAAL,CAAWiB,OAAf,EAAwB;QACtB,KAAKjB,KAAL,CAAWiB,OAAX;MACD;IACF,CAjI0C;;IAAA,oCAmItB,MAAM;MACzB,IAAI,KAAKjB,KAAL,CAAWkB,SAAf,EAA0B;QACxB,KAAKlB,KAAL,CAAWkB,SAAX;MACD;IACF,CAvI0C;;IAAA,mCAyIvB,MAAM;MACxB,IAAI,KAAKlB,KAAL,CAAWmB,QAAf,EAAyB;QACvB,KAAKnB,KAAL,CAAWmB,QAAX;MACD;IACF,CA7I0C;;IAAA,kCA+IxB,MAAM;MACvB,IAAI,KAAKnB,KAAL,CAAWoB,OAAf,EAAwB;QACtB,KAAKpB,KAAL,CAAWoB,OAAX;MACD;IACF,CAnJ0C;;IAAA,4CAqJbd,KAAD,IAAwD;MACnF;MACA,KAAKH,yBAAL,CAA+BG,KAAK,CAACE,WAAN,CAAkBa,UAAlB,GAA+B,CAA9D;;MAEA,IAAI,KAAKrB,KAAL,CAAWsB,kBAAf,EAAmC;QACjC,KAAKtB,KAAL,CAAWsB,kBAAX,CAA8BhB,KAAK,CAACE,WAApC;MACD;IACF,CA5J0C;;IAAA,uCA8JlBF,KAAD,IAAkD;MACxE,IAAI,KAAKN,KAAL,CAAWuB,YAAf,EAA6B;QAC3B,KAAKvB,KAAL,CAAWuB,YAAX,CAAwBjB,KAAK,CAACE,WAA9B;MACD;IACF,CAlK0C;;IAAA,2CAoKdF,KAAD,IAAsD;MAChF,IAAI,KAAKN,KAAL,CAAWwB,gBAAf,EAAiC;QAC/B,KAAKxB,KAAL,CAAWwB,gBAAX,CAA4B;UAC1Bf,QAAQ,EAAE,IAAAC,uBAAA,EAAaJ,KAAK,CAACE,WAAN,CAAkBC,QAA/B;QADgB,CAA5B;MAGD;IACF,CA1K0C;;IAAA,4CA4KbH,KAAD,IAAuD;MAClF,IAAI,KAAKN,KAAL,CAAWyB,iBAAf,EAAkC;QAChC,KAAKzB,KAAL,CAAWyB,iBAAX,CAA6BnB,KAAK,CAACE,WAAnC;MACD;IACF,CAhL0C;;IAAA,+CAkLVF,KAAD,IAAqD;MACnF,IAAI,KAAKN,KAAL,CAAW0B,oBAAf,EAAqC;QACnC,KAAK1B,KAAL,CAAW0B,oBAAX,CAAgCpB,KAAK,CAACE,WAAtC;MACD;IACF,CAtL0C;;IAAA,2CAwLdF,KAAD,IAAiD;MAC3E,IAAI,KAAKN,KAAL,CAAW2B,gBAAf,EAAiC;QAC/B,KAAK3B,KAAL,CAAW2B,gBAAX,CAA4BrB,KAAK,CAACE,WAAlC;MACD;IACF,CA5L0C;;IAAA,oCA8LrBF,KAAD,IAA0C;MAC7D,IAAI,KAAKN,KAAL,CAAW4B,SAAf,EAA0B;QACxB,KAAK5B,KAAL,CAAW4B,SAAX,CAAqBtB,KAAK,CAACE,WAA3B;MACD;IACF,CAlM0C;;IAAA,wDAoMF,MAAM;MAC7C,IAAI,KAAKR,KAAL,CAAW6B,6BAAf,EAA8C;QAC5C,KAAK7B,KAAL,CAAW6B,6BAAX;MACD;IACF,CAxM0C;;IAAA,uDA0MH,MAAM;MAC5C,IAAI,KAAK7B,KAAL,CAAW8B,4BAAf,EAA6C;QAC3C,KAAK9B,KAAL,CAAW8B,4BAAX;MACD;IACF,CA9M0C;;IAAA,wDAgNF,MAAM;MAC7C,IAAI,KAAK9B,KAAL,CAAW+B,6BAAf,EAA8C;QAC5C,KAAK/B,KAAL,CAAW+B,6BAAX;MACD;IACF,CApN0C;;IAAA,uDAsNH,MAAM;MAC5C,IAAI,KAAK/B,KAAL,CAAWgC,4BAAf,EAA6C;QAC3C,KAAKhC,KAAL,CAAWgC,4BAAX;MACD;IACF,CA1N0C;;IAEzC,KAAKC,KAAL,gBAAaC,cAAA,CAAMC,SAAN,EAAb;IACA,KAAKC,KAAL,GAAavC,cAAc,CAACwC,YAA5B;IACA,KAAKC,OAAL,GAAe,IAAIC,8CAAJ,CAA2B,IAA3B,CAAf;EACD;;EAEDC,oBAAoB,GAAG;IACrB,IAAIC,qBAAA,CAASC,EAAT,KAAgB,KAApB,EAA2B;MACzB;MACA,KAAKC,iBAAL;IACD;EACF;;EAEOA,iBAAiB,GAAG;IAC1B,MAAMC,IAAI,GAAG,IAAAC,2BAAA,EAAe,KAAKZ,KAAL,CAAWa,OAA1B,CAAb;IACA,MAAMC,OAAO,GAAIC,sBAAD,CAAwC,mBAAxC,EAA6DC,QAA7D,CAAsEC,OAAtF;IACA,MAAMC,MAAa,GAAG,EAAtB;;IACAH,sBAAA,CAAUI,0BAAV,CAAqCR,IAArC,EAA2CG,OAA3C,EAAoDI,MAApD;EACD;;EAEME,IAAI,CAACC,IAAD,EAAqB;IAC9B,IAAIC,KAAK,CAACD,IAAD,CAAT,EAAiB;MACf,MAAM,IAAIE,KAAJ,CAAU,gCAAV,CAAN;IACD;;IACD,KAAKC,cAAL,CAAoB;MAAEJ,IAAI,EAAEC;IAAR,CAApB;EACD;;EAEsB,IAAZI,YAAY,GAAkB;IACvC,OAAO,IAAAb,2BAAA,EAAe,KAAKZ,KAAL,CAAWa,OAA1B,CAAP;EACD;;EAEa,IAAHa,GAAG,GAAW;IACvB,OAAO,KAAKrB,OAAZ;EACD;;EAEOrC,KAAK,GAAG;IACd,KAAKW,QAAL,CAAcf,cAAc,CAACwC,YAA7B;EACD;;EAEOoB,cAAc,CAACG,WAAD,EAA+C;IAAA;;IACnE,mBAAI,KAAK3B,KAAT,wCAAI,YAAYa,OAAhB,EAAyB;MACvB,KAAKb,KAAL,CAAWa,OAAX,CAAmBW,cAAnB,CAAkCG,WAAlC;IACD;EACF;;EAEOzD,yBAAyB,CAAC0D,WAAD,EAAuB;IACtD,MAAM;MAAEA,WAAW,EAAEC,YAAf;MAA6BnD;IAA7B,IAAuC,KAAKyB,KAAlD;IACA,MAAM;MAAE2B;IAAF,IAAa,KAAK/D,KAAxB,CAFsD,CAItD;;IACA,MAAMgE,cAAc,GAAGH,WAAW,IAAI,CAAClD,KAAhB,IAAyB,CAACoD,MAAjD;IACA,KAAKnD,QAAL,CAAc;MAAEiD,WAAW,EAAEG;IAAf,CAAd,EANsD,CAQtD;;IACA,IAAIA,cAAc,KAAKF,YAAnB,IAAmC,KAAK9D,KAAL,CAAWiE,sBAAlD,EAA0E;MACxE,KAAKjE,KAAL,CAAWiE,sBAAX,CAAkCJ,WAAlC;IACD;EACF;;EAkKOK,iBAAiB,GAAwB;IAC/C,MAAM;MAAEC;IAAF,IAAyB,KAAKnE,KAApC;IACA,OAAOoE,MAAM,CAACC,MAAP,CACL,EADK,EAEL,EACE,GAAG,KAAKrE,KADV;MAEE;MACAmE,kBAAkB,EAAE,CAACA,kBAAD,GAAsB,EAAtB,GAA2BG,KAAK,CAACC,OAAN,CAAcJ,kBAAd,IAAoCA,kBAApC,GAAyD,CAACA,kBAAD;IAH1G,CAFK,CAAP;EAQD;;EAEMK,MAAM,GAAgB;IAC3B,MAAMC,YAAY,GAAG,KAAKP,iBAAL,EAArB;IACA,oBACE,6BAAC,iBAAD;MAAM,KAAK,EAAE,CAACQ,uBAAA,CAAOC,IAAR,EAAcF,YAAY,CAACG,KAA3B;IAAb,gBACE,6BAAC,iBAAD;MACE,GAAG,EAAE,KAAK3C,KADZ;MAEE,GAAG,EAAE,KAAKjC,KAAL,CAAW6E,MAAX,IAAqB,EAF5B;MAGE,oBAAoB,EAAE,KAAKC,eAH7B;MAIE,iBAAiB,EAAE,KAAKC,YAJ1B;MAKE,kBAAkB,EAAE,KAAKC,aAL3B;MAME,sBAAsB,EAAE,KAAKC,iBAN/B;MAOE,aAAa,EAAE,KAAKC,QAPtB;MAQE,gBAAgB,EAAE,KAAKC,WARzB;MASE,YAAY,EAAE,KAAKC,OATrB;MAUE,eAAe,EAAE,KAAKC,UAVxB;MAWE,aAAa,EAAE,KAAKC,QAXtB;MAYE,eAAe,EAAE,KAAKC,UAZxB;MAaE,cAAc,EAAE,KAAKC,SAbvB;MAcE,aAAa,EAAE,KAAKC,QAdtB;MAeE,wBAAwB,EAAE,KAAKC,kBAfjC;MAgBE,kBAAkB,EAAE,KAAKC,aAhB3B;MAiBE,sBAAsB,EAAE,KAAKC,iBAjB/B;MAkBE,uBAAuB,EAAE,KAAKC,kBAlBhC;MAmBE,0BAA0B,EAAE,KAAKC,qBAnBnC;MAoBE,sBAAsB,EAAE,KAAKC,iBApB/B;MAqBE,eAAe,EAAE,KAAKC,UArBxB;MAsBE,mCAAmC,EAAE,KAAKC,8BAtB5C;MAuBE,kCAAkC,EAAE,KAAKC,6BAvB3C;MAwBE,mCAAmC,EAAE,KAAKC,8BAxB5C;MAyBE,kCAAkC,EAAE,KAAKC,6BAzB3C;MA0BE,KAAK,EAAEC,uBAAA,CAAWC;IA1BpB,GA2BM7B,YA3BN,EADF,CADF;EAiCD;;AApR+H;;;;gBAArH5E,c,kBAI2C;EACpDgE,WAAW,EAAE,KADuC;EAEpDlD,KAAK,EAAE4F;AAF6C,C;;AAmRxD,MAAMC,aAAa,GAChB,kFAAD,GACA/D,qBAAA,CAASgE,MAAT,CAAgB;EAAEC,GAAG,EAAE,gCAAP;EAAyCC,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJF;AAMA,MAAMC,aAAa,GAAG,mBAAtB;AAEA,MAAMC,iBAAiB,GACrB7D,sBAAA,CAAU8D,oBAAV,CAA+BF,aAA/B,KAAiD,IAAjD,GACI,IAAAG,mCAAA,EAA+CH,aAA/C,CADJ,GAEI,MAAM;EACJ,MAAM,IAAIpD,KAAJ,CAAUgD,aAAV,CAAN;AACD,CALP"}
1
+ {"version":3,"names":["THEOplayerView","PureComponent","constructor","props","reset","onSourceChange","maybeChangeBufferingState","onLoadStart","onLoadedData","event","onLoadedMetadata","nativeEvent","duration","decodeNanInf","error","setState","onError","onProgress","onPlay","onPlaying","onPause","onSeeking","onSeeked","onEnded","readyState","onReadyStateChange","onTimeUpdate","onDurationChange","onSegmentNotFound","onTextTrackListEvent","onTextTrackEvent","onMediaTrackListEvent","onMediaTrackEvent","onAdEvent","onFullscreenPlayerWillPresent","onFullscreenPlayerDidPresent","onFullscreenPlayerWillDismiss","onFullscreenPlayerDidDismiss","_root","React","createRef","state","initialState","_adsApi","THEOplayerNativeAdsAPI","componentWillUnmount","Platform","OS","destroyTheoPlayer","node","findNodeHandle","current","command","UIManager","Commands","destroy","params","dispatchViewManagerCommand","seek","time","isNaN","Error","setNativeProps","nativeHandle","ads","nativeProps","isBuffering","wasBuffering","paused","newIsBuffering","onBufferingStateChange","buildWrapperProps","targetVideoQuality","Object","assign","Array","isArray","render","wrapperProps","styles","base","style","source","_onSourceChange","_onLoadStart","_onLoadedData","_onLoadedMetadata","_onError","_onProgress","_onPlay","_onPlaying","_onPause","_onSeeking","_onSeeked","_onEnded","_onReadStateChange","_onTimeUpdate","_onDurationChange","_onSegmentNotFound","_onTextTrackListEvent","_onTextTrackEvent","_onMediaTrackListEvent","_onMediaTrackEvent","_onAdEvent","_onFullscreenPlayerWillPresent","_onFullscreenPlayerDidPresent","_onFullscreenPlayerWillDismiss","_onFullscreenPlayerDidDismiss","StyleSheet","absoluteFill","undefined","LINKING_ERROR","select","ios","default","ComponentName","THEOplayerRCTView","getViewManagerConfig","requireNativeComponent"],"sources":["THEOplayerView.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { findNodeHandle, StyleSheet, requireNativeComponent, View, UIManager, Platform, NativeSyntheticEvent, HostComponent } from 'react-native';\nimport type {\n DurationChangeEvent,\n ErrorEvent,\n LoadedMetadataEvent,\n ReadyStateChangeEvent,\n THEOplayerViewComponent,\n THEOplayerViewProps,\n TimeUpdateEvent,\n ProgressEvent,\n PlayerError,\n SegmentNotFoundEvent,\n TextTrackListEvent,\n TextTrackEvent,\n AdEvent,\n AdsAPI,\n MediaTrackEvent,\n MediaTrackListEvent,\n} from 'react-native-theoplayer';\n\nimport styles from './THEOplayerView.style';\nimport type { SourceDescription } from 'react-native-theoplayer';\nimport { THEOplayerNativeAdsAPI } from './ads/THEOplayerNativeAdsAPI';\nimport { decodeNanInf } from './utils/TypeUtils';\n\ninterface THEOplayerRCTViewProps extends THEOplayerViewProps {\n ref: React.RefObject<THEOplayerViewNativeComponent>;\n src: SourceDescription;\n seek?: number;\n\n onNativeSourceChange: () => void;\n onNativeLoadStart: () => void;\n onNativeLoadedData: () => void;\n onNativeLoadedMetadata: (event: NativeSyntheticEvent<LoadedMetadataEvent>) => void;\n onNativeReadyStateChange?: (event: NativeSyntheticEvent<ReadyStateChangeEvent>) => void;\n onNativeError: (event: NativeSyntheticEvent<ErrorEvent>) => void;\n onNativeProgress: (event: NativeSyntheticEvent<ProgressEvent>) => void;\n onNativePlay: () => void;\n onNativePlaying: () => void;\n onNativePause: () => void;\n onNativeSeeking: () => void;\n onNativeSeeked: () => void;\n onNativeEnded: () => void;\n onNativeTimeUpdate: (event: NativeSyntheticEvent<TimeUpdateEvent>) => void;\n onNativeDurationChange: (event: NativeSyntheticEvent<DurationChangeEvent>) => void;\n onNativeSegmentNotFound: (event: NativeSyntheticEvent<SegmentNotFoundEvent>) => void;\n onNativeTextTrackListEvent: (event: NativeSyntheticEvent<TextTrackListEvent>) => void;\n onNativeTextTrackEvent: (event: NativeSyntheticEvent<TextTrackEvent>) => void;\n onNativeMediaTrackListEvent: (event: NativeSyntheticEvent<MediaTrackListEvent>) => void;\n onNativeMediaTrackEvent: (event: NativeSyntheticEvent<MediaTrackEvent>) => void;\n onNativeAdEvent: (event: NativeSyntheticEvent<AdEvent>) => void;\n onNativeFullscreenPlayerWillPresent?: () => void;\n onNativeFullscreenPlayerDidPresent?: () => void;\n onNativeFullscreenPlayerWillDismiss?: () => void;\n onNativeFullscreenPlayerDidDismiss?: () => void;\n}\n\ninterface THEOplayerRCTViewState {\n isBuffering: boolean;\n error?: PlayerError;\n}\n\ninterface THEOplayerViewNativeComponent extends THEOplayerViewComponent, HostComponent<THEOplayerViewProps> {\n setNativeProps: (props: Partial<THEOplayerRCTViewProps>) => void;\n}\n\nexport class THEOplayerView extends PureComponent<THEOplayerViewProps, THEOplayerRCTViewState> implements THEOplayerViewComponent {\n private readonly _root: React.RefObject<THEOplayerViewNativeComponent>;\n private readonly _adsApi: THEOplayerNativeAdsAPI;\n\n private static initialState: THEOplayerRCTViewState = {\n isBuffering: false,\n error: undefined,\n };\n\n constructor(props: THEOplayerRCTViewProps) {\n super(props);\n this._root = React.createRef();\n this.state = THEOplayerView.initialState;\n this._adsApi = new THEOplayerNativeAdsAPI(this);\n }\n\n componentWillUnmount() {\n if (Platform.OS === 'ios') {\n // on iOS, we trigger an explicit 'destroy' to clean up the underlying THEOplayer\n this.destroyTheoPlayer();\n }\n }\n\n private destroyTheoPlayer() {\n const node = findNodeHandle(this._root.current);\n const command = (UIManager as { [index: string]: any })['THEOplayerRCTView'].Commands.destroy;\n const params: any[] = [];\n UIManager.dispatchViewManagerCommand(node, command, params);\n }\n\n public seek(time: number): void {\n if (isNaN(time)) {\n throw new Error('Specified time is not a number');\n }\n this.setNativeProps({ seek: time });\n }\n\n public get nativeHandle(): number | null {\n return findNodeHandle(this._root.current);\n }\n\n public get ads(): AdsAPI {\n return this._adsApi;\n }\n\n private reset() {\n this.setState(THEOplayerView.initialState);\n }\n\n private setNativeProps(nativeProps: Partial<THEOplayerRCTViewProps>) {\n if (this._root?.current) {\n this._root.current.setNativeProps(nativeProps);\n }\n }\n\n private maybeChangeBufferingState(isBuffering: boolean) {\n const { isBuffering: wasBuffering, error } = this.state;\n const { paused } = this.props;\n\n // do not change state to buffering in case of an error or if the player is paused\n const newIsBuffering = isBuffering && !error && !paused;\n this.setState({ isBuffering: newIsBuffering });\n\n // notify change in buffering state\n if (newIsBuffering !== wasBuffering && this.props.onBufferingStateChange) {\n this.props.onBufferingStateChange(isBuffering);\n }\n }\n\n private _onSourceChange = () => {\n this.reset();\n\n if (this.props.onSourceChange) {\n this.props.onSourceChange();\n }\n };\n\n private _onLoadStart = () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(true);\n\n if (this.props.onLoadStart) {\n this.props.onLoadStart();\n }\n };\n\n private _onLoadedData = () => {\n if (this.props.onLoadedData) {\n this.props.onLoadedData();\n }\n };\n\n private _onLoadedMetadata = (event: NativeSyntheticEvent<LoadedMetadataEvent>) => {\n if (this.props.onLoadedMetadata) {\n this.props.onLoadedMetadata({\n ...event.nativeEvent,\n duration: decodeNanInf(event.nativeEvent.duration),\n });\n }\n };\n\n private _onError = (event: NativeSyntheticEvent<ErrorEvent>) => {\n const { error } = event.nativeEvent;\n this.setState({ error });\n\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n if (this.props.onError) {\n this.props.onError(event.nativeEvent);\n }\n };\n\n private _onProgress = (event: NativeSyntheticEvent<ProgressEvent>) => {\n if (this.props.onProgress) {\n this.props.onProgress(event.nativeEvent);\n }\n };\n\n private _onPlay = () => {\n if (this.props.onPlay) {\n this.props.onPlay();\n }\n };\n\n private _onPlaying = () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n if (this.props.onPlaying) {\n this.props.onPlaying();\n }\n };\n\n private _onPause = () => {\n if (this.props.onPause) {\n this.props.onPause();\n }\n };\n\n private _onSeeking = () => {\n if (this.props.onSeeking) {\n this.props.onSeeking();\n }\n };\n\n private _onSeeked = () => {\n if (this.props.onSeeked) {\n this.props.onSeeked();\n }\n };\n\n private _onEnded = () => {\n if (this.props.onEnded) {\n this.props.onEnded();\n }\n };\n\n private _onReadStateChange = (event: NativeSyntheticEvent<ReadyStateChangeEvent>) => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(event.nativeEvent.readyState < 3);\n\n if (this.props.onReadyStateChange) {\n this.props.onReadyStateChange(event.nativeEvent);\n }\n };\n\n private _onTimeUpdate = (event: NativeSyntheticEvent<TimeUpdateEvent>) => {\n if (this.props.onTimeUpdate) {\n this.props.onTimeUpdate(event.nativeEvent);\n }\n };\n\n private _onDurationChange = (event: NativeSyntheticEvent<DurationChangeEvent>) => {\n if (this.props.onDurationChange) {\n this.props.onDurationChange({\n duration: decodeNanInf(event.nativeEvent.duration),\n });\n }\n };\n\n private _onSegmentNotFound = (event: NativeSyntheticEvent<SegmentNotFoundEvent>) => {\n if (this.props.onSegmentNotFound) {\n this.props.onSegmentNotFound(event.nativeEvent);\n }\n };\n\n private _onTextTrackListEvent = (event: NativeSyntheticEvent<TextTrackListEvent>) => {\n if (this.props.onTextTrackListEvent) {\n this.props.onTextTrackListEvent(event.nativeEvent);\n }\n };\n\n private _onTextTrackEvent = (event: NativeSyntheticEvent<TextTrackEvent>) => {\n if (this.props.onTextTrackEvent) {\n this.props.onTextTrackEvent(event.nativeEvent);\n }\n };\n\n private _onMediaTrackListEvent = (event: NativeSyntheticEvent<MediaTrackListEvent>) => {\n if (this.props.onMediaTrackListEvent) {\n this.props.onMediaTrackListEvent(event.nativeEvent);\n }\n };\n\n private _onMediaTrackEvent = (event: NativeSyntheticEvent<MediaTrackEvent>) => {\n if (this.props.onMediaTrackEvent) {\n this.props.onMediaTrackEvent(event.nativeEvent);\n }\n };\n\n private _onAdEvent = (event: NativeSyntheticEvent<AdEvent>) => {\n if (this.props.onAdEvent) {\n this.props.onAdEvent(event.nativeEvent);\n }\n };\n\n private _onFullscreenPlayerWillPresent = () => {\n if (this.props.onFullscreenPlayerWillPresent) {\n this.props.onFullscreenPlayerWillPresent();\n }\n };\n\n private _onFullscreenPlayerDidPresent = () => {\n if (this.props.onFullscreenPlayerDidPresent) {\n this.props.onFullscreenPlayerDidPresent();\n }\n };\n\n private _onFullscreenPlayerWillDismiss = () => {\n if (this.props.onFullscreenPlayerWillDismiss) {\n this.props.onFullscreenPlayerWillDismiss();\n }\n };\n\n private _onFullscreenPlayerDidDismiss = () => {\n if (this.props.onFullscreenPlayerDidDismiss) {\n this.props.onFullscreenPlayerDidDismiss();\n }\n };\n\n private buildWrapperProps(): THEOplayerViewProps {\n const { targetVideoQuality } = this.props;\n return Object.assign(\n {},\n {\n ...this.props,\n // Always pass an array for targetVideoQuality.\n targetVideoQuality: !targetVideoQuality ? [] : Array.isArray(targetVideoQuality) ? targetVideoQuality : [targetVideoQuality],\n },\n );\n }\n\n public render(): JSX.Element {\n const wrapperProps = this.buildWrapperProps();\n return (\n <View style={[styles.base, wrapperProps.style]}>\n <THEOplayerRCTView\n ref={this._root}\n src={this.props.source || {}}\n onNativeSourceChange={this._onSourceChange}\n onNativeLoadStart={this._onLoadStart}\n onNativeLoadedData={this._onLoadedData}\n onNativeLoadedMetadata={this._onLoadedMetadata}\n onNativeError={this._onError}\n onNativeProgress={this._onProgress}\n onNativePlay={this._onPlay}\n onNativePlaying={this._onPlaying}\n onNativePause={this._onPause}\n onNativeSeeking={this._onSeeking}\n onNativeSeeked={this._onSeeked}\n onNativeEnded={this._onEnded}\n onNativeReadyStateChange={this._onReadStateChange}\n onNativeTimeUpdate={this._onTimeUpdate}\n onNativeDurationChange={this._onDurationChange}\n onNativeSegmentNotFound={this._onSegmentNotFound}\n onNativeTextTrackListEvent={this._onTextTrackListEvent}\n onNativeTextTrackEvent={this._onTextTrackEvent}\n onNativeMediaTrackListEvent={this._onMediaTrackListEvent}\n onNativeMediaTrackEvent={this._onMediaTrackEvent}\n onNativeAdEvent={this._onAdEvent}\n onNativeFullscreenPlayerWillPresent={this._onFullscreenPlayerWillPresent}\n onNativeFullscreenPlayerDidPresent={this._onFullscreenPlayerDidPresent}\n onNativeFullscreenPlayerWillDismiss={this._onFullscreenPlayerWillDismiss}\n onNativeFullscreenPlayerDidDismiss={this._onFullscreenPlayerDidDismiss}\n style={StyleSheet.absoluteFill}\n {...wrapperProps}\n />\n </View>\n );\n }\n}\n\nconst LINKING_ERROR =\n `The package 'react-native-theoplayer' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nconst ComponentName = 'THEOplayerRCTView';\n\nconst THEOplayerRCTView =\n UIManager.getViewManagerConfig(ComponentName) != null\n ? requireNativeComponent<THEOplayerRCTViewProps>(ComponentName)\n : () => {\n throw new Error(LINKING_ERROR);\n };\n"],"mappings":"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"}
@@ -69,6 +69,49 @@ class THEOplayerView extends _react.PureComponent {
69
69
  }
70
70
  });
71
71
 
72
+ _defineProperty(this, "onActiveQualityChanged", (trackType, track) => () => {
73
+ const {
74
+ onMediaTrackEvent
75
+ } = this.props;
76
+
77
+ if (onMediaTrackEvent) {
78
+ const quality = track.activeQuality;
79
+ onMediaTrackEvent({
80
+ type: _reactNativeTheoplayer.MediaTrackEventType.ActiveQualityChanged,
81
+ trackType,
82
+ trackUid: track.uid,
83
+ qualities: quality ? [quality] : undefined
84
+ });
85
+ }
86
+ });
87
+
88
+ _defineProperty(this, "dispatchTextTrackListEvent", (type, track) => {
89
+ const {
90
+ onTextTrackListEvent
91
+ } = this.props;
92
+
93
+ if (onTextTrackListEvent) {
94
+ onTextTrackListEvent({
95
+ type,
96
+ track
97
+ });
98
+ }
99
+ });
100
+
101
+ _defineProperty(this, "dispatchMediaTrackListEvent", (type, trackType, track) => {
102
+ const {
103
+ onMediaTrackListEvent
104
+ } = this.props;
105
+
106
+ if (onMediaTrackListEvent) {
107
+ onMediaTrackListEvent({
108
+ type,
109
+ trackType,
110
+ track: track
111
+ });
112
+ }
113
+ });
114
+
72
115
  this.state = THEOplayerView.initialState;
73
116
  this._adsApi = new _THEOplayerWebAdsAPI.THEOplayerWebAdsAPI(this);
74
117
  }
@@ -488,34 +531,42 @@ class THEOplayerView extends _react.PureComponent {
488
531
  }
489
532
  });
490
533
  player.textTracks.addEventListener('addtrack', event => {
491
- const {
492
- onTextTrackListEvent
493
- } = this.props;
494
534
  const track = event.track;
495
535
  track.addEventListener('addcue', this.onAddTextTrackCue(track));
496
536
  track.addEventListener('removecue', this.onRemoveTextTrackCue(track));
497
-
498
- if (onTextTrackListEvent) {
499
- onTextTrackListEvent({
500
- type: _reactNativeTheoplayer.TrackListEventType.AddTrack,
501
- track: track
502
- });
503
- }
537
+ this.dispatchTextTrackListEvent(_reactNativeTheoplayer.TrackListEventType.AddTrack, track);
504
538
  });
505
539
  player.textTracks.addEventListener('removetrack', event => {
506
- const {
507
- onTextTrackListEvent
508
- } = this.props;
509
540
  const track = event.track;
510
541
  track.removeEventListener('addcue', this.onAddTextTrackCue(track));
511
542
  track.removeEventListener('removecue', this.onRemoveTextTrackCue(track));
512
-
513
- if (onTextTrackListEvent) {
514
- onTextTrackListEvent({
515
- type: _reactNativeTheoplayer.TrackListEventType.RemoveTrack,
516
- track: event.track
517
- });
518
- }
543
+ this.dispatchTextTrackListEvent(_reactNativeTheoplayer.TrackListEventType.RemoveTrack, track);
544
+ });
545
+ player.textTracks.addEventListener('change', event => {
546
+ this.dispatchTextTrackListEvent(_reactNativeTheoplayer.TrackListEventType.ChangeTrack, event.track);
547
+ });
548
+ [_reactNativeTheoplayer.MediaTrackType.Audio, _reactNativeTheoplayer.MediaTrackType.Video].forEach(trackType => {
549
+ const mediaTracks = trackType === _reactNativeTheoplayer.MediaTrackType.Audio ? player.audioTracks : player.videoTracks;
550
+ mediaTracks.addEventListener('addtrack', event => {
551
+ const track = event.track;
552
+ track.addEventListener('activequalitychanged', this.onActiveQualityChanged(trackType, track));
553
+ this.dispatchMediaTrackListEvent(_reactNativeTheoplayer.TrackListEventType.AddTrack, trackType, track);
554
+ });
555
+ });
556
+ [_reactNativeTheoplayer.MediaTrackType.Audio, _reactNativeTheoplayer.MediaTrackType.Video].forEach(trackType => {
557
+ const mediaTracks = trackType === _reactNativeTheoplayer.MediaTrackType.Audio ? player.audioTracks : player.videoTracks;
558
+ mediaTracks.addEventListener('removetrack', event => {
559
+ const track = event.track;
560
+ track.removeEventListener('activequalitychanged', this.onActiveQualityChanged(trackType, track));
561
+ this.dispatchMediaTrackListEvent(_reactNativeTheoplayer.TrackListEventType.RemoveTrack, trackType, track);
562
+ });
563
+ });
564
+ [_reactNativeTheoplayer.MediaTrackType.Audio, _reactNativeTheoplayer.MediaTrackType.Video].forEach(trackType => {
565
+ const mediaTracks = trackType === _reactNativeTheoplayer.MediaTrackType.Audio ? player.audioTracks : player.videoTracks;
566
+ mediaTracks.addEventListener('change', event => {
567
+ const track = event.track;
568
+ this.dispatchMediaTrackListEvent(_reactNativeTheoplayer.TrackListEventType.ChangeTrack, trackType, track);
569
+ });
519
570
  });
520
571
  (_player$ads = player.ads) === null || _player$ads === void 0 ? void 0 : _player$ads.addEventListener(_reactNativeTheoplayer.AdEventNames, event => {
521
572
  const {
@@ -1 +1 @@
1
- {"version":3,"names":["THEOplayerView","PureComponent","constructor","props","track","event","onTextTrackEvent","cue","type","TextTrackEventType","AddCue","trackUid","uid","fromNativeCue","RemoveCue","state","initialState","_adsApi","THEOplayerWebAdsAPI","componentDidMount","config","source","abrConfig","element","document","querySelector","chromeless","undefined","_player","THEOplayer","ChromelessPlayer","libraryLocation","Player","ui","fluid","Object","assign","abr","prepareWithUserAction","addEventListeners","componentWillUnmount","destroy","seek","time","isNaN","Error","currentTime","ads","nativePlayer","reset","setState","componentDidUpdate","prevProps","paused","volume","selectedTextTrack","selectedAudioTrack","selectedVideoTrack","targetVideoQuality","muted","playbackRate","fullscreen","wasPaused","prevSelectedTextTrack","prevSelectedAudioTrack","prevSelectedVideoTrack","prevTargetVideoQuality","prevSource","wasMuted","prevPlaybackRate","wasFullscreen","prevVolume","pause","play","Boolean","Number","onFullscreenPlayerWillPresent","onFullscreenPlayerWillDismiss","appContainer","getElementById","requestFullscreen","then","exitFullscreen","textTracks","forEach","textTrack","mode","audioTracks","audioTrack","enabled","videoTracks","videoTrack","find","targetQuality","findNativeQualitiesByUid","maybeChangeBufferingState","isBuffering","wasBuffering","error","newIsBuffering","onBufferingStateChange","player","addEventListener","onSourceChange","onLoadStart","onLoadedData","onLoadedMetadata","map","fromNativeTextTrack","fromNativeMediaTrack","duration","errorObject","errorCode","code","toString","errorMessage","message","onError","onProgress","seekable","i","length","push","start","end","onPlay","onPlaying","onPause","onSeeking","onSeeked","onEnded","readyState","onReadyStateChange","onTimeUpdate","currentProgramDateTime","getTime","onDurationChange","onSegmentNotFound","segmentStartTime","retryCount","presentation","presentationMode","onFullscreenPlayerDidPresent","onFullscreenPlayerDidDismiss","onTextTrackListEvent","onAddTextTrackCue","onRemoveTextTrackCue","TrackListEventType","AddTrack","removeEventListener","RemoveTrack","AdEventNames","onAdEvent","render"],"sources":["THEOplayerView.web.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\n\nimport type { AdEvent, AdsAPI, PlayerError, TextTrack, THEOplayerViewProps, TimeRange } from 'react-native-theoplayer';\nimport { AdEventNames, TextTrackEventType, THEOplayerViewComponent, TrackListEventType } from 'react-native-theoplayer';\nimport type { Event, TextTrackCue as NativeTextTrackCue } from 'theoplayer';\n\nimport type {\n AddTrackEvent,\n MediaTrack as NativeMediaTrack,\n PresentationModeChangeEvent,\n ReadyStateChangeEvent as NativeReadyStateChangeEvent,\n RemoveTrackEvent,\n TextTrack as NativeTextTrack,\n} from 'theoplayer';\nimport * as THEOplayer from 'theoplayer';\nimport { findNativeQualitiesByUid, fromNativeCue, fromNativeMediaTrack, fromNativeTextTrack } from './web/TrackUtils';\nimport { THEOplayerWebAdsAPI } from './ads/THEOplayerWebAdsAPI';\n\ninterface THEOplayerRCTViewState {\n isBuffering: boolean;\n error?: PlayerError;\n}\n\nexport class THEOplayerView extends PureComponent<THEOplayerViewProps, THEOplayerRCTViewState> implements THEOplayerViewComponent {\n private _player: THEOplayer.ChromelessPlayer | null = null;\n private _adsApi: THEOplayerWebAdsAPI;\n\n private static initialState: THEOplayerRCTViewState = {\n isBuffering: false,\n error: undefined,\n };\n\n constructor(props: THEOplayerViewProps) {\n super(props);\n this.state = THEOplayerView.initialState;\n this._adsApi = new THEOplayerWebAdsAPI(this);\n }\n\n componentDidMount() {\n const { config, source, abrConfig } = this.props;\n const element = document.querySelector('.theoplayer-container') as HTMLElement;\n if (config?.chromeless === true || config?.chromeless === undefined) {\n this._player = new THEOplayer.ChromelessPlayer(element, {\n libraryLocation: 'node_modules/theoplayer',\n ...config,\n });\n } else {\n this._player = new THEOplayer.Player(element, {\n libraryLocation: 'node_modules/theoplayer',\n ...config,\n ui: {\n fluid: true,\n },\n });\n }\n\n Object.assign(this._player.abr, abrConfig);\n this._player.prepareWithUserAction();\n this._player.source = source;\n this.addEventListeners();\n }\n\n componentWillUnmount() {\n if (this._player) {\n this._player.destroy();\n }\n }\n\n public seek(time: number): void {\n if (isNaN(time)) {\n throw new Error('Specified time is not a number');\n }\n if (this._player) {\n this._player.currentTime = time / 1e3;\n }\n }\n\n public get ads(): AdsAPI {\n return this._adsApi;\n }\n\n public get nativePlayer(): THEOplayer.ChromelessPlayer | null {\n return this._player;\n }\n\n private reset() {\n this.setState(THEOplayerView.initialState);\n }\n\n componentDidUpdate(prevProps: Readonly<THEOplayerViewProps>) {\n if (!this._player) {\n return;\n }\n // track property changes\n const { paused, volume, selectedTextTrack, selectedAudioTrack, selectedVideoTrack, targetVideoQuality, source, muted, playbackRate, fullscreen } =\n this.props;\n const {\n paused: wasPaused,\n selectedTextTrack: prevSelectedTextTrack,\n selectedAudioTrack: prevSelectedAudioTrack,\n selectedVideoTrack: prevSelectedVideoTrack,\n targetVideoQuality: prevTargetVideoQuality,\n source: prevSource,\n muted: wasMuted,\n playbackRate: prevPlaybackRate,\n fullscreen: wasFullscreen,\n volume: prevVolume,\n } = prevProps;\n\n if (source !== prevSource) {\n this._player.source = source;\n }\n if (paused !== wasPaused) {\n if (paused) {\n this._player.pause();\n } else {\n this._player.play();\n }\n }\n if (muted !== wasMuted) {\n this._player.muted = Boolean(muted);\n }\n if (volume !== prevVolume) {\n this._player.volume = Number(volume);\n }\n if (fullscreen !== wasFullscreen) {\n const { onFullscreenPlayerWillPresent, onFullscreenPlayerWillDismiss } = this.props;\n const appContainer = document.getElementById('app');\n if (fullscreen) {\n if (onFullscreenPlayerWillPresent) {\n onFullscreenPlayerWillPresent();\n }\n appContainer?.requestFullscreen().then();\n } else {\n if (onFullscreenPlayerWillDismiss) {\n onFullscreenPlayerWillDismiss();\n }\n document.exitFullscreen().then();\n }\n }\n if (playbackRate && playbackRate !== prevPlaybackRate) {\n this._player.playbackRate = playbackRate;\n }\n if (selectedTextTrack !== prevSelectedTextTrack) {\n this._player.textTracks.forEach((textTrack: NativeTextTrack) => {\n textTrack.mode = textTrack.uid === selectedTextTrack ? 'showing' : 'disabled';\n });\n }\n if (selectedAudioTrack !== prevSelectedAudioTrack) {\n this._player.audioTracks.forEach((audioTrack: NativeMediaTrack) => {\n audioTrack.enabled = audioTrack.uid === selectedAudioTrack;\n });\n }\n if (selectedVideoTrack !== prevSelectedVideoTrack) {\n this._player.videoTracks.forEach((videoTrack: NativeMediaTrack) => {\n videoTrack.enabled = videoTrack.uid === selectedVideoTrack;\n });\n }\n if (targetVideoQuality != prevTargetVideoQuality) {\n const videoTrack = this._player.videoTracks.find((videoTrack: NativeMediaTrack) => videoTrack.uid === selectedVideoTrack);\n if (videoTrack) {\n videoTrack.targetQuality = findNativeQualitiesByUid(videoTrack, targetVideoQuality);\n }\n }\n }\n\n private maybeChangeBufferingState(isBuffering: boolean) {\n const { isBuffering: wasBuffering, error } = this.state;\n const { paused } = this.props;\n\n // do not change state to buffering in case of an error or if the player is paused\n const newIsBuffering = isBuffering && !error && !paused;\n this.setState({ isBuffering: newIsBuffering });\n\n // notify change in buffering state\n if (newIsBuffering !== wasBuffering && this.props.onBufferingStateChange) {\n this.props.onBufferingStateChange(newIsBuffering);\n }\n }\n\n private onAddTextTrackCue = (track: NativeTextTrack) => (event: Event<'addcue'>) => {\n const { onTextTrackEvent } = this.props;\n if (onTextTrackEvent) {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n onTextTrackEvent({\n type: TextTrackEventType.AddCue,\n trackUid: track.uid,\n cue: fromNativeCue(cue),\n });\n }\n }\n };\n\n private onRemoveTextTrackCue = (track: NativeTextTrack) => (event: Event<'removecue'>) => {\n const { onTextTrackEvent } = this.props;\n if (onTextTrackEvent) {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n onTextTrackEvent({\n type: TextTrackEventType.RemoveCue,\n trackUid: track.uid,\n cue: fromNativeCue(cue),\n });\n }\n }\n };\n\n private addEventListeners() {\n const player = this._player;\n if (!player) {\n return;\n }\n\n player.addEventListener('sourcechange', () => {\n const { onSourceChange, paused } = this.props;\n\n this.reset();\n if (!paused) {\n player.play();\n }\n if (onSourceChange) {\n onSourceChange();\n }\n });\n\n player.addEventListener('loadstart', () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(true);\n\n const { onLoadStart } = this.props;\n if (onLoadStart) {\n onLoadStart();\n }\n });\n\n player.addEventListener('loadeddata', () => {\n const { onLoadedData } = this.props;\n if (onLoadedData) {\n onLoadedData();\n }\n });\n\n player.addEventListener('loadedmetadata', () => {\n const { onLoadedMetadata } = this.props;\n if (onLoadedMetadata) {\n onLoadedMetadata({\n textTracks: player.textTracks.map((textTrack: NativeTextTrack) => fromNativeTextTrack(textTrack)),\n audioTracks: player.audioTracks.map((audioTrack: NativeMediaTrack) => fromNativeMediaTrack(audioTrack)),\n videoTracks: player.videoTracks.map((videoTrack: NativeMediaTrack) => fromNativeMediaTrack(videoTrack)),\n duration: 1e3 * player.duration,\n selectedTextTrack: player.textTracks.find((track: NativeTextTrack) => track.mode === 'showing')?.uid,\n selectedVideoTrack: player.videoTracks.find((track: NativeMediaTrack) => track.enabled)?.uid,\n selectedAudioTrack: player.audioTracks.find((track: NativeMediaTrack) => track.enabled)?.uid,\n });\n }\n });\n\n player.addEventListener('error', (event) => {\n const { errorObject } = event;\n const error = {\n errorCode: errorObject.code.toString(),\n errorMessage: errorObject.message,\n };\n this.setState({ error });\n\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n const { onError } = this.props;\n if (onError) {\n onError({ error });\n }\n });\n\n player.addEventListener('progress', () => {\n const { onProgress } = this.props;\n if (onProgress) {\n const seekable: TimeRange[] = [];\n for (let i = 0; i < player.seekable.length; i++) {\n seekable.push({\n start: player.seekable.start(i) * 1e3,\n end: player.seekable.end(i) * 1e3,\n });\n }\n onProgress({ seekable });\n }\n });\n\n player.addEventListener('play', () => {\n const { onPlay } = this.props;\n if (onPlay) {\n onPlay();\n }\n });\n\n player.addEventListener('playing', () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n const { onPlaying } = this.props;\n if (onPlaying) {\n onPlaying();\n }\n });\n\n player.addEventListener('pause', () => {\n const { onPause } = this.props;\n if (onPause) {\n onPause();\n }\n });\n\n player.addEventListener('seeking', () => {\n const { onSeeking } = this.props;\n if (onSeeking) {\n onSeeking();\n }\n });\n\n player.addEventListener('seeked', () => {\n const { onSeeked } = this.props;\n if (onSeeked) {\n onSeeked();\n }\n });\n\n player.addEventListener('ended', () => {\n const { onEnded } = this.props;\n if (onEnded) {\n onEnded();\n }\n });\n\n player.addEventListener('readystatechange', (event: NativeReadyStateChangeEvent) => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(event.readyState < 3);\n\n const { onReadyStateChange } = this.props;\n if (onReadyStateChange) {\n onReadyStateChange({ readyState: event.readyState });\n }\n });\n\n player.addEventListener('timeupdate', () => {\n const { onTimeUpdate } = this.props;\n if (onTimeUpdate) {\n onTimeUpdate({\n currentTime: player.currentTime * 1e3,\n currentProgramDateTime: player.currentProgramDateTime?.getTime(),\n });\n }\n });\n player.addEventListener('durationchange', (event) => {\n const { onDurationChange } = this.props;\n if (onDurationChange) {\n onDurationChange({\n duration: event.duration * 1e3,\n });\n }\n });\n player.addEventListener('segmentnotfound', () => {\n const { onSegmentNotFound } = this.props;\n if (onSegmentNotFound) {\n onSegmentNotFound({\n segmentStartTime: 0,\n error: 'Segment not found',\n retryCount: -1,\n });\n }\n });\n player.presentation.addEventListener('presentationmodechange', (event: PresentationModeChangeEvent) => {\n const { presentationMode } = event;\n const { onFullscreenPlayerDidPresent, onFullscreenPlayerDidDismiss } = this.props;\n if (presentationMode === 'fullscreen') {\n if (onFullscreenPlayerDidPresent) {\n onFullscreenPlayerDidPresent();\n }\n } else if (presentationMode === 'inline') {\n if (onFullscreenPlayerDidDismiss) {\n onFullscreenPlayerDidDismiss();\n }\n }\n });\n player.textTracks.addEventListener('addtrack', (event: AddTrackEvent) => {\n const { onTextTrackListEvent } = this.props;\n const track = event.track as NativeTextTrack;\n track.addEventListener('addcue', this.onAddTextTrackCue(track));\n track.addEventListener('removecue', this.onRemoveTextTrackCue(track));\n\n if (onTextTrackListEvent) {\n onTextTrackListEvent({\n type: TrackListEventType.AddTrack,\n track: track as TextTrack,\n });\n }\n });\n player.textTracks.addEventListener('removetrack', (event: RemoveTrackEvent) => {\n const { onTextTrackListEvent } = this.props;\n const track = event.track as NativeTextTrack;\n track.removeEventListener('addcue', this.onAddTextTrackCue(track));\n track.removeEventListener('removecue', this.onRemoveTextTrackCue(track));\n\n if (onTextTrackListEvent) {\n onTextTrackListEvent({\n type: TrackListEventType.RemoveTrack,\n track: event.track as unknown as TextTrack,\n });\n }\n });\n player.ads?.addEventListener(AdEventNames, (event) => {\n const { onAdEvent } = this.props;\n if (onAdEvent) {\n onAdEvent(event as AdEvent);\n }\n });\n }\n\n public render(): JSX.Element {\n const { config } = this.props;\n const chromeless = config?.chromeless === undefined || config?.chromeless === true;\n\n return (\n <div id={'theoplayer-wrapper'}>\n <div className={chromeless ? 'theoplayer-container' : 'theoplayer-container video-js theoplayer-skin'} />\n </div>\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["THEOplayerView","PureComponent","constructor","props","track","event","onTextTrackEvent","cue","type","TextTrackEventType","AddCue","trackUid","uid","fromNativeCue","RemoveCue","trackType","onMediaTrackEvent","quality","activeQuality","MediaTrackEventType","ActiveQualityChanged","qualities","undefined","onTextTrackListEvent","onMediaTrackListEvent","state","initialState","_adsApi","THEOplayerWebAdsAPI","componentDidMount","config","source","abrConfig","element","document","querySelector","chromeless","_player","THEOplayer","ChromelessPlayer","libraryLocation","Player","ui","fluid","Object","assign","abr","prepareWithUserAction","addEventListeners","componentWillUnmount","destroy","seek","time","isNaN","Error","currentTime","ads","nativePlayer","reset","setState","componentDidUpdate","prevProps","paused","volume","selectedTextTrack","selectedAudioTrack","selectedVideoTrack","targetVideoQuality","muted","playbackRate","fullscreen","wasPaused","prevSelectedTextTrack","prevSelectedAudioTrack","prevSelectedVideoTrack","prevTargetVideoQuality","prevSource","wasMuted","prevPlaybackRate","wasFullscreen","prevVolume","pause","play","Boolean","Number","onFullscreenPlayerWillPresent","onFullscreenPlayerWillDismiss","appContainer","getElementById","requestFullscreen","then","exitFullscreen","textTracks","forEach","textTrack","mode","audioTracks","audioTrack","enabled","videoTracks","videoTrack","find","targetQuality","findNativeQualitiesByUid","maybeChangeBufferingState","isBuffering","wasBuffering","error","newIsBuffering","onBufferingStateChange","player","addEventListener","onSourceChange","onLoadStart","onLoadedData","onLoadedMetadata","map","fromNativeTextTrack","fromNativeMediaTrack","duration","errorObject","errorCode","code","toString","errorMessage","message","onError","onProgress","seekable","i","length","push","start","end","onPlay","onPlaying","onPause","onSeeking","onSeeked","onEnded","readyState","onReadyStateChange","onTimeUpdate","currentProgramDateTime","getTime","onDurationChange","onSegmentNotFound","segmentStartTime","retryCount","presentation","presentationMode","onFullscreenPlayerDidPresent","onFullscreenPlayerDidDismiss","onAddTextTrackCue","onRemoveTextTrackCue","dispatchTextTrackListEvent","TrackListEventType","AddTrack","removeEventListener","RemoveTrack","ChangeTrack","MediaTrackType","Audio","Video","mediaTracks","onActiveQualityChanged","dispatchMediaTrackListEvent","AdEventNames","onAdEvent","render"],"sources":["THEOplayerView.web.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\n\nimport type { AdEvent, AdsAPI, MediaTrack, PlayerError, TextTrack, THEOplayerViewProps, TimeRange } from 'react-native-theoplayer';\nimport {\n AdEventNames,\n MediaTrackEventType,\n MediaTrackType,\n TextTrackEventType,\n THEOplayerViewComponent,\n TrackListEventType,\n} from 'react-native-theoplayer';\nimport type { Event, TextTrackCue as NativeTextTrackCue, TrackChangeEvent } from 'theoplayer';\n\nimport type {\n AddTrackEvent,\n MediaTrack as NativeMediaTrack,\n PresentationModeChangeEvent,\n ReadyStateChangeEvent as NativeReadyStateChangeEvent,\n RemoveTrackEvent,\n TextTrack as NativeTextTrack,\n} from 'theoplayer';\nimport * as THEOplayer from 'theoplayer';\nimport { findNativeQualitiesByUid, fromNativeCue, fromNativeMediaTrack, fromNativeTextTrack } from './web/TrackUtils';\nimport { THEOplayerWebAdsAPI } from './ads/THEOplayerWebAdsAPI';\n\ninterface THEOplayerRCTViewState {\n isBuffering: boolean;\n error?: PlayerError;\n}\n\nexport class THEOplayerView extends PureComponent<THEOplayerViewProps, THEOplayerRCTViewState> implements THEOplayerViewComponent {\n private _player: THEOplayer.ChromelessPlayer | null = null;\n private readonly _adsApi: THEOplayerWebAdsAPI;\n\n private static initialState: THEOplayerRCTViewState = {\n isBuffering: false,\n error: undefined,\n };\n\n constructor(props: THEOplayerViewProps) {\n super(props);\n this.state = THEOplayerView.initialState;\n this._adsApi = new THEOplayerWebAdsAPI(this);\n }\n\n componentDidMount() {\n const { config, source, abrConfig } = this.props;\n const element = document.querySelector('.theoplayer-container') as HTMLElement;\n if (config?.chromeless === true || config?.chromeless === undefined) {\n this._player = new THEOplayer.ChromelessPlayer(element, {\n libraryLocation: 'node_modules/theoplayer',\n ...config,\n });\n } else {\n this._player = new THEOplayer.Player(element, {\n libraryLocation: 'node_modules/theoplayer',\n ...config,\n ui: {\n fluid: true,\n },\n });\n }\n\n Object.assign(this._player.abr, abrConfig);\n this._player.prepareWithUserAction();\n this._player.source = source;\n this.addEventListeners();\n }\n\n componentWillUnmount() {\n if (this._player) {\n this._player.destroy();\n }\n }\n\n public seek(time: number): void {\n if (isNaN(time)) {\n throw new Error('Specified time is not a number');\n }\n if (this._player) {\n this._player.currentTime = time / 1e3;\n }\n }\n\n public get ads(): AdsAPI {\n return this._adsApi;\n }\n\n public get nativePlayer(): THEOplayer.ChromelessPlayer | null {\n return this._player;\n }\n\n private reset() {\n this.setState(THEOplayerView.initialState);\n }\n\n componentDidUpdate(prevProps: Readonly<THEOplayerViewProps>) {\n if (!this._player) {\n return;\n }\n // track property changes\n const { paused, volume, selectedTextTrack, selectedAudioTrack, selectedVideoTrack, targetVideoQuality, source, muted, playbackRate, fullscreen } =\n this.props;\n const {\n paused: wasPaused,\n selectedTextTrack: prevSelectedTextTrack,\n selectedAudioTrack: prevSelectedAudioTrack,\n selectedVideoTrack: prevSelectedVideoTrack,\n targetVideoQuality: prevTargetVideoQuality,\n source: prevSource,\n muted: wasMuted,\n playbackRate: prevPlaybackRate,\n fullscreen: wasFullscreen,\n volume: prevVolume,\n } = prevProps;\n\n if (source !== prevSource) {\n this._player.source = source;\n }\n if (paused !== wasPaused) {\n if (paused) {\n this._player.pause();\n } else {\n this._player.play();\n }\n }\n if (muted !== wasMuted) {\n this._player.muted = Boolean(muted);\n }\n if (volume !== prevVolume) {\n this._player.volume = Number(volume);\n }\n if (fullscreen !== wasFullscreen) {\n const { onFullscreenPlayerWillPresent, onFullscreenPlayerWillDismiss } = this.props;\n const appContainer = document.getElementById('app');\n if (fullscreen) {\n if (onFullscreenPlayerWillPresent) {\n onFullscreenPlayerWillPresent();\n }\n appContainer?.requestFullscreen().then();\n } else {\n if (onFullscreenPlayerWillDismiss) {\n onFullscreenPlayerWillDismiss();\n }\n document.exitFullscreen().then();\n }\n }\n if (playbackRate && playbackRate !== prevPlaybackRate) {\n this._player.playbackRate = playbackRate;\n }\n if (selectedTextTrack !== prevSelectedTextTrack) {\n this._player.textTracks.forEach((textTrack: NativeTextTrack) => {\n textTrack.mode = textTrack.uid === selectedTextTrack ? 'showing' : 'disabled';\n });\n }\n if (selectedAudioTrack !== prevSelectedAudioTrack) {\n this._player.audioTracks.forEach((audioTrack: NativeMediaTrack) => {\n audioTrack.enabled = audioTrack.uid === selectedAudioTrack;\n });\n }\n if (selectedVideoTrack !== prevSelectedVideoTrack) {\n this._player.videoTracks.forEach((videoTrack: NativeMediaTrack) => {\n videoTrack.enabled = videoTrack.uid === selectedVideoTrack;\n });\n }\n if (targetVideoQuality != prevTargetVideoQuality) {\n const videoTrack = this._player.videoTracks.find((videoTrack: NativeMediaTrack) => videoTrack.uid === selectedVideoTrack);\n if (videoTrack) {\n videoTrack.targetQuality = findNativeQualitiesByUid(videoTrack, targetVideoQuality);\n }\n }\n }\n\n private maybeChangeBufferingState(isBuffering: boolean) {\n const { isBuffering: wasBuffering, error } = this.state;\n const { paused } = this.props;\n\n // do not change state to buffering in case of an error or if the player is paused\n const newIsBuffering = isBuffering && !error && !paused;\n this.setState({ isBuffering: newIsBuffering });\n\n // notify change in buffering state\n if (newIsBuffering !== wasBuffering && this.props.onBufferingStateChange) {\n this.props.onBufferingStateChange(newIsBuffering);\n }\n }\n\n private onAddTextTrackCue = (track: NativeTextTrack) => (event: Event<'addcue'>) => {\n const { onTextTrackEvent } = this.props;\n if (onTextTrackEvent) {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n onTextTrackEvent({\n type: TextTrackEventType.AddCue,\n trackUid: track.uid,\n cue: fromNativeCue(cue),\n });\n }\n }\n };\n\n private onRemoveTextTrackCue = (track: NativeTextTrack) => (event: Event<'removecue'>) => {\n const { onTextTrackEvent } = this.props;\n if (onTextTrackEvent) {\n const { cue } = event as unknown as { cue: NativeTextTrackCue };\n if (cue) {\n onTextTrackEvent({\n type: TextTrackEventType.RemoveCue,\n trackUid: track.uid,\n cue: fromNativeCue(cue),\n });\n }\n }\n };\n\n private onActiveQualityChanged = (trackType: MediaTrackType, track: NativeMediaTrack) => () => {\n const { onMediaTrackEvent } = this.props;\n if (onMediaTrackEvent) {\n const quality = track.activeQuality;\n onMediaTrackEvent({\n type: MediaTrackEventType.ActiveQualityChanged,\n trackType,\n trackUid: track.uid,\n qualities: quality ? [quality] : undefined,\n });\n }\n };\n\n private addEventListeners() {\n const player = this._player;\n if (!player) {\n return;\n }\n\n player.addEventListener('sourcechange', () => {\n const { onSourceChange, paused } = this.props;\n\n this.reset();\n if (!paused) {\n player.play();\n }\n if (onSourceChange) {\n onSourceChange();\n }\n });\n\n player.addEventListener('loadstart', () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(true);\n\n const { onLoadStart } = this.props;\n if (onLoadStart) {\n onLoadStart();\n }\n });\n\n player.addEventListener('loadeddata', () => {\n const { onLoadedData } = this.props;\n if (onLoadedData) {\n onLoadedData();\n }\n });\n\n player.addEventListener('loadedmetadata', () => {\n const { onLoadedMetadata } = this.props;\n if (onLoadedMetadata) {\n onLoadedMetadata({\n textTracks: player.textTracks.map((textTrack: NativeTextTrack) => fromNativeTextTrack(textTrack)),\n audioTracks: player.audioTracks.map((audioTrack: NativeMediaTrack) => fromNativeMediaTrack(audioTrack)),\n videoTracks: player.videoTracks.map((videoTrack: NativeMediaTrack) => fromNativeMediaTrack(videoTrack)),\n duration: 1e3 * player.duration,\n selectedTextTrack: player.textTracks.find((track: NativeTextTrack) => track.mode === 'showing')?.uid,\n selectedVideoTrack: player.videoTracks.find((track: NativeMediaTrack) => track.enabled)?.uid,\n selectedAudioTrack: player.audioTracks.find((track: NativeMediaTrack) => track.enabled)?.uid,\n });\n }\n });\n\n player.addEventListener('error', (event) => {\n const { errorObject } = event;\n const error = {\n errorCode: errorObject.code.toString(),\n errorMessage: errorObject.message,\n };\n this.setState({ error });\n\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n const { onError } = this.props;\n if (onError) {\n onError({ error });\n }\n });\n\n player.addEventListener('progress', () => {\n const { onProgress } = this.props;\n if (onProgress) {\n const seekable: TimeRange[] = [];\n for (let i = 0; i < player.seekable.length; i++) {\n seekable.push({\n start: player.seekable.start(i) * 1e3,\n end: player.seekable.end(i) * 1e3,\n });\n }\n onProgress({ seekable });\n }\n });\n\n player.addEventListener('play', () => {\n const { onPlay } = this.props;\n if (onPlay) {\n onPlay();\n }\n });\n\n player.addEventListener('playing', () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n const { onPlaying } = this.props;\n if (onPlaying) {\n onPlaying();\n }\n });\n\n player.addEventListener('pause', () => {\n const { onPause } = this.props;\n if (onPause) {\n onPause();\n }\n });\n\n player.addEventListener('seeking', () => {\n const { onSeeking } = this.props;\n if (onSeeking) {\n onSeeking();\n }\n });\n\n player.addEventListener('seeked', () => {\n const { onSeeked } = this.props;\n if (onSeeked) {\n onSeeked();\n }\n });\n\n player.addEventListener('ended', () => {\n const { onEnded } = this.props;\n if (onEnded) {\n onEnded();\n }\n });\n\n player.addEventListener('readystatechange', (event: NativeReadyStateChangeEvent) => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(event.readyState < 3);\n\n const { onReadyStateChange } = this.props;\n if (onReadyStateChange) {\n onReadyStateChange({ readyState: event.readyState });\n }\n });\n\n player.addEventListener('timeupdate', () => {\n const { onTimeUpdate } = this.props;\n if (onTimeUpdate) {\n onTimeUpdate({\n currentTime: player.currentTime * 1e3,\n currentProgramDateTime: player.currentProgramDateTime?.getTime(),\n });\n }\n });\n player.addEventListener('durationchange', (event) => {\n const { onDurationChange } = this.props;\n if (onDurationChange) {\n onDurationChange({\n duration: event.duration * 1e3,\n });\n }\n });\n player.addEventListener('segmentnotfound', () => {\n const { onSegmentNotFound } = this.props;\n if (onSegmentNotFound) {\n onSegmentNotFound({\n segmentStartTime: 0,\n error: 'Segment not found',\n retryCount: -1,\n });\n }\n });\n\n player.presentation.addEventListener('presentationmodechange', (event: PresentationModeChangeEvent) => {\n const { presentationMode } = event;\n const { onFullscreenPlayerDidPresent, onFullscreenPlayerDidDismiss } = this.props;\n if (presentationMode === 'fullscreen') {\n if (onFullscreenPlayerDidPresent) {\n onFullscreenPlayerDidPresent();\n }\n } else if (presentationMode === 'inline') {\n if (onFullscreenPlayerDidDismiss) {\n onFullscreenPlayerDidDismiss();\n }\n }\n });\n\n player.textTracks.addEventListener('addtrack', (event: AddTrackEvent) => {\n const track = event.track as NativeTextTrack;\n track.addEventListener('addcue', this.onAddTextTrackCue(track));\n track.addEventListener('removecue', this.onRemoveTextTrackCue(track));\n this.dispatchTextTrackListEvent(TrackListEventType.AddTrack, track as TextTrack);\n });\n\n player.textTracks.addEventListener('removetrack', (event: RemoveTrackEvent) => {\n const track = event.track as NativeTextTrack;\n track.removeEventListener('addcue', this.onAddTextTrackCue(track));\n track.removeEventListener('removecue', this.onRemoveTextTrackCue(track));\n this.dispatchTextTrackListEvent(TrackListEventType.RemoveTrack, track as NativeTextTrack as TextTrack);\n });\n\n player.textTracks.addEventListener('change', (event: TrackChangeEvent) => {\n this.dispatchTextTrackListEvent(TrackListEventType.ChangeTrack, event.track as NativeTextTrack as TextTrack);\n });\n\n [MediaTrackType.Audio, MediaTrackType.Video].forEach((trackType) => {\n const mediaTracks = trackType === MediaTrackType.Audio ? player.audioTracks : player.videoTracks;\n mediaTracks.addEventListener('addtrack', (event: AddTrackEvent) => {\n const track = event.track as NativeMediaTrack;\n track.addEventListener('activequalitychanged', this.onActiveQualityChanged(trackType, track));\n this.dispatchMediaTrackListEvent(TrackListEventType.AddTrack, trackType, track as MediaTrack);\n });\n });\n\n [MediaTrackType.Audio, MediaTrackType.Video].forEach((trackType) => {\n const mediaTracks = trackType === MediaTrackType.Audio ? player.audioTracks : player.videoTracks;\n mediaTracks.addEventListener('removetrack', (event: RemoveTrackEvent) => {\n const track = event.track as NativeMediaTrack;\n track.removeEventListener('activequalitychanged', this.onActiveQualityChanged(trackType, track));\n this.dispatchMediaTrackListEvent(TrackListEventType.RemoveTrack, trackType, track as MediaTrack);\n });\n });\n\n [MediaTrackType.Audio, MediaTrackType.Video].forEach((trackType) => {\n const mediaTracks = trackType === MediaTrackType.Audio ? player.audioTracks : player.videoTracks;\n mediaTracks.addEventListener('change', (event: TrackChangeEvent) => {\n const track = event.track as NativeMediaTrack;\n this.dispatchMediaTrackListEvent(TrackListEventType.ChangeTrack, trackType, track as MediaTrack);\n });\n });\n\n player.ads?.addEventListener(AdEventNames, (event) => {\n const { onAdEvent } = this.props;\n if (onAdEvent) {\n onAdEvent(event as AdEvent);\n }\n });\n }\n\n private dispatchTextTrackListEvent = (type: TrackListEventType, track: TextTrack) => {\n const { onTextTrackListEvent } = this.props;\n if (onTextTrackListEvent) {\n onTextTrackListEvent({\n type,\n track,\n });\n }\n };\n\n private dispatchMediaTrackListEvent = (type: TrackListEventType, trackType: MediaTrackType, track: MediaTrack) => {\n const { onMediaTrackListEvent } = this.props;\n if (onMediaTrackListEvent) {\n onMediaTrackListEvent({\n type,\n trackType,\n track: track as MediaTrack,\n });\n }\n };\n\n public render(): JSX.Element {\n const { config } = this.props;\n const chromeless = config?.chromeless === undefined || config?.chromeless === true;\n\n return (\n <div id={'theoplayer-wrapper'}>\n <div className={chromeless ? 'theoplayer-container' : 'theoplayer-container video-js theoplayer-skin'} />\n </div>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["THEOplayerView.ts"],"sourcesContent":["import type { SourceDescription } from './source/SourceDescription';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport type {\n DurationChangeEvent,\n ErrorEvent,\n LoadedMetadataEvent,\n ReadyStateChangeEvent,\n TimeUpdateEvent,\n ProgressEvent,\n SegmentNotFoundEvent,\n} from './event/PlayerEvent';\nimport type { TextTrackEvent, TextTrackListEvent } from './event/TrackEvent';\nimport type { PlayerConfiguration } from './config/PlayerConfiguration';\nimport type { ABRConfiguration } from './abr/ABRConfiguration';\nimport type { AdEvent } from \"./event/AdEvent\";\nimport type { AdsAPI } from \"./ads/AdsAPI\";\n\nexport interface THEOplayerViewProps {\n /**\n * The player configuration with THEOplayer license.\n */\n config?: PlayerConfiguration;\n\n /**\n * The player's adaptive bitrate (ABR) configuration.\n *\n * @remarks\n * <br/> - This property is supported on Android & Web platforms only.\n */\n abrConfig?: ABRConfiguration;\n\n /**\n * A source description that determines the current media resource.\n */\n source: SourceDescription;\n\n /**\n * Used to set the player's paused state.\n *\n * @remarks\n * <br/> - If paused is initially set to `true`, play-out will start once the source is set.\n */\n paused?: boolean;\n\n /**\n * Used to set the playback rate of the media.\n *\n * @example\n * <br/> - `playbackRate = 0.70` will slow down the playback rate of the media by 30%.\n * <br/> - `playbackRate = 1.25` will speed up the playback rate of the media by 25%.\n *\n * @remarks\n * <br/> - Playback rate is represented by a number where `1` is default playback speed.\n * <br/> - Playback rate must be a positive number.\n * <br/> - It is recommended that you limit the range to between 0.5 and 4.\n */\n playbackRate?: number;\n\n /**\n * Used to set the volume of the audio.\n *\n * @remarks\n * <br/> - Volume is represented by a floating point number between `0.0` and `1.0`.\n */\n volume?: number;\n\n /**\n * Determines whether audio is muted.\n */\n muted?: boolean;\n\n /**\n * Determines whether the player is currently playing in fullscreen.\n */\n fullscreen?: boolean;\n\n /**\n * Used to set the current selected text track by passing its `uid`, or `null` to select none.\n */\n selectedTextTrack?: number | null;\n\n /**\n * Used to set the current selected video track by passing its `uid`, or `null` to select none.\n */\n selectedVideoTrack?: number | null;\n\n /**\n * Used to set the current selected video quality by passing its `uid`, or `null` to select none.\n */\n targetVideoQuality?: number | number[] | undefined;\n\n /**\n * Used to set the current selected audio track by passing its `uid`, or `null` to select none.\n */\n selectedAudioTrack?: number | null;\n\n /**\n * The style applied to the player view.\n */\n style?: StyleProp<ViewStyle>;\n\n /**\n * Invoked before the player goes to fullscreen.\n */\n onFullscreenPlayerWillPresent?: () => void;\n\n /**\n * Invoked after the player went to fullscreen.\n */\n onFullscreenPlayerDidPresent?: () => void;\n\n /**\n * Invoked before the player returns from fullscreen.\n */\n onFullscreenPlayerWillDismiss?: () => void;\n\n /**\n * Invoked after the player returned from fullscreen.\n */\n onFullscreenPlayerDidDismiss?: () => void;\n\n /**\n * Invoked when the player's buffering state has changed.\n *\n * @remarks\n * <br/> - The `isBuffering` value is typically coupled to showing/hiding a loading indicator.\n *\n * @param isBuffering A value that indicates whether the player is buffering.\n */\n onBufferingStateChange?: (isBuffering: boolean) => void;\n\n /**\n * Invoked when the player receives a new source description.\n */\n onSourceChange?: () => void;\n\n /**\n * Invoked when the player starts loading the manifest.\n */\n onLoadStart?: () => void;\n\n /**\n * Invoked when the player has determined the duration and dimensions of the\n * media resource, and the text and media tracks are ready.\n */\n onLoadedMetadata?: (event: LoadedMetadataEvent) => void;\n\n /**\n * Invoked when the player can render the media data at the current playback position for the first time.\n */\n onLoadedData?: () => void;\n\n /**\n * Invoked when the player's readyState has changed.\n */\n onReadyStateChange?: (event: ReadyStateChangeEvent) => void;\n\n /**\n * Invoked when an error occurs.\n */\n onError?: (event: ErrorEvent) => void;\n\n /**\n * Invoked each time the player has loaded media data.\n */\n onProgress?: (event: ProgressEvent) => void;\n\n /**\n * Invoked when the player's internal paused state changes to `false`.\n */\n onPlay?: () => void;\n\n /**\n * Invoked when playback is ready to start after having been paused or delayed due to\n * lack of media data.\n */\n onPlaying?: () => void;\n\n /**\n * Invoked when the player's internal paused state changes to `true`.\n */\n onPause?: () => void;\n\n /**\n * Invoked when a seek operation starts and the player is seeking a new position.\n */\n onSeeking?: () => void;\n\n /**\n * Invoked when a seek operation completed and the current playback position has changed.\n */\n onSeeked?: () => void;\n\n /**\n * Invoked when playback has stopped because the end of the media was reached or because\n * no further data is available.\n */\n onEnded?: () => void;\n\n /**\n * Invoked each time the current playback position changed.\n */\n onTimeUpdate?: (event: TimeUpdateEvent) => void;\n\n /**\n * Invoked when the player's duration attribute has been updated.\n */\n onDurationChange?: (event: DurationChangeEvent) => void;\n\n /**\n * Invoked when a segment can not be found.\n *\n * @remarks\n * <br/> - Only dispatched on DASH streams.\n */\n onSegmentNotFound?: (event: SegmentNotFoundEvent) => void;\n\n /**\n * Invoked when a text track list event occurs.\n */\n onTextTrackListEvent?: (event: TextTrackListEvent) => void;\n\n /**\n * Invoked when a text track event occurs.\n */\n onTextTrackEvent?: (event: TextTrackEvent) => void;\n\n /**\n * Invoked when an ad event occurs.\n */\n onAdEvent?: (event: AdEvent) => void;\n}\n\nexport interface THEOplayerViewComponent {\n /**\n * Seek to a new position.\n *\n * @param seekTime - new time, in milliseconds.\n */\n seek: (seekTime: number) => void;\n\n /**\n * The API for advertisements.\n */\n ads: AdsAPI;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["THEOplayerView.ts"],"sourcesContent":["import type { SourceDescription } from './source/SourceDescription';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport type {\n DurationChangeEvent,\n ErrorEvent,\n LoadedMetadataEvent,\n ReadyStateChangeEvent,\n TimeUpdateEvent,\n ProgressEvent,\n SegmentNotFoundEvent,\n} from './event/PlayerEvent';\nimport type { MediaTrackEvent, MediaTrackListEvent, TextTrackEvent, TextTrackListEvent } from './event/TrackEvent';\nimport type { PlayerConfiguration } from './config/PlayerConfiguration';\nimport type { ABRConfiguration } from './abr/ABRConfiguration';\nimport type { AdEvent } from './event/AdEvent';\nimport type { AdsAPI } from './ads/AdsAPI';\n\nexport interface THEOplayerViewProps {\n /**\n * The player configuration with THEOplayer license.\n */\n config?: PlayerConfiguration;\n\n /**\n * The player's adaptive bitrate (ABR) configuration.\n *\n * @remarks\n * <br/> - This property is supported on Android & Web platforms only.\n */\n abrConfig?: ABRConfiguration;\n\n /**\n * A source description that determines the current media resource.\n */\n source: SourceDescription;\n\n /**\n * Used to set the player's paused state.\n *\n * @remarks\n * <br/> - If paused is initially set to `true`, play-out will start once the source is set.\n */\n paused?: boolean;\n\n /**\n * Used to set the playback rate of the media.\n *\n * @example\n * <br/> - `playbackRate = 0.70` will slow down the playback rate of the media by 30%.\n * <br/> - `playbackRate = 1.25` will speed up the playback rate of the media by 25%.\n *\n * @remarks\n * <br/> - Playback rate is represented by a number where `1` is default playback speed.\n * <br/> - Playback rate must be a positive number.\n * <br/> - It is recommended that you limit the range to between 0.5 and 4.\n */\n playbackRate?: number;\n\n /**\n * Used to set the volume of the audio.\n *\n * @remarks\n * <br/> - Volume is represented by a floating point number between `0.0` and `1.0`.\n */\n volume?: number;\n\n /**\n * Determines whether audio is muted.\n */\n muted?: boolean;\n\n /**\n * Determines whether the player is currently playing in fullscreen.\n */\n fullscreen?: boolean;\n\n /**\n * Used to set the current selected text track by passing its `uid`, or `null` to select none.\n */\n selectedTextTrack?: number | null;\n\n /**\n * Used to set the current selected video track by passing its `uid`, or `null` to select none.\n */\n selectedVideoTrack?: number | null;\n\n /**\n * Used to set the current selected video quality by passing its `uid`, or `null` to select none.\n */\n targetVideoQuality?: number | number[] | undefined;\n\n /**\n * Used to set the current selected audio track by passing its `uid`, or `null` to select none.\n */\n selectedAudioTrack?: number | null;\n\n /**\n * The style applied to the player view.\n */\n style?: StyleProp<ViewStyle>;\n\n /**\n * Invoked before the player goes to fullscreen.\n */\n onFullscreenPlayerWillPresent?: () => void;\n\n /**\n * Invoked after the player went to fullscreen.\n */\n onFullscreenPlayerDidPresent?: () => void;\n\n /**\n * Invoked before the player returns from fullscreen.\n */\n onFullscreenPlayerWillDismiss?: () => void;\n\n /**\n * Invoked after the player returned from fullscreen.\n */\n onFullscreenPlayerDidDismiss?: () => void;\n\n /**\n * Invoked when the player's buffering state has changed.\n *\n * @remarks\n * <br/> - The `isBuffering` value is typically coupled to showing/hiding a loading indicator.\n *\n * @param isBuffering A value that indicates whether the player is buffering.\n */\n onBufferingStateChange?: (isBuffering: boolean) => void;\n\n /**\n * Invoked when the player receives a new source description.\n */\n onSourceChange?: () => void;\n\n /**\n * Invoked when the player starts loading the manifest.\n */\n onLoadStart?: () => void;\n\n /**\n * Invoked when the player has determined the duration and dimensions of the\n * media resource, and the text and media tracks are ready.\n */\n onLoadedMetadata?: (event: LoadedMetadataEvent) => void;\n\n /**\n * Invoked when the player can render the media data at the current playback position for the first time.\n */\n onLoadedData?: () => void;\n\n /**\n * Invoked when the player's readyState has changed.\n */\n onReadyStateChange?: (event: ReadyStateChangeEvent) => void;\n\n /**\n * Invoked when an error occurs.\n */\n onError?: (event: ErrorEvent) => void;\n\n /**\n * Invoked each time the player has loaded media data.\n */\n onProgress?: (event: ProgressEvent) => void;\n\n /**\n * Invoked when the player's internal paused state changes to `false`.\n */\n onPlay?: () => void;\n\n /**\n * Invoked when playback is ready to start after having been paused or delayed due to\n * lack of media data.\n */\n onPlaying?: () => void;\n\n /**\n * Invoked when the player's internal paused state changes to `true`.\n */\n onPause?: () => void;\n\n /**\n * Invoked when a seek operation starts and the player is seeking a new position.\n */\n onSeeking?: () => void;\n\n /**\n * Invoked when a seek operation completed and the current playback position has changed.\n */\n onSeeked?: () => void;\n\n /**\n * Invoked when playback has stopped because the end of the media was reached or because\n * no further data is available.\n */\n onEnded?: () => void;\n\n /**\n * Invoked each time the current playback position changed.\n */\n onTimeUpdate?: (event: TimeUpdateEvent) => void;\n\n /**\n * Invoked when the player's duration attribute has been updated.\n */\n onDurationChange?: (event: DurationChangeEvent) => void;\n\n /**\n * Invoked when a segment can not be found.\n *\n * @remarks\n * <br/> - Only dispatched on DASH streams.\n */\n onSegmentNotFound?: (event: SegmentNotFoundEvent) => void;\n\n /**\n * Invoked when a text track list event occurs.\n */\n onTextTrackListEvent?: (event: TextTrackListEvent) => void;\n\n /**\n * Invoked when a text track event occurs.\n */\n onTextTrackEvent?: (event: TextTrackEvent) => void;\n\n /**\n * Invoked when a media track list event occurs.\n */\n onMediaTrackListEvent?: (event: MediaTrackListEvent) => void;\n\n /**\n * Invoked when a media track event occurs.\n */\n onMediaTrackEvent?: (event: MediaTrackEvent) => void;\n\n /**\n * Invoked when an ad event occurs.\n */\n onAdEvent?: (event: AdEvent) => void;\n}\n\nexport interface THEOplayerViewComponent {\n /**\n * Seek to a new position.\n *\n * @param seekTime - new time, in milliseconds.\n */\n seek: (seekTime: number) => void;\n\n /**\n * The API for advertisements.\n */\n ads: AdsAPI;\n}\n"],"mappings":""}
@@ -3,6 +3,7 @@ export let TrackListEventType;
3
3
  (function (TrackListEventType) {
4
4
  TrackListEventType[TrackListEventType["AddTrack"] = 0] = "AddTrack";
5
5
  TrackListEventType[TrackListEventType["RemoveTrack"] = 1] = "RemoveTrack";
6
+ TrackListEventType[TrackListEventType["ChangeTrack"] = 2] = "ChangeTrack";
6
7
  })(TrackListEventType || (TrackListEventType = {}));
7
8
 
8
9
  export let TextTrackEventType;
@@ -11,4 +12,17 @@ export let TextTrackEventType;
11
12
  TextTrackEventType[TextTrackEventType["AddCue"] = 0] = "AddCue";
12
13
  TextTrackEventType[TextTrackEventType["RemoveCue"] = 1] = "RemoveCue";
13
14
  })(TextTrackEventType || (TextTrackEventType = {}));
15
+
16
+ export let MediaTrackType;
17
+
18
+ (function (MediaTrackType) {
19
+ MediaTrackType[MediaTrackType["Audio"] = 0] = "Audio";
20
+ MediaTrackType[MediaTrackType["Video"] = 1] = "Video";
21
+ })(MediaTrackType || (MediaTrackType = {}));
22
+
23
+ export let MediaTrackEventType;
24
+
25
+ (function (MediaTrackEventType) {
26
+ MediaTrackEventType[MediaTrackEventType["ActiveQualityChanged"] = 0] = "ActiveQualityChanged";
27
+ })(MediaTrackEventType || (MediaTrackEventType = {}));
14
28
  //# sourceMappingURL=TrackEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TrackListEventType","TextTrackEventType"],"sources":["TrackEvent.ts"],"sourcesContent":["import type { TextTrack } from '../track/TextTrack';\nimport type { TextTrackCue } from '../track/TextTrackCue';\n\nexport enum TrackListEventType {\n /**\n * Dispatched when track has been added to the track list.\n */\n AddTrack,\n\n /**\n * Dispatched when track has been removed from the track list.\n */\n RemoveTrack,\n}\n\nexport interface TextTrackListEvent {\n /**\n * The type of text track list event.\n */\n readonly type: TrackListEventType;\n\n /**\n * The relevant text track.\n */\n readonly track: TextTrack;\n}\n\nexport enum TextTrackEventType {\n /**\n * Dispatched when cue has been added to the text track.\n */\n AddCue,\n\n /**\n * Dispatched when cue has been removed from the text track.\n */\n RemoveCue,\n}\n\nexport interface TextTrackEvent {\n /**\n * The type of text track event.\n */\n readonly type: TextTrackEventType;\n\n /**\n * The text track's uid to which this cue belongs.\n */\n readonly trackUid: number;\n\n /**\n * The text track's cue.\n */\n readonly cue: TextTrackCue;\n}\n"],"mappings":"AAGA,WAAYA,kBAAZ;;WAAYA,kB;EAAAA,kB,CAAAA,kB;EAAAA,kB,CAAAA,kB;GAAAA,kB,KAAAA,kB;;AAwBZ,WAAYC,kBAAZ;;WAAYA,kB;EAAAA,kB,CAAAA,kB;EAAAA,kB,CAAAA,kB;GAAAA,kB,KAAAA,kB"}
1
+ {"version":3,"names":["TrackListEventType","TextTrackEventType","MediaTrackType","MediaTrackEventType"],"sources":["TrackEvent.ts"],"sourcesContent":["import type { TextTrack } from '../track/TextTrack';\nimport type { TextTrackCue } from '../track/TextTrackCue';\nimport type { MediaTrack } from '../track/MediaTrack';\nimport type { Quality } from '../track/Quality';\n\nexport enum TrackListEventType {\n /**\n * Dispatched when track has been added to the track list.\n */\n AddTrack,\n\n /**\n * Dispatched when track has been removed from the track list.\n */\n RemoveTrack,\n\n /**\n * Fired when a track has been changed.\n */\n ChangeTrack,\n}\n\nexport interface TrackListEvent {\n /**\n * The type of track list event.\n */\n readonly type: TrackListEventType;\n}\n\nexport interface TextTrackListEvent extends TrackListEvent {\n /**\n * The relevant text track.\n */\n readonly track: TextTrack;\n}\n\nexport enum TextTrackEventType {\n /**\n * Dispatched when cue has been added to the text track.\n */\n AddCue,\n\n /**\n * Dispatched when cue has been removed from the text track.\n */\n RemoveCue,\n}\n\nexport interface TextTrackEvent {\n /**\n * The type of text track event.\n */\n readonly type: TextTrackEventType;\n\n /**\n * The text track's uid to which this cue belongs.\n */\n readonly trackUid: number;\n\n /**\n * The text track's cue.\n */\n readonly cue: TextTrackCue;\n}\n\nexport enum MediaTrackType {\n Audio,\n\n Video,\n}\n\nexport interface MediaTrackListEvent extends TrackListEvent {\n /**\n * The relevant media track type, either {@link MediaTrackType.Audio} or {@link MediaTrackType.Video}.\n */\n readonly trackType: MediaTrackType;\n\n /**\n * The relevant media track.\n */\n readonly track: MediaTrack;\n}\n\nexport enum MediaTrackEventType {\n /**\n * Dispatched when the media track's active quality changes.\n */\n ActiveQualityChanged,\n}\n\nexport interface MediaTrackEvent {\n /**\n * The type of media track event.\n */\n readonly type: MediaTrackEventType;\n\n /**\n * The media track's type to which event belongs, either {@link MediaTrackType.Audio} or {@link MediaTrackType.Video}.\n */\n readonly trackType: MediaTrackType;\n\n /**\n * The media track's uid to which event belongs.\n */\n readonly trackUid: number;\n\n /**\n * The affected media track's qualities.\n */\n readonly qualities?: Quality | Quality[];\n}\n"],"mappings":"AAKA,WAAYA,kBAAZ;;WAAYA,kB;EAAAA,kB,CAAAA,kB;EAAAA,kB,CAAAA,kB;EAAAA,kB,CAAAA,kB;GAAAA,kB,KAAAA,kB;;AA+BZ,WAAYC,kBAAZ;;WAAYA,kB;EAAAA,kB,CAAAA,kB;EAAAA,kB,CAAAA,kB;GAAAA,kB,KAAAA,kB;;AA6BZ,WAAYC,cAAZ;;WAAYA,c;EAAAA,c,CAAAA,c;EAAAA,c,CAAAA,c;GAAAA,c,KAAAA,c;;AAkBZ,WAAYC,mBAAZ;;WAAYA,mB;EAAAA,mB,CAAAA,mB;GAAAA,mB,KAAAA,mB"}
@@ -147,6 +147,18 @@ export class THEOplayerView extends PureComponent {
147
147
  }
148
148
  });
149
149
 
150
+ _defineProperty(this, "_onMediaTrackListEvent", event => {
151
+ if (this.props.onMediaTrackListEvent) {
152
+ this.props.onMediaTrackListEvent(event.nativeEvent);
153
+ }
154
+ });
155
+
156
+ _defineProperty(this, "_onMediaTrackEvent", event => {
157
+ if (this.props.onMediaTrackEvent) {
158
+ this.props.onMediaTrackEvent(event.nativeEvent);
159
+ }
160
+ });
161
+
150
162
  _defineProperty(this, "_onAdEvent", event => {
151
163
  if (this.props.onAdEvent) {
152
164
  this.props.onAdEvent(event.nativeEvent);
@@ -280,6 +292,8 @@ export class THEOplayerView extends PureComponent {
280
292
  onNativeSegmentNotFound: this._onSegmentNotFound,
281
293
  onNativeTextTrackListEvent: this._onTextTrackListEvent,
282
294
  onNativeTextTrackEvent: this._onTextTrackEvent,
295
+ onNativeMediaTrackListEvent: this._onMediaTrackListEvent,
296
+ onNativeMediaTrackEvent: this._onMediaTrackEvent,
283
297
  onNativeAdEvent: this._onAdEvent,
284
298
  onNativeFullscreenPlayerWillPresent: this._onFullscreenPlayerWillPresent,
285
299
  onNativeFullscreenPlayerDidPresent: this._onFullscreenPlayerDidPresent,
@@ -1 +1 @@
1
- {"version":3,"names":["React","PureComponent","findNodeHandle","StyleSheet","requireNativeComponent","View","UIManager","Platform","styles","THEOplayerNativeAdsAPI","decodeNanInf","THEOplayerView","constructor","props","reset","onSourceChange","maybeChangeBufferingState","onLoadStart","onLoadedData","event","onLoadedMetadata","nativeEvent","duration","error","setState","onError","onProgress","onPlay","onPlaying","onPause","onSeeking","onSeeked","onEnded","readyState","onReadyStateChange","onTimeUpdate","onDurationChange","onSegmentNotFound","onTextTrackListEvent","onTextTrackEvent","onAdEvent","onFullscreenPlayerWillPresent","onFullscreenPlayerDidPresent","onFullscreenPlayerWillDismiss","onFullscreenPlayerDidDismiss","_root","createRef","state","initialState","_adsApi","componentWillUnmount","OS","destroyTheoPlayer","node","current","command","Commands","destroy","params","dispatchViewManagerCommand","seek","time","isNaN","Error","setNativeProps","nativeHandle","ads","nativeProps","isBuffering","wasBuffering","paused","newIsBuffering","onBufferingStateChange","buildWrapperProps","targetVideoQuality","Object","assign","Array","isArray","render","wrapperProps","base","style","source","_onSourceChange","_onLoadStart","_onLoadedData","_onLoadedMetadata","_onError","_onProgress","_onPlay","_onPlaying","_onPause","_onSeeking","_onSeeked","_onEnded","_onReadStateChange","_onTimeUpdate","_onDurationChange","_onSegmentNotFound","_onTextTrackListEvent","_onTextTrackEvent","_onAdEvent","_onFullscreenPlayerWillPresent","_onFullscreenPlayerDidPresent","_onFullscreenPlayerWillDismiss","_onFullscreenPlayerDidDismiss","absoluteFill","undefined","LINKING_ERROR","select","ios","default","ComponentName","THEOplayerRCTView","getViewManagerConfig"],"sources":["THEOplayerView.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { findNodeHandle, StyleSheet, requireNativeComponent, View, UIManager, Platform, NativeSyntheticEvent, HostComponent } from 'react-native';\nimport type {\n DurationChangeEvent,\n ErrorEvent,\n LoadedMetadataEvent,\n ReadyStateChangeEvent,\n THEOplayerViewComponent,\n THEOplayerViewProps,\n TimeUpdateEvent,\n ProgressEvent,\n PlayerError,\n SegmentNotFoundEvent,\n TextTrackListEvent,\n TextTrackEvent,\n AdEvent,\n AdsAPI,\n} from 'react-native-theoplayer';\n\nimport styles from './THEOplayerView.style';\nimport type { SourceDescription } from 'react-native-theoplayer';\nimport { THEOplayerNativeAdsAPI } from './ads/THEOplayerNativeAdsAPI';\nimport { decodeNanInf } from './utils/TypeUtils';\n\ninterface THEOplayerRCTViewProps extends THEOplayerViewProps {\n ref: React.RefObject<THEOplayerViewNativeComponent>;\n src: SourceDescription;\n seek?: number;\n\n onNativeSourceChange: () => void;\n onNativeLoadStart: () => void;\n onNativeLoadedData: () => void;\n onNativeLoadedMetadata: (event: NativeSyntheticEvent<LoadedMetadataEvent>) => void;\n onNativeReadyStateChange?: (event: NativeSyntheticEvent<ReadyStateChangeEvent>) => void;\n onNativeError: (event: NativeSyntheticEvent<ErrorEvent>) => void;\n onNativeProgress: (event: NativeSyntheticEvent<ProgressEvent>) => void;\n onNativePlay: () => void;\n onNativePlaying: () => void;\n onNativePause: () => void;\n onNativeSeeking: () => void;\n onNativeSeeked: () => void;\n onNativeEnded: () => void;\n onNativeTimeUpdate: (event: NativeSyntheticEvent<TimeUpdateEvent>) => void;\n onNativeDurationChange: (event: NativeSyntheticEvent<DurationChangeEvent>) => void;\n onNativeSegmentNotFound: (event: NativeSyntheticEvent<SegmentNotFoundEvent>) => void;\n onNativeTextTrackListEvent: (event: NativeSyntheticEvent<TextTrackListEvent>) => void;\n onNativeTextTrackEvent: (event: NativeSyntheticEvent<TextTrackEvent>) => void;\n onNativeAdEvent: (event: NativeSyntheticEvent<AdEvent>) => void;\n onNativeFullscreenPlayerWillPresent?: () => void;\n onNativeFullscreenPlayerDidPresent?: () => void;\n onNativeFullscreenPlayerWillDismiss?: () => void;\n onNativeFullscreenPlayerDidDismiss?: () => void;\n}\n\ninterface THEOplayerRCTViewState {\n isBuffering: boolean;\n error?: PlayerError;\n}\n\ninterface THEOplayerViewNativeComponent extends THEOplayerViewComponent, HostComponent<THEOplayerViewProps> {\n setNativeProps: (props: Partial<THEOplayerRCTViewProps>) => void;\n}\n\nexport class THEOplayerView extends PureComponent<THEOplayerViewProps, THEOplayerRCTViewState> implements THEOplayerViewComponent {\n private readonly _root: React.RefObject<THEOplayerViewNativeComponent>;\n private readonly _adsApi: THEOplayerNativeAdsAPI;\n\n private static initialState: THEOplayerRCTViewState = {\n isBuffering: false,\n error: undefined,\n };\n\n constructor(props: THEOplayerRCTViewProps) {\n super(props);\n this._root = React.createRef();\n this.state = THEOplayerView.initialState;\n this._adsApi = new THEOplayerNativeAdsAPI(this);\n }\n\n componentWillUnmount() {\n if (Platform.OS === 'ios') {\n // on iOS, we trigger an explicit 'destroy' to clean up the underlying THEOplayer\n this.destroyTheoPlayer();\n }\n }\n\n private destroyTheoPlayer() {\n const node = findNodeHandle(this._root.current);\n const command = (UIManager as { [index: string]: any })['THEOplayerRCTView'].Commands.destroy;\n const params: any[] = [];\n UIManager.dispatchViewManagerCommand(node, command, params);\n }\n\n public seek(time: number): void {\n if (isNaN(time)) {\n throw new Error('Specified time is not a number');\n }\n this.setNativeProps({ seek: time });\n }\n\n public get nativeHandle(): number | null {\n return findNodeHandle(this._root.current);\n }\n\n public get ads(): AdsAPI {\n return this._adsApi;\n }\n\n private reset() {\n this.setState(THEOplayerView.initialState);\n }\n\n private setNativeProps(nativeProps: Partial<THEOplayerRCTViewProps>) {\n if (this._root?.current) {\n this._root.current.setNativeProps(nativeProps);\n }\n }\n\n private maybeChangeBufferingState(isBuffering: boolean) {\n const { isBuffering: wasBuffering, error } = this.state;\n const { paused } = this.props;\n\n // do not change state to buffering in case of an error or if the player is paused\n const newIsBuffering = isBuffering && !error && !paused;\n this.setState({ isBuffering: newIsBuffering });\n\n // notify change in buffering state\n if (newIsBuffering !== wasBuffering && this.props.onBufferingStateChange) {\n this.props.onBufferingStateChange(isBuffering);\n }\n }\n\n private _onSourceChange = () => {\n this.reset();\n\n if (this.props.onSourceChange) {\n this.props.onSourceChange();\n }\n };\n\n private _onLoadStart = () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(true);\n\n if (this.props.onLoadStart) {\n this.props.onLoadStart();\n }\n };\n\n private _onLoadedData = () => {\n if (this.props.onLoadedData) {\n this.props.onLoadedData();\n }\n };\n\n private _onLoadedMetadata = (event: NativeSyntheticEvent<LoadedMetadataEvent>) => {\n if (this.props.onLoadedMetadata) {\n this.props.onLoadedMetadata({\n ...event.nativeEvent,\n duration: decodeNanInf(event.nativeEvent.duration),\n });\n }\n };\n\n private _onError = (event: NativeSyntheticEvent<ErrorEvent>) => {\n const { error } = event.nativeEvent;\n this.setState({ error });\n\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n if (this.props.onError) {\n this.props.onError(event.nativeEvent);\n }\n };\n\n private _onProgress = (event: NativeSyntheticEvent<ProgressEvent>) => {\n if (this.props.onProgress) {\n this.props.onProgress(event.nativeEvent);\n }\n };\n\n private _onPlay = () => {\n if (this.props.onPlay) {\n this.props.onPlay();\n }\n };\n\n private _onPlaying = () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n if (this.props.onPlaying) {\n this.props.onPlaying();\n }\n };\n\n private _onPause = () => {\n if (this.props.onPause) {\n this.props.onPause();\n }\n };\n\n private _onSeeking = () => {\n if (this.props.onSeeking) {\n this.props.onSeeking();\n }\n };\n\n private _onSeeked = () => {\n if (this.props.onSeeked) {\n this.props.onSeeked();\n }\n };\n\n private _onEnded = () => {\n if (this.props.onEnded) {\n this.props.onEnded();\n }\n };\n\n private _onReadStateChange = (event: NativeSyntheticEvent<ReadyStateChangeEvent>) => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(event.nativeEvent.readyState < 3);\n\n if (this.props.onReadyStateChange) {\n this.props.onReadyStateChange(event.nativeEvent);\n }\n };\n\n private _onTimeUpdate = (event: NativeSyntheticEvent<TimeUpdateEvent>) => {\n if (this.props.onTimeUpdate) {\n this.props.onTimeUpdate(event.nativeEvent);\n }\n };\n\n private _onDurationChange = (event: NativeSyntheticEvent<DurationChangeEvent>) => {\n if (this.props.onDurationChange) {\n this.props.onDurationChange({\n duration: decodeNanInf(event.nativeEvent.duration),\n });\n }\n };\n\n private _onSegmentNotFound = (event: NativeSyntheticEvent<SegmentNotFoundEvent>) => {\n if (this.props.onSegmentNotFound) {\n this.props.onSegmentNotFound(event.nativeEvent);\n }\n };\n\n private _onTextTrackListEvent = (event: NativeSyntheticEvent<TextTrackListEvent>) => {\n if (this.props.onTextTrackListEvent) {\n this.props.onTextTrackListEvent(event.nativeEvent);\n }\n };\n\n private _onTextTrackEvent = (event: NativeSyntheticEvent<TextTrackEvent>) => {\n if (this.props.onTextTrackEvent) {\n this.props.onTextTrackEvent(event.nativeEvent);\n }\n };\n\n private _onAdEvent = (event: NativeSyntheticEvent<AdEvent>) => {\n if (this.props.onAdEvent) {\n this.props.onAdEvent(event.nativeEvent);\n }\n };\n\n private _onFullscreenPlayerWillPresent = () => {\n if (this.props.onFullscreenPlayerWillPresent) {\n this.props.onFullscreenPlayerWillPresent();\n }\n };\n\n private _onFullscreenPlayerDidPresent = () => {\n if (this.props.onFullscreenPlayerDidPresent) {\n this.props.onFullscreenPlayerDidPresent();\n }\n };\n\n private _onFullscreenPlayerWillDismiss = () => {\n if (this.props.onFullscreenPlayerWillDismiss) {\n this.props.onFullscreenPlayerWillDismiss();\n }\n };\n\n private _onFullscreenPlayerDidDismiss = () => {\n if (this.props.onFullscreenPlayerDidDismiss) {\n this.props.onFullscreenPlayerDidDismiss();\n }\n };\n\n private buildWrapperProps(): THEOplayerViewProps {\n const { targetVideoQuality } = this.props;\n return Object.assign(\n {},\n {\n ...this.props,\n // Always pass an array for targetVideoQuality.\n targetVideoQuality: !targetVideoQuality ? [] : Array.isArray(targetVideoQuality) ? targetVideoQuality : [targetVideoQuality],\n },\n );\n }\n\n public render(): JSX.Element {\n const wrapperProps = this.buildWrapperProps();\n return (\n <View style={[styles.base, wrapperProps.style]}>\n <THEOplayerRCTView\n ref={this._root}\n src={this.props.source || {}}\n onNativeSourceChange={this._onSourceChange}\n onNativeLoadStart={this._onLoadStart}\n onNativeLoadedData={this._onLoadedData}\n onNativeLoadedMetadata={this._onLoadedMetadata}\n onNativeError={this._onError}\n onNativeProgress={this._onProgress}\n onNativePlay={this._onPlay}\n onNativePlaying={this._onPlaying}\n onNativePause={this._onPause}\n onNativeSeeking={this._onSeeking}\n onNativeSeeked={this._onSeeked}\n onNativeEnded={this._onEnded}\n onNativeReadyStateChange={this._onReadStateChange}\n onNativeTimeUpdate={this._onTimeUpdate}\n onNativeDurationChange={this._onDurationChange}\n onNativeSegmentNotFound={this._onSegmentNotFound}\n onNativeTextTrackListEvent={this._onTextTrackListEvent}\n onNativeTextTrackEvent={this._onTextTrackEvent}\n onNativeAdEvent={this._onAdEvent}\n onNativeFullscreenPlayerWillPresent={this._onFullscreenPlayerWillPresent}\n onNativeFullscreenPlayerDidPresent={this._onFullscreenPlayerDidPresent}\n onNativeFullscreenPlayerWillDismiss={this._onFullscreenPlayerWillDismiss}\n onNativeFullscreenPlayerDidDismiss={this._onFullscreenPlayerDidDismiss}\n style={StyleSheet.absoluteFill}\n {...wrapperProps}\n />\n </View>\n );\n }\n}\n\nconst LINKING_ERROR =\n `The package 'react-native-theoplayer' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nconst ComponentName = 'THEOplayerRCTView';\n\nconst THEOplayerRCTView =\n UIManager.getViewManagerConfig(ComponentName) != null\n ? requireNativeComponent<THEOplayerRCTViewProps>(ComponentName)\n : () => {\n throw new Error(LINKING_ERROR);\n };\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","PureComponent","findNodeHandle","StyleSheet","requireNativeComponent","View","UIManager","Platform","styles","THEOplayerNativeAdsAPI","decodeNanInf","THEOplayerView","constructor","props","reset","onSourceChange","maybeChangeBufferingState","onLoadStart","onLoadedData","event","onLoadedMetadata","nativeEvent","duration","error","setState","onError","onProgress","onPlay","onPlaying","onPause","onSeeking","onSeeked","onEnded","readyState","onReadyStateChange","onTimeUpdate","onDurationChange","onSegmentNotFound","onTextTrackListEvent","onTextTrackEvent","onMediaTrackListEvent","onMediaTrackEvent","onAdEvent","onFullscreenPlayerWillPresent","onFullscreenPlayerDidPresent","onFullscreenPlayerWillDismiss","onFullscreenPlayerDidDismiss","_root","createRef","state","initialState","_adsApi","componentWillUnmount","OS","destroyTheoPlayer","node","current","command","Commands","destroy","params","dispatchViewManagerCommand","seek","time","isNaN","Error","setNativeProps","nativeHandle","ads","nativeProps","isBuffering","wasBuffering","paused","newIsBuffering","onBufferingStateChange","buildWrapperProps","targetVideoQuality","Object","assign","Array","isArray","render","wrapperProps","base","style","source","_onSourceChange","_onLoadStart","_onLoadedData","_onLoadedMetadata","_onError","_onProgress","_onPlay","_onPlaying","_onPause","_onSeeking","_onSeeked","_onEnded","_onReadStateChange","_onTimeUpdate","_onDurationChange","_onSegmentNotFound","_onTextTrackListEvent","_onTextTrackEvent","_onMediaTrackListEvent","_onMediaTrackEvent","_onAdEvent","_onFullscreenPlayerWillPresent","_onFullscreenPlayerDidPresent","_onFullscreenPlayerWillDismiss","_onFullscreenPlayerDidDismiss","absoluteFill","undefined","LINKING_ERROR","select","ios","default","ComponentName","THEOplayerRCTView","getViewManagerConfig"],"sources":["THEOplayerView.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { findNodeHandle, StyleSheet, requireNativeComponent, View, UIManager, Platform, NativeSyntheticEvent, HostComponent } from 'react-native';\nimport type {\n DurationChangeEvent,\n ErrorEvent,\n LoadedMetadataEvent,\n ReadyStateChangeEvent,\n THEOplayerViewComponent,\n THEOplayerViewProps,\n TimeUpdateEvent,\n ProgressEvent,\n PlayerError,\n SegmentNotFoundEvent,\n TextTrackListEvent,\n TextTrackEvent,\n AdEvent,\n AdsAPI,\n MediaTrackEvent,\n MediaTrackListEvent,\n} from 'react-native-theoplayer';\n\nimport styles from './THEOplayerView.style';\nimport type { SourceDescription } from 'react-native-theoplayer';\nimport { THEOplayerNativeAdsAPI } from './ads/THEOplayerNativeAdsAPI';\nimport { decodeNanInf } from './utils/TypeUtils';\n\ninterface THEOplayerRCTViewProps extends THEOplayerViewProps {\n ref: React.RefObject<THEOplayerViewNativeComponent>;\n src: SourceDescription;\n seek?: number;\n\n onNativeSourceChange: () => void;\n onNativeLoadStart: () => void;\n onNativeLoadedData: () => void;\n onNativeLoadedMetadata: (event: NativeSyntheticEvent<LoadedMetadataEvent>) => void;\n onNativeReadyStateChange?: (event: NativeSyntheticEvent<ReadyStateChangeEvent>) => void;\n onNativeError: (event: NativeSyntheticEvent<ErrorEvent>) => void;\n onNativeProgress: (event: NativeSyntheticEvent<ProgressEvent>) => void;\n onNativePlay: () => void;\n onNativePlaying: () => void;\n onNativePause: () => void;\n onNativeSeeking: () => void;\n onNativeSeeked: () => void;\n onNativeEnded: () => void;\n onNativeTimeUpdate: (event: NativeSyntheticEvent<TimeUpdateEvent>) => void;\n onNativeDurationChange: (event: NativeSyntheticEvent<DurationChangeEvent>) => void;\n onNativeSegmentNotFound: (event: NativeSyntheticEvent<SegmentNotFoundEvent>) => void;\n onNativeTextTrackListEvent: (event: NativeSyntheticEvent<TextTrackListEvent>) => void;\n onNativeTextTrackEvent: (event: NativeSyntheticEvent<TextTrackEvent>) => void;\n onNativeMediaTrackListEvent: (event: NativeSyntheticEvent<MediaTrackListEvent>) => void;\n onNativeMediaTrackEvent: (event: NativeSyntheticEvent<MediaTrackEvent>) => void;\n onNativeAdEvent: (event: NativeSyntheticEvent<AdEvent>) => void;\n onNativeFullscreenPlayerWillPresent?: () => void;\n onNativeFullscreenPlayerDidPresent?: () => void;\n onNativeFullscreenPlayerWillDismiss?: () => void;\n onNativeFullscreenPlayerDidDismiss?: () => void;\n}\n\ninterface THEOplayerRCTViewState {\n isBuffering: boolean;\n error?: PlayerError;\n}\n\ninterface THEOplayerViewNativeComponent extends THEOplayerViewComponent, HostComponent<THEOplayerViewProps> {\n setNativeProps: (props: Partial<THEOplayerRCTViewProps>) => void;\n}\n\nexport class THEOplayerView extends PureComponent<THEOplayerViewProps, THEOplayerRCTViewState> implements THEOplayerViewComponent {\n private readonly _root: React.RefObject<THEOplayerViewNativeComponent>;\n private readonly _adsApi: THEOplayerNativeAdsAPI;\n\n private static initialState: THEOplayerRCTViewState = {\n isBuffering: false,\n error: undefined,\n };\n\n constructor(props: THEOplayerRCTViewProps) {\n super(props);\n this._root = React.createRef();\n this.state = THEOplayerView.initialState;\n this._adsApi = new THEOplayerNativeAdsAPI(this);\n }\n\n componentWillUnmount() {\n if (Platform.OS === 'ios') {\n // on iOS, we trigger an explicit 'destroy' to clean up the underlying THEOplayer\n this.destroyTheoPlayer();\n }\n }\n\n private destroyTheoPlayer() {\n const node = findNodeHandle(this._root.current);\n const command = (UIManager as { [index: string]: any })['THEOplayerRCTView'].Commands.destroy;\n const params: any[] = [];\n UIManager.dispatchViewManagerCommand(node, command, params);\n }\n\n public seek(time: number): void {\n if (isNaN(time)) {\n throw new Error('Specified time is not a number');\n }\n this.setNativeProps({ seek: time });\n }\n\n public get nativeHandle(): number | null {\n return findNodeHandle(this._root.current);\n }\n\n public get ads(): AdsAPI {\n return this._adsApi;\n }\n\n private reset() {\n this.setState(THEOplayerView.initialState);\n }\n\n private setNativeProps(nativeProps: Partial<THEOplayerRCTViewProps>) {\n if (this._root?.current) {\n this._root.current.setNativeProps(nativeProps);\n }\n }\n\n private maybeChangeBufferingState(isBuffering: boolean) {\n const { isBuffering: wasBuffering, error } = this.state;\n const { paused } = this.props;\n\n // do not change state to buffering in case of an error or if the player is paused\n const newIsBuffering = isBuffering && !error && !paused;\n this.setState({ isBuffering: newIsBuffering });\n\n // notify change in buffering state\n if (newIsBuffering !== wasBuffering && this.props.onBufferingStateChange) {\n this.props.onBufferingStateChange(isBuffering);\n }\n }\n\n private _onSourceChange = () => {\n this.reset();\n\n if (this.props.onSourceChange) {\n this.props.onSourceChange();\n }\n };\n\n private _onLoadStart = () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(true);\n\n if (this.props.onLoadStart) {\n this.props.onLoadStart();\n }\n };\n\n private _onLoadedData = () => {\n if (this.props.onLoadedData) {\n this.props.onLoadedData();\n }\n };\n\n private _onLoadedMetadata = (event: NativeSyntheticEvent<LoadedMetadataEvent>) => {\n if (this.props.onLoadedMetadata) {\n this.props.onLoadedMetadata({\n ...event.nativeEvent,\n duration: decodeNanInf(event.nativeEvent.duration),\n });\n }\n };\n\n private _onError = (event: NativeSyntheticEvent<ErrorEvent>) => {\n const { error } = event.nativeEvent;\n this.setState({ error });\n\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n if (this.props.onError) {\n this.props.onError(event.nativeEvent);\n }\n };\n\n private _onProgress = (event: NativeSyntheticEvent<ProgressEvent>) => {\n if (this.props.onProgress) {\n this.props.onProgress(event.nativeEvent);\n }\n };\n\n private _onPlay = () => {\n if (this.props.onPlay) {\n this.props.onPlay();\n }\n };\n\n private _onPlaying = () => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(false);\n\n if (this.props.onPlaying) {\n this.props.onPlaying();\n }\n };\n\n private _onPause = () => {\n if (this.props.onPause) {\n this.props.onPause();\n }\n };\n\n private _onSeeking = () => {\n if (this.props.onSeeking) {\n this.props.onSeeking();\n }\n };\n\n private _onSeeked = () => {\n if (this.props.onSeeked) {\n this.props.onSeeked();\n }\n };\n\n private _onEnded = () => {\n if (this.props.onEnded) {\n this.props.onEnded();\n }\n };\n\n private _onReadStateChange = (event: NativeSyntheticEvent<ReadyStateChangeEvent>) => {\n // potentially notify change in buffering state\n this.maybeChangeBufferingState(event.nativeEvent.readyState < 3);\n\n if (this.props.onReadyStateChange) {\n this.props.onReadyStateChange(event.nativeEvent);\n }\n };\n\n private _onTimeUpdate = (event: NativeSyntheticEvent<TimeUpdateEvent>) => {\n if (this.props.onTimeUpdate) {\n this.props.onTimeUpdate(event.nativeEvent);\n }\n };\n\n private _onDurationChange = (event: NativeSyntheticEvent<DurationChangeEvent>) => {\n if (this.props.onDurationChange) {\n this.props.onDurationChange({\n duration: decodeNanInf(event.nativeEvent.duration),\n });\n }\n };\n\n private _onSegmentNotFound = (event: NativeSyntheticEvent<SegmentNotFoundEvent>) => {\n if (this.props.onSegmentNotFound) {\n this.props.onSegmentNotFound(event.nativeEvent);\n }\n };\n\n private _onTextTrackListEvent = (event: NativeSyntheticEvent<TextTrackListEvent>) => {\n if (this.props.onTextTrackListEvent) {\n this.props.onTextTrackListEvent(event.nativeEvent);\n }\n };\n\n private _onTextTrackEvent = (event: NativeSyntheticEvent<TextTrackEvent>) => {\n if (this.props.onTextTrackEvent) {\n this.props.onTextTrackEvent(event.nativeEvent);\n }\n };\n\n private _onMediaTrackListEvent = (event: NativeSyntheticEvent<MediaTrackListEvent>) => {\n if (this.props.onMediaTrackListEvent) {\n this.props.onMediaTrackListEvent(event.nativeEvent);\n }\n };\n\n private _onMediaTrackEvent = (event: NativeSyntheticEvent<MediaTrackEvent>) => {\n if (this.props.onMediaTrackEvent) {\n this.props.onMediaTrackEvent(event.nativeEvent);\n }\n };\n\n private _onAdEvent = (event: NativeSyntheticEvent<AdEvent>) => {\n if (this.props.onAdEvent) {\n this.props.onAdEvent(event.nativeEvent);\n }\n };\n\n private _onFullscreenPlayerWillPresent = () => {\n if (this.props.onFullscreenPlayerWillPresent) {\n this.props.onFullscreenPlayerWillPresent();\n }\n };\n\n private _onFullscreenPlayerDidPresent = () => {\n if (this.props.onFullscreenPlayerDidPresent) {\n this.props.onFullscreenPlayerDidPresent();\n }\n };\n\n private _onFullscreenPlayerWillDismiss = () => {\n if (this.props.onFullscreenPlayerWillDismiss) {\n this.props.onFullscreenPlayerWillDismiss();\n }\n };\n\n private _onFullscreenPlayerDidDismiss = () => {\n if (this.props.onFullscreenPlayerDidDismiss) {\n this.props.onFullscreenPlayerDidDismiss();\n }\n };\n\n private buildWrapperProps(): THEOplayerViewProps {\n const { targetVideoQuality } = this.props;\n return Object.assign(\n {},\n {\n ...this.props,\n // Always pass an array for targetVideoQuality.\n targetVideoQuality: !targetVideoQuality ? [] : Array.isArray(targetVideoQuality) ? targetVideoQuality : [targetVideoQuality],\n },\n );\n }\n\n public render(): JSX.Element {\n const wrapperProps = this.buildWrapperProps();\n return (\n <View style={[styles.base, wrapperProps.style]}>\n <THEOplayerRCTView\n ref={this._root}\n src={this.props.source || {}}\n onNativeSourceChange={this._onSourceChange}\n onNativeLoadStart={this._onLoadStart}\n onNativeLoadedData={this._onLoadedData}\n onNativeLoadedMetadata={this._onLoadedMetadata}\n onNativeError={this._onError}\n onNativeProgress={this._onProgress}\n onNativePlay={this._onPlay}\n onNativePlaying={this._onPlaying}\n onNativePause={this._onPause}\n onNativeSeeking={this._onSeeking}\n onNativeSeeked={this._onSeeked}\n onNativeEnded={this._onEnded}\n onNativeReadyStateChange={this._onReadStateChange}\n onNativeTimeUpdate={this._onTimeUpdate}\n onNativeDurationChange={this._onDurationChange}\n onNativeSegmentNotFound={this._onSegmentNotFound}\n onNativeTextTrackListEvent={this._onTextTrackListEvent}\n onNativeTextTrackEvent={this._onTextTrackEvent}\n onNativeMediaTrackListEvent={this._onMediaTrackListEvent}\n onNativeMediaTrackEvent={this._onMediaTrackEvent}\n onNativeAdEvent={this._onAdEvent}\n onNativeFullscreenPlayerWillPresent={this._onFullscreenPlayerWillPresent}\n onNativeFullscreenPlayerDidPresent={this._onFullscreenPlayerDidPresent}\n onNativeFullscreenPlayerWillDismiss={this._onFullscreenPlayerWillDismiss}\n onNativeFullscreenPlayerDidDismiss={this._onFullscreenPlayerDidDismiss}\n style={StyleSheet.absoluteFill}\n {...wrapperProps}\n />\n </View>\n );\n }\n}\n\nconst LINKING_ERROR =\n `The package 'react-native-theoplayer' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nconst ComponentName = 'THEOplayerRCTView';\n\nconst THEOplayerRCTView =\n UIManager.getViewManagerConfig(ComponentName) != null\n ? requireNativeComponent<THEOplayerRCTViewProps>(ComponentName)\n : () => {\n throw new Error(LINKING_ERROR);\n };\n"],"mappings":"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"}