import * as loader from "tc-loader"; import React from "react"; import {joinClassList} from "tc-shared/ui/react-elements/Helper"; import {ClientIconRenderer} from "tc-shared/ui/react-elements/Icons"; import {ClientIcon} from "svg-sprites/client-icons"; import ReactDOM from "react-dom"; const cssStyle = require("./ImagePreview.scss"); const imagePreviewInstance = React.createRef(); class ImagePreview extends React.PureComponent<{}, { imageUrl: string | undefined, targetUrl: string | undefined }> { constructor(props) { super(props); this.state = { targetUrl: undefined, imageUrl: undefined }; } render() { return (
{ if(event.isDefaultPrevented()) { return; } this.closePreview() }} >
{ const win = window.open(this.state.targetUrl, '_blank'); win.focus(); }} >
this.closePreview()} >
{null}
) } closePreview() { this.setState({ imageUrl: undefined, targetUrl: undefined }); } } export const ImagePreviewHook = React.memo(() => { return ; }) export function showImagePreview(url: string, originalUrl: string) { imagePreviewInstance.current?.setState({ imageUrl: url, targetUrl: originalUrl }); } export function isImagePreviewAvailable() { return !!imagePreviewInstance.current; } export function closeImagePreview() { imagePreviewInstance.current?.closePreview(); }