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 }); });