@100mslive/react-native-hms 1.12.2 → 2.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +70 -12
- package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +8 -8
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +38 -12
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManagerImpl.kt +185 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +20 -10
- package/android/src/main/java/com/reactnativehmssdk/{HMSManager.kt → HMSManagerImpl.kt} +28 -111
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +3 -3
- package/android/src/main/java/com/reactnativehmssdk/HMSReactNativeEvent.kt +29 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManagerImpl.kt +119 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +33 -5
- package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +9 -9
- package/android/src/main/java/com/reactnativehmssdk/HmssdkPackage.kt +42 -3
- package/android/src/newarch/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +128 -0
- package/android/src/newarch/java/com/reactnativehmssdk/HMSManager.kt +332 -0
- package/android/src/newarch/java/com/reactnativehmssdk/HMSSDKViewManager.kt +102 -0
- package/android/src/oldarch/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +61 -0
- package/android/src/oldarch/java/com/reactnativehmssdk/HMSManager.kt +351 -0
- package/android/src/oldarch/java/com/reactnativehmssdk/HMSSDKViewManager.kt +87 -0
- package/ios/HMSHLSPlayerComponentView.mm +325 -0
- package/ios/HMSHLSPlayerManager.m +10 -0
- package/ios/HMSHLSPlayerManager.swift +91 -79
- package/ios/HMSManager.m +13 -0
- package/ios/HMSManager.mm +365 -0
- package/ios/HMSManager.swift +109 -103
- package/ios/HMSView.m +9 -0
- package/ios/HMSView.swift +44 -14
- package/ios/HMSViewComponentView.mm +229 -0
- package/lib/commonjs/classes/HmsView.js +45 -48
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +46 -26
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +5 -4
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/modules/HMSManagerModule.js +3 -10
- package/lib/commonjs/modules/HMSManagerModule.js.map +1 -1
- package/lib/commonjs/specs/HMSHLSPlayerNativeComponent.js +75 -0
- package/lib/commonjs/specs/HMSHLSPlayerNativeComponent.js.map +1 -0
- package/lib/commonjs/specs/HMSViewNativeComponent.js +55 -0
- package/lib/commonjs/specs/HMSViewNativeComponent.js.map +1 -0
- package/lib/commonjs/specs/NativeHMSManager.js +38 -0
- package/lib/commonjs/specs/NativeHMSManager.js.map +1 -0
- package/lib/module/classes/HmsView.js +46 -49
- package/lib/module/classes/HmsView.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js +48 -28
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +3 -3
- package/lib/module/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
- package/lib/module/modules/HMSManagerModule.js +1 -9
- package/lib/module/modules/HMSManagerModule.js.map +1 -1
- package/lib/module/specs/HMSHLSPlayerNativeComponent.js +69 -0
- package/lib/module/specs/HMSHLSPlayerNativeComponent.js.map +1 -0
- package/lib/module/specs/HMSViewNativeComponent.js +49 -0
- package/lib/module/specs/HMSViewNativeComponent.js.map +1 -0
- package/lib/module/specs/NativeHMSManager.js +33 -0
- package/lib/module/specs/NativeHMSManager.js.map +1 -0
- package/lib/typescript/components/HMSHLSPlayer/RCTHMSHLSPlayer.d.ts +6 -9
- package/lib/typescript/specs/HMSHLSPlayerNativeComponent.d.ts +115 -0
- package/lib/typescript/specs/HMSViewNativeComponent.d.ts +97 -0
- package/lib/typescript/specs/NativeHMSManager.d.ts +147 -0
- package/package.json +16 -1
- package/react-native-hms.podspec +43 -0
- package/src/classes/HmsView.tsx +60 -78
- package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +62 -128
- package/src/components/HMSHLSPlayer/RCTHMSHLSPlayer.ts +8 -13
- package/src/modules/HMSManagerModule.ts +1 -14
- package/src/specs/HMSHLSPlayerNativeComponent.ts +203 -0
- package/src/specs/HMSViewNativeComponent.ts +119 -0
- package/src/specs/NativeHMSManager.ts +307 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +0 -144
- package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManager.kt +0 -111
|
@@ -24,57 +24,63 @@ const _HMSHLSPlayer = ({
|
|
|
24
24
|
const promiseAndIdsMap = (0, _react.useMemo)(() => new Map(), []);
|
|
25
25
|
const currentRequestId = (0, _react.useRef)(1);
|
|
26
26
|
(0, _react.useImperativeHandle)(ref, () => ({
|
|
27
|
+
// `url` is optional at the JS API level: omit it (or pass undefined)
|
|
28
|
+
// to play the URL currently configured on the player; pass a string
|
|
29
|
+
// to switch to a new stream. The Codegen `play` command signature is
|
|
30
|
+
// `(viewRef, url: string)` (non-optional), so we pass `''` to mean
|
|
31
|
+
// "no override" — the native side treats empty-string as the
|
|
32
|
+
// "use existing url" sentinel.
|
|
27
33
|
play: url => {
|
|
28
|
-
if (hmsHlsPlayerRef.current
|
|
29
|
-
|
|
34
|
+
if (hmsHlsPlayerRef.current) {
|
|
35
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.play(hmsHlsPlayerRef.current, url ?? '');
|
|
30
36
|
}
|
|
31
37
|
},
|
|
32
38
|
stop: () => {
|
|
33
|
-
if (hmsHlsPlayerRef.current
|
|
34
|
-
|
|
39
|
+
if (hmsHlsPlayerRef.current) {
|
|
40
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.stop(hmsHlsPlayerRef.current);
|
|
35
41
|
}
|
|
36
42
|
},
|
|
37
43
|
pause: () => {
|
|
38
|
-
if (hmsHlsPlayerRef.current
|
|
39
|
-
|
|
44
|
+
if (hmsHlsPlayerRef.current) {
|
|
45
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.pause(hmsHlsPlayerRef.current);
|
|
40
46
|
}
|
|
41
47
|
},
|
|
42
48
|
resume: () => {
|
|
43
|
-
if (hmsHlsPlayerRef.current
|
|
44
|
-
|
|
49
|
+
if (hmsHlsPlayerRef.current) {
|
|
50
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.resume(hmsHlsPlayerRef.current);
|
|
45
51
|
}
|
|
46
52
|
},
|
|
47
53
|
seekForward: seconds => {
|
|
48
54
|
if (typeof seconds !== 'number') {
|
|
49
55
|
throw new Error(seconds ? 'seconds must be a `number` type' : 'seconds was not provided');
|
|
50
56
|
}
|
|
51
|
-
if (hmsHlsPlayerRef.current
|
|
52
|
-
|
|
57
|
+
if (hmsHlsPlayerRef.current) {
|
|
58
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.seekForward(hmsHlsPlayerRef.current, seconds);
|
|
53
59
|
}
|
|
54
60
|
},
|
|
55
61
|
seekBackward: seconds => {
|
|
56
62
|
if (typeof seconds !== 'number') {
|
|
57
63
|
throw new Error(seconds ? 'seconds must be a `number` type' : 'seconds was not provided');
|
|
58
64
|
}
|
|
59
|
-
if (hmsHlsPlayerRef.current
|
|
60
|
-
|
|
65
|
+
if (hmsHlsPlayerRef.current) {
|
|
66
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.seekBackward(hmsHlsPlayerRef.current, seconds);
|
|
61
67
|
}
|
|
62
68
|
},
|
|
63
69
|
seekToLivePosition: () => {
|
|
64
|
-
if (hmsHlsPlayerRef.current
|
|
65
|
-
|
|
70
|
+
if (hmsHlsPlayerRef.current) {
|
|
71
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.seekToLivePosition(hmsHlsPlayerRef.current);
|
|
66
72
|
}
|
|
67
73
|
},
|
|
68
74
|
setVolume: level => {
|
|
69
75
|
if (typeof level !== 'number') {
|
|
70
76
|
throw new Error(level ? 'level must be a `number` type' : 'level was not provided');
|
|
71
77
|
}
|
|
72
|
-
if (hmsHlsPlayerRef.current
|
|
73
|
-
|
|
78
|
+
if (hmsHlsPlayerRef.current) {
|
|
79
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.setVolume(hmsHlsPlayerRef.current, level);
|
|
74
80
|
}
|
|
75
81
|
},
|
|
76
82
|
isClosedCaptionSupported: () => {
|
|
77
|
-
if (hmsHlsPlayerRef.current
|
|
83
|
+
if (hmsHlsPlayerRef.current) {
|
|
78
84
|
const requestId = currentRequestId.current++;
|
|
79
85
|
const promise = new Promise((resolve, reject) => {
|
|
80
86
|
promiseAndIdsMap.set(requestId, {
|
|
@@ -82,13 +88,13 @@ const _HMSHLSPlayer = ({
|
|
|
82
88
|
reject
|
|
83
89
|
});
|
|
84
90
|
});
|
|
85
|
-
|
|
91
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.areClosedCaptionSupported(hmsHlsPlayerRef.current, requestId);
|
|
86
92
|
return promise;
|
|
87
93
|
}
|
|
88
94
|
return Promise.resolve(false);
|
|
89
95
|
},
|
|
90
96
|
isClosedCaptionEnabled: () => {
|
|
91
|
-
if (hmsHlsPlayerRef.current
|
|
97
|
+
if (hmsHlsPlayerRef.current) {
|
|
92
98
|
const requestId = currentRequestId.current++;
|
|
93
99
|
const promise = new Promise((resolve, reject) => {
|
|
94
100
|
promiseAndIdsMap.set(requestId, {
|
|
@@ -96,23 +102,23 @@ const _HMSHLSPlayer = ({
|
|
|
96
102
|
reject
|
|
97
103
|
});
|
|
98
104
|
});
|
|
99
|
-
|
|
105
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.isClosedCaptionEnabled(hmsHlsPlayerRef.current, requestId);
|
|
100
106
|
return promise;
|
|
101
107
|
}
|
|
102
108
|
return Promise.resolve(false);
|
|
103
109
|
},
|
|
104
110
|
enableClosedCaption: () => {
|
|
105
|
-
if (hmsHlsPlayerRef.current
|
|
106
|
-
|
|
111
|
+
if (hmsHlsPlayerRef.current) {
|
|
112
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.enableClosedCaption(hmsHlsPlayerRef.current);
|
|
107
113
|
}
|
|
108
114
|
},
|
|
109
115
|
disableClosedCaption: () => {
|
|
110
|
-
if (hmsHlsPlayerRef.current
|
|
111
|
-
|
|
116
|
+
if (hmsHlsPlayerRef.current) {
|
|
117
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.disableClosedCaption(hmsHlsPlayerRef.current);
|
|
112
118
|
}
|
|
113
119
|
},
|
|
114
120
|
getPlayerDurationDetails: () => {
|
|
115
|
-
if (hmsHlsPlayerRef.current
|
|
121
|
+
if (hmsHlsPlayerRef.current) {
|
|
116
122
|
const requestId = currentRequestId.current++;
|
|
117
123
|
const promise = new Promise((resolve, reject) => {
|
|
118
124
|
promiseAndIdsMap.set(requestId, {
|
|
@@ -120,7 +126,7 @@ const _HMSHLSPlayer = ({
|
|
|
120
126
|
reject
|
|
121
127
|
});
|
|
122
128
|
});
|
|
123
|
-
|
|
129
|
+
_RCTHMSHLSPlayer.RCTHMSHLSPlayerCommands.getPlayerDurationDetails(hmsHlsPlayerRef.current, requestId);
|
|
124
130
|
return promise;
|
|
125
131
|
}
|
|
126
132
|
return Promise.resolve({
|
|
@@ -194,12 +200,26 @@ const _HMSHLSPlayer = ({
|
|
|
194
200
|
return;
|
|
195
201
|
}
|
|
196
202
|
promiseMethods.resolve(data);
|
|
203
|
+
// Remove the entry so the map doesn't grow unboundedly across the
|
|
204
|
+
// lifetime of the player view.
|
|
205
|
+
promiseAndIdsMap.delete(requestId);
|
|
197
206
|
};
|
|
198
207
|
(0, _react.useEffect)(() => {
|
|
199
208
|
return () => {
|
|
200
209
|
_hmsStore.useHMSStore.getState().resetPlaybackSlice();
|
|
201
210
|
_hlsPlayerStatsStore.useHMSHLSPlayerStatsStore.getState().reset();
|
|
211
|
+
// Reject any in-flight command promises that didn't get a response
|
|
212
|
+
// before unmount. Under bridgeless mode the native side may not be
|
|
213
|
+
// able to deliver `onDataReturned` events back if the React tag is
|
|
214
|
+
// gone — left unrejected, those promises would hang forever.
|
|
215
|
+
promiseAndIdsMap.forEach(({
|
|
216
|
+
reject
|
|
217
|
+
}) => {
|
|
218
|
+
reject(new Error('HMSHLSPlayer unmounted before command response arrived'));
|
|
219
|
+
});
|
|
220
|
+
promiseAndIdsMap.clear();
|
|
202
221
|
};
|
|
222
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
203
223
|
}, []);
|
|
204
224
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
205
225
|
style: [styles.container, containerStyle]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_hooks","_RCTHMSHLSPlayer","_types","_HMSEncoder","_hmsStore","_hlsPlayerStatsStore","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_HMSHLSPlayer","url","style","containerStyle","enableStats","enableControls","ref","hmsHlsPlayerRef","useRef","promiseAndIdsMap","useMemo","Map","currentRequestId","useImperativeHandle","play","current","RCTHMSHLSPlayerViewManagerConfig","Commands","UIManager","dispatchViewManagerCommand","findNodeHandle","stop","undefined","pause","resume","seekForward","seconds","Error","seekBackward","seekToLivePosition","setVolume","level","isClosedCaptionSupported","areClosedCaptionSupported","requestId","promise","Promise","resolve","reject","isClosedCaptionEnabled","enableClosedCaption","disableClosedCaption","getPlayerDurationDetails","streamDuration","rollingWindowTime","handleHLSPlaybackEvent","nativeEvent","event","data","HMSHLSPlayerPlaybackEventTypes","ON_PLAYBACK_CUE_EVENT","transformedData","HMSEncoder","transformHMSHLSCueEventData","setHMSHLSPlayerCue","ON_PLAYBACK_FAILURE_EVENT","setHMSHLSPlayerPlaybackError","error","ON_PLAYBACK_RESOLUTION_CHANGE_EVENT","setHMSHLSPlayerResolution","setHMSHLSPlayerPlaybackState","state","handleHLSStatsEvent","HMSHLSPlayerStatsEventTypes","ON_STATS_EVENT_ERROR","setHMSHLSPlayerStatsError","setHMSHLSPlayerStats","handleHLSPlayerCuesEvent","setHMSHLSPlayerSubtitles","handleRequestedDataReturned","promiseMethods","console","warn","useEffect","useHMSStore","getState","resetPlaybackSlice","useHMSHLSPlayerStatsStore","reset","createElement","View","styles","container","playerWrapper","RCTHMSHLSPlayer","player","onHmsHlsPlaybackEvent","onHmsHlsStatsEvent","onHlsPlayerCuesEvent","Platform","OS","onDataReturned","HMSHLSPlayer","exports","React","forwardRef","StyleSheet","create","flex","alignItems","justifyContent","backgroundColor","width","height"],"sources":["HMSHLSPlayer.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport {\n View,\n StyleSheet,\n UIManager,\n findNodeHandle,\n Platform,\n} from 'react-native';\nimport type { StyleProp, ViewStyle } from 'react-native';\n\nimport {\n setHMSHLSPlayerCue,\n setHMSHLSPlayerPlaybackError,\n setHMSHLSPlayerPlaybackState,\n setHMSHLSPlayerResolution,\n setHMSHLSPlayerStats,\n setHMSHLSPlayerStatsError,\n setHMSHLSPlayerSubtitles,\n} from './hooks';\nimport {\n RCTHMSHLSPlayer,\n RCTHMSHLSPlayerViewManagerConfig,\n} from './RCTHMSHLSPlayer';\nimport type {\n HlsSPlayerCuesEventHandler,\n HmsHlsPlaybackEventHandler,\n HmsHlsStatsEventHandler,\n RCTHMSHLSPlayerRef,\n RequestedDataEventHandler,\n} from './RCTHMSHLSPlayer';\nimport {\n HMSHLSPlayerPlaybackEventTypes,\n HMSHLSPlayerStatsEventTypes,\n} from '../../types';\nimport type {\n HLSPlayerDurationDetails,\n HMSHLSPlayerPlaybackCueEventData,\n} from '../../types';\nimport { HMSEncoder } from '../../classes/HMSEncoder';\nimport type { HMSHLSPlayerPlaybackCue } from '../../stores/types';\nimport { useHMSStore } from '../../stores/hms-store';\nimport { useHMSHLSPlayerStatsStore } from '../../stores/hls-player-stats-store';\n\nexport interface HMSHLSPlayerProps {\n url?: string;\n style?: StyleProp<ViewStyle>;\n containerStyle?: StyleProp<ViewStyle>;\n aspectRatio?: number;\n enableStats?: boolean;\n enableControls?: boolean;\n}\n\nexport interface HMSHLSPlayerRefProperties {\n play: (url?: string) => void;\n stop: () => void;\n pause: () => void;\n resume: () => void;\n seekForward: (seconds: number) => void;\n seekBackward: (seconds: number) => void;\n seekToLivePosition: () => void;\n setVolume: (level: number) => void;\n isClosedCaptionSupported: () => Promise<boolean>;\n isClosedCaptionEnabled: () => Promise<boolean>;\n enableClosedCaption: () => void;\n disableClosedCaption: () => void;\n getPlayerDurationDetails: () => Promise<HLSPlayerDurationDetails>;\n}\n\nconst _HMSHLSPlayer: React.ForwardRefRenderFunction<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n> = (\n { url = '', style, containerStyle, enableStats, enableControls = false },\n ref\n) => {\n const hmsHlsPlayerRef = useRef<RCTHMSHLSPlayerRef | null>(null);\n const promiseAndIdsMap = useMemo(\n () =>\n new Map<\n number,\n { resolve(value: unknown): void; reject(reason?: any): void }\n >(),\n []\n );\n const currentRequestId = useRef(1);\n\n useImperativeHandle(\n ref,\n () => ({\n play: (url?: string) => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.play\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.play,\n url ? [url] : ['']\n );\n }\n },\n stop: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.stop\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.stop,\n undefined\n );\n }\n },\n pause: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.pause\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.pause,\n undefined\n );\n }\n },\n resume: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.resume\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.resume,\n undefined\n );\n }\n },\n seekForward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward,\n [seconds]\n );\n }\n },\n seekBackward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward,\n [seconds]\n );\n }\n },\n seekToLivePosition: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition,\n undefined\n );\n }\n },\n setVolume: (level: number) => {\n if (typeof level !== 'number') {\n throw new Error(\n level ? 'level must be a `number` type' : 'level was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume,\n [level]\n );\n }\n },\n isClosedCaptionSupported: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.areClosedCaptionSupported\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.areClosedCaptionSupported,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n isClosedCaptionEnabled: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.isClosedCaptionEnabled\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.isClosedCaptionEnabled,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n enableClosedCaption: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.enableClosedCaption\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.enableClosedCaption,\n undefined\n );\n }\n },\n disableClosedCaption: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.disableClosedCaption\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.disableClosedCaption,\n undefined\n );\n }\n },\n getPlayerDurationDetails: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.getPlayerDurationDetails\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<HLSPlayerDurationDetails>(\n (resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n }\n );\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.getPlayerDurationDetails,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve({\n streamDuration: undefined,\n rollingWindowTime: undefined,\n });\n },\n }),\n [currentRequestId, promiseAndIdsMap]\n );\n\n // Handle HLS Playback events\n const handleHLSPlaybackEvent: HmsHlsPlaybackEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_CUE_EVENT) {\n const transformedData = HMSEncoder.transformHMSHLSCueEventData<\n HMSHLSPlayerPlaybackCueEventData,\n HMSHLSPlayerPlaybackCue\n >(data);\n setHMSHLSPlayerCue(transformedData);\n } else if (\n event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_FAILURE_EVENT\n ) {\n setHMSHLSPlayerPlaybackError(data.error);\n } else if (\n event ===\n HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_RESOLUTION_CHANGE_EVENT\n ) {\n setHMSHLSPlayerResolution({ ...data });\n } else {\n setHMSHLSPlayerPlaybackState(data.state);\n }\n };\n\n // Handle HLS Stats events\n const handleHLSStatsEvent: HmsHlsStatsEventHandler = ({ nativeEvent }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerStatsEventTypes.ON_STATS_EVENT_ERROR) {\n setHMSHLSPlayerStatsError(data);\n } else {\n setHMSHLSPlayerStats(data);\n }\n };\n\n // Handle HLS Player Cues events (e.g. usage - Closed Captions)\n const handleHLSPlayerCuesEvent: HlsSPlayerCuesEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === 'ON_CLOSED_CAPTION_UPDATE') {\n setHMSHLSPlayerSubtitles(data);\n }\n };\n\n // Handle Requested data\n const handleRequestedDataReturned: RequestedDataEventHandler = ({\n nativeEvent,\n }) => {\n const { requestId, data } = nativeEvent;\n const promiseMethods = promiseAndIdsMap.get(requestId);\n\n if (!promiseMethods) {\n console.warn(\n '#function handleRequestedDataReturned',\n \"Didn't found promise methods by requestId: \",\n requestId\n );\n return;\n }\n promiseMethods.resolve(data);\n };\n\n useEffect(() => {\n return () => {\n useHMSStore.getState().resetPlaybackSlice();\n useHMSHLSPlayerStatsStore.getState().reset();\n };\n }, []);\n\n return (\n <View style={[styles.container, containerStyle]}>\n <View style={[styles.playerWrapper, style]}>\n <RCTHMSHLSPlayer\n ref={hmsHlsPlayerRef}\n url={url}\n style={styles.player}\n enableStats={enableStats}\n enableControls={enableControls}\n onHmsHlsPlaybackEvent={handleHLSPlaybackEvent}\n onHmsHlsStatsEvent={handleHLSStatsEvent}\n onHlsPlayerCuesEvent={\n Platform.OS === 'android' ? handleHLSPlayerCuesEvent : undefined\n }\n onDataReturned={handleRequestedDataReturned}\n />\n </View>\n </View>\n );\n};\n\nexport const HMSHLSPlayer = React.forwardRef<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n>(_HMSHLSPlayer);\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n playerWrapper: {\n backgroundColor: '#000000',\n alignItems: 'center',\n justifyContent: 'center',\n },\n player: {\n width: '100%',\n height: '100%',\n flex: 1,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_hooks","_RCTHMSHLSPlayer","_types","_HMSEncoder","_hmsStore","_hlsPlayerStatsStore","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_HMSHLSPlayer","url","style","containerStyle","enableStats","enableControls","ref","hmsHlsPlayerRef","useRef","promiseAndIdsMap","useMemo","Map","currentRequestId","useImperativeHandle","play","current","RCTHMSHLSPlayerCommands","stop","pause","resume","seekForward","seconds","Error","seekBackward","seekToLivePosition","setVolume","level","isClosedCaptionSupported","requestId","promise","Promise","resolve","reject","areClosedCaptionSupported","isClosedCaptionEnabled","enableClosedCaption","disableClosedCaption","getPlayerDurationDetails","streamDuration","undefined","rollingWindowTime","handleHLSPlaybackEvent","nativeEvent","event","data","HMSHLSPlayerPlaybackEventTypes","ON_PLAYBACK_CUE_EVENT","transformedData","HMSEncoder","transformHMSHLSCueEventData","setHMSHLSPlayerCue","ON_PLAYBACK_FAILURE_EVENT","setHMSHLSPlayerPlaybackError","error","ON_PLAYBACK_RESOLUTION_CHANGE_EVENT","setHMSHLSPlayerResolution","setHMSHLSPlayerPlaybackState","state","handleHLSStatsEvent","HMSHLSPlayerStatsEventTypes","ON_STATS_EVENT_ERROR","setHMSHLSPlayerStatsError","setHMSHLSPlayerStats","handleHLSPlayerCuesEvent","setHMSHLSPlayerSubtitles","handleRequestedDataReturned","promiseMethods","console","warn","delete","useEffect","useHMSStore","getState","resetPlaybackSlice","useHMSHLSPlayerStatsStore","reset","forEach","clear","createElement","View","styles","container","playerWrapper","RCTHMSHLSPlayer","player","onHmsHlsPlaybackEvent","onHmsHlsStatsEvent","onHlsPlayerCuesEvent","Platform","OS","onDataReturned","HMSHLSPlayer","exports","React","forwardRef","StyleSheet","create","flex","alignItems","justifyContent","backgroundColor","width","height"],"sources":["HMSHLSPlayer.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport { View, StyleSheet, Platform } from 'react-native';\nimport type { StyleProp, ViewStyle } from 'react-native';\n\nimport {\n setHMSHLSPlayerCue,\n setHMSHLSPlayerPlaybackError,\n setHMSHLSPlayerPlaybackState,\n setHMSHLSPlayerResolution,\n setHMSHLSPlayerStats,\n setHMSHLSPlayerStatsError,\n setHMSHLSPlayerSubtitles,\n} from './hooks';\nimport { RCTHMSHLSPlayer, RCTHMSHLSPlayerCommands } from './RCTHMSHLSPlayer';\nimport type {\n HlsSPlayerCuesEventHandler,\n HmsHlsPlaybackEventHandler,\n HmsHlsStatsEventHandler,\n RCTHMSHLSPlayerRef,\n RequestedDataEventHandler,\n} from './RCTHMSHLSPlayer';\nimport {\n HMSHLSPlayerPlaybackEventTypes,\n HMSHLSPlayerStatsEventTypes,\n} from '../../types';\nimport type {\n HLSPlayerDurationDetails,\n HMSHLSPlayerPlaybackCueEventData,\n} from '../../types';\nimport { HMSEncoder } from '../../classes/HMSEncoder';\nimport type { HMSHLSPlayerPlaybackCue } from '../../stores/types';\nimport { useHMSStore } from '../../stores/hms-store';\nimport { useHMSHLSPlayerStatsStore } from '../../stores/hls-player-stats-store';\n\nexport interface HMSHLSPlayerProps {\n url?: string;\n style?: StyleProp<ViewStyle>;\n containerStyle?: StyleProp<ViewStyle>;\n aspectRatio?: number;\n enableStats?: boolean;\n enableControls?: boolean;\n}\n\nexport interface HMSHLSPlayerRefProperties {\n play: (url?: string) => void;\n stop: () => void;\n pause: () => void;\n resume: () => void;\n seekForward: (seconds: number) => void;\n seekBackward: (seconds: number) => void;\n seekToLivePosition: () => void;\n setVolume: (level: number) => void;\n isClosedCaptionSupported: () => Promise<boolean>;\n isClosedCaptionEnabled: () => Promise<boolean>;\n enableClosedCaption: () => void;\n disableClosedCaption: () => void;\n getPlayerDurationDetails: () => Promise<HLSPlayerDurationDetails>;\n}\n\nconst _HMSHLSPlayer: React.ForwardRefRenderFunction<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n> = (\n { url = '', style, containerStyle, enableStats, enableControls = false },\n ref\n) => {\n const hmsHlsPlayerRef = useRef<RCTHMSHLSPlayerRef | null>(null);\n const promiseAndIdsMap = useMemo(\n () =>\n new Map<\n number,\n { resolve(value: unknown): void; reject(reason?: any): void }\n >(),\n []\n );\n const currentRequestId = useRef(1);\n\n useImperativeHandle(\n ref,\n () => ({\n // `url` is optional at the JS API level: omit it (or pass undefined)\n // to play the URL currently configured on the player; pass a string\n // to switch to a new stream. The Codegen `play` command signature is\n // `(viewRef, url: string)` (non-optional), so we pass `''` to mean\n // \"no override\" — the native side treats empty-string as the\n // \"use existing url\" sentinel.\n play: (url?: string) => {\n if (hmsHlsPlayerRef.current) {\n RCTHMSHLSPlayerCommands.play(hmsHlsPlayerRef.current, url ?? '');\n }\n },\n stop: () => {\n if (hmsHlsPlayerRef.current) {\n RCTHMSHLSPlayerCommands.stop(hmsHlsPlayerRef.current);\n }\n },\n pause: () => {\n if (hmsHlsPlayerRef.current) {\n RCTHMSHLSPlayerCommands.pause(hmsHlsPlayerRef.current);\n }\n },\n resume: () => {\n if (hmsHlsPlayerRef.current) {\n RCTHMSHLSPlayerCommands.resume(hmsHlsPlayerRef.current);\n }\n },\n seekForward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (hmsHlsPlayerRef.current) {\n RCTHMSHLSPlayerCommands.seekForward(hmsHlsPlayerRef.current, seconds);\n }\n },\n seekBackward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (hmsHlsPlayerRef.current) {\n RCTHMSHLSPlayerCommands.seekBackward(\n hmsHlsPlayerRef.current,\n seconds\n );\n }\n },\n seekToLivePosition: () => {\n if (hmsHlsPlayerRef.current) {\n RCTHMSHLSPlayerCommands.seekToLivePosition(hmsHlsPlayerRef.current);\n }\n },\n setVolume: (level: number) => {\n if (typeof level !== 'number') {\n throw new Error(\n level ? 'level must be a `number` type' : 'level was not provided'\n );\n }\n\n if (hmsHlsPlayerRef.current) {\n RCTHMSHLSPlayerCommands.setVolume(hmsHlsPlayerRef.current, level);\n }\n },\n isClosedCaptionSupported: () => {\n if (hmsHlsPlayerRef.current) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n RCTHMSHLSPlayerCommands.areClosedCaptionSupported(\n hmsHlsPlayerRef.current,\n requestId\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n isClosedCaptionEnabled: () => {\n if (hmsHlsPlayerRef.current) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n RCTHMSHLSPlayerCommands.isClosedCaptionEnabled(\n hmsHlsPlayerRef.current,\n requestId\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n enableClosedCaption: () => {\n if (hmsHlsPlayerRef.current) {\n RCTHMSHLSPlayerCommands.enableClosedCaption(hmsHlsPlayerRef.current);\n }\n },\n disableClosedCaption: () => {\n if (hmsHlsPlayerRef.current) {\n RCTHMSHLSPlayerCommands.disableClosedCaption(hmsHlsPlayerRef.current);\n }\n },\n getPlayerDurationDetails: () => {\n if (hmsHlsPlayerRef.current) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<HLSPlayerDurationDetails>(\n (resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n }\n );\n\n RCTHMSHLSPlayerCommands.getPlayerDurationDetails(\n hmsHlsPlayerRef.current,\n requestId\n );\n return promise;\n }\n return Promise.resolve({\n streamDuration: undefined,\n rollingWindowTime: undefined,\n });\n },\n }),\n [currentRequestId, promiseAndIdsMap]\n );\n\n // Handle HLS Playback events\n const handleHLSPlaybackEvent: HmsHlsPlaybackEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_CUE_EVENT) {\n const transformedData = HMSEncoder.transformHMSHLSCueEventData<\n HMSHLSPlayerPlaybackCueEventData,\n HMSHLSPlayerPlaybackCue\n >(data);\n setHMSHLSPlayerCue(transformedData);\n } else if (\n event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_FAILURE_EVENT\n ) {\n setHMSHLSPlayerPlaybackError(data.error);\n } else if (\n event ===\n HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_RESOLUTION_CHANGE_EVENT\n ) {\n setHMSHLSPlayerResolution({ ...data });\n } else {\n setHMSHLSPlayerPlaybackState(data.state);\n }\n };\n\n // Handle HLS Stats events\n const handleHLSStatsEvent: HmsHlsStatsEventHandler = ({ nativeEvent }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerStatsEventTypes.ON_STATS_EVENT_ERROR) {\n setHMSHLSPlayerStatsError(data);\n } else {\n setHMSHLSPlayerStats(data);\n }\n };\n\n // Handle HLS Player Cues events (e.g. usage - Closed Captions)\n const handleHLSPlayerCuesEvent: HlsSPlayerCuesEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === 'ON_CLOSED_CAPTION_UPDATE') {\n setHMSHLSPlayerSubtitles(data);\n }\n };\n\n // Handle Requested data\n const handleRequestedDataReturned: RequestedDataEventHandler = ({\n nativeEvent,\n }) => {\n const { requestId, data } = nativeEvent;\n const promiseMethods = promiseAndIdsMap.get(requestId);\n\n if (!promiseMethods) {\n console.warn(\n '#function handleRequestedDataReturned',\n \"Didn't found promise methods by requestId: \",\n requestId\n );\n return;\n }\n promiseMethods.resolve(data);\n // Remove the entry so the map doesn't grow unboundedly across the\n // lifetime of the player view.\n promiseAndIdsMap.delete(requestId);\n };\n\n useEffect(() => {\n return () => {\n useHMSStore.getState().resetPlaybackSlice();\n useHMSHLSPlayerStatsStore.getState().reset();\n // Reject any in-flight command promises that didn't get a response\n // before unmount. Under bridgeless mode the native side may not be\n // able to deliver `onDataReturned` events back if the React tag is\n // gone — left unrejected, those promises would hang forever.\n promiseAndIdsMap.forEach(({ reject }) => {\n reject(\n new Error('HMSHLSPlayer unmounted before command response arrived')\n );\n });\n promiseAndIdsMap.clear();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <View style={[styles.container, containerStyle]}>\n <View style={[styles.playerWrapper, style]}>\n <RCTHMSHLSPlayer\n ref={hmsHlsPlayerRef}\n url={url}\n style={styles.player}\n enableStats={enableStats}\n enableControls={enableControls}\n onHmsHlsPlaybackEvent={handleHLSPlaybackEvent as any}\n onHmsHlsStatsEvent={handleHLSStatsEvent as any}\n onHlsPlayerCuesEvent={\n Platform.OS === 'android'\n ? (handleHLSPlayerCuesEvent as any)\n : undefined\n }\n onDataReturned={handleRequestedDataReturned as any}\n />\n </View>\n </View>\n );\n};\n\nexport const HMSHLSPlayer = React.forwardRef<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n>(_HMSHLSPlayer);\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n playerWrapper: {\n backgroundColor: '#000000',\n alignItems: 'center',\n justifyContent: 'center',\n },\n player: {\n width: '100%',\n height: '100%',\n flex: 1,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
const
|
|
6
|
+
exports.RCTHMSHLSPlayerCommands = exports.RCTHMSHLSPlayer = void 0;
|
|
7
|
+
var _HMSHLSPlayerNativeComponent = _interopRequireWildcard(require("../../specs/HMSHLSPlayerNativeComponent"));
|
|
8
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
9
|
+
const RCTHMSHLSPlayer = exports.RCTHMSHLSPlayer = _HMSHLSPlayerNativeComponent.default;
|
|
10
|
+
const RCTHMSHLSPlayerCommands = exports.RCTHMSHLSPlayerCommands = _HMSHLSPlayerNativeComponent.Commands;
|
|
10
11
|
//# sourceMappingURL=RCTHMSHLSPlayer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_HMSHLSPlayerNativeComponent","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RCTHMSHLSPlayer","exports","HMSHLSPlayerNativeComponent","RCTHMSHLSPlayerCommands","Commands"],"sources":["RCTHMSHLSPlayer.ts"],"sourcesContent":["import type { ElementRef } from 'react';\nimport type { StyleProp, NativeSyntheticEvent, ViewStyle } from 'react-native';\nimport HMSHLSPlayerNativeComponent, {\n Commands,\n} from '../../specs/HMSHLSPlayerNativeComponent';\nimport type {\n HMSHLSPlayerCuesEvent,\n HMSHLSPlayerPlaybackEvent,\n HMSHLSPlayerStatsEvent,\n RequestedDataEvent,\n} from '../../types';\n\nexport type HmsHlsPlaybackEventHandler = (\n event: NativeSyntheticEvent<HMSHLSPlayerPlaybackEvent>\n) => void;\n\nexport type HmsHlsStatsEventHandler = (\n event: NativeSyntheticEvent<HMSHLSPlayerStatsEvent>\n) => void;\n\nexport type HlsSPlayerCuesEventHandler = (\n event: NativeSyntheticEvent<HMSHLSPlayerCuesEvent>\n) => void;\n\nexport type RequestedDataEventHandler = (\n event: NativeSyntheticEvent<RequestedDataEvent>\n) => void;\n\nexport type RCTHMSHLSPlayerProps = {\n url?: string;\n style?: StyleProp<ViewStyle>;\n enableStats?: boolean;\n enableControls?: boolean;\n onHmsHlsPlaybackEvent?: HmsHlsPlaybackEventHandler;\n onHmsHlsStatsEvent?: HmsHlsStatsEventHandler;\n onDataReturned?: RequestedDataEventHandler;\n onHlsPlayerCuesEvent?: HlsSPlayerCuesEventHandler;\n};\n\nexport const RCTHMSHLSPlayer = HMSHLSPlayerNativeComponent;\n\nexport const RCTHMSHLSPlayerCommands = Commands;\n\nexport type RCTHMSHLSPlayerRef = ElementRef<typeof RCTHMSHLSPlayer>;\n"],"mappings":";;;;;;AAEA,IAAAA,4BAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEiD,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAmC1C,MAAMkB,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAGE,oCAA2B;AAEnD,MAAMC,uBAAuB,GAAAF,OAAA,CAAAE,uBAAA,GAAGC,qCAAQ","ignoreList":[]}
|
|
@@ -4,14 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
} = _reactNative.NativeModules;
|
|
11
|
-
if (HMSManager == null) {
|
|
12
|
-
console.error(`[@100mslive/react-native-hms] react-native-hms module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..).
|
|
13
|
-
|
|
14
|
-
For installation instructions, please refer to https://www.100ms.live/docs/react-native/v2/how-to-guides/install-the-sdk/integration`.split('\n').map(line => line.trim()).join('\n'));
|
|
15
|
-
}
|
|
16
|
-
var _default = exports.default = HMSManager;
|
|
7
|
+
var _NativeHMSManager = _interopRequireDefault(require("../specs/NativeHMSManager"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var _default = exports.default = _NativeHMSManager.default;
|
|
17
10
|
//# sourceMappingURL=HMSManagerModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_NativeHMSManager","_interopRequireDefault","require","e","__esModule","default","_default","exports","HMSManager"],"sources":["HMSManagerModule.ts"],"sourcesContent":["import HMSManager from '../specs/NativeHMSManager';\n\nexport type HMSManagerProps = any;\n\nexport default HMSManager as HMSManagerProps;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAmD,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAIpCG,yBAAU","ignoreList":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.Commands = void 0;
|
|
7
|
+
var _codegenNativeComponent = _interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeComponent"));
|
|
8
|
+
var _codegenNativeCommands = _interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeCommands"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
/**
|
|
11
|
+
* Fabric component spec for `<HMSHLSPlayer />`.
|
|
12
|
+
*
|
|
13
|
+
* Renders an HLS stream from the live room (host-published or recorded).
|
|
14
|
+
* Today's implementation lives in `ios/HMSHLSPlayerManager.swift` (paper)
|
|
15
|
+
* and `android/.../HMSHLSPlayerManager.kt` + `HMSHLSPlayer.kt` (paper).
|
|
16
|
+
* Phase 1 adds Fabric counterparts.
|
|
17
|
+
*
|
|
18
|
+
* This is the most surface-heavy component in the SDK:
|
|
19
|
+
* - 3 props (`url`, `enableStats`, `enableControls`)
|
|
20
|
+
* - 4 events (playback state, stats, request-response, captions)
|
|
21
|
+
* - 13 imperative commands
|
|
22
|
+
*
|
|
23
|
+
* Like {@link HMSViewNativeComponent}, Fabric requires explicit prop and
|
|
24
|
+
* event payload shapes. For Phase 1 we use minimal shapes that capture
|
|
25
|
+
* essential fields (e.g. `requestId` for response events) and leave the
|
|
26
|
+
* rest loose. Phase 2 tightens.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
30
|
+
// Event payload shapes
|
|
31
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Playback state-change event payload.
|
|
35
|
+
* Today's emitter in `HMSHLSPlayer.kt` / iOS counterpart sends an
|
|
36
|
+
* `eventType` plus a state-specific data object. Phase 2 will type the
|
|
37
|
+
* `data` field per state; Phase 1 carries it as a string blob.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Stats event payload (RTC-shape stats: bitrate, dropped frames, etc.).
|
|
42
|
+
* Carried as a stringified JSON blob for Phase 1; Phase 2 types it.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Response event for the request-style commands (`areClosedCaptionSupported`,
|
|
47
|
+
* `isClosedCaptionEnabled`, `getPlayerDurationDetails`). The JS-side
|
|
48
|
+
* matches the response to the in-flight Promise via `requestId`.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Closed-captions cue payload. Native-side fires a cue object with start
|
|
53
|
+
* time, end time, payload string, etc. Phase 1 keeps it as a stringified
|
|
54
|
+
* blob; Phase 2 will type it.
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
58
|
+
// Props
|
|
59
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
60
|
+
|
|
61
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
62
|
+
// Imperative commands (13)
|
|
63
|
+
//
|
|
64
|
+
// `requestId`-bearing commands deliver their response via the
|
|
65
|
+
// `onDataReturned` event (see {@link OnDataReturnedPayload}). The JS
|
|
66
|
+
// wrapper in `src/components/HMSHLSPlayer/HMSHLSPlayer.tsx` currently
|
|
67
|
+
// allocates the requestId and resolves a promise on response; Phase 1
|
|
68
|
+
// keeps that pattern.
|
|
69
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
70
|
+
|
|
71
|
+
const Commands = exports.Commands = (0, _codegenNativeCommands.default)({
|
|
72
|
+
supportedCommands: ['play', 'stop', 'pause', 'resume', 'seekToLivePosition', 'seekForward', 'seekBackward', 'setVolume', 'areClosedCaptionSupported', 'isClosedCaptionEnabled', 'enableClosedCaption', 'disableClosedCaption', 'getPlayerDurationDetails']
|
|
73
|
+
});
|
|
74
|
+
var _default = exports.default = (0, _codegenNativeComponent.default)('HMSHLSPlayer');
|
|
75
|
+
//# sourceMappingURL=HMSHLSPlayerNativeComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","_codegenNativeCommands","e","__esModule","default","Commands","exports","codegenNativeCommands","supportedCommands","_default","codegenNativeComponent"],"sources":["HMSHLSPlayerNativeComponent.ts"],"sourcesContent":["/**\n * Fabric component spec for `<HMSHLSPlayer />`.\n *\n * Renders an HLS stream from the live room (host-published or recorded).\n * Today's implementation lives in `ios/HMSHLSPlayerManager.swift` (paper)\n * and `android/.../HMSHLSPlayerManager.kt` + `HMSHLSPlayer.kt` (paper).\n * Phase 1 adds Fabric counterparts.\n *\n * This is the most surface-heavy component in the SDK:\n * - 3 props (`url`, `enableStats`, `enableControls`)\n * - 4 events (playback state, stats, request-response, captions)\n * - 13 imperative commands\n *\n * Like {@link HMSViewNativeComponent}, Fabric requires explicit prop and\n * event payload shapes. For Phase 1 we use minimal shapes that capture\n * essential fields (e.g. `requestId` for response events) and leave the\n * rest loose. Phase 2 tightens.\n */\n\nimport type * as React from 'react';\nimport type { ViewProps, HostComponent } from 'react-native';\nimport type {\n DirectEventHandler,\n Double,\n Int32,\n WithDefault,\n} from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';\n\n// ─────────────────────────────────────────────────────────────────────────\n// Event payload shapes\n// ─────────────────────────────────────────────────────────────────────────\n\n/**\n * Playback state-change event payload.\n * Today's emitter in `HMSHLSPlayer.kt` / iOS counterpart sends an\n * `eventType` plus a state-specific data object. Phase 2 will type the\n * `data` field per state; Phase 1 carries it as a string blob.\n */\ntype OnHmsHlsPlaybackEventPayload = Readonly<{\n event: string;\n data: string;\n}>;\n\n/**\n * Stats event payload (RTC-shape stats: bitrate, dropped frames, etc.).\n * Carried as a stringified JSON blob for Phase 1; Phase 2 types it.\n */\ntype OnHmsHlsStatsEventPayload = Readonly<{\n event: string;\n data: string;\n}>;\n\n/**\n * Response event for the request-style commands (`areClosedCaptionSupported`,\n * `isClosedCaptionEnabled`, `getPlayerDurationDetails`). The JS-side\n * matches the response to the in-flight Promise via `requestId`.\n */\ntype OnDataReturnedPayload = Readonly<{\n requestId: Int32;\n result?: string;\n error?: string;\n}>;\n\n/**\n * Closed-captions cue payload. Native-side fires a cue object with start\n * time, end time, payload string, etc. Phase 1 keeps it as a stringified\n * blob; Phase 2 will type it.\n */\ntype OnHlsPlayerCuesEventPayload = Readonly<{\n event: string;\n data: string;\n}>;\n\n// ─────────────────────────────────────────────────────────────────────────\n// Props\n// ─────────────────────────────────────────────────────────────────────────\n\nexport interface NativeProps extends ViewProps {\n /** HLS stream URL to play. */\n url?: string;\n\n /** Emit periodic stats events via `onHmsHlsStatsEvent`. */\n enableStats?: WithDefault<boolean, false>;\n\n /** Show the native player's built-in controls UI overlay. */\n enableControls?: WithDefault<boolean, false>;\n\n /** Playback state changes (started/paused/buffering/ended/...). */\n onHmsHlsPlaybackEvent?: DirectEventHandler<OnHmsHlsPlaybackEventPayload>;\n\n /** Periodic stats (only fired when `enableStats=true`). */\n onHmsHlsStatsEvent?: DirectEventHandler<OnHmsHlsStatsEventPayload>;\n\n /** Response for request-style commands; matched by `requestId`. */\n onDataReturned?: DirectEventHandler<OnDataReturnedPayload>;\n\n /** Closed-captions cue events. */\n onHlsPlayerCuesEvent?: DirectEventHandler<OnHlsPlayerCuesEventPayload>;\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Imperative commands (13)\n//\n// `requestId`-bearing commands deliver their response via the\n// `onDataReturned` event (see {@link OnDataReturnedPayload}). The JS\n// wrapper in `src/components/HMSHLSPlayer/HMSHLSPlayer.tsx` currently\n// allocates the requestId and resolves a promise on response; Phase 1\n// keeps that pattern.\n// ─────────────────────────────────────────────────────────────────────────\n\nexport interface NativeCommands {\n /** Start playing. Pass `''` (empty string) to reuse the URL prop. */\n play: (viewRef: React.ElementRef<HostComponent<NativeProps>>, url: string) => void;\n\n /** Stop playback (releases the player). */\n stop: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;\n\n /** Pause playback (player remains allocated). */\n pause: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;\n\n /** Resume from paused state. */\n resume: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;\n\n /** Jump to the live edge (DVR HLS only). */\n seekToLivePosition: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;\n\n /** Seek `seconds` ahead from current position. */\n seekForward: (\n viewRef: React.ElementRef<HostComponent<NativeProps>>,\n seconds: Double\n ) => void;\n\n /** Seek `seconds` back from current position. */\n seekBackward: (\n viewRef: React.ElementRef<HostComponent<NativeProps>>,\n seconds: Double\n ) => void;\n\n /** Set volume `0–100` (integer). */\n setVolume: (\n viewRef: React.ElementRef<HostComponent<NativeProps>>,\n level: Int32\n ) => void;\n\n /**\n * Query whether the stream supports closed captions. Response via\n * `onDataReturned` matched by `requestId`.\n */\n areClosedCaptionSupported: (\n viewRef: React.ElementRef<HostComponent<NativeProps>>,\n requestId: Int32\n ) => void;\n\n /**\n * Query whether closed captions are currently enabled. Response via\n * `onDataReturned` matched by `requestId`.\n */\n isClosedCaptionEnabled: (\n viewRef: React.ElementRef<HostComponent<NativeProps>>,\n requestId: Int32\n ) => void;\n\n /** Enable closed captions display. */\n enableClosedCaption: (\n viewRef: React.ElementRef<HostComponent<NativeProps>>\n ) => void;\n\n /** Disable closed captions display. */\n disableClosedCaption: (\n viewRef: React.ElementRef<HostComponent<NativeProps>>\n ) => void;\n\n /**\n * Get current player duration details (currentTime, duration, live).\n * Response via `onDataReturned` matched by `requestId`.\n */\n getPlayerDurationDetails: (\n viewRef: React.ElementRef<HostComponent<NativeProps>>,\n requestId: Int32\n ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n supportedCommands: [\n 'play',\n 'stop',\n 'pause',\n 'resume',\n 'seekToLivePosition',\n 'seekForward',\n 'seekBackward',\n 'setVolume',\n 'areClosedCaptionSupported',\n 'isClosedCaptionEnabled',\n 'enableClosedCaption',\n 'disableClosedCaption',\n 'getPlayerDurationDetails',\n ],\n});\n\nexport default codegenNativeComponent<NativeProps>('HMSHLSPlayer');\n"],"mappings":";;;;;;AA2BA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAA2F,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA5B3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;;AAyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA0EO,MAAMG,QAAwB,GAAAC,OAAA,CAAAD,QAAA,GAAG,IAAAE,8BAAqB,EAAiB;EAC5EC,iBAAiB,EAAE,CACjB,MAAM,EACN,MAAM,EACN,OAAO,EACP,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,WAAW,EACX,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B;AAE9B,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAH,OAAA,CAAAF,OAAA,GAEY,IAAAM,+BAAsB,EAAc,cAAc,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.Commands = void 0;
|
|
7
|
+
var _codegenNativeComponent = _interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeComponent"));
|
|
8
|
+
var _codegenNativeCommands = _interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeCommands"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
/**
|
|
11
|
+
* Fabric component spec for `<HMSView />` — the native video tile.
|
|
12
|
+
*
|
|
13
|
+
* Used to render an `HMSVideoTrack` inside a React Native view tree.
|
|
14
|
+
* Today's implementation lives in `ios/HMSView.swift` (paper) and
|
|
15
|
+
* `android/.../HMSSDKViewManager.kt` + `HMSView.kt` (paper). Phase 1
|
|
16
|
+
* adds Fabric counterparts (`ios/HMSViewComponentView.mm`,
|
|
17
|
+
* `android/.../HMSSDKViewManager.kt` reworked to implement the generated
|
|
18
|
+
* `HMSViewManagerInterface`).
|
|
19
|
+
*
|
|
20
|
+
* Note: Fabric component specs require explicit prop and event payload
|
|
21
|
+
* shapes — Codegen does NOT accept `Object` for view props/events the
|
|
22
|
+
* way it does for TurboModule method payloads. The shapes below are
|
|
23
|
+
* narrow and well-known, so this isn't the same scaling problem as the
|
|
24
|
+
* TurboModule's 99-method surface.
|
|
25
|
+
*
|
|
26
|
+
* Surface authored: 4 props + 1 imperative command (`capture`) +
|
|
27
|
+
* 2 events (`onChange` for resolution updates, `onDataReturned` for
|
|
28
|
+
* capture command responses).
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Bag of identifiers passed to the native view to wire it up to a track.
|
|
33
|
+
* Mirrors the shape constructed in `src/classes/HmsView.tsx`.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Emitted when the video stream's resolution changes (e.g. simulcast
|
|
38
|
+
* layer switch). Native fires `topChange`; the JS-side dispatches as
|
|
39
|
+
* `onChange`. Used to drive Android view-sizing in `HmsView.tsx`.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Emitted in response to the `capture` imperative command. Carries the
|
|
44
|
+
* requestId from JS and either a base64 result or an error tuple.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Imperative commands callable on a `<HMSView />` ref.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
const Commands = exports.Commands = (0, _codegenNativeCommands.default)({
|
|
52
|
+
supportedCommands: ['capture']
|
|
53
|
+
});
|
|
54
|
+
var _default = exports.default = (0, _codegenNativeComponent.default)('HMSView');
|
|
55
|
+
//# sourceMappingURL=HMSViewNativeComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","_codegenNativeCommands","e","__esModule","default","Commands","exports","codegenNativeCommands","supportedCommands","_default","codegenNativeComponent"],"sources":["HMSViewNativeComponent.ts"],"sourcesContent":["/**\n * Fabric component spec for `<HMSView />` — the native video tile.\n *\n * Used to render an `HMSVideoTrack` inside a React Native view tree.\n * Today's implementation lives in `ios/HMSView.swift` (paper) and\n * `android/.../HMSSDKViewManager.kt` + `HMSView.kt` (paper). Phase 1\n * adds Fabric counterparts (`ios/HMSViewComponentView.mm`,\n * `android/.../HMSSDKViewManager.kt` reworked to implement the generated\n * `HMSViewManagerInterface`).\n *\n * Note: Fabric component specs require explicit prop and event payload\n * shapes — Codegen does NOT accept `Object` for view props/events the\n * way it does for TurboModule method payloads. The shapes below are\n * narrow and well-known, so this isn't the same scaling problem as the\n * TurboModule's 99-method surface.\n *\n * Surface authored: 4 props + 1 imperative command (`capture`) +\n * 2 events (`onChange` for resolution updates, `onDataReturned` for\n * capture command responses).\n */\n\nimport type * as React from 'react';\nimport type { ViewProps, HostComponent } from 'react-native';\nimport type {\n DirectEventHandler,\n Int32,\n WithDefault,\n} from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';\n\n/**\n * Bag of identifiers passed to the native view to wire it up to a track.\n * Mirrors the shape constructed in `src/classes/HmsView.tsx`.\n */\ntype DataProp = Readonly<{\n trackId: string;\n id: string;\n mirror: boolean;\n scaleType: string;\n}>;\n\n/**\n * Emitted when the video stream's resolution changes (e.g. simulcast\n * layer switch). Native fires `topChange`; the JS-side dispatches as\n * `onChange`. Used to drive Android view-sizing in `HmsView.tsx`.\n */\ntype OnChangeEvent = Readonly<{\n event: string;\n data: Readonly<{\n height: Int32;\n width: Int32;\n }>;\n}>;\n\n/**\n * Emitted in response to the `capture` imperative command. Carries the\n * requestId from JS and either a base64 result or an error tuple.\n */\ntype OnDataReturnedEvent = Readonly<{\n requestId: Int32;\n result?: string;\n error?: string;\n}>;\n\nexport interface NativeProps extends ViewProps {\n /** Track identifier bag. See {@link DataProp}. */\n data?: DataProp;\n\n /**\n * Enable automatic simulcast layer switching based on network\n * conditions. iOS-side default in `HMSView.swift` is true.\n */\n autoSimulcast?: WithDefault<boolean, true>;\n\n /**\n * How the video fits within the view. Values defined in\n * `src/classes/HMSVideoViewMode.ts` (ASPECT_FIT, ASPECT_FILL,\n * ASPECT_BALANCED).\n */\n scaleType?: WithDefault<string, 'ASPECT_FILL'>;\n\n /**\n * Render the video above the regular view hierarchy.\n * Platform: Android only — iOS view manager does not implement this.\n */\n setZOrderMediaOverlay?: WithDefault<boolean, false>;\n\n /**\n * Resolution-change events. Renamed from `onChange` to avoid colliding with\n * RN's built-in `topChange` internal event (registered as bubbling on every\n * RCTView), which triggers \"Event cannot be both direct and bubbling\".\n */\n onResolutionChange?: DirectEventHandler<OnChangeEvent>;\n\n /** Capture command response (success or error). */\n onDataReturned?: DirectEventHandler<OnDataReturnedEvent>;\n}\n\n/**\n * Imperative commands callable on a `<HMSView />` ref.\n */\nexport interface NativeCommands {\n /**\n * Capture a snapshot of the current video frame. The result (or\n * error) is delivered asynchronously via the `onDataReturned` event,\n * matched to this call by `requestId`.\n */\n capture: (\n viewRef: React.ElementRef<HostComponent<NativeProps>>,\n requestId: Int32\n ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n supportedCommands: ['capture'],\n});\n\nexport default codegenNativeComponent<NativeProps>('HMSView');\n"],"mappings":";;;;;;AA4BA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAA2F,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA7B3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;;AAyCA;AACA;AACA;;AAaO,MAAMG,QAAwB,GAAAC,OAAA,CAAAD,QAAA,GAAG,IAAAE,8BAAqB,EAAiB;EAC5EC,iBAAiB,EAAE,CAAC,SAAS;AAC/B,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAH,OAAA,CAAAF,OAAA,GAEY,IAAAM,+BAAsB,EAAc,SAAS,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
/**
|
|
9
|
+
* @100mslive/react-native-hms — TurboModule spec for HMSManager.
|
|
10
|
+
*
|
|
11
|
+
* This file is the source of truth for the JS↔native contract under
|
|
12
|
+
* React Native's New Architecture. At build time, RN's Codegen reads
|
|
13
|
+
* this spec and produces:
|
|
14
|
+
*
|
|
15
|
+
* - iOS: ios/build/.../NativeHMSManagerSpec.h (Obj-C++ protocol)
|
|
16
|
+
* - Android: android/build/.../NativeHMSManagerSpec.java (abstract class)
|
|
17
|
+
* - JS: typed wrappers + JSI fast-path bindings
|
|
18
|
+
*
|
|
19
|
+
* Phase 1 of the New Architecture migration uses **Object-typed** payloads
|
|
20
|
+
* (every dictionary in/out is just `Object`) to preserve today's runtime
|
|
21
|
+
* behavior without designing 99 typed payload schemas upfront. Phase 2 will
|
|
22
|
+
* tighten types per API surface area (room/peer/track core first, then
|
|
23
|
+
* chat, polls, recording, etc.).
|
|
24
|
+
*
|
|
25
|
+
* Method count: 99 iOS (96 async + 3 sync), 98 Android (93 async + 5 sync).
|
|
26
|
+
* Event count: 28 unique events (24 cross-platform + 4 platform-specific).
|
|
27
|
+
*
|
|
28
|
+
* Cross-platform asymmetries are noted inline. See
|
|
29
|
+
* NEW_ARCHITECTURE_MIGRATION.md / 100ms-rn-new-arch-migration-plan.md.md
|
|
30
|
+
* for the full migration plan.
|
|
31
|
+
*/
|
|
32
|
+
// DO NOT DELETE this default export even if it appears unused at JS runtime.
|
|
33
|
+
// React Native's Codegen statically parses this exact call shape at build time
|
|
34
|
+
// to extract the module name ('HMSManager') and emit the matching native
|
|
35
|
+
// abstract class (NativeHMSManagerSpec). Removing it fails Codegen with
|
|
36
|
+
// `UnusedModuleInterfaceParserError`.
|
|
37
|
+
var _default = exports.default = _reactNative.TurboModuleRegistry.getEnforcing('HMSManager');
|
|
38
|
+
//# sourceMappingURL=NativeHMSManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sources":["NativeHMSManager.ts"],"sourcesContent":["/**\n * @100mslive/react-native-hms — TurboModule spec for HMSManager.\n *\n * This file is the source of truth for the JS↔native contract under\n * React Native's New Architecture. At build time, RN's Codegen reads\n * this spec and produces:\n *\n * - iOS: ios/build/.../NativeHMSManagerSpec.h (Obj-C++ protocol)\n * - Android: android/build/.../NativeHMSManagerSpec.java (abstract class)\n * - JS: typed wrappers + JSI fast-path bindings\n *\n * Phase 1 of the New Architecture migration uses **Object-typed** payloads\n * (every dictionary in/out is just `Object`) to preserve today's runtime\n * behavior without designing 99 typed payload schemas upfront. Phase 2 will\n * tighten types per API surface area (room/peer/track core first, then\n * chat, polls, recording, etc.).\n *\n * Method count: 99 iOS (96 async + 3 sync), 98 Android (93 async + 5 sync).\n * Event count: 28 unique events (24 cross-platform + 4 platform-specific).\n *\n * Cross-platform asymmetries are noted inline. See\n * NEW_ARCHITECTURE_MIGRATION.md / 100ms-rn-new-arch-migration-plan.md.md\n * for the full migration plan.\n */\n\nimport type { TurboModule } from 'react-native';\nimport { TurboModuleRegistry } from 'react-native';\nimport type { Int32 } from 'react-native/Libraries/Types/CodegenTypes';\n\nexport interface Spec extends TurboModule {\n // ─────────────────────────────────────────────────────────────────────\n // 0. NativeEventEmitter convention methods\n //\n // RN's NativeEventEmitter on the JS side calls these on the native module\n // when listeners are added/removed. Required by the eventing infrastructure\n // even though our impl uses them as no-ops (we route events via a separate\n // DeviceEventManagerModule.RCTDeviceEventEmitter).\n // ─────────────────────────────────────────────────────────────────────\n\n addListener(eventName: string): void;\n removeListeners(count: Int32): void;\n\n // ─────────────────────────────────────────────────────────────────────\n // 1. Lifecycle\n // ─────────────────────────────────────────────────────────────────────\n\n build(data: Object): Promise<Object>;\n destroy(data: Object): Promise<Object>;\n preview(credentials: Object): void; // fire-and-forget on iOS\n previewForRole(data: Object): Promise<Object>;\n cancelPreview(data: Object): Promise<Object>;\n join(credentials: Object): void; // fire-and-forget on iOS\n leave(data: Object): Promise<Object>;\n endRoom(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 2. Track operations\n // ─────────────────────────────────────────────────────────────────────\n\n setLocalMute(data: Object): void; // fire-and-forget (impl is sync)\n setLocalVideoMute(data: Object): void; // fire-and-forget (impl is sync)\n switchCamera(data: Object): void; // fire-and-forget\n isMute(data: Object): Promise<Object>;\n changeTrackState(data: Object): Promise<Object>;\n changeTrackStateForRoles(data: Object): Promise<Object>;\n setVolume(data: Object): Promise<Object>;\n remoteMuteAllAudio(data: Object): Promise<Object>;\n setPlaybackAllowed(data: Object): Promise<Object>;\n isPlaybackAllowed(data: Object): Promise<Object>;\n setPlaybackForAllAudio(mute: Object): Promise<Object>;\n getRemoteVideoTrackFromTrackId(data: Object): Promise<Object>;\n getRemoteAudioTrackFromTrackId(data: Object): Promise<Object>;\n getVideoTrackLayer(data: Object): Promise<Object>;\n getVideoTrackLayerDefinition(data: Object): Promise<Object>;\n setVideoTrackLayer(data: Object): Promise<Object>;\n captureImageAtMaxSupportedResolution(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 3. Peer operations\n // ─────────────────────────────────────────────────────────────────────\n\n getLocalPeer(data: Object): Promise<Object>;\n getRemotePeers(data: Object): Promise<Object>;\n getRoles(data: Object): Promise<Object>;\n getRoom(data: Object): Promise<Object>;\n changeName(data: Object): Promise<Object>;\n changeMetadata(data: Object): Promise<Object>;\n changeRole(data: Object): Promise<Object>;\n changeRoleOfPeer(data: Object): Promise<Object>;\n changeRoleOfPeersWithRoles(data: Object): Promise<Object>;\n acceptRoleChange(data: Object): Promise<Object>;\n removePeer(data: Object): Promise<Object>;\n raiseLocalPeerHand(data: Object): Promise<Object>;\n lowerLocalPeerHand(data: Object): Promise<Object>;\n lowerRemotePeerHand(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 4. Peer list iterator (large-room support)\n // ─────────────────────────────────────────────────────────────────────\n\n // getPeerListIterator is sync — see \"Synchronous methods\" section below.\n peerListIteratorHasNext(data: Object): Promise<Object>;\n peerListIteratorNext(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 5. Messaging\n // ─────────────────────────────────────────────────────────────────────\n\n sendBroadcastMessage(data: Object): Promise<Object>;\n sendGroupMessage(data: Object): Promise<Object>;\n sendDirectMessage(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 6. RTMP / Recording / HLS streaming\n // ─────────────────────────────────────────────────────────────────────\n\n startRTMPOrRecording(data: Object): Promise<Object>;\n stopRtmpAndRecording(data: Object): Promise<Object>;\n startHLSStreaming(data: Object): Promise<Object>;\n stopHLSStreaming(data: Object): Promise<Object>;\n sendHLSTimedMetadata(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 7. Screen share\n // ─────────────────────────────────────────────────────────────────────\n\n startScreenshare(data: Object): Promise<Object>;\n stopScreenshare(data: Object): Promise<Object>;\n isScreenShared(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 8. Audio share — iOS API\n // Platform: iOS only. Android uses the startAudioshare/stopAudioshare\n // pair below.\n // ─────────────────────────────────────────────────────────────────────\n\n playAudioShare(data: Object): Promise<Object>; // iOS only\n pauseAudioShare(data: Object): Promise<Object>; // iOS only\n resumeAudioShare(data: Object): Promise<Object>; // iOS only\n stopAudioShare(data: Object): Promise<Object>; // iOS only\n setAudioShareVolume(data: Object): Promise<Object>; // iOS only\n audioShareCurrentTime(data: Object): Promise<Object>; // iOS only\n audioShareDuration(data: Object): Promise<Object>; // iOS only\n audioShareIsPlaying(data: Object): Promise<Object>; // iOS only\n\n // ─────────────────────────────────────────────────────────────────────\n // 9. Audio share — Android API\n // Platform: Android only. iOS uses the playAudioShare/... family above.\n // ─────────────────────────────────────────────────────────────────────\n\n startAudioshare(data: Object): Promise<Object>; // Android only — note lowercase 's'\n stopAudioshare(data: Object): Promise<Object>; // Android only — note lowercase 's'\n isAudioShared(data: Object): Promise<Object>; // Android only\n\n // ─────────────────────────────────────────────────────────────────────\n // 10. Audio output / devices\n // ─────────────────────────────────────────────────────────────────────\n\n switchAudioOutput(data: Object): Promise<Object>;\n switchAudioOutputUsingIOSUI(data: Object): Promise<Object>; // iOS only\n getAudioDevicesList(data: Object): Promise<Object>; // Android only\n getAudioOutputRouteType(data: Object): Promise<Object>; // Android only\n setAudioDeviceChangeListener(data: Object): void; // Android only\n setAudioMode(data: Object): Promise<Object>; // Android only\n setAudioMixingMode(data: Object): Promise<Object>; // Android only\n getAudioMixingMode(data: Object): Promise<Object>; // Android only\n getVolume(data: Object): Promise<Object>; // Android only\n\n // ─────────────────────────────────────────────────────────────────────\n // 11. Picture-in-Picture\n // ─────────────────────────────────────────────────────────────────────\n\n // handlePipActions is the only multi-argument method on the bridge. The\n // first argument is the action name (string), the second is the payload.\n handlePipActions(action: string, data: Object): Promise<Object>;\n setupPIP(data: Object): Promise<Object>; // iOS only\n stopPIP(data: Object): Promise<Object>; // iOS only\n disposePIP(data: Object): Promise<Object>; // iOS only\n isPIPActive(data: Object): Promise<Object>; // iOS only\n changeIOSPIPVideoTrack(data: Object): Promise<Object>; // iOS only\n setActiveSpeakerInIOSPIP(data: Object): Promise<Object>; // iOS only\n\n // ─────────────────────────────────────────────────────────────────────\n // 12. Network quality\n // ─────────────────────────────────────────────────────────────────────\n\n enableNetworkQualityUpdates(data: Object): void;\n disableNetworkQualityUpdates(data: Object): void;\n\n // ─────────────────────────────────────────────────────────────────────\n // 13. Session store / metadata\n // ─────────────────────────────────────────────────────────────────────\n\n getSessionMetadataForKey(data: Object): Promise<Object>;\n setSessionMetadataForKey(data: Object): Promise<Object>;\n addKeyChangeListener(data: Object): Promise<Object>;\n removeKeyChangeListener(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 14. Polls / Quiz\n // ─────────────────────────────────────────────────────────────────────\n\n quickStartPoll(data: Object): Promise<Object>;\n addResponseOnPollQuestion(data: Object): Promise<Object>;\n stopPoll(data: Object): Promise<Object>;\n fetchLeaderboard(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 15. Whiteboard\n // ─────────────────────────────────────────────────────────────────────\n\n startWhiteboard(data: Object): Promise<Object>;\n stopWhiteboard(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 16. Transcripts\n // ─────────────────────────────────────────────────────────────────────\n\n handleRealTimeTranscription(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 17. Noise cancellation\n // ─────────────────────────────────────────────────────────────────────\n\n enableNoiseCancellationPlugin(data: Object): Promise<Object>;\n disableNoiseCancellationPlugin(data: Object): Promise<Object>;\n isNoiseCancellationPluginEnabled(data: Object): Promise<Object>;\n isNoiseCancellationPluginAvailable(data: Object): Promise<Object>;\n\n // ─────────────────────────────────────────────────────────────────────\n // 18. Video plugin (virtual background, filters)\n // Platform: iOS only. Android delegates to the separate\n // @100mslive/react-native-video-plugin package.\n // ─────────────────────────────────────────────────────────────────────\n\n enableVideoPlugin(data: Object): Promise<Object>; // iOS only\n disableVideoPlugin(data: Object): Promise<Object>; // iOS only\n changeVirtualBackground(data: Object): Promise<Object>; // iOS only\n setVideoFilterParameter(data: Object): Promise<Object>; // iOS only\n\n // ─────────────────────────────────────────────────────────────────────\n // 19. Misc / system / config\n // ─────────────────────────────────────────────────────────────────────\n\n enableEvent(data: Object): Promise<Object>;\n disableEvent(data: Object): Promise<Object>;\n restrictData(data: Object): Promise<Object>;\n getAuthTokenByRoomCode(data: Object): Promise<Object>;\n getRoomLayout(data: Object): Promise<Object>;\n setAlwaysScreenOn(data: Object): Promise<Object>;\n hideSystemBars(): void; // Android only\n showSystemBars(): void; // Android only\n setPermissionsAccepted(data: Object): Promise<Object>; // Android only\n checkNotifications(): Promise<Object>; // Android only\n\n // ─────────────────────────────────────────────────────────────────────\n // 20. Synchronous methods\n // These bypass the Promise queue and run on the JS thread directly.\n // Codegen syntax: non-Promise return type signals sync.\n // ─────────────────────────────────────────────────────────────────────\n\n // Cross-platform sync methods (iOS + Android)\n getPeerProperty(data: Object): Object;\n getRoomProperty(data: Object): Object;\n getPeerListIterator(data: Object): Object;\n\n // Android-only sync methods\n setSoftInputMode(inputMode: number): number; // Android only\n getSoftInputMode(): number; // Android only\n\n // ─────────────────────────────────────────────────────────────────────\n // 21. Events — DEFERRED TO PHASE 2\n //\n // RN 0.77 (our current peer-dep floor) does NOT export the typed\n // `EventEmitter<TPayload>` symbol from\n // `react-native/Libraries/Types/CodegenTypes`; that's a 0.82+ feature.\n //\n // For Phase 1, events continue to flow through legacy `RCTEventEmitter`\n // (iOS) / `DeviceEventEmitter` (Android) exactly as they do today —\n // unchanged at runtime. They are NOT declared in this spec.\n //\n // When we bump the RN peer-dep floor to 0.82+ (likely as part of the\n // Phase 4 legacy-paper drop), Phase 2 will add typed event\n // declarations here. The 28-event inventory has been catalogued\n // separately in the migration plan doc — no information is lost by\n // not declaring them here today.\n //\n // The 28 events to add later (24 cross-platform + 4 platform-specific):\n // onPreview, onJoin, onRoomUpdate, onPeerUpdate (string value '3'),\n // onPeerListUpdated, onTrackUpdate, onRoleChangeRequest,\n // onChangeTrackStateRequest, onRemovedFromRoom, onError, onMessage,\n // onSpeaker, onReconnecting, onReconnected, onRtcStats,\n // onLocalAudioStats, onLocalVideoStats, onRemoteAudioStats,\n // onRemoteVideoStats, onSessionStoreAvailable,\n // onSessionStoreChanged, onTranscripts, onPollUpdate,\n // onWhiteboardUpdate, onAudioDeviceChanged (Android),\n // onPermissionsRequested (Android), onPipModeChanged,\n // onPipRoomLeave (Android).\n // ─────────────────────────────────────────────────────────────────────\n}\n\n// DO NOT DELETE this default export even if it appears unused at JS runtime.\n// React Native's Codegen statically parses this exact call shape at build time\n// to extract the module name ('HMSManager') and emit the matching native\n// abstract class (NativeHMSManagerSpec). Removing it fails Codegen with\n// `UnusedModuleInterfaceParserError`.\nexport default TurboModuleRegistry.getEnforcing<Spec>('HMSManager');\n"],"mappings":";;;;;;AA0BA,IAAAA,YAAA,GAAAC,OAAA;AA1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAsRA;AACA;AACA;AACA;AACA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACeC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
|