offices-viewer
Version:
## Current Renderable File Types
50 lines • 1.52 kB
JavaScript
import React, { useRef, useEffect } from 'react';
import JSZip from 'jszip';
import { getContentTypes, getSlideSize, loadTheme, processSingleSlide, processMsgQueue, setThemeContent, genGlobalCSS } from "../utils/pptx";
import "./pptx.css";
import "./nv.d3.min.css";
import "./chart/d3.min.js";
import "./chart/nv.d3.min.js";
function processPPTX(data) {
var zip = new JSZip(data);
var filesInfo = getContentTypes(zip);
var slideSize = getSlideSize(zip);
var themeContent = loadTheme(zip);
setThemeContent(themeContent);
var numOfSlides = filesInfo['slides'].length;
var slides = [];
for (var i = 0; i < numOfSlides; i++) {
var filename = filesInfo['slides'][i];
var slideHtml = processSingleSlide(zip, filename, i, slideSize);
slides.push(slideHtml);
}
return slides;
}
var PptxViewer = function PptxViewer(props) {
var data = props.data;
var slides = processPPTX(data);
var str = genGlobalCSS();
var refs = useRef(null);
useEffect(function () {
if (refs.current) {
processMsgQueue();
}
}, [refs.current]);
return /*#__PURE__*/React.createElement("div", {
className: "pg-driver-view"
}, slides.map(function (i) {
return /*#__PURE__*/React.createElement("div", {
key: i,
dangerouslySetInnerHTML: {
__html: i
}
});
}), /*#__PURE__*/React.createElement("style", {
dangerouslySetInnerHTML: {
__html: str
}
}), /*#__PURE__*/React.createElement("div", {
ref: refs
}));
};
export default PptxViewer;