import * as React from "react"; import * as Constants from "~/common/constants"; import * as SVG from "~/common/svg"; import { css } from "@emotion/react"; const STYLES_IMAGE = css` background-color: ${Constants.system.foreground}; display: block; max-width: 100%; max-height: 100%; pointer-events: none; transition: 200ms ease all; `; const STYLES_ENTITY = css` height: 100%; width: 100%; border: 1px solid ${Constants.system.border}; font-size: 24px; display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: pointer; pointer-events: none; padding: 8px; font-size: 0.9rem; `; const STYLES_TITLE = css` width: 100%; text-align: center; margin-top: 8px; overflow: hidden; word-break: break-all; text-overflow: break-word; `; export default class SlateMediaObjectPreview extends React.Component { static defaultProps = { charCap: 30, }; render() { // NOTE(jim): // This is a hack to catch this undefined case I don't want to track down yet. const url = this.props.url.replace("https://undefined", "https://"); const title = this.props.title && this.props.title.length > this.props.charCap ? this.props.title.substring(0, this.props.charCap) + "..." : this.props.title; let element = (
{this.props.title && !this.props.small ? (
{title}
) : null}
); if (this.props.type && this.props.type.startsWith("video/")) { element = (
{this.props.title && !this.props.small ? (
{title}
) : null}
); } if (this.props.type && this.props.type.startsWith("audio/")) { element = (
{this.props.title && !this.props.small ? (
{title}
) : null}
); } if (this.props.type && this.props.type.startsWith("application/epub")) { element = (
{this.props.title && !this.props.small ? (
{title}
) : null}
); } if (this.props.type && this.props.type.startsWith("application/pdf")) { element = (
{this.props.title && !this.props.small ? (
{title}
) : null}
); } if (this.props.type && this.props.type.startsWith("image/")) { element = ( ); } return element; } }