react-ipdf-viewer-lite
Version:
A lightweight, dependency-free media viewer for PDFs and other media types with advanced controls
45 lines (44 loc) • 2.48 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import { jsx as _jsx } from "react/jsx-runtime";
import { useState, useRef, useMemo } from "react";
// import { PDFRenderer } from './PDFRenderer';
import PDFRenderer from "./PDFRenderer";
export var ReactIPdfViewerLite = function (_a) {
var src = _a.src, mimeType = _a.mimeType, fileName = _a.fileName, onError = _a.onError, _b = _a.showControls, showControls = _b === void 0 ? true : _b, _c = _a.defaultZoom, defaultZoom = _c === void 0 ? 1 : _c, _d = _a.allowDownload, allowDownload = _d === void 0 ? true : _d, _e = _a.allowPrint, allowPrint = _e === void 0 ? true : _e, _f = _a.allowRotate, allowRotate = _f === void 0 ? true : _f, _g = _a.allowFullScreen, allowFullScreen = _g === void 0 ? true : _g, _h = _a.theme, theme = _h === void 0 ? "dark" : _h, _j = _a.rotateValue, rotateValue = _j === void 0 ? 0 : _j, _k = _a.autoHeight, autoHeight = _k === void 0 ? true : _k, className = _a.className, style = _a.style, renderToolbar = _a.renderToolbar;
var _l = useState(null), mediaUrl = _l[0], setMediaUrl = _l[1];
var _m = useState("unsupported"), mediaType = _m[0], setMediaType = _m[1];
var _o = useState("100%"), containerHeight = _o[0], setContainerHeight = _o[1];
var containerRef = useRef(null);
var renderMedia = useMemo(function () {
var effectiveUrl = typeof src === "string" ? src : mediaUrl;
if (!effectiveUrl)
return null;
var mediaProps = {
fileUrl: effectiveUrl,
themes: theme === 'dark'
};
switch (mediaType) {
case "pdf":
return _jsx(PDFRenderer, __assign({}, mediaProps));
// case "image":
// return <ImageRenderer {...mediaProps} />;
// case "video":
// return <VideoRenderer {...mediaProps} />;
// case "audio":
// return <AudioRenderer {...mediaProps} />;
default:
return _jsx(PDFRenderer, __assign({}, mediaProps));
}
}, [src]);
return _jsx("div", { children: renderMedia });
};