@cross-nft-marketplace/auction-house-nft-components
Version:
NFT Media Rendering Components
36 lines (35 loc) • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HTML = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const MediaLoader_1 = require("./MediaLoader");
const RendererConfig_1 = require("./RendererConfig");
const HTMLRenderer = (requestProps) => {
const { getStyles, media, theme } = requestProps;
const { props, loading, error } = (0, MediaLoader_1.useMediaObjectProps)({
uri: media === null || media === void 0 ? void 0 : media.url,
preferredIPFSGateway: theme.preferredIPFSGateway,
...requestProps,
});
const [windowHeight, setWindowHeight] = (0, react_1.useState)(() => window.innerHeight);
(0, react_1.useEffect)(() => {
const resizeHandler = () => {
setWindowHeight(window.innerHeight);
};
document.addEventListener("resize", resizeHandler);
return () => {
document.removeEventListener("resize", resizeHandler);
};
});
//2022/11 not working for 3D-Model viewer.
//Download is disallowed. The frame initiating or instantiating the download is sandboxed, but the flag ‘allow-downloads’ is not set
//possible use allow-downloads-without-user-activation in future
// Sandbox breaks PDF rendering in chrome
// https://bugs.chromium.org/p/chromium/issues/detail?id=413851
return ((0, jsx_runtime_1.jsx)(MediaLoader_1.MediaLoader, { getStyles: getStyles, loading: loading, error: error, children: (0, jsx_runtime_1.jsx)("iframe", { sandbox: "allow-scripts", height: Math.floor(windowHeight * 0.6), width: "100%", style: { border: 0 }, ...props }) }));
};
exports.HTML = {
supportedMimeTypes: [RendererConfig_1.MIME_TYPES_CONTENT.HTML, RendererConfig_1.MIME_TYPES_CONTENT.PDF_DOCUMENT],
render: HTMLRenderer,
};