index.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /* eslint-disable jsx-a11y/iframe-has-title */
  2. import React from "react";
  3. import { CloseCircleOutlined } from "@ant-design/icons";
  4. import styles from "./index.module.scss";
  5. import { useSelector } from "react-redux";
  6. import store, { RootState } from "@/store";
  7. import { baseURL } from "@/utils/http";
  8. function LookDom() {
  9. const { src, type, flag } = useSelector(
  10. (state: RootState) => state.A0Layout.lookDom
  11. );
  12. return (
  13. <div
  14. className={styles.LookDom}
  15. style={src ? { opacity: 1, pointerEvents: "auto" } : {}}
  16. >
  17. {src ? (
  18. <>
  19. {type === "video" ? (
  20. <div className="viedoBox">
  21. <video autoPlay controls src={flag ? src : baseURL + src}></video>
  22. </div>
  23. ) : type === "audio" ? (
  24. <div className="audioBox">
  25. <audio autoPlay controls src={flag ? src : baseURL + src}></audio>
  26. </div>
  27. ) : (
  28. <div className="modelBox">
  29. <iframe src={`model.html?m=${src}`}></iframe>
  30. </div>
  31. )}
  32. <div
  33. className="close"
  34. onClick={() =>
  35. store.dispatch({
  36. type: "layout/lookDom",
  37. payload: { src: "", type: "", flag: false },
  38. })
  39. }
  40. >
  41. <CloseCircleOutlined rev={undefined} />
  42. </div>
  43. </>
  44. ) : null}
  45. </div>
  46. );
  47. }
  48. const MemoLookDom = React.memo(LookDom);
  49. export default MemoLookDom;