// Module ID: 8426
// Function ID: 8427
// Name: common/Video
// Dependencies: [32, 19, 17, 21, 5092, 587, 558, 576, 8427, 4827, 8387, 6726, 6157, 1126, 2]
// Exports: createVideoControls
// Module 8426 (common/Video)
import Fragment from "Fragment" /* 21 */;
import nativeDefault from "native" /* 587 */;
import intl2 from "intl" /* 1126 */;
import native from "native" /* 4827 */;
import FastImageDefault from "FastImage" /* 6157 */;
import RunAfterInteractionsUtils from "RunAfterInteractionsUtils" /* 6726 */;
import openMediaModal2 from "openMediaModal" /* 8387 */;
import _slicedToArray from "_slicedToArray" /* 32 */;
import react from "react" /* 19 */;
import react_native from "react-native" /* 17 */;
import createStyles from "createStyles" /* 5092 */;
import ReactCompilerGating from "ReactCompilerGating" /* 558 */;
import size_mod from "module_2" /* 2 */;
let _require, closure_0, tmp2;
let hasOwnProperty;
let metroImportDefault;
let metroRequire;
let obj2;
let obj3;
({ TouchableWithoutFeedback: hasOwnProperty, View: metroRequire, AppState: metroImportDefault } = react_native);
const jsx = Fragment.jsx;
let obj = { container: obj2, video: obj3 };
obj2 = { flex: 1, shadowColor: nativeDefault.unsafe_rawColors.BLACK, shadowOpacity: 0.5, shadowOffset: { height: 1, width: 0 }, shadowRadius: 16, backgroundColor: nativeDefault.colors.BACKGROUND_BRAND };
const createLegacyClassComponentStyles = createStyles.createLegacyClassComponentStyles;
obj3 = { flex: 1, backgroundColor: nativeDefault.colors.BACKGROUND_BRAND };
const React4 = createLegacyClassComponentStyles(obj);
const tmp5 = ReactCompilerGating.isReactCompilerEnabled() ? (function VideoComponent(arg0) {
let ariaHidden;
let controls;
let disableFocus;
let httpEngine;
let importantForAccessibility;
let mixWithOthers;
let muted;
let onEnd;
let onError;
let onLoad;
let onLoadStart;
let onReadyForDisplay;
let pauseWhileAppInactive;
let paused;
let playInBackground;
let poster;
let posterResizeMode;
let preventsDisplaySleepDuringVideoPlayback;
let resizeMode;
let source;
let style;
let tmp12;
let tmp13;
let tmp = _require;
const obj = require("react");
const cResult = obj.c(25);
({ style, source, poster, onLoadStart, onLoad, onReadyForDisplay, onError, onEnd, paused, muted, posterResizeMode, resizeMode, disableFocus, controls, ariaHidden, mixWithOthers, importantForAccessibility, pauseWhileAppInactive, playInBackground, preventsDisplaySleepDuringVideoPlayback, httpEngine } = arg0);
let tmp4 = undefined !== paused && paused;
let str = "contain";
let str2 = "contain";
if (undefined !== posterResizeMode) {
str2 = posterResizeMode;
}
if (undefined !== resizeMode) {
str = resizeMode;
}
_require = tmp6;
if (cResult[0] === Symbol.for("react.memo_cache_sentinel")) {
const tmpResult = tmp(8427);
cResult[0] = tmpResult;
let first = tmpResult;
} else {
first = cResult[0];
}
[r10058, importDefault] = react.useState("active" === closure_7.currentState);
_slicedToArray(react.useState("active" === closure_7.currentState), 2);
const obj2 = react;
if (cResult[1] !== (undefined === pauseWhileAppInactive || pauseWhileAppInactive)) {
class N {
constructor() {
tmp = closure_0;
if (tmp) {
tmp2 = closure_1_7;
str = "change";
closure_0 = closure_1_7.addEventListener("change", () => { /* body not rendered: F141310 */ });
return () => { /* body not rendered: F141311 */ };
} else {
return;
}
}
}
const items = [undefined === pauseWhileAppInactive || pauseWhileAppInactive];
cResult[1] = undefined === pauseWhileAppInactive || pauseWhileAppInactive;
cResult[2] = items;
cResult[3] = N;
tmp13 = N;
tmp12 = items;
} else {
class N {
constructor() {
tmp = closure_0;
if (tmp) {
tmp2 = closure_1_7;
str = "change";
closure_0 = closure_1_7.addEventListener("change", () => { /* body not rendered: F141310 */ });
return () => { /* body not rendered: F141311 */ };
} else {
return;
}
}
}
tmp13 = cResult[3];
}
const effect = obj2.useEffect(tmp13, tmp12);
if (!tmp4) {
class N {
constructor() {
tmp = closure_0;
if (tmp) {
tmp2 = closure_1_7;
str = "change";
closure_0 = closure_1_7.addEventListener("change", () => { /* body not rendered: F141310 */ });
return () => { /* body not rendered: F141311 */ };
} else {
return;
}
}
}
tmp4 = tmp6;
}
if (controls != null) {
class N {
constructor() {
tmp = closure_0;
if (tmp) {
tmp2 = closure_1_7;
str = "change";
closure_0 = closure_1_7.addEventListener("change", () => { /* body not rendered: F141310 */ });
return () => { /* body not rendered: F141311 */ };
} else {
return;
}
}
}
}
if (cResult[4] === ariaHidden) {
class N {
constructor() {
tmp = closure_0;
if (tmp) {
tmp2 = closure_1_7;
str = "change";
closure_0 = closure_1_7.addEventListener("change", () => { /* body not rendered: F141310 */ });
return () => { /* body not rendered: F141311 */ };
} else {
return;
}
}
}
}
const merged = Object.assign(tmp15);
cResult[4] = ariaHidden;
cResult[5] = disableFocus;
cResult[6] = httpEngine;
cResult[7] = importantForAccessibility;
cResult[8] = mixWithOthers;
cResult[9] = undefined === muted || muted;
cResult[10] = onEnd;
cResult[11] = onError;
cResult[12] = onLoad;
cResult[13] = onLoadStart;
cResult[14] = onReadyForDisplay;
cResult[15] = undefined !== playInBackground && playInBackground;
cResult[16] = poster;
cResult[17] = str2;
cResult[18] = undefined === preventsDisplaySleepDuringVideoPlayback || preventsDisplaySleepDuringVideoPlayback;
cResult[19] = str;
cResult[20] = source;
cResult[21] = style;
cResult[22] = tmp4;
cResult[23] = undefined;
cResult[24] = <_default style={style} source={source} importantForAccessibility={importantForAccessibility} poster={poster} muted={undefined === muted || muted} paused={tmp4} posterResizeMode={str2} resizeMode={str} repeat playInBackground={undefined !== playInBackground && playInBackground} pictureInPicture={false} playWhenInactive={false} onLoadStart={onLoadStart} onLoad={onLoad} onReadyForDisplay={onReadyForDisplay} onError={onError} onEnd={onEnd} disableFocus={disableFocus} aria-hidden={ariaHidden} mixWithOthers={mixWithOthers} preventsDisplaySleepDuringVideoPlayback={undefined === preventsDisplaySleepDuringVideoPlayback || preventsDisplaySleepDuringVideoPlayback} httpEngine={httpEngine} />;
}) : (function VideoComponent(paused) {
let ariaHidden;
let closure_1;
let controls;
let disableFocus;
let first;
let importantForAccessibility;
let mixWithOthers;
let onEnd;
let onError;
let onLoad;
let onLoadStart;
let onReadyForDisplay;
let pauseWhileAppInactive;
let poster;
let source;
let style;
let flag = paused.paused;
({ style, source, poster, onLoadStart, onLoad, onReadyForDisplay, onError, onEnd } = paused);
if (flag === undefined) {
flag = false;
}
let flag2 = paused.muted;
if (flag2 === undefined) {
flag2 = true;
}
let str = paused.posterResizeMode;
if (str === undefined) {
str = "contain";
}
let str2 = paused.resizeMode;
if (str2 === undefined) {
str2 = "contain";
}
({ controls, pauseWhileAppInactive, disableFocus, ariaHidden, mixWithOthers, importantForAccessibility } = paused);
if (pauseWhileAppInactive === undefined) {
pauseWhileAppInactive = true;
}
let flag3 = paused.playInBackground;
if (flag3 === undefined) {
flag3 = false;
}
let flag4 = paused.preventsDisplaySleepDuringVideoPlayback;
if (flag4 === undefined) {
flag4 = true;
}
closure_1 = undefined;
const httpEngine = paused.httpEngine;
const _default = pauseWhileAppInactive(8427).default;
[first, closure_1] = react.useState("active" === closure_7.currentState);
const items = [pauseWhileAppInactive];
const effect = react.useEffect(() => {
const tmp = closure_0;
if (tmp) {
closure_0 = closure_1_7.addEventListener("change", (event) => {
closure_1_1("active" === event);
});
return () => {
closure_0.remove();
};
}
}, items);
const obj = { style, source, importantForAccessibility, poster, muted: flag2, paused: flag, posterResizeMode: str, resizeMode: str2, repeat: true, playInBackground: flag3, pictureInPicture: false, playWhenInactive: false, onLoadStart, onLoad, onReadyForDisplay, onError, onEnd, disableFocus, "aria-hidden": ariaHidden, mixWithOthers, preventsDisplaySleepDuringVideoPlayback: flag4, httpEngine };
const tmp4 = jsx;
if (!flag) {
if (pauseWhileAppInactive) {
pauseWhileAppInactive = !first;
}
flag = pauseWhileAppInactive;
}
let props;
if (controls != null) {
props = controls.props;
}
const merged = Object.assign(props);
return tmp4(_default, obj);
});
let closure_10 = tmp5;
const PureComponent = react.PureComponent;
class Video extends PureComponent {
constructor() {
const applyArgumentsResult = HermesBuiltin.applyArguments(this, new.target);
const require = applyArgumentsResult;
applyArgumentsResult.state = { postponeRender: true };
applyArgumentsResult.ref = react.createRef();
applyArgumentsResult.isVideo = function isVideo() {
const src = require.props.src;
return null != src && "videoURI" in src && null != src.videoURI;
};
applyArgumentsResult.handleOpenFullScreen = function handleOpenFullScreen() {
let height;
let items;
let onPress;
let src;
let width;
const props = require.props;
({ src, onPress } = props);
({ width, height } = props);
const tmp = require;
if (null != onPress) {
onPress();
}
const current = tmp.ref.current;
if (null != current) {
const obj = { initialSources: items, originViewOrOriginLayout: current };
const obj2 = { width, height };
const openMediaModal = openMediaModal2.openMediaModal;
openMediaModal2;
const merged = Object.assign(src);
items = [obj2];
openMediaModal(obj);
}
};
return applyArgumentsResult;
}
componentDidMount() {
const self = this;
const obj = RunAfterInteractionsUtils;
this._renderTask = obj.runAfterInteractions(() => {
self.setState({ postponeRender: false });
});
}
componentWillUnmount() {
if (null != this._renderTask) {
const _renderTask = this._renderTask;
_renderTask.cancel();
}
}
renderVideo() {
let resizeMode;
let src;
({ src, resizeMode } = this.props);
if ("videoURI" in src) {
if ("" !== src.videoURI) {
const videoURI = src.videoURI;
let tmp13;
if (null != videoURI) {
const items = [tmp.video, , ];
size = { width: tmp3, height: tmp4 };
items[1] = size;
items[2] = tmp7;
tmp13 = ;
const obj2 = { uri: videoURI };
}
return tmp13;
}
}
return null;
}
renderImage() {
let ariaHidden;
let obj2;
let src;
let str2;
({ src, ariaHidden } = this.props);
if ("uri" in src) {
if ("" !== src.uri) {
const obj = { source: obj2, style: size, accessible: true !== ariaHidden, accessibilityElementsHidden: ariaHidden, importantForAccessibility: str2 };
size = { width: tmp, height: tmp2 };
obj2 = { uri: src.uri };
str2 = undefined;
const tmp3 = jsx;
const tmp6 = FastImageDefault;
if (true === ariaHidden) {
str2 = "no-hide-descendants";
}
return tmp3(tmp6, obj);
}
}
}
render() {
let tmp4;
const self = this;
const props = this.props;
let accessibilityLabel = props.accessibilityLabel;
const items = [closure_9(this.context).container, { width: props.width, height: props.height }, props.style];
const canOpenFullscreen = props.canOpenFullscreen;
if (!this.state.postponeRender) {
let renderVideoResult;
if (self.isVideo()) {
renderVideoResult = self.renderVideo();
} else {
renderVideoResult = self.renderImage();
}
tmp4 = renderVideoResult;
} else {
tmp4 = null;
}
const tmp2Result = {tmp4};
let tmp2Result2 = tmp2Result;
if (canOpenFullscreen) {
const tmp8 = hasOwnProperty;
if (accessibilityLabel == null) {
const intl = intl2.intl;
accessibilityLabel = intl.string(intl2.t.OIDkcp);
}
const obj2 = { accessibilityRole: "button", accessibilityLabel, onPress: self.handleOpenFullScreen, children: tmp2Result };
tmp2Result2 = tmp2(tmp8, obj2);
}
return tmp2Result2;
}
}
const prototype = Video.prototype;
Video.contextType = native.ThemeContext;
let size = size_mod;
const result = size.fileFinishedImporting("components_native/common/Video.tsx");
export default Video;
export const createVideoControls = function createVideoControls(NOOP) {
let ref;
ref = ref.createRef();
let c5 = 0;
let c6 = 0;
let progressPercent = 0;
let closure_8 = false;
return {
seek(arg0) {
const current = ref.current;
if (current != null) {
const seek = current.seek;
if (seek != null) {
seek(arg0);
}
}
},
pause(arg0) {
NOOP(arg0);
if (closure_8 !== arg0) {
closure_8 = arg0;
if (dependencyMap != null) {
tmp2(closure_8);
}
}
},
useSubscribe(arg0, arg1, arg2) {
let closure_1_1 = arg0;
let closure_1_2 = arg1;
let closure_1_3 = arg2;
const layoutEffect = react.useLayoutEffect(() => {
if (closure_1_1 != null) {
tmp(closure_1_5, closure_1_6);
}
if (closure_1_2 != null) {
tmp5(closure_1_8);
}
if (closure_1_3 != null) {
tmp8(progressPercent);
}
}, []);
},
props: {
ref,
onPlaybackRateChange(nativeEvent) {
if (closure_8 !== 0 === nativeEvent.playbackRate) {
closure_8 = tmp;
if (dependencyMap != null) {
tmp2(closure_8);
}
}
},
onProgress(arg0) {
({ currentTime: c5, seekableDuration: c6 } = arg0);
if (importDefault != null) {
tmp(c5, c6);
}
},
onDownloadProgress(progressPercent) {
progressPercent = progressPercent.progressPercent;
if (_slicedToArray != null) {
tmp(progressPercent);
}
}
}
};
};
export const VideoComponent = tmp5;