@stream-io/video-react-native-sdk 0.8.7 → 0.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/commonjs/components/Call/CallControls/ScreenShareToggleButton.js +6 -76
- package/dist/commonjs/components/Call/CallControls/ScreenShareToggleButton.js.map +1 -1
- package/dist/commonjs/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.js +7 -69
- package/dist/commonjs/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.js.map +1 -1
- package/dist/commonjs/components/Livestream/LivestreamPlayer/LivestreamPlayer.js +6 -5
- package/dist/commonjs/components/Livestream/LivestreamPlayer/LivestreamPlayer.js.map +1 -1
- package/dist/commonjs/hooks/index.js +11 -0
- package/dist/commonjs/hooks/index.js.map +1 -1
- package/dist/commonjs/hooks/useScreenShareButton.js +89 -0
- package/dist/commonjs/hooks/useScreenShareButton.js.map +1 -0
- package/dist/commonjs/version.js +1 -1
- package/dist/module/components/Call/CallControls/ScreenShareToggleButton.js +8 -78
- package/dist/module/components/Call/CallControls/ScreenShareToggleButton.js.map +1 -1
- package/dist/module/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.js +7 -68
- package/dist/module/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.js.map +1 -1
- package/dist/module/components/Livestream/LivestreamPlayer/LivestreamPlayer.js +3 -2
- package/dist/module/components/Livestream/LivestreamPlayer/LivestreamPlayer.js.map +1 -1
- package/dist/module/hooks/index.js +1 -0
- package/dist/module/hooks/index.js.map +1 -1
- package/dist/module/hooks/useScreenShareButton.js +83 -0
- package/dist/module/hooks/useScreenShareButton.js.map +1 -0
- package/dist/module/version.js +1 -1
- package/dist/typescript/components/Call/CallControls/ScreenShareToggleButton.d.ts.map +1 -1
- package/dist/typescript/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.d.ts +1 -1
- package/dist/typescript/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.d.ts.map +1 -1
- package/dist/typescript/components/Livestream/LivestreamPlayer/LivestreamPlayer.d.ts +1 -1
- package/dist/typescript/components/Livestream/LivestreamPlayer/LivestreamPlayer.d.ts.map +1 -1
- package/dist/typescript/hooks/index.d.ts +1 -0
- package/dist/typescript/hooks/index.d.ts.map +1 -1
- package/dist/typescript/hooks/useScreenShareButton.d.ts +9 -0
- package/dist/typescript/hooks/useScreenShareButton.d.ts.map +1 -0
- package/dist/typescript/version.d.ts +1 -1
- package/expo-config-plugin/dist/withAndroidManifest.js +6 -6
- package/expo-config-plugin/dist/withMainActivity.js +17 -0
- package/package.json +3 -3
- package/src/components/Call/CallControls/ScreenShareToggleButton.tsx +9 -95
- package/src/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.tsx +6 -91
- package/src/components/Livestream/LivestreamPlayer/LivestreamPlayer.tsx +4 -3
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useScreenShareButton.ts +128 -0
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
### [0.8.8](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.8.7...@stream-io/video-react-native-sdk-0.8.8) (2024-06-28)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **react-native:** enable android 14 compatibility for screensharing foreground service ([#1425](https://github.com/GetStream/stream-video-js/issues/1425)) ([f41aa10](https://github.com/GetStream/stream-video-js/commit/f41aa100b4a5f3ea72a3628407a5d101e9aea342))
|
|
11
|
+
|
|
5
12
|
### [0.8.7](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.8.6...@stream-io/video-react-native-sdk-0.8.7) (2024-06-25)
|
|
6
13
|
|
|
7
14
|
### Dependency Updates
|
|
@@ -11,17 +11,9 @@ var _ScreenShare = require("../../../icons/ScreenShare");
|
|
|
11
11
|
var _StopScreenShare = require("../../../icons/StopScreenShare");
|
|
12
12
|
var _CallControlsButton = require("./CallControlsButton");
|
|
13
13
|
var _ThemeContext = require("../../../contexts/ThemeContext");
|
|
14
|
-
var
|
|
15
|
-
var _useIsIosScreenshareBroadcastStarted = require("../../../hooks/useIsIosScreenshareBroadcastStarted");
|
|
16
|
-
var _videoClient = require("@stream-io/video-client");
|
|
17
|
-
var _usePrevious = require("../../../utils/hooks/usePrevious");
|
|
14
|
+
var _useScreenShareButton = require("../../../hooks/useScreenShareButton");
|
|
18
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
19
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
20
|
-
// ios >= 14.0 or android - platform restrictions
|
|
21
|
-
const CanDeviceScreenShare = _reactNative.Platform.OS === 'ios' &&
|
|
22
|
-
// @ts-ignore
|
|
23
|
-
Number.parseInt(_reactNative.Platform.Version.split('.')[0], 10) >= 14 || _reactNative.Platform.OS === 'android';
|
|
24
|
-
|
|
25
17
|
/**
|
|
26
18
|
* The props for the Screen Share button in the Call Controls.
|
|
27
19
|
*/
|
|
@@ -40,75 +32,13 @@ const ScreenShareToggleButton = ({
|
|
|
40
32
|
screenShareToggleButton
|
|
41
33
|
}
|
|
42
34
|
} = (0, _ThemeContext.useTheme)();
|
|
43
|
-
const
|
|
35
|
+
const screenCapturePickerViewiOSRef = (0, _react.useRef)(null);
|
|
44
36
|
const {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
} = (0,
|
|
48
|
-
|
|
49
|
-
const isScreenSharingEnabledInCall = callSettings?.screensharing.enabled;
|
|
50
|
-
const isScreenSharingAccessRequestEnabled = callSettings?.screensharing.access_request_enabled;
|
|
51
|
-
const onScreenShareStartedHandlerRef = (0, _react.useRef)(onScreenShareStartedHandler);
|
|
52
|
-
onScreenShareStartedHandlerRef.current = onScreenShareStartedHandler;
|
|
53
|
-
const onScreenShareStoppedHandlerRef = (0, _react.useRef)(onScreenShareStoppedHandler);
|
|
54
|
-
onScreenShareStoppedHandlerRef.current = onScreenShareStoppedHandler;
|
|
55
|
-
const iosScreenShareStartedFromSystem = (0, _useIsIosScreenshareBroadcastStarted.useIsIosScreenshareBroadcastStarted)();
|
|
56
|
-
const prevIosScreenShareStartedFromSystem = (0, _usePrevious.usePrevious)(iosScreenShareStartedFromSystem);
|
|
57
|
-
const localParticipant = useLocalParticipant();
|
|
58
|
-
const hasPublishedScreenShare = localParticipant && (0, _videoClient.hasScreenShare)(localParticipant);
|
|
59
|
-
|
|
60
|
-
// listens to iOS screen share broadcast started event from the system
|
|
61
|
-
(0, _react.useEffect)(() => {
|
|
62
|
-
const run = async () => {
|
|
63
|
-
if (_reactNative.Platform.OS !== 'ios') {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
if (iosScreenShareStartedFromSystem && !prevIosScreenShareStartedFromSystem) {
|
|
67
|
-
onScreenShareStartedHandlerRef.current?.();
|
|
68
|
-
const media = await navigator.mediaDevices.getDisplayMedia({
|
|
69
|
-
// @ts-ignore
|
|
70
|
-
deviceId: 'broadcast',
|
|
71
|
-
video: true,
|
|
72
|
-
audio: true
|
|
73
|
-
});
|
|
74
|
-
await call?.publishScreenShareStream(media);
|
|
75
|
-
} else if (!iosScreenShareStartedFromSystem && prevIosScreenShareStartedFromSystem) {
|
|
76
|
-
onScreenShareStoppedHandlerRef.current?.();
|
|
77
|
-
await call?.stopPublish(_videoClient.SfuModels.TrackType.SCREEN_SHARE);
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
run();
|
|
81
|
-
}, [call, iosScreenShareStartedFromSystem, prevIosScreenShareStartedFromSystem]);
|
|
82
|
-
const screenCapturePickerViewiOSRef = _react.default.useRef(null);
|
|
83
|
-
const onPress = async () => {
|
|
84
|
-
if (!hasPublishedScreenShare) {
|
|
85
|
-
if (_reactNative.Platform.OS === 'ios') {
|
|
86
|
-
const reactTag = (0, _reactNative.findNodeHandle)(screenCapturePickerViewiOSRef.current);
|
|
87
|
-
await _reactNative.NativeModules.ScreenCapturePickerViewManager.show(reactTag);
|
|
88
|
-
// After this the iOS screen share broadcast started/stopped event will be triggered
|
|
89
|
-
// and the useEffect listener will handle the rest
|
|
90
|
-
} else {
|
|
91
|
-
try {
|
|
92
|
-
const media = await navigator.mediaDevices.getDisplayMedia({
|
|
93
|
-
video: true,
|
|
94
|
-
audio: true
|
|
95
|
-
});
|
|
96
|
-
onScreenShareStartedHandler?.();
|
|
97
|
-
await call?.publishScreenShareStream(media);
|
|
98
|
-
} catch (e) {
|
|
99
|
-
// ignored.. user didnt allow the screen share in the popup
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
} else if (hasPublishedScreenShare) {
|
|
103
|
-
onScreenShareStoppedHandler?.();
|
|
104
|
-
await call?.stopPublish(_videoClient.SfuModels.TrackType.SCREEN_SHARE);
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
if (!isScreenSharingEnabledInCall || !CanDeviceScreenShare) {
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
37
|
+
onPress,
|
|
38
|
+
hasPublishedScreenShare
|
|
39
|
+
} = (0, _useScreenShareButton.useScreenShareButton)(screenCapturePickerViewiOSRef, onScreenShareStartedHandler, onScreenShareStoppedHandler);
|
|
40
|
+
if (!onPress) return null;
|
|
110
41
|
return /*#__PURE__*/_react.default.createElement(_CallControlsButton.CallControlsButton, {
|
|
111
|
-
disabled: !isScreenSharingAccessRequestEnabled,
|
|
112
42
|
onPress: onPress,
|
|
113
43
|
color: hasPublishedScreenShare ? colors.error : colors.static_white,
|
|
114
44
|
style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeWebrtc","_ScreenShare","_StopScreenShare","_CallControlsButton","_ThemeContext","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeWebrtc","_ScreenShare","_StopScreenShare","_CallControlsButton","_ThemeContext","_useScreenShareButton","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ScreenShareToggleButton","onScreenShareStartedHandler","onScreenShareStoppedHandler","theme","colors","screenShareToggleButton","useTheme","screenCapturePickerViewiOSRef","useRef","onPress","hasPublishedScreenShare","useScreenShareButton","createElement","CallControlsButton","color","error","static_white","style","container","svgContainer","StopScreenShare","static_black","ScreenShare","Platform","OS","ScreenCapturePickerView","ref","exports"],"sourceRoot":"../../../../../src","sources":["components/Call/CallControls/ScreenShareToggleButton.tsx"],"mappings":"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","ignoreList":[]}
|
package/dist/commonjs/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.js
CHANGED
|
@@ -4,23 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.LivestreamScreenShareToggleButton = void 0;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _ThemeContext = require("../../../contexts/ThemeContext");
|
|
9
9
|
var _reactNative = require("react-native");
|
|
10
10
|
var _ScreenShare = require("../../../icons/ScreenShare");
|
|
11
11
|
var _StopScreenShare = require("../../../icons/StopScreenShare");
|
|
12
12
|
var _reactNativeWebrtc = require("@stream-io/react-native-webrtc");
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
var _useIsIosScreenshareBroadcastStarted = require("../../../hooks/useIsIosScreenshareBroadcastStarted");
|
|
16
|
-
var _usePrevious = require("../../../utils/hooks/usePrevious");
|
|
17
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
18
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
19
|
-
// ios >= 14.0 or android - platform restrictions
|
|
20
|
-
const CanDeviceScreenShare = _reactNative.Platform.OS === 'ios' &&
|
|
21
|
-
// @ts-ignore
|
|
22
|
-
Number.parseInt(_reactNative.Platform.Version.split('.')[0], 10) >= 14 || _reactNative.Platform.OS === 'android';
|
|
23
|
-
|
|
13
|
+
var _useScreenShareButton = require("../../../hooks/useScreenShareButton");
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
24
15
|
/**
|
|
25
16
|
* The LivestreamVideoControlButton controls the screenshare stream publish/unpublish while in the livestream for the host.
|
|
26
17
|
*/
|
|
@@ -35,64 +26,11 @@ const LivestreamScreenShareToggleButton = () => {
|
|
|
35
26
|
livestreamScreenShareToggleButton
|
|
36
27
|
}
|
|
37
28
|
} = (0, _ThemeContext.useTheme)();
|
|
38
|
-
const call = (0, _videoReactBindings.useCall)();
|
|
39
|
-
const {
|
|
40
|
-
useLocalParticipant,
|
|
41
|
-
useCallSettings
|
|
42
|
-
} = (0, _videoReactBindings.useCallStateHooks)();
|
|
43
|
-
const callSettings = useCallSettings();
|
|
44
|
-
const isScreenSharingEnabledInCall = callSettings?.screensharing.enabled;
|
|
45
|
-
const iosScreenShareStartedFromSystem = (0, _useIsIosScreenshareBroadcastStarted.useIsIosScreenshareBroadcastStarted)();
|
|
46
|
-
const prevIosScreenShareStartedFromSystem = (0, _usePrevious.usePrevious)(iosScreenShareStartedFromSystem);
|
|
47
|
-
const localParticipant = useLocalParticipant();
|
|
48
|
-
const hasPublishedScreenShare = localParticipant && (0, _videoClient.hasScreenShare)(localParticipant);
|
|
49
|
-
|
|
50
|
-
// listens to iOS screen share broadcast started event from the system
|
|
51
|
-
(0, _react.useEffect)(() => {
|
|
52
|
-
const run = async () => {
|
|
53
|
-
if (_reactNative.Platform.OS !== 'ios') {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
if (iosScreenShareStartedFromSystem && !prevIosScreenShareStartedFromSystem) {
|
|
57
|
-
const media = await navigator.mediaDevices.getDisplayMedia({
|
|
58
|
-
// @ts-ignore
|
|
59
|
-
deviceId: 'broadcast',
|
|
60
|
-
video: true,
|
|
61
|
-
audio: true
|
|
62
|
-
});
|
|
63
|
-
await call?.publishScreenShareStream(media);
|
|
64
|
-
} else if (!iosScreenShareStartedFromSystem && prevIosScreenShareStartedFromSystem) {
|
|
65
|
-
await call?.stopPublish(_videoClient.SfuModels.TrackType.SCREEN_SHARE);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
run();
|
|
69
|
-
}, [call, iosScreenShareStartedFromSystem, prevIosScreenShareStartedFromSystem]);
|
|
70
29
|
const screenCapturePickerViewiOSRef = _react.default.useRef(null);
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
await _reactNative.NativeModules.ScreenCapturePickerViewManager.show(reactTag);
|
|
76
|
-
// After this the iOS screen share broadcast started/stopped event will be triggered
|
|
77
|
-
// and the useEffect listener will handle the rest
|
|
78
|
-
} else {
|
|
79
|
-
try {
|
|
80
|
-
const media = await navigator.mediaDevices.getDisplayMedia({
|
|
81
|
-
video: true,
|
|
82
|
-
audio: true
|
|
83
|
-
});
|
|
84
|
-
await call?.publishScreenShareStream(media);
|
|
85
|
-
} catch (e) {
|
|
86
|
-
// ignored.. user didnt allow the screen share in the popup
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
} else if (hasPublishedScreenShare) {
|
|
90
|
-
await call?.stopPublish(_videoClient.SfuModels.TrackType.SCREEN_SHARE);
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
if (!isScreenSharingEnabledInCall || !CanDeviceScreenShare) {
|
|
94
|
-
return null;
|
|
95
|
-
}
|
|
30
|
+
const {
|
|
31
|
+
onPress,
|
|
32
|
+
hasPublishedScreenShare
|
|
33
|
+
} = (0, _useScreenShareButton.useScreenShareButton)(screenCapturePickerViewiOSRef);
|
|
96
34
|
return /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
97
35
|
onPress: onPress,
|
|
98
36
|
style: [styles.container, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_ThemeContext","_reactNative","_ScreenShare","_StopScreenShare","_reactNativeWebrtc","_useScreenShareButton","e","__esModule","default","LivestreamScreenShareToggleButton","theme","colors","variants","iconSizes","buttonSizes","livestreamScreenShareToggleButton","useTheme","screenCapturePickerViewiOSRef","React","useRef","onPress","hasPublishedScreenShare","useScreenShareButton","createElement","Pressable","style","styles","container","backgroundColor","error","dark_gray","height","xs","width","View","icon","sm","StopScreenShare","color","static_white","ScreenShare","Platform","OS","ScreenCapturePickerView","ref","exports","StyleSheet","create","justifyContent","alignItems","marginHorizontal","borderRadius"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AACA,IAAAK,kBAAA,GAAAL,OAAA;AACA,IAAAM,qBAAA,GAAAN,OAAA;AAA2E,SAAAD,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAI3E;AACA;AACA;AACO,MAAMG,iCAAiC,GAAGA,CAAA,KAAM;EACrD,MAAM;IACJC,KAAK,EAAE;MACLC,MAAM;MACNC,QAAQ,EAAE;QAAEC,SAAS;QAAEC;MAAY,CAAC;MACpCC;IACF;EACF,CAAC,GAAG,IAAAC,sBAAQ,EAAC,CAAC;EAEd,MAAMC,6BAA6B,GAAGC,cAAK,CAACC,MAAM,CAAC,IAAI,CAAC;EAExD,MAAM;IAAEC,OAAO;IAAEC;EAAwB,CAAC,GAAG,IAAAC,0CAAoB,EAC/DL,6BACF,CAAC;EAED,oBACEpB,MAAA,CAAAW,OAAA,CAAAe,aAAA,CAACtB,YAAA,CAAAuB,SAAS;IACRJ,OAAO,EAAEA,OAAQ;IACjBK,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MACEC,eAAe,EAAEP,uBAAuB,GACpCV,MAAM,CAACkB,KAAK,GACZlB,MAAM,CAACmB,SAAS;MACpBC,MAAM,EAAEjB,WAAW,CAACkB,EAAE;MACtBC,KAAK,EAAEnB,WAAW,CAACkB;IACrB,CAAC,EACDjB,iCAAiC,CAACY,SAAS;EAC3C,gBAEF9B,MAAA,CAAAW,OAAA,CAAAe,aAAA,CAACtB,YAAA,CAAAiC,IAAI;IACHT,KAAK,EAAE,CACLC,MAAM,CAACS,IAAI,EACX;MACEJ,MAAM,EAAElB,SAAS,CAACuB,EAAE;MACpBH,KAAK,EAAEpB,SAAS,CAACuB;IACnB,CAAC,EACDrB,iCAAiC,CAACoB,IAAI;EACtC,GAEDd,uBAAuB,gBACtBxB,MAAA,CAAAW,OAAA,CAAAe,aAAA,CAACpB,gBAAA,CAAAkC,eAAe;IAACC,KAAK,EAAE3B,MAAM,CAAC4B;EAAa,CAAE,CAAC,gBAE/C1C,MAAA,CAAAW,OAAA,CAAAe,aAAA,CAACrB,YAAA,CAAAsC,WAAW;IAACF,KAAK,EAAE3B,MAAM,CAAC4B;EAAa,CAAE,CAExC,CAAC,EACNE,qBAAQ,CAACC,EAAE,KAAK,KAAK,iBACpB7C,MAAA,CAAAW,OAAA,CAAAe,aAAA,CAACnB,kBAAA,CAAAuC,uBAAuB;IAACC,GAAG,EAAE3B;EAA8B,CAAE,CAEvD,CAAC;AAEhB,CAAC;AAAC4B,OAAA,CAAApC,iCAAA,GAAAA,iCAAA;AAEF,MAAMiB,MAAM,GAAGoB,uBAAU,CAACC,MAAM,CAAC;EAC/BpB,SAAS,EAAE;IACTqB,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,gBAAgB,EAAE,CAAC;IACnBC,YAAY,EAAE;EAChB,CAAC;EACDhB,IAAI,EAAE,CAAC;AACT,CAAC,CAAC","ignoreList":[]}
|
|
@@ -5,17 +5,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.LivestreamPlayer = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var
|
|
9
|
-
var _2 = require("../../..");
|
|
8
|
+
var _ViewerLivestream = require("../ViewerLivestream");
|
|
10
9
|
var _videoClient = require("@stream-io/video-client");
|
|
10
|
+
var _StreamCall = require("../../../providers/StreamCall");
|
|
11
|
+
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
11
12
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
13
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
14
|
const LivestreamPlayer = ({
|
|
14
15
|
callType,
|
|
15
16
|
callId,
|
|
16
|
-
ViewerLivestream =
|
|
17
|
+
ViewerLivestream = _ViewerLivestream.ViewerLivestream
|
|
17
18
|
}) => {
|
|
18
|
-
const client = (0,
|
|
19
|
+
const client = (0, _videoReactBindings.useStreamVideoClient)();
|
|
19
20
|
const [call, setCall] = (0, _react.useState)();
|
|
20
21
|
(0, _react.useEffect)(() => {
|
|
21
22
|
if (!client) {
|
|
@@ -51,7 +52,7 @@ const LivestreamPlayer = ({
|
|
|
51
52
|
if (!call) {
|
|
52
53
|
return null;
|
|
53
54
|
}
|
|
54
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
55
|
+
return /*#__PURE__*/_react.default.createElement(_StreamCall.StreamCall, {
|
|
55
56
|
call: call
|
|
56
57
|
}, /*#__PURE__*/_react.default.createElement(ViewerLivestream, null));
|
|
57
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_ViewerLivestream","_videoClient","_StreamCall","_videoReactBindings","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","LivestreamPlayer","callType","callId","ViewerLivestream","DefaultViewerLivestream","client","useStreamVideoClient","setCall","useState","useEffect","myCall","join","catch","logger","getLogger","state","callingState","CallingState","LEFT","leave","undefined","createElement","StreamCall","exports"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamPlayer/LivestreamPlayer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -91,4 +91,15 @@ Object.keys(_useApplyDefaultMediaStreamSettings).forEach(function (key) {
|
|
|
91
91
|
}
|
|
92
92
|
});
|
|
93
93
|
});
|
|
94
|
+
var _useScreenShareButton = require("./useScreenShareButton");
|
|
95
|
+
Object.keys(_useScreenShareButton).forEach(function (key) {
|
|
96
|
+
if (key === "default" || key === "__esModule") return;
|
|
97
|
+
if (key in exports && exports[key] === _useScreenShareButton[key]) return;
|
|
98
|
+
Object.defineProperty(exports, key, {
|
|
99
|
+
enumerable: true,
|
|
100
|
+
get: function () {
|
|
101
|
+
return _useScreenShareButton[key];
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
94
105
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_usePermissionRequest","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_usePermissionNotification","_push","_useAndroidKeepCallAliveEffect","_useIsIosScreenshareBroadcastStarted","_useIsInPiPMode","_useAutoEnterPiPEffect","_useApplyDefaultMediaStreamSettings"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_usePermissionRequest","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_usePermissionNotification","_push","_useAndroidKeepCallAliveEffect","_useIsIosScreenshareBroadcastStarted","_useIsInPiPMode","_useAutoEnterPiPEffect","_useApplyDefaultMediaStreamSettings","_useScreenShareButton"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useScreenShareButton = void 0;
|
|
7
|
+
var _videoClient = require("@stream-io/video-client");
|
|
8
|
+
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _reactNative = require("react-native");
|
|
11
|
+
var _hooks = require("../utils/hooks");
|
|
12
|
+
var _useIsIosScreenshareBroadcastStarted = require("./useIsIosScreenshareBroadcastStarted");
|
|
13
|
+
// ios >= 14.0 or android - platform restrictions
|
|
14
|
+
const CanDeviceScreenShare = (_reactNative.Platform.OS === 'ios' &&
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
Number.parseInt(_reactNative.Platform.Version.split('.')[0], 10) >= 14, 10) || _reactNative.Platform.OS === 'android';
|
|
17
|
+
const useScreenShareButton = (screenCapturePickerViewiOSRef, onScreenShareStartedHandler, onScreenShareStoppedHandler, onMissingScreenShareStreamPermission) => {
|
|
18
|
+
const call = (0, _videoReactBindings.useCall)();
|
|
19
|
+
const {
|
|
20
|
+
useLocalParticipant,
|
|
21
|
+
useCallSettings,
|
|
22
|
+
useOwnCapabilities
|
|
23
|
+
} = (0, _videoReactBindings.useCallStateHooks)();
|
|
24
|
+
const callSettings = useCallSettings();
|
|
25
|
+
const ownCapabilities = useOwnCapabilities();
|
|
26
|
+
const hasScreenSharingPermissions = ownCapabilities?.includes(_videoClient.OwnCapability.SCREENSHARE);
|
|
27
|
+
const isScreenSharingEnabledInCall = callSettings?.screensharing.enabled;
|
|
28
|
+
const onScreenShareStartedHandlerRef = (0, _react.useRef)(onScreenShareStartedHandler);
|
|
29
|
+
onScreenShareStartedHandlerRef.current = onScreenShareStartedHandler;
|
|
30
|
+
const onScreenShareStoppedHandlerRef = (0, _react.useRef)(onScreenShareStoppedHandler);
|
|
31
|
+
onScreenShareStoppedHandlerRef.current = onScreenShareStoppedHandler;
|
|
32
|
+
const iosScreenShareStartedFromSystem = (0, _useIsIosScreenshareBroadcastStarted.useIsIosScreenshareBroadcastStarted)();
|
|
33
|
+
const prevIosScreenShareStartedFromSystem = (0, _hooks.usePrevious)(iosScreenShareStartedFromSystem);
|
|
34
|
+
const localParticipant = useLocalParticipant();
|
|
35
|
+
const hasPublishedScreenShare = localParticipant && (0, _videoClient.hasScreenShare)(localParticipant);
|
|
36
|
+
|
|
37
|
+
// listens to iOS screen share broadcast started event from the system
|
|
38
|
+
(0, _react.useEffect)(() => {
|
|
39
|
+
if (_reactNative.Platform.OS !== 'ios') {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (iosScreenShareStartedFromSystem && !prevIosScreenShareStartedFromSystem) {
|
|
43
|
+
onScreenShareStartedHandlerRef.current?.();
|
|
44
|
+
call?.screenShare.enable();
|
|
45
|
+
} else if (!iosScreenShareStartedFromSystem && prevIosScreenShareStartedFromSystem) {
|
|
46
|
+
onScreenShareStoppedHandlerRef.current?.();
|
|
47
|
+
call?.screenShare.disable(true);
|
|
48
|
+
}
|
|
49
|
+
}, [call, iosScreenShareStartedFromSystem, prevIosScreenShareStartedFromSystem]);
|
|
50
|
+
const onPress = async () => {
|
|
51
|
+
if (!hasScreenSharingPermissions) {
|
|
52
|
+
const logger = (0, _videoClient.getLogger)(['useScreenShareButton']);
|
|
53
|
+
logger('info', 'User does not have permissions to stream the screen share media, calling onMissingScreenShareStreamPermission handler if present');
|
|
54
|
+
onMissingScreenShareStreamPermission?.();
|
|
55
|
+
}
|
|
56
|
+
if (!hasPublishedScreenShare) {
|
|
57
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
58
|
+
const reactTag = (0, _reactNative.findNodeHandle)(screenCapturePickerViewiOSRef.current);
|
|
59
|
+
await _reactNative.NativeModules.ScreenCapturePickerViewManager.show(reactTag);
|
|
60
|
+
// After this the iOS screen share broadcast started/stopped event will be triggered
|
|
61
|
+
// and the useEffect listener will handle the rest
|
|
62
|
+
} else {
|
|
63
|
+
try {
|
|
64
|
+
await call?.screenShare.enable();
|
|
65
|
+
onScreenShareStartedHandler?.();
|
|
66
|
+
} catch (error) {
|
|
67
|
+
// ignored.. user didnt allow the screen share in the popup
|
|
68
|
+
const logger = (0, _videoClient.getLogger)(['useScreenShareButton']);
|
|
69
|
+
logger('info', 'User opted to not give permissions to start a screen share stream', error);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
} else if (hasPublishedScreenShare) {
|
|
73
|
+
onScreenShareStoppedHandler?.();
|
|
74
|
+
await call?.screenShare.disable(true);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
if (!isScreenSharingEnabledInCall || !CanDeviceScreenShare) {
|
|
78
|
+
return {
|
|
79
|
+
onPress: undefined,
|
|
80
|
+
hasPublishedScreenShare: false
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
onPress,
|
|
85
|
+
hasPublishedScreenShare
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
exports.useScreenShareButton = useScreenShareButton;
|
|
89
|
+
//# sourceMappingURL=useScreenShareButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_videoClient","require","_videoReactBindings","_react","_reactNative","_hooks","_useIsIosScreenshareBroadcastStarted","CanDeviceScreenShare","Platform","OS","Number","parseInt","Version","split","useScreenShareButton","screenCapturePickerViewiOSRef","onScreenShareStartedHandler","onScreenShareStoppedHandler","onMissingScreenShareStreamPermission","call","useCall","useLocalParticipant","useCallSettings","useOwnCapabilities","useCallStateHooks","callSettings","ownCapabilities","hasScreenSharingPermissions","includes","OwnCapability","SCREENSHARE","isScreenSharingEnabledInCall","screensharing","enabled","onScreenShareStartedHandlerRef","useRef","current","onScreenShareStoppedHandlerRef","iosScreenShareStartedFromSystem","useIsIosScreenshareBroadcastStarted","prevIosScreenShareStartedFromSystem","usePrevious","localParticipant","hasPublishedScreenShare","hasScreenShare","useEffect","screenShare","enable","disable","onPress","logger","getLogger","reactTag","findNodeHandle","NativeModules","ScreenCapturePickerViewManager","show","error","undefined","exports"],"sourceRoot":"../../../src","sources":["hooks/useScreenShareButton.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/commonjs/version.js
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
import {
|
|
1
|
+
import React, { useRef } from 'react';
|
|
2
|
+
import { Platform } from 'react-native';
|
|
3
3
|
import { ScreenCapturePickerView } from '@stream-io/react-native-webrtc';
|
|
4
4
|
import { ScreenShare } from '../../../icons/ScreenShare';
|
|
5
5
|
import { StopScreenShare } from '../../../icons/StopScreenShare';
|
|
6
6
|
import { CallControlsButton } from './CallControlsButton';
|
|
7
7
|
import { useTheme } from '../../../contexts/ThemeContext';
|
|
8
|
-
import {
|
|
9
|
-
import { useIsIosScreenshareBroadcastStarted } from '../../../hooks/useIsIosScreenshareBroadcastStarted';
|
|
10
|
-
import { hasScreenShare, SfuModels } from '@stream-io/video-client';
|
|
11
|
-
import { usePrevious } from '../../../utils/hooks/usePrevious';
|
|
12
|
-
|
|
13
|
-
// ios >= 14.0 or android - platform restrictions
|
|
14
|
-
const CanDeviceScreenShare = Platform.OS === 'ios' &&
|
|
15
|
-
// @ts-ignore
|
|
16
|
-
Number.parseInt(Platform.Version.split('.')[0], 10) >= 14 || Platform.OS === 'android';
|
|
8
|
+
import { useScreenShareButton } from '../../../hooks/useScreenShareButton';
|
|
17
9
|
|
|
18
10
|
/**
|
|
19
11
|
* The props for the Screen Share button in the Call Controls.
|
|
@@ -33,75 +25,13 @@ export const ScreenShareToggleButton = ({
|
|
|
33
25
|
screenShareToggleButton
|
|
34
26
|
}
|
|
35
27
|
} = useTheme();
|
|
36
|
-
const
|
|
28
|
+
const screenCapturePickerViewiOSRef = useRef(null);
|
|
37
29
|
const {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
} =
|
|
41
|
-
|
|
42
|
-
const isScreenSharingEnabledInCall = callSettings?.screensharing.enabled;
|
|
43
|
-
const isScreenSharingAccessRequestEnabled = callSettings?.screensharing.access_request_enabled;
|
|
44
|
-
const onScreenShareStartedHandlerRef = useRef(onScreenShareStartedHandler);
|
|
45
|
-
onScreenShareStartedHandlerRef.current = onScreenShareStartedHandler;
|
|
46
|
-
const onScreenShareStoppedHandlerRef = useRef(onScreenShareStoppedHandler);
|
|
47
|
-
onScreenShareStoppedHandlerRef.current = onScreenShareStoppedHandler;
|
|
48
|
-
const iosScreenShareStartedFromSystem = useIsIosScreenshareBroadcastStarted();
|
|
49
|
-
const prevIosScreenShareStartedFromSystem = usePrevious(iosScreenShareStartedFromSystem);
|
|
50
|
-
const localParticipant = useLocalParticipant();
|
|
51
|
-
const hasPublishedScreenShare = localParticipant && hasScreenShare(localParticipant);
|
|
52
|
-
|
|
53
|
-
// listens to iOS screen share broadcast started event from the system
|
|
54
|
-
useEffect(() => {
|
|
55
|
-
const run = async () => {
|
|
56
|
-
if (Platform.OS !== 'ios') {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
if (iosScreenShareStartedFromSystem && !prevIosScreenShareStartedFromSystem) {
|
|
60
|
-
onScreenShareStartedHandlerRef.current?.();
|
|
61
|
-
const media = await navigator.mediaDevices.getDisplayMedia({
|
|
62
|
-
// @ts-ignore
|
|
63
|
-
deviceId: 'broadcast',
|
|
64
|
-
video: true,
|
|
65
|
-
audio: true
|
|
66
|
-
});
|
|
67
|
-
await call?.publishScreenShareStream(media);
|
|
68
|
-
} else if (!iosScreenShareStartedFromSystem && prevIosScreenShareStartedFromSystem) {
|
|
69
|
-
onScreenShareStoppedHandlerRef.current?.();
|
|
70
|
-
await call?.stopPublish(SfuModels.TrackType.SCREEN_SHARE);
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
run();
|
|
74
|
-
}, [call, iosScreenShareStartedFromSystem, prevIosScreenShareStartedFromSystem]);
|
|
75
|
-
const screenCapturePickerViewiOSRef = React.useRef(null);
|
|
76
|
-
const onPress = async () => {
|
|
77
|
-
if (!hasPublishedScreenShare) {
|
|
78
|
-
if (Platform.OS === 'ios') {
|
|
79
|
-
const reactTag = findNodeHandle(screenCapturePickerViewiOSRef.current);
|
|
80
|
-
await NativeModules.ScreenCapturePickerViewManager.show(reactTag);
|
|
81
|
-
// After this the iOS screen share broadcast started/stopped event will be triggered
|
|
82
|
-
// and the useEffect listener will handle the rest
|
|
83
|
-
} else {
|
|
84
|
-
try {
|
|
85
|
-
const media = await navigator.mediaDevices.getDisplayMedia({
|
|
86
|
-
video: true,
|
|
87
|
-
audio: true
|
|
88
|
-
});
|
|
89
|
-
onScreenShareStartedHandler?.();
|
|
90
|
-
await call?.publishScreenShareStream(media);
|
|
91
|
-
} catch (e) {
|
|
92
|
-
// ignored.. user didnt allow the screen share in the popup
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
} else if (hasPublishedScreenShare) {
|
|
96
|
-
onScreenShareStoppedHandler?.();
|
|
97
|
-
await call?.stopPublish(SfuModels.TrackType.SCREEN_SHARE);
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
if (!isScreenSharingEnabledInCall || !CanDeviceScreenShare) {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
30
|
+
onPress,
|
|
31
|
+
hasPublishedScreenShare
|
|
32
|
+
} = useScreenShareButton(screenCapturePickerViewiOSRef, onScreenShareStartedHandler, onScreenShareStoppedHandler);
|
|
33
|
+
if (!onPress) return null;
|
|
103
34
|
return /*#__PURE__*/React.createElement(CallControlsButton, {
|
|
104
|
-
disabled: !isScreenSharingAccessRequestEnabled,
|
|
105
35
|
onPress: onPress,
|
|
106
36
|
color: hasPublishedScreenShare ? colors.error : colors.static_white,
|
|
107
37
|
style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","useRef","Platform","ScreenCapturePickerView","ScreenShare","StopScreenShare","CallControlsButton","useTheme","useScreenShareButton","ScreenShareToggleButton","onScreenShareStartedHandler","onScreenShareStoppedHandler","theme","colors","screenShareToggleButton","screenCapturePickerViewiOSRef","onPress","hasPublishedScreenShare","createElement","color","error","static_white","style","container","svgContainer","static_black","OS","ref"],"sourceRoot":"../../../../../src","sources":["components/Call/CallControls/ScreenShareToggleButton.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,MAAM,QAAQ,OAAO;AACrC,SAASC,QAAQ,QAAQ,cAAc;AACvC,SAASC,uBAAuB,QAAQ,gCAAgC;AACxE,SAASC,WAAW,QAAQ,4BAA4B;AACxD,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,QAAQ,QAAQ,gCAAgC;AACzD,SAASC,oBAAoB,QAAQ,qCAAqC;;AAE1E;AACA;AACA;;AAcA;AACA;AACA;AACA;AACA,OAAO,MAAMC,uBAAuB,GAAGA,CAAC;EACtCC,2BAA2B;EAC3BC;AAC4B,CAAC,KAAK;EAClC,MAAM;IACJC,KAAK,EAAE;MAAEC,MAAM;MAAEC;IAAwB;EAC3C,CAAC,GAAGP,QAAQ,CAAC,CAAC;EAEd,MAAMQ,6BAA6B,GAAGd,MAAM,CAAC,IAAI,CAAC;EAElD,MAAM;IAAEe,OAAO;IAAEC;EAAwB,CAAC,GAAGT,oBAAoB,CAC/DO,6BAA6B,EAC7BL,2BAA2B,EAC3BC,2BACF,CAAC;EAED,IAAI,CAACK,OAAO,EAAE,OAAO,IAAI;EAEzB,oBACEhB,KAAA,CAAAkB,aAAA,CAACZ,kBAAkB;IACjBU,OAAO,EAAEA,OAAQ;IACjBG,KAAK,EAAEF,uBAAuB,GAAGJ,MAAM,CAACO,KAAK,GAAGP,MAAM,CAACQ,YAAa;IACpEC,KAAK,EAAE;MACLC,SAAS,EAAET,uBAAuB,CAACS,SAAS;MAC5CC,YAAY,EAAEV,uBAAuB,CAACU;IACxC;EAAE,GAEDP,uBAAuB,gBACtBjB,KAAA,CAAAkB,aAAA,CAACb,eAAe;IAACc,KAAK,EAAEN,MAAM,CAACY;EAAa,CAAE,CAAC,gBAE/CzB,KAAA,CAAAkB,aAAA,CAACd,WAAW;IAACe,KAAK,EAAEN,MAAM,CAACY;EAAa,CAAE,CAC3C,EACAvB,QAAQ,CAACwB,EAAE,KAAK,KAAK,iBACpB1B,KAAA,CAAAkB,aAAA,CAACf,uBAAuB;IAACwB,GAAG,EAAEZ;EAA8B,CAAE,CAE9C,CAAC;AAEzB,CAAC","ignoreList":[]}
|