polaris-offices-viewer
Version:
40 lines (39 loc) • 1.52 kB
JavaScript
// @ts-nocheck
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 (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 (React.createElement("div", { className: "pg-driver-view" },
slides.map(function (i) { return (React.createElement("div", { className: 'ppt-wrap', key: i, dangerouslySetInnerHTML: { __html: i } })); }),
React.createElement("style", { dangerouslySetInnerHTML: { __html: str } }),
React.createElement("div", { ref: refs })));
};
export default PptxViewer;