react-html-to-image
Version:
34 lines (33 loc) • 1.27 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.useHtmlToImage = void 0;
const react_1 = require("react");
const dom_to_image_1 = require("dom-to-image");
const file_saver_1 = require("file-saver");
const SCALE_JPEG = 3;
const DEFAULT_QUALITY = 0.7;
const useHtmlToImage = () => {
const containerRef = (0, react_1.useRef)(null);
const saveHtmlAsImage = async (fileName, options) => {
const containerElement = containerRef?.current;
if (!containerElement) {
throw new Error("container ref is undefined");
}
const { offsetHeight = 0, offsetWidth = 0, } = containerElement ?? {};
const dataUrl = await (0, dom_to_image_1.toJpeg)(containerElement, {
height: offsetHeight * SCALE_JPEG,
width: offsetWidth * SCALE_JPEG,
quality: options?.quality ?? DEFAULT_QUALITY,
style: {
transformOrigin: "center",
transform: `scale(${SCALE_JPEG}) translate(${offsetWidth}px, ${offsetHeight}px)`,
},
});
return (0, file_saver_1.saveAs)(dataUrl, `${fileName}.jpg`);
};
return {
ref: containerRef,
saveHtmlAsImage,
};
};
exports.useHtmlToImage = useHtmlToImage;
;