You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					1649 lines
				
				53 KiB
			
		
		
			
		
	
	
					1649 lines
				
				53 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _asyncIterator(iterable) { var method; if (typeof Symbol !== "undefined") { if (Symbol.asyncIterator) { method = iterable[Symbol.asyncIterator]; if (method != null) return method.call(iterable); } if (Symbol.iterator) { method = iterable[Symbol.iterator]; if (method != null) return method.call(iterable); } } throw new TypeError("Object is not async iterable"); }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var fs = require('fs');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var JSZip = require('jszip');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _require = require('readable-stream'),
							 | 
						||
| 
								 | 
							
								    PassThrough = _require.PassThrough;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var ZipStream = require('../utils/zip-stream');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var StreamBuf = require('../utils/stream-buf');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var utils = require('../utils/utils');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var XmlStream = require('../utils/xml-stream');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _require2 = require('../utils/browser-buffer-decode'),
							 | 
						||
| 
								 | 
							
								    bufferToString = _require2.bufferToString;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var StylesXform = require('./xform/style/styles-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var CoreXform = require('./xform/core/core-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var SharedStringsXform = require('./xform/strings/shared-strings-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var RelationshipsXform = require('./xform/core/relationships-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var ContentTypesXform = require('./xform/core/content-types-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var AppXform = require('./xform/core/app-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var WorkbookXform = require('./xform/book/workbook-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var WorksheetXform = require('./xform/sheet/worksheet-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var DrawingXform = require('./xform/drawing/drawing-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var TableXform = require('./xform/table/table-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var CommentsXform = require('./xform/comment/comments-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var VmlNotesXform = require('./xform/comment/vml-notes-xform');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var theme1Xml = require('./xml/theme1.js');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function fsReadFileAsync(filename, options) {
							 | 
						||
| 
								 | 
							
								  return new Promise(function (resolve, reject) {
							 | 
						||
| 
								 | 
							
								    fs.readFile(filename, options, function (error, data) {
							 | 
						||
| 
								 | 
							
								      if (error) {
							 | 
						||
| 
								 | 
							
								        reject(error);
							 | 
						||
| 
								 | 
							
								      } else {
							 | 
						||
| 
								 | 
							
								        resolve(data);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var XLSX = /*#__PURE__*/function () {
							 | 
						||
| 
								 | 
							
								  function XLSX(workbook) {
							 | 
						||
| 
								 | 
							
								    _classCallCheck(this, XLSX);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    this.workbook = workbook;
							 | 
						||
| 
								 | 
							
								  } // ===============================================================================
							 | 
						||
| 
								 | 
							
								  // Workbook
							 | 
						||
| 
								 | 
							
								  // =========================================================================
							 | 
						||
| 
								 | 
							
								  // Read
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  _createClass(XLSX, [{
							 | 
						||
| 
								 | 
							
								    key: "readFile",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _readFile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(filename, options) {
							 | 
						||
| 
								 | 
							
								        var stream, workbook;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee$(_context) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context.prev = _context.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                _context.next = 2;
							 | 
						||
| 
								 | 
							
								                return utils.fs.exists(filename);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 2:
							 | 
						||
| 
								 | 
							
								                if (_context.sent) {
							 | 
						||
| 
								 | 
							
								                  _context.next = 4;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                throw new Error("File not found: ".concat(filename));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 4:
							 | 
						||
| 
								 | 
							
								                stream = fs.createReadStream(filename);
							 | 
						||
| 
								 | 
							
								                _context.prev = 5;
							 | 
						||
| 
								 | 
							
								                _context.next = 8;
							 | 
						||
| 
								 | 
							
								                return this.read(stream, options);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 8:
							 | 
						||
| 
								 | 
							
								                workbook = _context.sent;
							 | 
						||
| 
								 | 
							
								                stream.close();
							 | 
						||
| 
								 | 
							
								                return _context.abrupt("return", workbook);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 13:
							 | 
						||
| 
								 | 
							
								                _context.prev = 13;
							 | 
						||
| 
								 | 
							
								                _context.t0 = _context["catch"](5);
							 | 
						||
| 
								 | 
							
								                stream.close();
							 | 
						||
| 
								 | 
							
								                throw _context.t0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 17:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee, this, [[5, 13]]);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function readFile(_x, _x2) {
							 | 
						||
| 
								 | 
							
								        return _readFile.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return readFile;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "parseRels",
							 | 
						||
| 
								 | 
							
								    value: function parseRels(stream) {
							 | 
						||
| 
								 | 
							
								      var xform = new RelationshipsXform();
							 | 
						||
| 
								 | 
							
								      return xform.parseStream(stream);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "parseWorkbook",
							 | 
						||
| 
								 | 
							
								    value: function parseWorkbook(stream) {
							 | 
						||
| 
								 | 
							
								      var xform = new WorkbookXform();
							 | 
						||
| 
								 | 
							
								      return xform.parseStream(stream);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "parseSharedStrings",
							 | 
						||
| 
								 | 
							
								    value: function parseSharedStrings(stream) {
							 | 
						||
| 
								 | 
							
								      var xform = new SharedStringsXform();
							 | 
						||
| 
								 | 
							
								      return xform.parseStream(stream);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "reconcile",
							 | 
						||
| 
								 | 
							
								    value: function reconcile(model, options) {
							 | 
						||
| 
								 | 
							
								      var workbookXform = new WorkbookXform();
							 | 
						||
| 
								 | 
							
								      var worksheetXform = new WorksheetXform(options);
							 | 
						||
| 
								 | 
							
								      var drawingXform = new DrawingXform();
							 | 
						||
| 
								 | 
							
								      var tableXform = new TableXform();
							 | 
						||
| 
								 | 
							
								      workbookXform.reconcile(model); // reconcile drawings with their rels
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      var drawingOptions = {
							 | 
						||
| 
								 | 
							
								        media: model.media,
							 | 
						||
| 
								 | 
							
								        mediaIndex: model.mediaIndex
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      Object.keys(model.drawings).forEach(function (name) {
							 | 
						||
| 
								 | 
							
								        var drawing = model.drawings[name];
							 | 
						||
| 
								 | 
							
								        var drawingRel = model.drawingRels[name];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (drawingRel) {
							 | 
						||
| 
								 | 
							
								          drawingOptions.rels = drawingRel.reduce(function (o, rel) {
							 | 
						||
| 
								 | 
							
								            o[rel.Id] = rel;
							 | 
						||
| 
								 | 
							
								            return o;
							 | 
						||
| 
								 | 
							
								          }, {});
							 | 
						||
| 
								 | 
							
								          (drawing.anchors || []).forEach(function (anchor) {
							 | 
						||
| 
								 | 
							
								            var hyperlinks = anchor.picture && anchor.picture.hyperlinks;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (hyperlinks && drawingOptions.rels[hyperlinks.rId]) {
							 | 
						||
| 
								 | 
							
								              hyperlinks.hyperlink = drawingOptions.rels[hyperlinks.rId].Target;
							 | 
						||
| 
								 | 
							
								              delete hyperlinks.rId;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								          drawingXform.reconcile(drawing, drawingOptions);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }); // reconcile tables with the default styles
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      var tableOptions = {
							 | 
						||
| 
								 | 
							
								        styles: model.styles
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      Object.values(model.tables).forEach(function (table) {
							 | 
						||
| 
								 | 
							
								        tableXform.reconcile(table, tableOptions);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								      var sheetOptions = {
							 | 
						||
| 
								 | 
							
								        styles: model.styles,
							 | 
						||
| 
								 | 
							
								        sharedStrings: model.sharedStrings,
							 | 
						||
| 
								 | 
							
								        media: model.media,
							 | 
						||
| 
								 | 
							
								        mediaIndex: model.mediaIndex,
							 | 
						||
| 
								 | 
							
								        date1904: model.properties && model.properties.date1904,
							 | 
						||
| 
								 | 
							
								        drawings: model.drawings,
							 | 
						||
| 
								 | 
							
								        comments: model.comments,
							 | 
						||
| 
								 | 
							
								        tables: model.tables,
							 | 
						||
| 
								 | 
							
								        vmlDrawings: model.vmlDrawings
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      model.worksheets.forEach(function (worksheet) {
							 | 
						||
| 
								 | 
							
								        worksheet.relationships = model.worksheetRels[worksheet.sheetNo];
							 | 
						||
| 
								 | 
							
								        worksheetXform.reconcile(worksheet, sheetOptions);
							 | 
						||
| 
								 | 
							
								      }); // delete unnecessary parts
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      delete model.worksheetHash;
							 | 
						||
| 
								 | 
							
								      delete model.worksheetRels;
							 | 
						||
| 
								 | 
							
								      delete model.globalRels;
							 | 
						||
| 
								 | 
							
								      delete model.sharedStrings;
							 | 
						||
| 
								 | 
							
								      delete model.workbookRels;
							 | 
						||
| 
								 | 
							
								      delete model.sheetDefs;
							 | 
						||
| 
								 | 
							
								      delete model.styles;
							 | 
						||
| 
								 | 
							
								      delete model.mediaIndex;
							 | 
						||
| 
								 | 
							
								      delete model.drawings;
							 | 
						||
| 
								 | 
							
								      delete model.drawingRels;
							 | 
						||
| 
								 | 
							
								      delete model.vmlDrawings;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_processWorksheetEntry",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _processWorksheetEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(stream, model, sheetNo, options, path) {
							 | 
						||
| 
								 | 
							
								        var xform, worksheet;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee2$(_context2) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context2.prev = _context2.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xform = new WorksheetXform(options);
							 | 
						||
| 
								 | 
							
								                _context2.next = 3;
							 | 
						||
| 
								 | 
							
								                return xform.parseStream(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 3:
							 | 
						||
| 
								 | 
							
								                worksheet = _context2.sent;
							 | 
						||
| 
								 | 
							
								                worksheet.sheetNo = sheetNo;
							 | 
						||
| 
								 | 
							
								                model.worksheetHash[path] = worksheet;
							 | 
						||
| 
								 | 
							
								                model.worksheets.push(worksheet);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 7:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context2.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee2);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function _processWorksheetEntry(_x3, _x4, _x5, _x6, _x7) {
							 | 
						||
| 
								 | 
							
								        return _processWorksheetEntry2.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return _processWorksheetEntry;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_processCommentEntry",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _processCommentEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(stream, model, name) {
							 | 
						||
| 
								 | 
							
								        var xform, comments;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee3$(_context3) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context3.prev = _context3.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xform = new CommentsXform();
							 | 
						||
| 
								 | 
							
								                _context3.next = 3;
							 | 
						||
| 
								 | 
							
								                return xform.parseStream(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 3:
							 | 
						||
| 
								 | 
							
								                comments = _context3.sent;
							 | 
						||
| 
								 | 
							
								                model.comments["../".concat(name, ".xml")] = comments;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 5:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context3.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee3);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function _processCommentEntry(_x8, _x9, _x10) {
							 | 
						||
| 
								 | 
							
								        return _processCommentEntry2.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return _processCommentEntry;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_processTableEntry",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _processTableEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(stream, model, name) {
							 | 
						||
| 
								 | 
							
								        var xform, table;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee4$(_context4) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context4.prev = _context4.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xform = new TableXform();
							 | 
						||
| 
								 | 
							
								                _context4.next = 3;
							 | 
						||
| 
								 | 
							
								                return xform.parseStream(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 3:
							 | 
						||
| 
								 | 
							
								                table = _context4.sent;
							 | 
						||
| 
								 | 
							
								                model.tables["../tables/".concat(name, ".xml")] = table;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 5:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context4.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee4);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function _processTableEntry(_x11, _x12, _x13) {
							 | 
						||
| 
								 | 
							
								        return _processTableEntry2.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return _processTableEntry;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_processWorksheetRelsEntry",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _processWorksheetRelsEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(stream, model, sheetNo) {
							 | 
						||
| 
								 | 
							
								        var xform, relationships;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee5$(_context5) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context5.prev = _context5.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xform = new RelationshipsXform();
							 | 
						||
| 
								 | 
							
								                _context5.next = 3;
							 | 
						||
| 
								 | 
							
								                return xform.parseStream(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 3:
							 | 
						||
| 
								 | 
							
								                relationships = _context5.sent;
							 | 
						||
| 
								 | 
							
								                model.worksheetRels[sheetNo] = relationships;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 5:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context5.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee5);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function _processWorksheetRelsEntry(_x14, _x15, _x16) {
							 | 
						||
| 
								 | 
							
								        return _processWorksheetRelsEntry2.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return _processWorksheetRelsEntry;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_processMediaEntry",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _processMediaEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(entry, model, filename) {
							 | 
						||
| 
								 | 
							
								        var lastDot, extension, name;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee6$(_context6) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context6.prev = _context6.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                lastDot = filename.lastIndexOf('.'); // if we can't determine extension, ignore it
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!(lastDot >= 1)) {
							 | 
						||
| 
								 | 
							
								                  _context6.next = 6;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                extension = filename.substr(lastDot + 1);
							 | 
						||
| 
								 | 
							
								                name = filename.substr(0, lastDot);
							 | 
						||
| 
								 | 
							
								                _context6.next = 6;
							 | 
						||
| 
								 | 
							
								                return new Promise(function (resolve, reject) {
							 | 
						||
| 
								 | 
							
								                  var streamBuf = new StreamBuf();
							 | 
						||
| 
								 | 
							
								                  streamBuf.on('finish', function () {
							 | 
						||
| 
								 | 
							
								                    model.mediaIndex[filename] = model.media.length;
							 | 
						||
| 
								 | 
							
								                    model.mediaIndex[name] = model.media.length;
							 | 
						||
| 
								 | 
							
								                    var medium = {
							 | 
						||
| 
								 | 
							
								                      type: 'image',
							 | 
						||
| 
								 | 
							
								                      name: name,
							 | 
						||
| 
								 | 
							
								                      extension: extension,
							 | 
						||
| 
								 | 
							
								                      buffer: streamBuf.toBuffer()
							 | 
						||
| 
								 | 
							
								                    };
							 | 
						||
| 
								 | 
							
								                    model.media.push(medium);
							 | 
						||
| 
								 | 
							
								                    resolve();
							 | 
						||
| 
								 | 
							
								                  });
							 | 
						||
| 
								 | 
							
								                  entry.on('error', function (error) {
							 | 
						||
| 
								 | 
							
								                    reject(error);
							 | 
						||
| 
								 | 
							
								                  });
							 | 
						||
| 
								 | 
							
								                  entry.pipe(streamBuf);
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 6:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context6.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee6);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function _processMediaEntry(_x17, _x18, _x19) {
							 | 
						||
| 
								 | 
							
								        return _processMediaEntry2.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return _processMediaEntry;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_processDrawingEntry",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _processDrawingEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(entry, model, name) {
							 | 
						||
| 
								 | 
							
								        var xform, drawing;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee7$(_context7) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context7.prev = _context7.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xform = new DrawingXform();
							 | 
						||
| 
								 | 
							
								                _context7.next = 3;
							 | 
						||
| 
								 | 
							
								                return xform.parseStream(entry);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 3:
							 | 
						||
| 
								 | 
							
								                drawing = _context7.sent;
							 | 
						||
| 
								 | 
							
								                model.drawings[name] = drawing;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 5:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context7.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee7);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function _processDrawingEntry(_x20, _x21, _x22) {
							 | 
						||
| 
								 | 
							
								        return _processDrawingEntry2.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return _processDrawingEntry;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_processDrawingRelsEntry",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _processDrawingRelsEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(entry, model, name) {
							 | 
						||
| 
								 | 
							
								        var xform, relationships;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee8$(_context8) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context8.prev = _context8.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xform = new RelationshipsXform();
							 | 
						||
| 
								 | 
							
								                _context8.next = 3;
							 | 
						||
| 
								 | 
							
								                return xform.parseStream(entry);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 3:
							 | 
						||
| 
								 | 
							
								                relationships = _context8.sent;
							 | 
						||
| 
								 | 
							
								                model.drawingRels[name] = relationships;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 5:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context8.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee8);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function _processDrawingRelsEntry(_x23, _x24, _x25) {
							 | 
						||
| 
								 | 
							
								        return _processDrawingRelsEntry2.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return _processDrawingRelsEntry;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_processVmlDrawingEntry",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _processVmlDrawingEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(entry, model, name) {
							 | 
						||
| 
								 | 
							
								        var xform, vmlDrawing;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee9$(_context9) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context9.prev = _context9.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xform = new VmlNotesXform();
							 | 
						||
| 
								 | 
							
								                _context9.next = 3;
							 | 
						||
| 
								 | 
							
								                return xform.parseStream(entry);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 3:
							 | 
						||
| 
								 | 
							
								                vmlDrawing = _context9.sent;
							 | 
						||
| 
								 | 
							
								                model.vmlDrawings["../drawings/".concat(name, ".vml")] = vmlDrawing;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 5:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context9.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee9);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function _processVmlDrawingEntry(_x26, _x27, _x28) {
							 | 
						||
| 
								 | 
							
								        return _processVmlDrawingEntry2.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return _processVmlDrawingEntry;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_processThemeEntry",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _processThemeEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(entry, model, name) {
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee10$(_context10) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context10.prev = _context10.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                _context10.next = 2;
							 | 
						||
| 
								 | 
							
								                return new Promise(function (resolve, reject) {
							 | 
						||
| 
								 | 
							
								                  // TODO: stream entry into buffer and store the xml in the model.themes[]
							 | 
						||
| 
								 | 
							
								                  var stream = new StreamBuf();
							 | 
						||
| 
								 | 
							
								                  entry.on('error', reject);
							 | 
						||
| 
								 | 
							
								                  stream.on('error', reject);
							 | 
						||
| 
								 | 
							
								                  stream.on('finish', function () {
							 | 
						||
| 
								 | 
							
								                    model.themes[name] = stream.read().toString();
							 | 
						||
| 
								 | 
							
								                    resolve();
							 | 
						||
| 
								 | 
							
								                  });
							 | 
						||
| 
								 | 
							
								                  entry.pipe(stream);
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 2:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context10.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee10);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function _processThemeEntry(_x29, _x30, _x31) {
							 | 
						||
| 
								 | 
							
								        return _processThemeEntry2.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return _processThemeEntry;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @deprecated since version 4.0. You should use `#read` instead. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "createInputStream",
							 | 
						||
| 
								 | 
							
								    value: function createInputStream() {
							 | 
						||
| 
								 | 
							
								      throw new Error('`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "read",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _read = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(stream, options) {
							 | 
						||
| 
								 | 
							
								        var chunks, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, chunk;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee11$(_context11) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context11.prev = _context11.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                // TODO: Remove once node v8 is deprecated
							 | 
						||
| 
								 | 
							
								                // Detect and upgrade old streams
							 | 
						||
| 
								 | 
							
								                if (!stream[Symbol.asyncIterator] && stream.pipe) {
							 | 
						||
| 
								 | 
							
								                  stream = stream.pipe(new PassThrough());
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                chunks = [];
							 | 
						||
| 
								 | 
							
								                _iteratorNormalCompletion = true;
							 | 
						||
| 
								 | 
							
								                _didIteratorError = false;
							 | 
						||
| 
								 | 
							
								                _context11.prev = 4;
							 | 
						||
| 
								 | 
							
								                _iterator = _asyncIterator(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 6:
							 | 
						||
| 
								 | 
							
								                _context11.next = 8;
							 | 
						||
| 
								 | 
							
								                return _iterator.next();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 8:
							 | 
						||
| 
								 | 
							
								                _step = _context11.sent;
							 | 
						||
| 
								 | 
							
								                _iteratorNormalCompletion = _step.done;
							 | 
						||
| 
								 | 
							
								                _context11.next = 12;
							 | 
						||
| 
								 | 
							
								                return _step.value;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 12:
							 | 
						||
| 
								 | 
							
								                _value = _context11.sent;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (_iteratorNormalCompletion) {
							 | 
						||
| 
								 | 
							
								                  _context11.next = 19;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                chunk = _value;
							 | 
						||
| 
								 | 
							
								                chunks.push(chunk);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 16:
							 | 
						||
| 
								 | 
							
								                _iteratorNormalCompletion = true;
							 | 
						||
| 
								 | 
							
								                _context11.next = 6;
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 19:
							 | 
						||
| 
								 | 
							
								                _context11.next = 25;
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 21:
							 | 
						||
| 
								 | 
							
								                _context11.prev = 21;
							 | 
						||
| 
								 | 
							
								                _context11.t0 = _context11["catch"](4);
							 | 
						||
| 
								 | 
							
								                _didIteratorError = true;
							 | 
						||
| 
								 | 
							
								                _iteratorError = _context11.t0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 25:
							 | 
						||
| 
								 | 
							
								                _context11.prev = 25;
							 | 
						||
| 
								 | 
							
								                _context11.prev = 26;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!(!_iteratorNormalCompletion && _iterator.return != null)) {
							 | 
						||
| 
								 | 
							
								                  _context11.next = 30;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context11.next = 30;
							 | 
						||
| 
								 | 
							
								                return _iterator.return();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 30:
							 | 
						||
| 
								 | 
							
								                _context11.prev = 30;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!_didIteratorError) {
							 | 
						||
| 
								 | 
							
								                  _context11.next = 33;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                throw _iteratorError;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 33:
							 | 
						||
| 
								 | 
							
								                return _context11.finish(30);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 34:
							 | 
						||
| 
								 | 
							
								                return _context11.finish(25);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 35:
							 | 
						||
| 
								 | 
							
								                return _context11.abrupt("return", this.load(Buffer.concat(chunks), options));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 36:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context11.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee11, this, [[4, 21, 25, 35], [26,, 30, 34]]);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function read(_x32, _x33) {
							 | 
						||
| 
								 | 
							
								        return _read.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return read;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "load",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _load = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12(data, options) {
							 | 
						||
| 
								 | 
							
								        var buffer, model, zip, _i, _Object$values, entry, entryName, stream, content, chunkSize, i, workbook, appXform, appProperties, coreXform, coreProperties, match;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee12$(_context12) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context12.prev = _context12.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                if (options && options.base64) {
							 | 
						||
| 
								 | 
							
								                  buffer = Buffer.from(data.toString(), 'base64');
							 | 
						||
| 
								 | 
							
								                } else {
							 | 
						||
| 
								 | 
							
								                  buffer = data;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                model = {
							 | 
						||
| 
								 | 
							
								                  worksheets: [],
							 | 
						||
| 
								 | 
							
								                  worksheetHash: {},
							 | 
						||
| 
								 | 
							
								                  worksheetRels: [],
							 | 
						||
| 
								 | 
							
								                  themes: {},
							 | 
						||
| 
								 | 
							
								                  media: [],
							 | 
						||
| 
								 | 
							
								                  mediaIndex: {},
							 | 
						||
| 
								 | 
							
								                  drawings: {},
							 | 
						||
| 
								 | 
							
								                  drawingRels: {},
							 | 
						||
| 
								 | 
							
								                  comments: {},
							 | 
						||
| 
								 | 
							
								                  tables: {},
							 | 
						||
| 
								 | 
							
								                  vmlDrawings: {}
							 | 
						||
| 
								 | 
							
								                };
							 | 
						||
| 
								 | 
							
								                _context12.next = 4;
							 | 
						||
| 
								 | 
							
								                return JSZip.loadAsync(buffer);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 4:
							 | 
						||
| 
								 | 
							
								                zip = _context12.sent;
							 | 
						||
| 
								 | 
							
								                _i = 0, _Object$values = Object.values(zip.files);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 6:
							 | 
						||
| 
								 | 
							
								                if (!(_i < _Object$values.length)) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 126;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                entry = _Object$values[_i];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (entry.dir) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 123;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                entryName = entry.name;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (entryName[0] === '/') {
							 | 
						||
| 
								 | 
							
								                  entryName = entryName.substr(1);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                stream = void 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!(entryName.match(/xl\/media\//) || // themes are not parsed as stream
							 | 
						||
| 
								 | 
							
								                entryName.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/))) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 21;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                stream = new PassThrough();
							 | 
						||
| 
								 | 
							
								                _context12.t0 = stream;
							 | 
						||
| 
								 | 
							
								                _context12.next = 17;
							 | 
						||
| 
								 | 
							
								                return entry.async('nodebuffer');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 17:
							 | 
						||
| 
								 | 
							
								                _context12.t1 = _context12.sent;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.t0.write.call(_context12.t0, _context12.t1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.next = 36;
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 21:
							 | 
						||
| 
								 | 
							
								                // use object mode to avoid buffer-string convention
							 | 
						||
| 
								 | 
							
								                stream = new PassThrough({
							 | 
						||
| 
								 | 
							
								                  writableObjectMode: true,
							 | 
						||
| 
								 | 
							
								                  readableObjectMode: true
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								                content = void 0; // https://www.npmjs.com/package/process
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!process.browser) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 31;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.t2 = bufferToString;
							 | 
						||
| 
								 | 
							
								                _context12.next = 27;
							 | 
						||
| 
								 | 
							
								                return entry.async('nodebuffer');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 27:
							 | 
						||
| 
								 | 
							
								                _context12.t3 = _context12.sent;
							 | 
						||
| 
								 | 
							
								                content = (0, _context12.t2)(_context12.t3);
							 | 
						||
| 
								 | 
							
								                _context12.next = 34;
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 31:
							 | 
						||
| 
								 | 
							
								                _context12.next = 33;
							 | 
						||
| 
								 | 
							
								                return entry.async('string');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 33:
							 | 
						||
| 
								 | 
							
								                content = _context12.sent;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 34:
							 | 
						||
| 
								 | 
							
								                chunkSize = 16 * 1024;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                for (i = 0; i < content.length; i += chunkSize) {
							 | 
						||
| 
								 | 
							
								                  stream.write(content.substring(i, i + chunkSize));
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 36:
							 | 
						||
| 
								 | 
							
								                stream.end();
							 | 
						||
| 
								 | 
							
								                _context12.t4 = entryName;
							 | 
						||
| 
								 | 
							
								                _context12.next = _context12.t4 === '_rels/.rels' ? 40 : _context12.t4 === 'xl/workbook.xml' ? 44 : _context12.t4 === 'xl/_rels/workbook.xml.rels' ? 53 : _context12.t4 === 'xl/sharedStrings.xml' ? 57 : _context12.t4 === 'xl/styles.xml' ? 61 : _context12.t4 === 'docProps/app.xml' ? 65 : _context12.t4 === 'docProps/core.xml' ? 72 : 78;
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 40:
							 | 
						||
| 
								 | 
							
								                _context12.next = 42;
							 | 
						||
| 
								 | 
							
								                return this.parseRels(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 42:
							 | 
						||
| 
								 | 
							
								                model.globalRels = _context12.sent;
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 44:
							 | 
						||
| 
								 | 
							
								                _context12.next = 46;
							 | 
						||
| 
								 | 
							
								                return this.parseWorkbook(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 46:
							 | 
						||
| 
								 | 
							
								                workbook = _context12.sent;
							 | 
						||
| 
								 | 
							
								                model.sheets = workbook.sheets;
							 | 
						||
| 
								 | 
							
								                model.definedNames = workbook.definedNames;
							 | 
						||
| 
								 | 
							
								                model.views = workbook.views;
							 | 
						||
| 
								 | 
							
								                model.properties = workbook.properties;
							 | 
						||
| 
								 | 
							
								                model.calcProperties = workbook.calcProperties;
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 53:
							 | 
						||
| 
								 | 
							
								                _context12.next = 55;
							 | 
						||
| 
								 | 
							
								                return this.parseRels(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 55:
							 | 
						||
| 
								 | 
							
								                model.workbookRels = _context12.sent;
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 57:
							 | 
						||
| 
								 | 
							
								                model.sharedStrings = new SharedStringsXform();
							 | 
						||
| 
								 | 
							
								                _context12.next = 60;
							 | 
						||
| 
								 | 
							
								                return model.sharedStrings.parseStream(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 60:
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 61:
							 | 
						||
| 
								 | 
							
								                model.styles = new StylesXform();
							 | 
						||
| 
								 | 
							
								                _context12.next = 64;
							 | 
						||
| 
								 | 
							
								                return model.styles.parseStream(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 64:
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 65:
							 | 
						||
| 
								 | 
							
								                appXform = new AppXform();
							 | 
						||
| 
								 | 
							
								                _context12.next = 68;
							 | 
						||
| 
								 | 
							
								                return appXform.parseStream(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 68:
							 | 
						||
| 
								 | 
							
								                appProperties = _context12.sent;
							 | 
						||
| 
								 | 
							
								                model.company = appProperties.company;
							 | 
						||
| 
								 | 
							
								                model.manager = appProperties.manager;
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 72:
							 | 
						||
| 
								 | 
							
								                coreXform = new CoreXform();
							 | 
						||
| 
								 | 
							
								                _context12.next = 75;
							 | 
						||
| 
								 | 
							
								                return coreXform.parseStream(stream);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 75:
							 | 
						||
| 
								 | 
							
								                coreProperties = _context12.sent;
							 | 
						||
| 
								 | 
							
								                Object.assign(model, coreProperties);
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 78:
							 | 
						||
| 
								 | 
							
								                match = entryName.match(/xl\/worksheets\/sheet(\d+)[.]xml/);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!match) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 83;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.next = 82;
							 | 
						||
| 
								 | 
							
								                return this._processWorksheetEntry(stream, model, match[1], options, entryName);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 82:
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 83:
							 | 
						||
| 
								 | 
							
								                match = entryName.match(/xl\/worksheets\/_rels\/sheet(\d+)[.]xml.rels/);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!match) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 88;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.next = 87;
							 | 
						||
| 
								 | 
							
								                return this._processWorksheetRelsEntry(stream, model, match[1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 87:
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 88:
							 | 
						||
| 
								 | 
							
								                match = entryName.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!match) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 93;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.next = 92;
							 | 
						||
| 
								 | 
							
								                return this._processThemeEntry(stream, model, match[1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 92:
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 93:
							 | 
						||
| 
								 | 
							
								                match = entryName.match(/xl\/media\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!match) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 98;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.next = 97;
							 | 
						||
| 
								 | 
							
								                return this._processMediaEntry(stream, model, match[1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 97:
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 98:
							 | 
						||
| 
								 | 
							
								                match = entryName.match(/xl\/drawings\/([a-zA-Z0-9]+)[.]xml/);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!match) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 103;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.next = 102;
							 | 
						||
| 
								 | 
							
								                return this._processDrawingEntry(stream, model, match[1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 102:
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 103:
							 | 
						||
| 
								 | 
							
								                match = entryName.match(/xl\/(comments\d+)[.]xml/);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!match) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 108;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.next = 107;
							 | 
						||
| 
								 | 
							
								                return this._processCommentEntry(stream, model, match[1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 107:
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 108:
							 | 
						||
| 
								 | 
							
								                match = entryName.match(/xl\/tables\/(table\d+)[.]xml/);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!match) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 113;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.next = 112;
							 | 
						||
| 
								 | 
							
								                return this._processTableEntry(stream, model, match[1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 112:
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 113:
							 | 
						||
| 
								 | 
							
								                match = entryName.match(/xl\/drawings\/_rels\/([a-zA-Z0-9]+)[.]xml[.]rels/);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!match) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 118;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.next = 117;
							 | 
						||
| 
								 | 
							
								                return this._processDrawingRelsEntry(stream, model, match[1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 117:
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 118:
							 | 
						||
| 
								 | 
							
								                match = entryName.match(/xl\/drawings\/(vmlDrawing\d+)[.]vml/);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (!match) {
							 | 
						||
| 
								 | 
							
								                  _context12.next = 123;
							 | 
						||
| 
								 | 
							
								                  break;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context12.next = 122;
							 | 
						||
| 
								 | 
							
								                return this._processVmlDrawingEntry(stream, model, match[1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 122:
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("break", 123);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 123:
							 | 
						||
| 
								 | 
							
								                _i++;
							 | 
						||
| 
								 | 
							
								                _context12.next = 6;
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 126:
							 | 
						||
| 
								 | 
							
								                this.reconcile(model, options); // apply model
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                this.workbook.model = model;
							 | 
						||
| 
								 | 
							
								                return _context12.abrupt("return", this.workbook);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 129:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context12.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee12, this);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function load(_x34, _x35) {
							 | 
						||
| 
								 | 
							
								        return _load.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return load;
							 | 
						||
| 
								 | 
							
								    }() // =========================================================================
							 | 
						||
| 
								 | 
							
								    // Write
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addMedia",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _addMedia = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee14(zip, model) {
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee14$(_context14) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context14.prev = _context14.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                _context14.next = 2;
							 | 
						||
| 
								 | 
							
								                return Promise.all(model.media.map( /*#__PURE__*/function () {
							 | 
						||
| 
								 | 
							
								                  var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee13(medium) {
							 | 
						||
| 
								 | 
							
								                    var filename, data, dataimg64, content;
							 | 
						||
| 
								 | 
							
								                    return regeneratorRuntime.wrap(function _callee13$(_context13) {
							 | 
						||
| 
								 | 
							
								                      while (1) {
							 | 
						||
| 
								 | 
							
								                        switch (_context13.prev = _context13.next) {
							 | 
						||
| 
								 | 
							
								                          case 0:
							 | 
						||
| 
								 | 
							
								                            if (!(medium.type === 'image')) {
							 | 
						||
| 
								 | 
							
								                              _context13.next = 13;
							 | 
						||
| 
								 | 
							
								                              break;
							 | 
						||
| 
								 | 
							
								                            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                            filename = "xl/media/".concat(medium.name, ".").concat(medium.extension);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                            if (!medium.filename) {
							 | 
						||
| 
								 | 
							
								                              _context13.next = 7;
							 | 
						||
| 
								 | 
							
								                              break;
							 | 
						||
| 
								 | 
							
								                            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                            _context13.next = 5;
							 | 
						||
| 
								 | 
							
								                            return fsReadFileAsync(medium.filename);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                          case 5:
							 | 
						||
| 
								 | 
							
								                            data = _context13.sent;
							 | 
						||
| 
								 | 
							
								                            return _context13.abrupt("return", zip.append(data, {
							 | 
						||
| 
								 | 
							
								                              name: filename
							 | 
						||
| 
								 | 
							
								                            }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                          case 7:
							 | 
						||
| 
								 | 
							
								                            if (!medium.buffer) {
							 | 
						||
| 
								 | 
							
								                              _context13.next = 9;
							 | 
						||
| 
								 | 
							
								                              break;
							 | 
						||
| 
								 | 
							
								                            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                            return _context13.abrupt("return", zip.append(medium.buffer, {
							 | 
						||
| 
								 | 
							
								                              name: filename
							 | 
						||
| 
								 | 
							
								                            }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                          case 9:
							 | 
						||
| 
								 | 
							
								                            if (!medium.base64) {
							 | 
						||
| 
								 | 
							
								                              _context13.next = 13;
							 | 
						||
| 
								 | 
							
								                              break;
							 | 
						||
| 
								 | 
							
								                            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                            dataimg64 = medium.base64;
							 | 
						||
| 
								 | 
							
								                            content = dataimg64.substring(dataimg64.indexOf(',') + 1);
							 | 
						||
| 
								 | 
							
								                            return _context13.abrupt("return", zip.append(content, {
							 | 
						||
| 
								 | 
							
								                              name: filename,
							 | 
						||
| 
								 | 
							
								                              base64: true
							 | 
						||
| 
								 | 
							
								                            }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                          case 13:
							 | 
						||
| 
								 | 
							
								                            throw new Error('Unsupported media');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                          case 14:
							 | 
						||
| 
								 | 
							
								                          case "end":
							 | 
						||
| 
								 | 
							
								                            return _context13.stop();
							 | 
						||
| 
								 | 
							
								                        }
							 | 
						||
| 
								 | 
							
								                      }
							 | 
						||
| 
								 | 
							
								                    }, _callee13);
							 | 
						||
| 
								 | 
							
								                  }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                  return function (_x38) {
							 | 
						||
| 
								 | 
							
								                    return _ref.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								                  };
							 | 
						||
| 
								 | 
							
								                }()));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 2:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context14.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee14);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function addMedia(_x36, _x37) {
							 | 
						||
| 
								 | 
							
								        return _addMedia.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return addMedia;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addDrawings",
							 | 
						||
| 
								 | 
							
								    value: function addDrawings(zip, model) {
							 | 
						||
| 
								 | 
							
								      var drawingXform = new DrawingXform();
							 | 
						||
| 
								 | 
							
								      var relsXform = new RelationshipsXform();
							 | 
						||
| 
								 | 
							
								      model.worksheets.forEach(function (worksheet) {
							 | 
						||
| 
								 | 
							
								        var drawing = worksheet.drawing;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (drawing) {
							 | 
						||
| 
								 | 
							
								          drawingXform.prepare(drawing, {});
							 | 
						||
| 
								 | 
							
								          var xml = drawingXform.toXml(drawing);
							 | 
						||
| 
								 | 
							
								          zip.append(xml, {
							 | 
						||
| 
								 | 
							
								            name: "xl/drawings/".concat(drawing.name, ".xml")
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								          xml = relsXform.toXml(drawing.rels);
							 | 
						||
| 
								 | 
							
								          zip.append(xml, {
							 | 
						||
| 
								 | 
							
								            name: "xl/drawings/_rels/".concat(drawing.name, ".xml.rels")
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addTables",
							 | 
						||
| 
								 | 
							
								    value: function addTables(zip, model) {
							 | 
						||
| 
								 | 
							
								      var tableXform = new TableXform();
							 | 
						||
| 
								 | 
							
								      model.worksheets.forEach(function (worksheet) {
							 | 
						||
| 
								 | 
							
								        var tables = worksheet.tables;
							 | 
						||
| 
								 | 
							
								        tables.forEach(function (table) {
							 | 
						||
| 
								 | 
							
								          tableXform.prepare(table, {});
							 | 
						||
| 
								 | 
							
								          var tableXml = tableXform.toXml(table);
							 | 
						||
| 
								 | 
							
								          zip.append(tableXml, {
							 | 
						||
| 
								 | 
							
								            name: "xl/tables/".concat(table.target)
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addContentTypes",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _addContentTypes = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee15(zip, model) {
							 | 
						||
| 
								 | 
							
								        var xform, xml;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee15$(_context15) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context15.prev = _context15.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xform = new ContentTypesXform();
							 | 
						||
| 
								 | 
							
								                xml = xform.toXml(model);
							 | 
						||
| 
								 | 
							
								                zip.append(xml, {
							 | 
						||
| 
								 | 
							
								                  name: '[Content_Types].xml'
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 3:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context15.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee15);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function addContentTypes(_x39, _x40) {
							 | 
						||
| 
								 | 
							
								        return _addContentTypes.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return addContentTypes;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addApp",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _addApp = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee16(zip, model) {
							 | 
						||
| 
								 | 
							
								        var xform, xml;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee16$(_context16) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context16.prev = _context16.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xform = new AppXform();
							 | 
						||
| 
								 | 
							
								                xml = xform.toXml(model);
							 | 
						||
| 
								 | 
							
								                zip.append(xml, {
							 | 
						||
| 
								 | 
							
								                  name: 'docProps/app.xml'
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 3:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context16.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee16);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function addApp(_x41, _x42) {
							 | 
						||
| 
								 | 
							
								        return _addApp.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return addApp;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addCore",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _addCore = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee17(zip, model) {
							 | 
						||
| 
								 | 
							
								        var coreXform;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee17$(_context17) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context17.prev = _context17.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                coreXform = new CoreXform();
							 | 
						||
| 
								 | 
							
								                zip.append(coreXform.toXml(model), {
							 | 
						||
| 
								 | 
							
								                  name: 'docProps/core.xml'
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 2:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context17.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee17);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function addCore(_x43, _x44) {
							 | 
						||
| 
								 | 
							
								        return _addCore.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return addCore;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addThemes",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _addThemes = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee18(zip, model) {
							 | 
						||
| 
								 | 
							
								        var themes;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee18$(_context18) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context18.prev = _context18.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                themes = model.themes || {
							 | 
						||
| 
								 | 
							
								                  theme1: theme1Xml
							 | 
						||
| 
								 | 
							
								                };
							 | 
						||
| 
								 | 
							
								                Object.keys(themes).forEach(function (name) {
							 | 
						||
| 
								 | 
							
								                  var xml = themes[name];
							 | 
						||
| 
								 | 
							
								                  var path = "xl/theme/".concat(name, ".xml");
							 | 
						||
| 
								 | 
							
								                  zip.append(xml, {
							 | 
						||
| 
								 | 
							
								                    name: path
							 | 
						||
| 
								 | 
							
								                  });
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 2:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context18.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee18);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function addThemes(_x45, _x46) {
							 | 
						||
| 
								 | 
							
								        return _addThemes.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return addThemes;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addOfficeRels",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _addOfficeRels = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee19(zip) {
							 | 
						||
| 
								 | 
							
								        var xform, xml;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee19$(_context19) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context19.prev = _context19.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xform = new RelationshipsXform();
							 | 
						||
| 
								 | 
							
								                xml = xform.toXml([{
							 | 
						||
| 
								 | 
							
								                  Id: 'rId1',
							 | 
						||
| 
								 | 
							
								                  Type: XLSX.RelType.OfficeDocument,
							 | 
						||
| 
								 | 
							
								                  Target: 'xl/workbook.xml'
							 | 
						||
| 
								 | 
							
								                }, {
							 | 
						||
| 
								 | 
							
								                  Id: 'rId2',
							 | 
						||
| 
								 | 
							
								                  Type: XLSX.RelType.CoreProperties,
							 | 
						||
| 
								 | 
							
								                  Target: 'docProps/core.xml'
							 | 
						||
| 
								 | 
							
								                }, {
							 | 
						||
| 
								 | 
							
								                  Id: 'rId3',
							 | 
						||
| 
								 | 
							
								                  Type: XLSX.RelType.ExtenderProperties,
							 | 
						||
| 
								 | 
							
								                  Target: 'docProps/app.xml'
							 | 
						||
| 
								 | 
							
								                }]);
							 | 
						||
| 
								 | 
							
								                zip.append(xml, {
							 | 
						||
| 
								 | 
							
								                  name: '_rels/.rels'
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 3:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context19.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee19);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function addOfficeRels(_x47) {
							 | 
						||
| 
								 | 
							
								        return _addOfficeRels.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return addOfficeRels;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addWorkbookRels",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _addWorkbookRels = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee20(zip, model) {
							 | 
						||
| 
								 | 
							
								        var count, relationships, xform, xml;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee20$(_context20) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context20.prev = _context20.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                count = 1;
							 | 
						||
| 
								 | 
							
								                relationships = [{
							 | 
						||
| 
								 | 
							
								                  Id: "rId".concat(count++),
							 | 
						||
| 
								 | 
							
								                  Type: XLSX.RelType.Styles,
							 | 
						||
| 
								 | 
							
								                  Target: 'styles.xml'
							 | 
						||
| 
								 | 
							
								                }, {
							 | 
						||
| 
								 | 
							
								                  Id: "rId".concat(count++),
							 | 
						||
| 
								 | 
							
								                  Type: XLSX.RelType.Theme,
							 | 
						||
| 
								 | 
							
								                  Target: 'theme/theme1.xml'
							 | 
						||
| 
								 | 
							
								                }];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (model.sharedStrings.count) {
							 | 
						||
| 
								 | 
							
								                  relationships.push({
							 | 
						||
| 
								 | 
							
								                    Id: "rId".concat(count++),
							 | 
						||
| 
								 | 
							
								                    Type: XLSX.RelType.SharedStrings,
							 | 
						||
| 
								 | 
							
								                    Target: 'sharedStrings.xml'
							 | 
						||
| 
								 | 
							
								                  });
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                model.worksheets.forEach(function (worksheet) {
							 | 
						||
| 
								 | 
							
								                  worksheet.rId = "rId".concat(count++);
							 | 
						||
| 
								 | 
							
								                  relationships.push({
							 | 
						||
| 
								 | 
							
								                    Id: worksheet.rId,
							 | 
						||
| 
								 | 
							
								                    Type: XLSX.RelType.Worksheet,
							 | 
						||
| 
								 | 
							
								                    Target: "worksheets/sheet".concat(worksheet.id, ".xml")
							 | 
						||
| 
								 | 
							
								                  });
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								                xform = new RelationshipsXform();
							 | 
						||
| 
								 | 
							
								                xml = xform.toXml(relationships);
							 | 
						||
| 
								 | 
							
								                zip.append(xml, {
							 | 
						||
| 
								 | 
							
								                  name: 'xl/_rels/workbook.xml.rels'
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 7:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context20.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee20);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function addWorkbookRels(_x48, _x49) {
							 | 
						||
| 
								 | 
							
								        return _addWorkbookRels.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return addWorkbookRels;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addSharedStrings",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _addSharedStrings = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee21(zip, model) {
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee21$(_context21) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context21.prev = _context21.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                if (model.sharedStrings && model.sharedStrings.count) {
							 | 
						||
| 
								 | 
							
								                  zip.append(model.sharedStrings.xml, {
							 | 
						||
| 
								 | 
							
								                    name: 'xl/sharedStrings.xml'
							 | 
						||
| 
								 | 
							
								                  });
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 1:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context21.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee21);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function addSharedStrings(_x50, _x51) {
							 | 
						||
| 
								 | 
							
								        return _addSharedStrings.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return addSharedStrings;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addStyles",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _addStyles = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee22(zip, model) {
							 | 
						||
| 
								 | 
							
								        var xml;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee22$(_context22) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context22.prev = _context22.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xml = model.styles.xml;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (xml) {
							 | 
						||
| 
								 | 
							
								                  zip.append(xml, {
							 | 
						||
| 
								 | 
							
								                    name: 'xl/styles.xml'
							 | 
						||
| 
								 | 
							
								                  });
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 2:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context22.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee22);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function addStyles(_x52, _x53) {
							 | 
						||
| 
								 | 
							
								        return _addStyles.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return addStyles;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addWorkbook",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _addWorkbook = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee23(zip, model) {
							 | 
						||
| 
								 | 
							
								        var xform;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee23$(_context23) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context23.prev = _context23.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                xform = new WorkbookXform();
							 | 
						||
| 
								 | 
							
								                zip.append(xform.toXml(model), {
							 | 
						||
| 
								 | 
							
								                  name: 'xl/workbook.xml'
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 2:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context23.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee23);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function addWorkbook(_x54, _x55) {
							 | 
						||
| 
								 | 
							
								        return _addWorkbook.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return addWorkbook;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "addWorksheets",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _addWorksheets = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee24(zip, model) {
							 | 
						||
| 
								 | 
							
								        var worksheetXform, relationshipsXform, commentsXform, vmlNotesXform;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee24$(_context24) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context24.prev = _context24.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                // preparation phase
							 | 
						||
| 
								 | 
							
								                worksheetXform = new WorksheetXform();
							 | 
						||
| 
								 | 
							
								                relationshipsXform = new RelationshipsXform();
							 | 
						||
| 
								 | 
							
								                commentsXform = new CommentsXform();
							 | 
						||
| 
								 | 
							
								                vmlNotesXform = new VmlNotesXform(); // write sheets
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                model.worksheets.forEach(function (worksheet) {
							 | 
						||
| 
								 | 
							
								                  var xmlStream = new XmlStream();
							 | 
						||
| 
								 | 
							
								                  worksheetXform.render(xmlStream, worksheet);
							 | 
						||
| 
								 | 
							
								                  zip.append(xmlStream.xml, {
							 | 
						||
| 
								 | 
							
								                    name: "xl/worksheets/sheet".concat(worksheet.id, ".xml")
							 | 
						||
| 
								 | 
							
								                  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                  if (worksheet.rels && worksheet.rels.length) {
							 | 
						||
| 
								 | 
							
								                    xmlStream = new XmlStream();
							 | 
						||
| 
								 | 
							
								                    relationshipsXform.render(xmlStream, worksheet.rels);
							 | 
						||
| 
								 | 
							
								                    zip.append(xmlStream.xml, {
							 | 
						||
| 
								 | 
							
								                      name: "xl/worksheets/_rels/sheet".concat(worksheet.id, ".xml.rels")
							 | 
						||
| 
								 | 
							
								                    });
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                  if (worksheet.comments.length > 0) {
							 | 
						||
| 
								 | 
							
								                    xmlStream = new XmlStream();
							 | 
						||
| 
								 | 
							
								                    commentsXform.render(xmlStream, worksheet);
							 | 
						||
| 
								 | 
							
								                    zip.append(xmlStream.xml, {
							 | 
						||
| 
								 | 
							
								                      name: "xl/comments".concat(worksheet.id, ".xml")
							 | 
						||
| 
								 | 
							
								                    });
							 | 
						||
| 
								 | 
							
								                    xmlStream = new XmlStream();
							 | 
						||
| 
								 | 
							
								                    vmlNotesXform.render(xmlStream, worksheet);
							 | 
						||
| 
								 | 
							
								                    zip.append(xmlStream.xml, {
							 | 
						||
| 
								 | 
							
								                      name: "xl/drawings/vmlDrawing".concat(worksheet.id, ".vml")
							 | 
						||
| 
								 | 
							
								                    });
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 5:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context24.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee24);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function addWorksheets(_x56, _x57) {
							 | 
						||
| 
								 | 
							
								        return _addWorksheets.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return addWorksheets;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "_finalize",
							 | 
						||
| 
								 | 
							
								    value: function _finalize(zip) {
							 | 
						||
| 
								 | 
							
								      var _this = this;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return new Promise(function (resolve, reject) {
							 | 
						||
| 
								 | 
							
								        zip.on('finish', function () {
							 | 
						||
| 
								 | 
							
								          resolve(_this);
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        zip.on('error', reject);
							 | 
						||
| 
								 | 
							
								        zip.finalize();
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "prepareModel",
							 | 
						||
| 
								 | 
							
								    value: function prepareModel(model, options) {
							 | 
						||
| 
								 | 
							
								      // ensure following properties have sane values
							 | 
						||
| 
								 | 
							
								      model.creator = model.creator || 'ExcelJS';
							 | 
						||
| 
								 | 
							
								      model.lastModifiedBy = model.lastModifiedBy || 'ExcelJS';
							 | 
						||
| 
								 | 
							
								      model.created = model.created || new Date();
							 | 
						||
| 
								 | 
							
								      model.modified = model.modified || new Date();
							 | 
						||
| 
								 | 
							
								      model.useSharedStrings = options.useSharedStrings !== undefined ? options.useSharedStrings : true;
							 | 
						||
| 
								 | 
							
								      model.useStyles = options.useStyles !== undefined ? options.useStyles : true; // Manage the shared strings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      model.sharedStrings = new SharedStringsXform(); // add a style manager to handle cell formats, fonts, etc.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      model.styles = model.useStyles ? new StylesXform(true) : new StylesXform.Mock(); // prepare all of the things before the render
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      var workbookXform = new WorkbookXform();
							 | 
						||
| 
								 | 
							
								      var worksheetXform = new WorksheetXform();
							 | 
						||
| 
								 | 
							
								      workbookXform.prepare(model);
							 | 
						||
| 
								 | 
							
								      var worksheetOptions = {
							 | 
						||
| 
								 | 
							
								        sharedStrings: model.sharedStrings,
							 | 
						||
| 
								 | 
							
								        styles: model.styles,
							 | 
						||
| 
								 | 
							
								        date1904: model.properties.date1904,
							 | 
						||
| 
								 | 
							
								        drawingsCount: 0,
							 | 
						||
| 
								 | 
							
								        media: model.media
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      worksheetOptions.drawings = model.drawings = [];
							 | 
						||
| 
								 | 
							
								      worksheetOptions.commentRefs = model.commentRefs = [];
							 | 
						||
| 
								 | 
							
								      var tableCount = 0;
							 | 
						||
| 
								 | 
							
								      model.tables = [];
							 | 
						||
| 
								 | 
							
								      model.worksheets.forEach(function (worksheet) {
							 | 
						||
| 
								 | 
							
								        // assign unique filenames to tables
							 | 
						||
| 
								 | 
							
								        worksheet.tables.forEach(function (table) {
							 | 
						||
| 
								 | 
							
								          tableCount++;
							 | 
						||
| 
								 | 
							
								          table.target = "table".concat(tableCount, ".xml");
							 | 
						||
| 
								 | 
							
								          table.id = tableCount;
							 | 
						||
| 
								 | 
							
								          model.tables.push(table);
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        worksheetXform.prepare(worksheet, worksheetOptions);
							 | 
						||
| 
								 | 
							
								      }); // TODO: workbook drawing list
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "write",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _write = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee25(stream, options) {
							 | 
						||
| 
								 | 
							
								        var model, zip;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee25$(_context25) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context25.prev = _context25.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                options = options || {};
							 | 
						||
| 
								 | 
							
								                model = this.workbook.model;
							 | 
						||
| 
								 | 
							
								                zip = new ZipStream.ZipWriter(options.zip);
							 | 
						||
| 
								 | 
							
								                zip.pipe(stream);
							 | 
						||
| 
								 | 
							
								                this.prepareModel(model, options); // render
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                _context25.next = 7;
							 | 
						||
| 
								 | 
							
								                return this.addContentTypes(zip, model);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 7:
							 | 
						||
| 
								 | 
							
								                _context25.next = 9;
							 | 
						||
| 
								 | 
							
								                return this.addOfficeRels(zip, model);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 9:
							 | 
						||
| 
								 | 
							
								                _context25.next = 11;
							 | 
						||
| 
								 | 
							
								                return this.addWorkbookRels(zip, model);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 11:
							 | 
						||
| 
								 | 
							
								                _context25.next = 13;
							 | 
						||
| 
								 | 
							
								                return this.addWorksheets(zip, model);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 13:
							 | 
						||
| 
								 | 
							
								                _context25.next = 15;
							 | 
						||
| 
								 | 
							
								                return this.addSharedStrings(zip, model);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 15:
							 | 
						||
| 
								 | 
							
								                _context25.next = 17;
							 | 
						||
| 
								 | 
							
								                return this.addDrawings(zip, model);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 17:
							 | 
						||
| 
								 | 
							
								                _context25.next = 19;
							 | 
						||
| 
								 | 
							
								                return this.addTables(zip, model);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 19:
							 | 
						||
| 
								 | 
							
								                _context25.next = 21;
							 | 
						||
| 
								 | 
							
								                return Promise.all([this.addThemes(zip, model), this.addStyles(zip, model)]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 21:
							 | 
						||
| 
								 | 
							
								                _context25.next = 23;
							 | 
						||
| 
								 | 
							
								                return this.addMedia(zip, model);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 23:
							 | 
						||
| 
								 | 
							
								                _context25.next = 25;
							 | 
						||
| 
								 | 
							
								                return Promise.all([this.addApp(zip, model), this.addCore(zip, model)]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 25:
							 | 
						||
| 
								 | 
							
								                _context25.next = 27;
							 | 
						||
| 
								 | 
							
								                return this.addWorkbook(zip, model);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 27:
							 | 
						||
| 
								 | 
							
								                return _context25.abrupt("return", this._finalize(zip));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 28:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context25.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee25, this);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function write(_x58, _x59) {
							 | 
						||
| 
								 | 
							
								        return _write.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return write;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "writeFile",
							 | 
						||
| 
								 | 
							
								    value: function writeFile(filename, options) {
							 | 
						||
| 
								 | 
							
								      var _this2 = this;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      var stream = fs.createWriteStream(filename);
							 | 
						||
| 
								 | 
							
								      return new Promise(function (resolve, reject) {
							 | 
						||
| 
								 | 
							
								        stream.on('finish', function () {
							 | 
						||
| 
								 | 
							
								          resolve();
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        stream.on('error', function (error) {
							 | 
						||
| 
								 | 
							
								          reject(error);
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        _this2.write(stream, options).then(function () {
							 | 
						||
| 
								 | 
							
								          stream.end();
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, {
							 | 
						||
| 
								 | 
							
								    key: "writeBuffer",
							 | 
						||
| 
								 | 
							
								    value: function () {
							 | 
						||
| 
								 | 
							
								      var _writeBuffer = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee26(options) {
							 | 
						||
| 
								 | 
							
								        var stream;
							 | 
						||
| 
								 | 
							
								        return regeneratorRuntime.wrap(function _callee26$(_context26) {
							 | 
						||
| 
								 | 
							
								          while (1) {
							 | 
						||
| 
								 | 
							
								            switch (_context26.prev = _context26.next) {
							 | 
						||
| 
								 | 
							
								              case 0:
							 | 
						||
| 
								 | 
							
								                stream = new StreamBuf();
							 | 
						||
| 
								 | 
							
								                _context26.next = 3;
							 | 
						||
| 
								 | 
							
								                return this.write(stream, options);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 3:
							 | 
						||
| 
								 | 
							
								                return _context26.abrupt("return", stream.read());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              case 4:
							 | 
						||
| 
								 | 
							
								              case "end":
							 | 
						||
| 
								 | 
							
								                return _context26.stop();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }, _callee26, this);
							 | 
						||
| 
								 | 
							
								      }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      function writeBuffer(_x60) {
							 | 
						||
| 
								 | 
							
								        return _writeBuffer.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return writeBuffer;
							 | 
						||
| 
								 | 
							
								    }()
							 | 
						||
| 
								 | 
							
								  }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return XLSX;
							 | 
						||
| 
								 | 
							
								}();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								XLSX.RelType = require('./rel-type');
							 | 
						||
| 
								 | 
							
								module.exports = XLSX;
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=xlsx.js.map
							 |