import { jsx as _jsx } from "react/jsx-runtime";
import { useContext, useEffect } from "react";
import { observer } from "mobx-react";
import { KrpanoRendererContext } from "../contexts";
import { videoSceneModel } from "../models";
const DEFAULT_PLUGIN_ATTRS = {
loop: true,
volume: 0,
};
export const VideoScene = observer(({ name, videointerfaceXmlUrl, videoplayerUrl, sourceList, playRes, pluginAttrs, children, onVisibility, }) => {
const renderer = useContext(KrpanoRendererContext);
const model = videoSceneModel;
const getSourceListStr = () => {
let str = "";
sourceList.forEach((item) => {
str += `videointerface_addsource('${item.res}', '${item.url}', '${item.poster}');`;
});
return str;
};
const objectToString = (obj) => {
let stack = [];
Object.keys(obj).forEach((key) => {
stack.push(`${key}="${obj[key]}"`);
});
return stack.join(" ");
};
const visibilityHandler = () => {
if (document.visibilityState === "hidden") {
model.pause();
}
onVisibility === null || onVisibility === void 0 ? void 0 : onVisibility();
};
useEffect(() => {
window.addEventListener("visibilitychange", visibilityHandler);
return () => {
window.removeEventListener("visibilitychange", visibilityHandler);
};
}, []);
useEffect(() => {
if (!renderer)
return;
const _pluginAttrs = objectToString(Object.assign({}, DEFAULT_PLUGIN_ATTRS, pluginAttrs, {
pausedonstart: !model.playing,
}));
renderer.tagAction.pushSyncTag("scene", {
name,
}, `
${getSourceListStr()}
videointerface_play('${playRes}');
`);
}, [renderer]);
return _jsx("div", { className: "video-scene", children: children });
});