/*! * * jsPDF AutoTable plugin v3.8.2 * * Copyright (c) 2024 Simon Bengtsson, https://github.com/simonbengtsson/jsPDF-AutoTable * Licensed under the MIT License. * http://opensource.org/licenses/mit-license * */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory((function webpackLoadOptionalExternalModule() { try { return require("jspdf"); } catch(e) {} }())); else if(typeof define === 'function' && define.amd) define(["jspdf"], factory); else { var a = typeof exports === 'object' ? factory((function webpackLoadOptionalExternalModule() { try { return require("jspdf"); } catch(e) {} }())) : factory(root["jspdf"]); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(typeof globalThis !== 'undefined' ? globalThis : typeof this !== 'undefined' ? this : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : global , function(__WEBPACK_EXTERNAL_MODULE__964__) { return /******/ (function() { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ 172: /***/ (function(__unused_webpack_module, exports) { var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.CellHookData = exports.HookData = void 0; var HookData = /** @class */ (function () { function HookData(doc, table, cursor) { this.table = table; this.pageNumber = table.pageNumber; this.pageCount = this.pageNumber; this.settings = table.settings; this.cursor = cursor; this.doc = doc.getDocument(); } return HookData; }()); exports.HookData = HookData; var CellHookData = /** @class */ (function (_super) { __extends(CellHookData, _super); function CellHookData(doc, table, cell, row, column, cursor) { var _this = _super.call(this, doc, table, cursor) || this; _this.cell = cell; _this.row = row; _this.column = column; _this.section = row.section; return _this; } return CellHookData; }(HookData)); exports.CellHookData = CellHookData; /***/ }), /***/ 340: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", ({ value: true })); var htmlParser_1 = __webpack_require__(4); var autoTableText_1 = __webpack_require__(136); var documentHandler_1 = __webpack_require__(744); var inputParser_1 = __webpack_require__(776); var tableDrawer_1 = __webpack_require__(664); var tableCalculator_1 = __webpack_require__(972); function default_1(jsPDF) { // eslint-disable-next-line @typescript-eslint/no-explicit-any jsPDF.API.autoTable = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var options; if (args.length === 1) { options = args[0]; } else { console.error('Use of deprecated autoTable initiation'); options = args[2] || {}; options.columns = args[0]; options.body = args[1]; } var input = (0, inputParser_1.parseInput)(this, options); var table = (0, tableCalculator_1.createTable)(this, input); (0, tableDrawer_1.drawTable)(this, table); return this; }; // Assign false to enable `doc.lastAutoTable.finalY || 40` sugar jsPDF.API.lastAutoTable = false; jsPDF.API.previousAutoTable = false; // deprecated in v3 jsPDF.API.autoTable.previous = false; // deprecated in v3 jsPDF.API.autoTableText = function (text, x, y, styles) { (0, autoTableText_1.default)(text, x, y, styles, this); }; jsPDF.API.autoTableSetDefaults = function (defaults) { documentHandler_1.DocHandler.setDefaults(defaults, this); return this; }; jsPDF.autoTableSetDefaults = function (defaults, doc) { documentHandler_1.DocHandler.setDefaults(defaults, doc); }; jsPDF.API.autoTableHtmlToJson = function (tableElem, includeHiddenElements) { var _a; if (includeHiddenElements === void 0) { includeHiddenElements = false; } if (typeof window === 'undefined') { console.error('Cannot run autoTableHtmlToJson in non browser environment'); return null; } var doc = new documentHandler_1.DocHandler(this); var _b = (0, htmlParser_1.parseHtml)(doc, tableElem, window, includeHiddenElements, false), head = _b.head, body = _b.body; var columns = ((_a = head[0]) === null || _a === void 0 ? void 0 : _a.map(function (c) { return c.content; })) || []; return { columns: columns, rows: body, data: body }; }; /** * @deprecated */ jsPDF.API.autoTableEndPosY = function () { console.error('Use of deprecated function: autoTableEndPosY. Use doc.lastAutoTable.finalY instead.'); var prev = this.lastAutoTable; if (prev && prev.finalY) { return prev.finalY; } else { return 0; } }; /** * @deprecated */ jsPDF.API.autoTableAddPageContent = function (hook) { console.error('Use of deprecated function: autoTableAddPageContent. Use jsPDF.autoTableSetDefaults({didDrawPage: () => {}}) instead.'); if (!jsPDF.API.autoTable.globalDefaults) { jsPDF.API.autoTable.globalDefaults = {}; } jsPDF.API.autoTable.globalDefaults.addPageContent = hook; return this; }; /** * @deprecated */ jsPDF.API.autoTableAddPage = function () { console.error('Use of deprecated function: autoTableAddPage. Use doc.addPage()'); this.addPage(); return this; }; } exports["default"] = default_1; /***/ }), /***/ 136: /***/ (function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", ({ value: true })); /** * Improved text function with halign and valign support * Inspiration from: http://stackoverflow.com/questions/28327510/align-text-right-using-jspdf/28433113#28433113 */ function default_1(text, x, y, styles, doc) { styles = styles || {}; var PHYSICAL_LINE_HEIGHT = 1.15; var k = doc.internal.scaleFactor; var fontSize = doc.internal.getFontSize() / k; var lineHeightFactor = doc.getLineHeightFactor ? doc.getLineHeightFactor() : PHYSICAL_LINE_HEIGHT; var lineHeight = fontSize * lineHeightFactor; var splitRegex = /\r\n|\r|\n/g; var splitText = ''; var lineCount = 1; if (styles.valign === 'middle' || styles.valign === 'bottom' || styles.halign === 'center' || styles.halign === 'right') { splitText = typeof text === 'string' ? text.split(splitRegex) : text; lineCount = splitText.length || 1; } // Align the top y += fontSize * (2 - PHYSICAL_LINE_HEIGHT); if (styles.valign === 'middle') y -= (lineCount / 2) * lineHeight; else if (styles.valign === 'bottom') y -= lineCount * lineHeight; if (styles.halign === 'center' || styles.halign === 'right') { var alignSize = fontSize; if (styles.halign === 'center') alignSize *= 0.5; if (splitText && lineCount >= 1) { for (var iLine = 0; iLine < splitText.length; iLine++) { doc.text(splitText[iLine], x - doc.getStringUnitWidth(splitText[iLine]) * alignSize, y); y += lineHeight; } return doc; } x -= doc.getStringUnitWidth(text) * alignSize; } if (styles.halign === 'justify') { doc.text(text, x, y, { maxWidth: styles.maxWidth || 100, align: 'justify', }); } else { doc.text(text, x, y); } return doc; } exports["default"] = default_1; /***/ }), /***/ 420: /***/ (function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getPageAvailableWidth = exports.parseSpacing = exports.getFillStyle = exports.addTableBorder = exports.getStringWidth = void 0; function getStringWidth(text, styles, doc) { doc.applyStyles(styles, true); var textArr = Array.isArray(text) ? text : [text]; var widestLineWidth = textArr .map(function (text) { return doc.getTextWidth(text); }) .reduce(function (a, b) { return Math.max(a, b); }, 0); return widestLineWidth; } exports.getStringWidth = getStringWidth; function addTableBorder(doc, table, startPos, cursor) { var lineWidth = table.settings.tableLineWidth; var lineColor = table.settings.tableLineColor; doc.applyStyles({ lineWidth: lineWidth, lineColor: lineColor }); var fillStyle = getFillStyle(lineWidth, false); if (fillStyle) { doc.rect(startPos.x, startPos.y, table.getWidth(doc.pageSize().width), cursor.y - startPos.y, fillStyle); } } exports.addTableBorder = addTableBorder; function getFillStyle(lineWidth, fillColor) { var drawLine = lineWidth > 0; var drawBackground = fillColor || fillColor === 0; if (drawLine && drawBackground) { return 'DF'; // Fill then stroke } else if (drawLine) { return 'S'; // Only stroke (transparent background) } else if (drawBackground) { return 'F'; // Only fill, no stroke } else { return null; } } exports.getFillStyle = getFillStyle; function parseSpacing(value, defaultValue) { var _a, _b, _c, _d; value = value || defaultValue; if (Array.isArray(value)) { if (value.length >= 4) { return { top: value[0], right: value[1], bottom: value[2], left: value[3], }; } else if (value.length === 3) { return { top: value[0], right: value[1], bottom: value[2], left: value[1], }; } else if (value.length === 2) { return { top: value[0], right: value[1], bottom: value[0], left: value[1], }; } else if (value.length === 1) { value = value[0]; } else { value = defaultValue; } } if (typeof value === 'object') { if (typeof value.vertical === 'number') { value.top = value.vertical; value.bottom = value.vertical; } if (typeof value.horizontal === 'number') { value.right = value.horizontal; value.left = value.horizontal; } return { left: (_a = value.left) !== null && _a !== void 0 ? _a : defaultValue, top: (_b = value.top) !== null && _b !== void 0 ? _b : defaultValue, right: (_c = value.right) !== null && _c !== void 0 ? _c : defaultValue, bottom: (_d = value.bottom) !== null && _d !== void 0 ? _d : defaultValue, }; } if (typeof value !== 'number') { value = defaultValue; } return { top: value, right: value, bottom: value, left: value }; } exports.parseSpacing = parseSpacing; function getPageAvailableWidth(doc, table) { var margins = parseSpacing(table.settings.margin, 0); return doc.pageSize().width - (margins.left + margins.right); } exports.getPageAvailableWidth = getPageAvailableWidth; /***/ }), /***/ 796: /***/ (function(__unused_webpack_module, exports) { var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getTheme = exports.defaultStyles = exports.HtmlRowInput = void 0; var HtmlRowInput = /** @class */ (function (_super) { __extends(HtmlRowInput, _super); function HtmlRowInput(element) { var _this = _super.call(this) || this; _this._element = element; return _this; } return HtmlRowInput; }(Array)); exports.HtmlRowInput = HtmlRowInput; // Base style for all themes function defaultStyles(scaleFactor) { return { font: 'helvetica', // helvetica, times, courier fontStyle: 'normal', // normal, bold, italic, bolditalic overflow: 'linebreak', // linebreak, ellipsize, visible or hidden fillColor: false, // Either false for transparent, rbg array e.g. [255, 255, 255] or gray level e.g 200 textColor: 20, halign: 'left', // left, center, right, justify valign: 'top', // top, middle, bottom fontSize: 10, cellPadding: 5 / scaleFactor, // number or {top,left,right,left,vertical,horizontal} lineColor: 200, lineWidth: 0, cellWidth: 'auto', // 'auto'|'wrap'|number minCellHeight: 0, minCellWidth: 0, }; } exports.defaultStyles = defaultStyles; function getTheme(name) { var themes = { striped: { table: { fillColor: 255, textColor: 80, fontStyle: 'normal' }, head: { textColor: 255, fillColor: [41, 128, 185], fontStyle: 'bold' }, body: {}, foot: { textColor: 255, fillColor: [41, 128, 185], fontStyle: 'bold' }, alternateRow: { fillColor: 245 }, }, grid: { table: { fillColor: 255, textColor: 80, fontStyle: 'normal', lineWidth: 0.1, }, head: { textColor: 255, fillColor: [26, 188, 156], fontStyle: 'bold', lineWidth: 0, }, body: {}, foot: { textColor: 255, fillColor: [26, 188, 156], fontStyle: 'bold', lineWidth: 0, }, alternateRow: {}, }, plain: { head: { fontStyle: 'bold' }, foot: { fontStyle: 'bold' }, }, }; return themes[name]; } exports.getTheme = getTheme; /***/ }), /***/ 903: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.parseCss = void 0; // Limitations // - No support for border spacing // - No support for transparency var common_1 = __webpack_require__(420); function parseCss(supportedFonts, element, scaleFactor, style, window) { var result = {}; var pxScaleFactor = 96 / 72; var backgroundColor = parseColor(element, function (elem) { return window.getComputedStyle(elem)['backgroundColor']; }); if (backgroundColor != null) result.fillColor = backgroundColor; var textColor = parseColor(element, function (elem) { return window.getComputedStyle(elem)['color']; }); if (textColor != null) result.textColor = textColor; var padding = parsePadding(style, scaleFactor); if (padding) result.cellPadding = padding; var borderColorSide = 'borderTopColor'; var finalScaleFactor = pxScaleFactor * scaleFactor; var btw = style.borderTopWidth; if (style.borderBottomWidth === btw && style.borderRightWidth === btw && style.borderLeftWidth === btw) { var borderWidth = (parseFloat(btw) || 0) / finalScaleFactor; if (borderWidth) result.lineWidth = borderWidth; } else { result.lineWidth = { top: (parseFloat(style.borderTopWidth) || 0) / finalScaleFactor, right: (parseFloat(style.borderRightWidth) || 0) / finalScaleFactor, bottom: (parseFloat(style.borderBottomWidth) || 0) / finalScaleFactor, left: (parseFloat(style.borderLeftWidth) || 0) / finalScaleFactor, }; // Choose border color of first available side // could be improved by supporting object as lineColor if (!result.lineWidth.top) { if (result.lineWidth.right) { borderColorSide = 'borderRightColor'; } else if (result.lineWidth.bottom) { borderColorSide = 'borderBottomColor'; } else if (result.lineWidth.left) { borderColorSide = 'borderLeftColor'; } } } console.log(result.lineWidth); var borderColor = parseColor(element, function (elem) { return window.getComputedStyle(elem)[borderColorSide]; }); if (borderColor != null) result.lineColor = borderColor; var accepted = ['left', 'right', 'center', 'justify']; if (accepted.indexOf(style.textAlign) !== -1) { result.halign = style.textAlign; } accepted = ['middle', 'bottom', 'top']; if (accepted.indexOf(style.verticalAlign) !== -1) { result.valign = style.verticalAlign; } var res = parseInt(style.fontSize || ''); if (!isNaN(res)) result.fontSize = res / pxScaleFactor; var fontStyle = parseFontStyle(style); if (fontStyle) result.fontStyle = fontStyle; var font = (style.fontFamily || '').toLowerCase(); if (supportedFonts.indexOf(font) !== -1) { result.font = font; } return result; } exports.parseCss = parseCss; function parseFontStyle(style) { var res = ''; if (style.fontWeight === 'bold' || style.fontWeight === 'bolder' || parseInt(style.fontWeight) >= 700) { res = 'bold'; } if (style.fontStyle === 'italic' || style.fontStyle === 'oblique') { res += 'italic'; } return res; } function parseColor(element, styleGetter) { var cssColor = realColor(element, styleGetter); if (!cssColor) return null; var rgba = cssColor.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d*))?\)$/); if (!rgba || !Array.isArray(rgba)) { return null; } var color = [ parseInt(rgba[1]), parseInt(rgba[2]), parseInt(rgba[3]), ]; var alpha = parseInt(rgba[4]); if (alpha === 0 || isNaN(color[0]) || isNaN(color[1]) || isNaN(color[2])) { return null; } return color; } function realColor(elem, styleGetter) { var bg = styleGetter(elem); if (bg === 'rgba(0, 0, 0, 0)' || bg === 'transparent' || bg === 'initial' || bg === 'inherit') { if (elem.parentElement == null) { return null; } return realColor(elem.parentElement, styleGetter); } else { return bg; } } function parsePadding(style, scaleFactor) { var val = [ style.paddingTop, style.paddingRight, style.paddingBottom, style.paddingLeft, ]; var pxScaleFactor = 96 / (72 / scaleFactor); var linePadding = (parseInt(style.lineHeight) - parseInt(style.fontSize)) / scaleFactor / 2; var inputPadding = val.map(function (n) { return parseInt(n || '0') / pxScaleFactor; }); var padding = (0, common_1.parseSpacing)(inputPadding, 0); if (linePadding > padding.top) { padding.top = linePadding; } if (linePadding > padding.bottom) { padding.bottom = linePadding; } return padding; } /***/ }), /***/ 744: /***/ (function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.DocHandler = void 0; var globalDefaults = {}; var DocHandler = /** @class */ (function () { function DocHandler(jsPDFDocument) { this.jsPDFDocument = jsPDFDocument; this.userStyles = { // Black for versions of jspdf without getTextColor textColor: jsPDFDocument.getTextColor ? this.jsPDFDocument.getTextColor() : 0, fontSize: jsPDFDocument.internal.getFontSize(), fontStyle: jsPDFDocument.internal.getFont().fontStyle, font: jsPDFDocument.internal.getFont().fontName, // 0 for versions of jspdf without getLineWidth lineWidth: jsPDFDocument.getLineWidth ? this.jsPDFDocument.getLineWidth() : 0, // Black for versions of jspdf without getDrawColor lineColor: jsPDFDocument.getDrawColor ? this.jsPDFDocument.getDrawColor() : 0, }; } DocHandler.setDefaults = function (defaults, doc) { if (doc === void 0) { doc = null; } if (doc) { doc.__autoTableDocumentDefaults = defaults; } else { globalDefaults = defaults; } }; DocHandler.unifyColor = function (c) { if (Array.isArray(c)) { return c; } else if (typeof c === 'number') { return [c, c, c]; } else if (typeof c === 'string') { return [c]; } else { return null; } }; DocHandler.prototype.applyStyles = function (styles, fontOnly) { // Font style needs to be applied before font // https://github.com/simonbengtsson/jsPDF-AutoTable/issues/632 var _a, _b, _c; if (fontOnly === void 0) { fontOnly = false; } if (styles.fontStyle) this.jsPDFDocument.setFontStyle && this.jsPDFDocument.setFontStyle(styles.fontStyle); var _d = this.jsPDFDocument.internal.getFont(), fontStyle = _d.fontStyle, fontName = _d.fontName; if (styles.font) fontName = styles.font; if (styles.fontStyle) { fontStyle = styles.fontStyle; var availableFontStyles = this.getFontList()[fontName]; if (availableFontStyles && availableFontStyles.indexOf(fontStyle) === -1) { // Common issue was that the default bold in headers // made custom fonts not work. For example: // https://github.com/simonbengtsson/jsPDF-AutoTable/issues/653 this.jsPDFDocument.setFontStyle && this.jsPDFDocument.setFontStyle(availableFontStyles[0]); fontStyle = availableFontStyles[0]; } } this.jsPDFDocument.setFont(fontName, fontStyle); if (styles.fontSize) this.jsPDFDocument.setFontSize(styles.fontSize); if (fontOnly) { return; // Performance improvement } var color = DocHandler.unifyColor(styles.fillColor); if (color) (_a = this.jsPDFDocument).setFillColor.apply(_a, color); color = DocHandler.unifyColor(styles.textColor); if (color) (_b = this.jsPDFDocument).setTextColor.apply(_b, color); color = DocHandler.unifyColor(styles.lineColor); if (color) (_c = this.jsPDFDocument).setDrawColor.apply(_c, color); if (typeof styles.lineWidth === 'number') { this.jsPDFDocument.setLineWidth(styles.lineWidth); } }; DocHandler.prototype.splitTextToSize = function (text, size, opts) { return this.jsPDFDocument.splitTextToSize(text, size, opts); }; /** * Adds a rectangle to the PDF * @param x Coordinate (in units declared at inception of PDF document) against left edge of the page * @param y Coordinate (in units declared at inception of PDF document) against upper edge of the page * @param width Width (in units declared at inception of PDF document) * @param height Height (in units declared at inception of PDF document) * @param fillStyle A string specifying the painting style or null. Valid styles include: 'S' [default] - stroke, 'F' - fill, and 'DF' (or 'FD') - fill then stroke. */ DocHandler.prototype.rect = function (x, y, width, height, fillStyle) { // null is excluded from fillStyle possible values because it isn't needed // and is prone to bugs as it's used to postpone setting the style // https://rawgit.com/MrRio/jsPDF/master/docs/jsPDF.html#rect return this.jsPDFDocument.rect(x, y, width, height, fillStyle); }; DocHandler.prototype.getLastAutoTable = function () { return this.jsPDFDocument.lastAutoTable || null; }; DocHandler.prototype.getTextWidth = function (text) { return this.jsPDFDocument.getTextWidth(text); }; DocHandler.prototype.getDocument = function () { return this.jsPDFDocument; }; DocHandler.prototype.setPage = function (page) { this.jsPDFDocument.setPage(page); }; DocHandler.prototype.addPage = function () { return this.jsPDFDocument.addPage(); }; DocHandler.prototype.getFontList = function () { return this.jsPDFDocument.getFontList(); }; DocHandler.prototype.getGlobalOptions = function () { return globalDefaults || {}; }; DocHandler.prototype.getDocumentOptions = function () { return this.jsPDFDocument.__autoTableDocumentDefaults || {}; }; DocHandler.prototype.pageSize = function () { var pageSize = this.jsPDFDocument.internal.pageSize; // JSPDF 1.4 uses get functions instead of properties on pageSize if (pageSize.width == null) { pageSize = { width: pageSize.getWidth(), height: pageSize.getHeight(), }; } return pageSize; }; DocHandler.prototype.scaleFactor = function () { return this.jsPDFDocument.internal.scaleFactor; }; DocHandler.prototype.getLineHeightFactor = function () { var doc = this.jsPDFDocument; return doc.getLineHeightFactor ? doc.getLineHeightFactor() : 1.15; }; DocHandler.prototype.getLineHeight = function (fontSize) { return (fontSize / this.scaleFactor()) * this.getLineHeightFactor(); }; DocHandler.prototype.pageNumber = function () { var pageInfo = this.jsPDFDocument.internal.getCurrentPageInfo(); if (!pageInfo) { // Only recent versions of jspdf has pageInfo return this.jsPDFDocument.internal.getNumberOfPages(); } return pageInfo.pageNumber; }; return DocHandler; }()); exports.DocHandler = DocHandler; /***/ }), /***/ 4: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.parseHtml = void 0; var cssParser_1 = __webpack_require__(903); var config_1 = __webpack_require__(796); function parseHtml(doc, input, window, includeHiddenHtml, useCss) { var _a, _b; if (includeHiddenHtml === void 0) { includeHiddenHtml = false; } if (useCss === void 0) { useCss = false; } var tableElement; if (typeof input === 'string') { tableElement = window.document.querySelector(input); } else { tableElement = input; } var supportedFonts = Object.keys(doc.getFontList()); var scaleFactor = doc.scaleFactor(); var head = [], body = [], foot = []; if (!tableElement) { console.error('Html table could not be found with input: ', input); return { head: head, body: body, foot: foot }; } for (var i = 0; i < tableElement.rows.length; i++) { var element = tableElement.rows[i]; var tagName = (_b = (_a = element === null || element === void 0 ? void 0 : element.parentElement) === null || _a === void 0 ? void 0 : _a.tagName) === null || _b === void 0 ? void 0 : _b.toLowerCase(); var row = parseRowContent(supportedFonts, scaleFactor, window, element, includeHiddenHtml, useCss); if (!row) continue; if (tagName === 'thead') { head.push(row); } else if (tagName === 'tfoot') { foot.push(row); } else { // Add to body both if parent is tbody or table body.push(row); } } return { head: head, body: body, foot: foot }; } exports.parseHtml = parseHtml; function parseRowContent(supportedFonts, scaleFactor, window, row, includeHidden, useCss) { var resultRow = new config_1.HtmlRowInput(row); for (var i = 0; i < row.cells.length; i++) { var cell = row.cells[i]; var style_1 = window.getComputedStyle(cell); if (includeHidden || style_1.display !== 'none') { var cellStyles = void 0; if (useCss) { cellStyles = (0, cssParser_1.parseCss)(supportedFonts, cell, scaleFactor, style_1, window); } resultRow.push({ rowSpan: cell.rowSpan, colSpan: cell.colSpan, styles: cellStyles, _element: cell, content: parseCellContent(cell), }); } } var style = window.getComputedStyle(row); if (resultRow.length > 0 && (includeHidden || style.display !== 'none')) { return resultRow; } } function parseCellContent(orgCell) { // Work on cloned node to make sure no changes are applied to html table var cell = orgCell.cloneNode(true); // Remove extra space and line breaks in markup to make it more similar to // what would be shown in html cell.innerHTML = cell.innerHTML.replace(/\n/g, '').replace(/ +/g, ' '); // Preserve
tags as line breaks in the pdf cell.innerHTML = cell.innerHTML .split(//) //start with ''. .map(function (part) { return part.trim(); }) .join('\n'); // innerText for ie return cell.innerText || cell.textContent || ''; } /***/ }), /***/ 776: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.parseInput = void 0; var htmlParser_1 = __webpack_require__(4); var polyfills_1 = __webpack_require__(356); var common_1 = __webpack_require__(420); var documentHandler_1 = __webpack_require__(744); var inputValidator_1 = __webpack_require__(792); function parseInput(d, current) { var doc = new documentHandler_1.DocHandler(d); var document = doc.getDocumentOptions(); var global = doc.getGlobalOptions(); (0, inputValidator_1.default)(doc, global, document, current); var options = (0, polyfills_1.assign)({}, global, document, current); var win; if (typeof window !== 'undefined') { win = window; } var styles = parseStyles(global, document, current); var hooks = parseHooks(global, document, current); var settings = parseSettings(doc, options); var content = parseContent(doc, options, win); return { id: current.tableId, content: content, hooks: hooks, styles: styles, settings: settings, }; } exports.parseInput = parseInput; function parseStyles(gInput, dInput, cInput) { var styleOptions = { styles: {}, headStyles: {}, bodyStyles: {}, footStyles: {}, alternateRowStyles: {}, columnStyles: {}, }; var _loop_1 = function (prop) { if (prop === 'columnStyles') { var global_1 = gInput[prop]; var document_1 = dInput[prop]; var current = cInput[prop]; styleOptions.columnStyles = (0, polyfills_1.assign)({}, global_1, document_1, current); } else { var allOptions = [gInput, dInput, cInput]; var styles = allOptions.map(function (opts) { return opts[prop] || {}; }); styleOptions[prop] = (0, polyfills_1.assign)({}, styles[0], styles[1], styles[2]); } }; for (var _i = 0, _a = Object.keys(styleOptions); _i < _a.length; _i++) { var prop = _a[_i]; _loop_1(prop); } return styleOptions; } function parseHooks(global, document, current) { var allOptions = [global, document, current]; var result = { didParseCell: [], willDrawCell: [], didDrawCell: [], willDrawPage: [], didDrawPage: [], }; for (var _i = 0, allOptions_1 = allOptions; _i < allOptions_1.length; _i++) { var options = allOptions_1[_i]; if (options.didParseCell) result.didParseCell.push(options.didParseCell); if (options.willDrawCell) result.willDrawCell.push(options.willDrawCell); if (options.didDrawCell) result.didDrawCell.push(options.didDrawCell); if (options.willDrawPage) result.willDrawPage.push(options.willDrawPage); if (options.didDrawPage) result.didDrawPage.push(options.didDrawPage); } return result; } function parseSettings(doc, options) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; var margin = (0, common_1.parseSpacing)(options.margin, 40 / doc.scaleFactor()); var startY = (_a = getStartY(doc, options.startY)) !== null && _a !== void 0 ? _a : margin.top; var showFoot; if (options.showFoot === true) { showFoot = 'everyPage'; } else if (options.showFoot === false) { showFoot = 'never'; } else { showFoot = (_b = options.showFoot) !== null && _b !== void 0 ? _b : 'everyPage'; } var showHead; if (options.showHead === true) { showHead = 'everyPage'; } else if (options.showHead === false) { showHead = 'never'; } else { showHead = (_c = options.showHead) !== null && _c !== void 0 ? _c : 'everyPage'; } var useCss = (_d = options.useCss) !== null && _d !== void 0 ? _d : false; var theme = options.theme || (useCss ? 'plain' : 'striped'); var horizontalPageBreak = !!options.horizontalPageBreak; var horizontalPageBreakRepeat = (_e = options.horizontalPageBreakRepeat) !== null && _e !== void 0 ? _e : null; return { includeHiddenHtml: (_f = options.includeHiddenHtml) !== null && _f !== void 0 ? _f : false, useCss: useCss, theme: theme, startY: startY, margin: margin, pageBreak: (_g = options.pageBreak) !== null && _g !== void 0 ? _g : 'auto', rowPageBreak: (_h = options.rowPageBreak) !== null && _h !== void 0 ? _h : 'auto', tableWidth: (_j = options.tableWidth) !== null && _j !== void 0 ? _j : 'auto', showHead: showHead, showFoot: showFoot, tableLineWidth: (_k = options.tableLineWidth) !== null && _k !== void 0 ? _k : 0, tableLineColor: (_l = options.tableLineColor) !== null && _l !== void 0 ? _l : 200, horizontalPageBreak: horizontalPageBreak, horizontalPageBreakRepeat: horizontalPageBreakRepeat, horizontalPageBreakBehaviour: (_m = options.horizontalPageBreakBehaviour) !== null && _m !== void 0 ? _m : 'afterAllRows', }; } function getStartY(doc, userStartY) { var previous = doc.getLastAutoTable(); var sf = doc.scaleFactor(); var currentPage = doc.pageNumber(); var isSamePageAsPreviousTable = false; if (previous && previous.startPageNumber) { var endingPage = previous.startPageNumber + previous.pageNumber - 1; isSamePageAsPreviousTable = endingPage === currentPage; } if (typeof userStartY === 'number') { return userStartY; } else if (userStartY == null || userStartY === false) { if (isSamePageAsPreviousTable && (previous === null || previous === void 0 ? void 0 : previous.finalY) != null) { // Some users had issues with overlapping tables when they used multiple // tables without setting startY so setting it here to a sensible default. return previous.finalY + 20 / sf; } } return null; } function parseContent(doc, options, window) { var head = options.head || []; var body = options.body || []; var foot = options.foot || []; if (options.html) { var hidden = options.includeHiddenHtml; if (window) { var htmlContent = (0, htmlParser_1.parseHtml)(doc, options.html, window, hidden, options.useCss) || {}; head = htmlContent.head || head; body = htmlContent.body || head; foot = htmlContent.foot || head; } else { console.error('Cannot parse html in non browser environment'); } } var columns = options.columns || parseColumns(head, body, foot); return { columns: columns, head: head, body: body, foot: foot, }; } function parseColumns(head, body, foot) { var firstRow = head[0] || body[0] || foot[0] || []; var result = []; Object.keys(firstRow) .filter(function (key) { return key !== '_element'; }) .forEach(function (key) { var colSpan = 1; var input; if (Array.isArray(firstRow)) { input = firstRow[parseInt(key)]; } else { input = firstRow[key]; } if (typeof input === 'object' && !Array.isArray(input)) { colSpan = (input === null || input === void 0 ? void 0 : input.colSpan) || 1; } for (var i = 0; i < colSpan; i++) { var id = void 0; if (Array.isArray(firstRow)) { id = result.length; } else { id = key + (i > 0 ? "_".concat(i) : ''); } var rowResult = { dataKey: id }; result.push(rowResult); } }); return result; } /***/ }), /***/ 792: /***/ (function(__unused_webpack_module, exports) { Object.defineProperty(exports, "__esModule", ({ value: true })); function default_1(doc, global, document, current) { var _loop_1 = function (options) { if (options && typeof options !== 'object') { console.error('The options parameter should be of type object, is: ' + typeof options); } if (typeof options.extendWidth !== 'undefined') { options.tableWidth = options.extendWidth ? 'auto' : 'wrap'; console.error('Use of deprecated option: extendWidth, use tableWidth instead.'); } if (typeof options.margins !== 'undefined') { if (typeof options.margin === 'undefined') options.margin = options.margins; console.error('Use of deprecated option: margins, use margin instead.'); } if (options.startY && typeof options.startY !== 'number') { console.error('Invalid value for startY option', options.startY); delete options.startY; } if (!options.didDrawPage && (options.afterPageContent || options.beforePageContent || options.afterPageAdd)) { console.error('The afterPageContent, beforePageContent and afterPageAdd hooks are deprecated. Use didDrawPage instead'); options.didDrawPage = function (data) { doc.applyStyles(doc.userStyles); if (options.beforePageContent) options.beforePageContent(data); doc.applyStyles(doc.userStyles); if (options.afterPageContent) options.afterPageContent(data); doc.applyStyles(doc.userStyles); if (options.afterPageAdd && data.pageNumber > 1) { ; data.afterPageAdd(data); } doc.applyStyles(doc.userStyles); }; } ; [ 'createdHeaderCell', 'drawHeaderRow', 'drawRow', 'drawHeaderCell', ].forEach(function (name) { if (options[name]) { console.error("The \"".concat(name, "\" hook has changed in version 3.0, check the changelog for how to migrate.")); } }); [ ['showFoot', 'showFooter'], ['showHead', 'showHeader'], ['didDrawPage', 'addPageContent'], ['didParseCell', 'createdCell'], ['headStyles', 'headerStyles'], ].forEach(function (_a) { var current = _a[0], deprecated = _a[1]; if (options[deprecated]) { console.error("Use of deprecated option ".concat(deprecated, ". Use ").concat(current, " instead")); options[current] = options[deprecated]; } }); [ ['padding', 'cellPadding'], ['lineHeight', 'rowHeight'], 'fontSize', 'overflow', ].forEach(function (o) { var deprecatedOption = typeof o === 'string' ? o : o[0]; var style = typeof o === 'string' ? o : o[1]; if (typeof options[deprecatedOption] !== 'undefined') { if (typeof options.styles[style] === 'undefined') { options.styles[style] = options[deprecatedOption]; } console.error('Use of deprecated option: ' + deprecatedOption + ', use the style ' + style + ' instead.'); } }); for (var _b = 0, _c = [ 'styles', 'bodyStyles', 'headStyles', 'footStyles', ]; _b < _c.length; _b++) { var styleProp = _c[_b]; checkStyles(options[styleProp] || {}); } var columnStyles = options['columnStyles'] || {}; for (var _d = 0, _e = Object.keys(columnStyles); _d < _e.length; _d++) { var key = _e[_d]; checkStyles(columnStyles[key] || {}); } }; for (var _i = 0, _a = [global, document, current]; _i < _a.length; _i++) { var options = _a[_i]; _loop_1(options); } } exports["default"] = default_1; function checkStyles(styles) { if (styles.rowHeight) { console.error('Use of deprecated style rowHeight. It is renamed to minCellHeight.'); if (!styles.minCellHeight) { styles.minCellHeight = styles.rowHeight; } } else if (styles.columnWidth) { console.error('Use of deprecated style columnWidth. It is renamed to cellWidth.'); if (!styles.cellWidth) { styles.cellWidth = styles.columnWidth; } } } /***/ }), /***/ 260: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Column = exports.Cell = exports.Row = exports.Table = void 0; var config_1 = __webpack_require__(796); var HookData_1 = __webpack_require__(172); var common_1 = __webpack_require__(420); var Table = /** @class */ (function () { function Table(input, content) { this.pageNumber = 1; // Deprecated, use pageNumber instead // Not using getter since: // https://github.com/simonbengtsson/jsPDF-AutoTable/issues/596 this.pageCount = 1; this.id = input.id; this.settings = input.settings; this.styles = input.styles; this.hooks = input.hooks; this.columns = content.columns; this.head = content.head; this.body = content.body; this.foot = content.foot; } Table.prototype.getHeadHeight = function (columns) { return this.head.reduce(function (acc, row) { return acc + row.getMaxCellHeight(columns); }, 0); }; Table.prototype.getFootHeight = function (columns) { return this.foot.reduce(function (acc, row) { return acc + row.getMaxCellHeight(columns); }, 0); }; Table.prototype.allRows = function () { return this.head.concat(this.body).concat(this.foot); }; Table.prototype.callCellHooks = function (doc, handlers, cell, row, column, cursor) { for (var _i = 0, handlers_1 = handlers; _i < handlers_1.length; _i++) { var handler = handlers_1[_i]; var data = new HookData_1.CellHookData(doc, this, cell, row, column, cursor); var result = handler(data) === false; // Make sure text is always string[] since user can assign string cell.text = Array.isArray(cell.text) ? cell.text : [cell.text]; if (result) { return false; } } return true; }; Table.prototype.callEndPageHooks = function (doc, cursor) { doc.applyStyles(doc.userStyles); for (var _i = 0, _a = this.hooks.didDrawPage; _i < _a.length; _i++) { var handler = _a[_i]; handler(new HookData_1.HookData(doc, this, cursor)); } }; Table.prototype.callWillDrawPageHooks = function (doc, cursor) { for (var _i = 0, _a = this.hooks.willDrawPage; _i < _a.length; _i++) { var handler = _a[_i]; handler(new HookData_1.HookData(doc, this, cursor)); } }; Table.prototype.getWidth = function (pageWidth) { if (typeof this.settings.tableWidth === 'number') { return this.settings.tableWidth; } else if (this.settings.tableWidth === 'wrap') { var wrappedWidth = this.columns.reduce(function (total, col) { return total + col.wrappedWidth; }, 0); return wrappedWidth; } else { var margin = this.settings.margin; return pageWidth - margin.left - margin.right; } }; return Table; }()); exports.Table = Table; var Row = /** @class */ (function () { function Row(raw, index, section, cells, spansMultiplePages) { if (spansMultiplePages === void 0) { spansMultiplePages = false; } this.height = 0; this.raw = raw; if (raw instanceof config_1.HtmlRowInput) { this.raw = raw._element; this.element = raw._element; } this.index = index; this.section = section; this.cells = cells; this.spansMultiplePages = spansMultiplePages; } Row.prototype.getMaxCellHeight = function (columns) { var _this = this; return columns.reduce(function (acc, column) { var _a; return Math.max(acc, ((_a = _this.cells[column.index]) === null || _a === void 0 ? void 0 : _a.height) || 0); }, 0); }; Row.prototype.hasRowSpan = function (columns) { var _this = this; return (columns.filter(function (column) { var cell = _this.cells[column.index]; if (!cell) return false; return cell.rowSpan > 1; }).length > 0); }; Row.prototype.canEntireRowFit = function (height, columns) { return this.getMaxCellHeight(columns) <= height; }; Row.prototype.getMinimumRowHeight = function (columns, doc) { var _this = this; return columns.reduce(function (acc, column) { var cell = _this.cells[column.index]; if (!cell) return 0; var lineHeight = doc.getLineHeight(cell.styles.fontSize); var vPadding = cell.padding('vertical'); var oneRowHeight = vPadding + lineHeight; return oneRowHeight > acc ? oneRowHeight : acc; }, 0); }; return Row; }()); exports.Row = Row; var Cell = /** @class */ (function () { function Cell(raw, styles, section) { var _a, _b; this.contentHeight = 0; this.contentWidth = 0; this.wrappedWidth = 0; this.minReadableWidth = 0; this.minWidth = 0; this.width = 0; this.height = 0; this.x = 0; this.y = 0; this.styles = styles; this.section = section; this.raw = raw; var content = raw; if (raw != null && typeof raw === 'object' && !Array.isArray(raw)) { this.rowSpan = raw.rowSpan || 1; this.colSpan = raw.colSpan || 1; content = (_b = (_a = raw.content) !== null && _a !== void 0 ? _a : raw.title) !== null && _b !== void 0 ? _b : raw; if (raw._element) { this.raw = raw._element; } } else { this.rowSpan = 1; this.colSpan = 1; } // Stringify 0 and false, but not undefined or null var text = content != null ? '' + content : ''; var splitRegex = /\r\n|\r|\n/g; this.text = text.split(splitRegex); } Cell.prototype.getTextPos = function () { var y; if (this.styles.valign === 'top') { y = this.y + this.padding('top'); } else if (this.styles.valign === 'bottom') { y = this.y + this.height - this.padding('bottom'); } else { var netHeight = this.height - this.padding('vertical'); y = this.y + netHeight / 2 + this.padding('top'); } var x; if (this.styles.halign === 'right') { x = this.x + this.width - this.padding('right'); } else if (this.styles.halign === 'center') { var netWidth = this.width - this.padding('horizontal'); x = this.x + netWidth / 2 + this.padding('left'); } else { x = this.x + this.padding('left'); } return { x: x, y: y }; }; // TODO (v4): replace parameters with only (lineHeight) Cell.prototype.getContentHeight = function (scaleFactor, lineHeightFactor) { if (lineHeightFactor === void 0) { lineHeightFactor = 1.15; } var lineCount = Array.isArray(this.text) ? this.text.length : 1; var lineHeight = (this.styles.fontSize / scaleFactor) * lineHeightFactor; var height = lineCount * lineHeight + this.padding('vertical'); return Math.max(height, this.styles.minCellHeight); }; Cell.prototype.padding = function (name) { var padding = (0, common_1.parseSpacing)(this.styles.cellPadding, 0); if (name === 'vertical') { return padding.top + padding.bottom; } else if (name === 'horizontal') { return padding.left + padding.right; } else { return padding[name]; } }; return Cell; }()); exports.Cell = Cell; var Column = /** @class */ (function () { function Column(dataKey, raw, index) { this.wrappedWidth = 0; this.minReadableWidth = 0; this.minWidth = 0; this.width = 0; this.dataKey = dataKey; this.raw = raw; this.index = index; } Column.prototype.getMaxCustomCellWidth = function (table) { var max = 0; for (var _i = 0, _a = table.allRows(); _i < _a.length; _i++) { var row = _a[_i]; var cell = row.cells[this.index]; if (cell && typeof cell.styles.cellWidth === 'number') { max = Math.max(max, cell.styles.cellWidth); } } return max; }; return Column; }()); exports.Column = Column; /***/ }), /***/ 356: /***/ (function(__unused_webpack_module, exports) { /* eslint-disable @typescript-eslint/no-unused-vars */ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.assign = void 0; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign function assign(target, s, s1, s2, s3) { if (target == null) { throw new TypeError('Cannot convert undefined or null to object'); } var to = Object(target); for (var index = 1; index < arguments.length; index++) { // eslint-disable-next-line prefer-rest-params var nextSource = arguments[index]; if (nextSource != null) { // Skip over if undefined or null for (var nextKey in nextSource) { // Avoid bugs when hasOwnProperty is shadowed if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { to[nextKey] = nextSource[nextKey]; } } } } return to; } exports.assign = assign; /***/ }), /***/ 972: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.createTable = void 0; var documentHandler_1 = __webpack_require__(744); var models_1 = __webpack_require__(260); var widthCalculator_1 = __webpack_require__(324); var config_1 = __webpack_require__(796); var polyfills_1 = __webpack_require__(356); function createTable(jsPDFDoc, input) { var doc = new documentHandler_1.DocHandler(jsPDFDoc); var content = parseContent(input, doc.scaleFactor()); var table = new models_1.Table(input, content); (0, widthCalculator_1.calculateWidths)(doc, table); doc.applyStyles(doc.userStyles); return table; } exports.createTable = createTable; function parseContent(input, sf) { var content = input.content; var columns = createColumns(content.columns); // If no head or foot is set, try generating it with content from columns if (content.head.length === 0) { var sectionRow = generateSectionRow(columns, 'head'); if (sectionRow) content.head.push(sectionRow); } if (content.foot.length === 0) { var sectionRow = generateSectionRow(columns, 'foot'); if (sectionRow) content.foot.push(sectionRow); } var theme = input.settings.theme; var styles = input.styles; return { columns: columns, head: parseSection('head', content.head, columns, styles, theme, sf), body: parseSection('body', content.body, columns, styles, theme, sf), foot: parseSection('foot', content.foot, columns, styles, theme, sf), }; } function parseSection(sectionName, sectionRows, columns, styleProps, theme, scaleFactor) { var rowSpansLeftForColumn = {}; var result = sectionRows.map(function (rawRow, rowIndex) { var skippedRowForRowSpans = 0; var cells = {}; var colSpansAdded = 0; var columnSpansLeft = 0; for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) { var column = columns_1[_i]; if (rowSpansLeftForColumn[column.index] == null || rowSpansLeftForColumn[column.index].left === 0) { if (columnSpansLeft === 0) { var rawCell = void 0; if (Array.isArray(rawRow)) { rawCell = rawRow[column.index - colSpansAdded - skippedRowForRowSpans]; } else { rawCell = rawRow[column.dataKey]; } var cellInputStyles = {}; if (typeof rawCell === 'object' && !Array.isArray(rawCell)) { cellInputStyles = (rawCell === null || rawCell === void 0 ? void 0 : rawCell.styles) || {}; } var styles = cellStyles(sectionName, column, rowIndex, theme, styleProps, scaleFactor, cellInputStyles); var cell = new models_1.Cell(rawCell, styles, sectionName); // dataKey is not used internally no more but keep for // backwards compat in hooks cells[column.dataKey] = cell; cells[column.index] = cell; columnSpansLeft = cell.colSpan - 1; rowSpansLeftForColumn[column.index] = { left: cell.rowSpan - 1, times: columnSpansLeft, }; } else { columnSpansLeft--; colSpansAdded++; } } else { rowSpansLeftForColumn[column.index].left--; columnSpansLeft = rowSpansLeftForColumn[column.index].times; skippedRowForRowSpans++; } } return new models_1.Row(rawRow, rowIndex, sectionName, cells); }); return result; } function generateSectionRow(columns, section) { var sectionRow = {}; columns.forEach(function (col) { if (col.raw != null) { var title = getSectionTitle(section, col.raw); if (title != null) sectionRow[col.dataKey] = title; } }); return Object.keys(sectionRow).length > 0 ? sectionRow : null; } function getSectionTitle(section, column) { if (section === 'head') { if (typeof column === 'object') { return column.header || column.title || null; } else if (typeof column === 'string' || typeof column === 'number') { return column; } } else if (section === 'foot' && typeof column === 'object') { return column.footer; } return null; } function createColumns(columns) { return columns.map(function (input, index) { var _a, _b; var key; if (typeof input === 'object') { key = (_b = (_a = input.dataKey) !== null && _a !== void 0 ? _a : input.key) !== null && _b !== void 0 ? _b : index; } else { key = index; } return new models_1.Column(key, input, index); }); } function cellStyles(sectionName, column, rowIndex, themeName, styles, scaleFactor, cellInputStyles) { var theme = (0, config_1.getTheme)(themeName); var sectionStyles; if (sectionName === 'head') { sectionStyles = styles.headStyles; } else if (sectionName === 'body') { sectionStyles = styles.bodyStyles; } else if (sectionName === 'foot') { sectionStyles = styles.footStyles; } var otherStyles = (0, polyfills_1.assign)({}, theme.table, theme[sectionName], styles.styles, sectionStyles); var columnStyles = styles.columnStyles[column.dataKey] || styles.columnStyles[column.index] || {}; var colStyles = sectionName === 'body' ? columnStyles : {}; var rowStyles = sectionName === 'body' && rowIndex % 2 === 0 ? (0, polyfills_1.assign)({}, theme.alternateRow, styles.alternateRowStyles) : {}; var defaultStyle = (0, config_1.defaultStyles)(scaleFactor); var themeStyles = (0, polyfills_1.assign)({}, defaultStyle, otherStyles, rowStyles, colStyles); return (0, polyfills_1.assign)(themeStyles, cellInputStyles); } /***/ }), /***/ 664: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.addPage = exports.drawTable = void 0; var common_1 = __webpack_require__(420); var models_1 = __webpack_require__(260); var documentHandler_1 = __webpack_require__(744); var polyfills_1 = __webpack_require__(356); var autoTableText_1 = __webpack_require__(136); var tablePrinter_1 = __webpack_require__(224); function drawTable(jsPDFDoc, table) { var settings = table.settings; var startY = settings.startY; var margin = settings.margin; var cursor = { x: margin.left, y: startY, }; var sectionsHeight = table.getHeadHeight(table.columns) + table.getFootHeight(table.columns); var minTableBottomPos = startY + margin.bottom + sectionsHeight; if (settings.pageBreak === 'avoid') { var rows = table.body; var tableHeight = rows.reduce(function (acc, row) { return acc + row.height; }, 0); minTableBottomPos += tableHeight; } var doc = new documentHandler_1.DocHandler(jsPDFDoc); if (settings.pageBreak === 'always' || (settings.startY != null && minTableBottomPos > doc.pageSize().height)) { nextPage(doc); cursor.y = margin.top; } table.callWillDrawPageHooks(doc, cursor); var startPos = (0, polyfills_1.assign)({}, cursor); table.startPageNumber = doc.pageNumber(); if (settings.horizontalPageBreak) { // managed flow for split columns printTableWithHorizontalPageBreak(doc, table, startPos, cursor); } else { // normal flow doc.applyStyles(doc.userStyles); if (settings.showHead === 'firstPage' || settings.showHead === 'everyPage') { table.head.forEach(function (row) { return printRow(doc, table, row, cursor, table.columns); }); } doc.applyStyles(doc.userStyles); table.body.forEach(function (row, index) { var isLastRow = index === table.body.length - 1; printFullRow(doc, table, row, isLastRow, startPos, cursor, table.columns); }); doc.applyStyles(doc.userStyles); if (settings.showFoot === 'lastPage' || settings.showFoot === 'everyPage') { table.foot.forEach(function (row) { return printRow(doc, table, row, cursor, table.columns); }); } } (0, common_1.addTableBorder)(doc, table, startPos, cursor); table.callEndPageHooks(doc, cursor); table.finalY = cursor.y; jsPDFDoc.lastAutoTable = table; jsPDFDoc.previousAutoTable = table; // Deprecated if (jsPDFDoc.autoTable) jsPDFDoc.autoTable.previous = table; // Deprecated doc.applyStyles(doc.userStyles); } exports.drawTable = drawTable; function printTableWithHorizontalPageBreak(doc, table, startPos, cursor) { // calculate width of columns and render only those which can fit into page var allColumnsCanFitResult = (0, tablePrinter_1.calculateAllColumnsCanFitInPage)(doc, table); var settings = table.settings; if (settings.horizontalPageBreakBehaviour === 'afterAllRows') { allColumnsCanFitResult.forEach(function (colsAndIndexes, index) { doc.applyStyles(doc.userStyles); // add page to print next columns in new page if (index > 0) { // When adding a page here, make sure not to print the footers // because they were already printed before on this same loop addPage(doc, table, startPos, cursor, colsAndIndexes.columns, true); } else { // print head for selected columns printHead(doc, table, cursor, colsAndIndexes.columns); } // print body & footer for selected columns printBody(doc, table, startPos, cursor, colsAndIndexes.columns); printFoot(doc, table, cursor, colsAndIndexes.columns); }); } else { var lastRowIndexOfLastPage_1 = -1; var firstColumnsToFitResult = allColumnsCanFitResult[0]; var _loop_1 = function () { // Print the first columns, taking note of the last row printed var lastPrintedRowIndex = lastRowIndexOfLastPage_1; if (firstColumnsToFitResult) { doc.applyStyles(doc.userStyles); var firstColumnsToFit = firstColumnsToFitResult.columns; if (lastRowIndexOfLastPage_1 >= 0) { // When adding a page here, make sure not to print the footers // because they were already printed before on this same loop addPage(doc, table, startPos, cursor, firstColumnsToFit, true); } else { printHead(doc, table, cursor, firstColumnsToFit); } lastPrintedRowIndex = printBodyWithoutPageBreaks(doc, table, lastRowIndexOfLastPage_1 + 1, cursor, firstColumnsToFit); printFoot(doc, table, cursor, firstColumnsToFit); } // Check how many rows were printed, so that the next columns would not print more rows than that var maxNumberOfRows = lastPrintedRowIndex - lastRowIndexOfLastPage_1; // Print the next columns, never exceding maxNumberOfRows allColumnsCanFitResult.slice(1).forEach(function (colsAndIndexes) { doc.applyStyles(doc.userStyles); // When adding a page here, make sure not to print the footers // because they were already printed before on this same loop addPage(doc, table, startPos, cursor, colsAndIndexes.columns, true); printBodyWithoutPageBreaks(doc, table, lastRowIndexOfLastPage_1 + 1, cursor, colsAndIndexes.columns, maxNumberOfRows); printFoot(doc, table, cursor, colsAndIndexes.columns); }); lastRowIndexOfLastPage_1 = lastPrintedRowIndex; }; while (lastRowIndexOfLastPage_1 < table.body.length - 1) { _loop_1(); } } } function printHead(doc, table, cursor, columns) { var settings = table.settings; doc.applyStyles(doc.userStyles); if (settings.showHead === 'firstPage' || settings.showHead === 'everyPage') { table.head.forEach(function (row) { return printRow(doc, table, row, cursor, columns); }); } } function printBody(doc, table, startPos, cursor, columns) { doc.applyStyles(doc.userStyles); table.body.forEach(function (row, index) { var isLastRow = index === table.body.length - 1; printFullRow(doc, table, row, isLastRow, startPos, cursor, columns); }); } function printBodyWithoutPageBreaks(doc, table, startRowIndex, cursor, columns, maxNumberOfRows) { doc.applyStyles(doc.userStyles); maxNumberOfRows = maxNumberOfRows !== null && maxNumberOfRows !== void 0 ? maxNumberOfRows : table.body.length; var endRowIndex = Math.min(startRowIndex + maxNumberOfRows, table.body.length); var lastPrintedRowIndex = -1; table.body.slice(startRowIndex, endRowIndex).forEach(function (row, index) { var isLastRow = startRowIndex + index === table.body.length - 1; var remainingSpace = getRemainingPageSpace(doc, table, isLastRow, cursor); if (row.canEntireRowFit(remainingSpace, columns)) { printRow(doc, table, row, cursor, columns); lastPrintedRowIndex = startRowIndex + index; } }); return lastPrintedRowIndex; } function printFoot(doc, table, cursor, columns) { var settings = table.settings; doc.applyStyles(doc.userStyles); if (settings.showFoot === 'lastPage' || settings.showFoot === 'everyPage') { table.foot.forEach(function (row) { return printRow(doc, table, row, cursor, columns); }); } } function getRemainingLineCount(cell, remainingPageSpace, doc) { var lineHeight = doc.getLineHeight(cell.styles.fontSize); var vPadding = cell.padding('vertical'); var remainingLines = Math.floor((remainingPageSpace - vPadding) / lineHeight); return Math.max(0, remainingLines); } function modifyRowToFit(row, remainingPageSpace, table, doc) { var cells = {}; row.spansMultiplePages = true; row.height = 0; var rowHeight = 0; for (var _i = 0, _a = table.columns; _i < _a.length; _i++) { var column = _a[_i]; var cell = row.cells[column.index]; if (!cell) continue; if (!Array.isArray(cell.text)) { cell.text = [cell.text]; } var remainderCell = new models_1.Cell(cell.raw, cell.styles, cell.section); remainderCell = (0, polyfills_1.assign)(remainderCell, cell); remainderCell.text = []; var remainingLineCount = getRemainingLineCount(cell, remainingPageSpace, doc); if (cell.text.length > remainingLineCount) { remainderCell.text = cell.text.splice(remainingLineCount, cell.text.length); } var scaleFactor = doc.scaleFactor(); var lineHeightFactor = doc.getLineHeightFactor(); cell.contentHeight = cell.getContentHeight(scaleFactor, lineHeightFactor); if (cell.contentHeight >= remainingPageSpace) { cell.contentHeight = remainingPageSpace; remainderCell.styles.minCellHeight -= remainingPageSpace; } if (cell.contentHeight > row.height) { row.height = cell.contentHeight; } remainderCell.contentHeight = remainderCell.getContentHeight(scaleFactor, lineHeightFactor); if (remainderCell.contentHeight > rowHeight) { rowHeight = remainderCell.contentHeight; } cells[column.index] = remainderCell; } var remainderRow = new models_1.Row(row.raw, -1, row.section, cells, true); remainderRow.height = rowHeight; for (var _b = 0, _c = table.columns; _b < _c.length; _b++) { var column = _c[_b]; var remainderCell = remainderRow.cells[column.index]; if (remainderCell) { remainderCell.height = remainderRow.height; } var cell = row.cells[column.index]; if (cell) { cell.height = row.height; } } return remainderRow; } function shouldPrintOnCurrentPage(doc, row, remainingPageSpace, table) { var pageHeight = doc.pageSize().height; var margin = table.settings.margin; var marginHeight = margin.top + margin.bottom; var maxRowHeight = pageHeight - marginHeight; if (row.section === 'body') { // Should also take into account that head and foot is not // on every page with some settings maxRowHeight -= table.getHeadHeight(table.columns) + table.getFootHeight(table.columns); } var minRowHeight = row.getMinimumRowHeight(table.columns, doc); var minRowFits = minRowHeight < remainingPageSpace; if (minRowHeight > maxRowHeight) { console.error("Will not be able to print row ".concat(row.index, " correctly since it's minimum height is larger than page height")); return true; } if (!minRowFits) { return false; } var rowHasRowSpanCell = row.hasRowSpan(table.columns); var rowHigherThanPage = row.getMaxCellHeight(table.columns) > maxRowHeight; if (rowHigherThanPage) { if (rowHasRowSpanCell) { console.error("The content of row ".concat(row.index, " will not be drawn correctly since drawing rows with a height larger than the page height and has cells with rowspans is not supported.")); } return true; } if (rowHasRowSpanCell) { // Currently a new page is required whenever a rowspan row don't fit a page. return false; } if (table.settings.rowPageBreak === 'avoid') { return false; } // In all other cases print the row on current page return true; } function printFullRow(doc, table, row, isLastRow, startPos, cursor, columns) { var remainingSpace = getRemainingPageSpace(doc, table, isLastRow, cursor); if (row.canEntireRowFit(remainingSpace, columns)) { // The row fits in the current page printRow(doc, table, row, cursor, columns); } else if (shouldPrintOnCurrentPage(doc, row, remainingSpace, table)) { // The row gets split in two here, each piece in one page var remainderRow = modifyRowToFit(row, remainingSpace, table, doc); printRow(doc, table, row, cursor, columns); addPage(doc, table, startPos, cursor, columns); printFullRow(doc, table, remainderRow, isLastRow, startPos, cursor, columns); } else { // The row get printed entirelly on the next page addPage(doc, table, startPos, cursor, columns); printFullRow(doc, table, row, isLastRow, startPos, cursor, columns); } } function printRow(doc, table, row, cursor, columns) { cursor.x = table.settings.margin.left; for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) { var column = columns_1[_i]; var cell = row.cells[column.index]; if (!cell) { cursor.x += column.width; continue; } doc.applyStyles(cell.styles); cell.x = cursor.x; cell.y = cursor.y; var result = table.callCellHooks(doc, table.hooks.willDrawCell, cell, row, column, cursor); if (result === false) { cursor.x += column.width; continue; } drawCellRect(doc, cell, cursor); var textPos = cell.getTextPos(); (0, autoTableText_1.default)(cell.text, textPos.x, textPos.y, { halign: cell.styles.halign, valign: cell.styles.valign, maxWidth: Math.ceil(cell.width - cell.padding('left') - cell.padding('right')), }, doc.getDocument()); table.callCellHooks(doc, table.hooks.didDrawCell, cell, row, column, cursor); cursor.x += column.width; } cursor.y += row.height; } function drawCellRect(doc, cell, cursor) { var cellStyles = cell.styles; // https://github.com/simonbengtsson/jsPDF-AutoTable/issues/774 // TODO (v4): better solution? doc.getDocument().setFillColor(doc.getDocument().getFillColor()); if (typeof cellStyles.lineWidth === 'number') { // Draw cell background with normal borders var fillStyle = (0, common_1.getFillStyle)(cellStyles.lineWidth, cellStyles.fillColor); if (fillStyle) { doc.rect(cell.x, cursor.y, cell.width, cell.height, fillStyle); } } else if (typeof cellStyles.lineWidth === 'object') { // Draw cell background if (cellStyles.fillColor) { doc.rect(cell.x, cursor.y, cell.width, cell.height, 'F'); } // Draw cell individual borders drawCellBorders(doc, cell, cursor, cellStyles.lineWidth); } } /** * Draw all specified borders. Borders are centered on cell's edge and lengthened * to overlap with neighbours to create sharp corners. * @param doc * @param cell * @param cursor * @param fillColor * @param lineWidth */ function drawCellBorders(doc, cell, cursor, lineWidth) { var x1, y1, x2, y2; if (lineWidth.top) { x1 = cursor.x; y1 = cursor.y; x2 = cursor.x + cell.width; y2 = cursor.y; if (lineWidth.right) { x2 += 0.5 * lineWidth.right; } if (lineWidth.left) { x1 -= 0.5 * lineWidth.left; } drawLine(lineWidth.top, x1, y1, x2, y2); } if (lineWidth.bottom) { x1 = cursor.x; y1 = cursor.y + cell.height; x2 = cursor.x + cell.width; y2 = cursor.y + cell.height; if (lineWidth.right) { x2 += 0.5 * lineWidth.right; } if (lineWidth.left) { x1 -= 0.5 * lineWidth.left; } drawLine(lineWidth.bottom, x1, y1, x2, y2); } if (lineWidth.left) { x1 = cursor.x; y1 = cursor.y; x2 = cursor.x; y2 = cursor.y + cell.height; if (lineWidth.top) { y1 -= 0.5 * lineWidth.top; } if (lineWidth.bottom) { y2 += 0.5 * lineWidth.bottom; } drawLine(lineWidth.left, x1, y1, x2, y2); } if (lineWidth.right) { x1 = cursor.x + cell.width; y1 = cursor.y; x2 = cursor.x + cell.width; y2 = cursor.y + cell.height; if (lineWidth.top) { y1 -= 0.5 * lineWidth.top; } if (lineWidth.bottom) { y2 += 0.5 * lineWidth.bottom; } drawLine(lineWidth.right, x1, y1, x2, y2); } function drawLine(width, x1, y1, x2, y2) { doc.getDocument().setLineWidth(width); doc.getDocument().line(x1, y1, x2, y2, 'S'); } } function getRemainingPageSpace(doc, table, isLastRow, cursor) { var bottomContentHeight = table.settings.margin.bottom; var showFoot = table.settings.showFoot; if (showFoot === 'everyPage' || (showFoot === 'lastPage' && isLastRow)) { bottomContentHeight += table.getFootHeight(table.columns); } return doc.pageSize().height - cursor.y - bottomContentHeight; } function addPage(doc, table, startPos, cursor, columns, suppressFooter) { if (columns === void 0) { columns = []; } if (suppressFooter === void 0) { suppressFooter = false; } doc.applyStyles(doc.userStyles); if (table.settings.showFoot === 'everyPage' && !suppressFooter) { table.foot.forEach(function (row) { return printRow(doc, table, row, cursor, columns); }); } // Add user content just before adding new page ensure it will // be drawn above other things on the page table.callEndPageHooks(doc, cursor); var margin = table.settings.margin; (0, common_1.addTableBorder)(doc, table, startPos, cursor); nextPage(doc); table.pageNumber++; table.pageCount++; cursor.x = margin.left; cursor.y = margin.top; startPos.y = margin.top; // call didAddPage hooks before any content is added to the page table.callWillDrawPageHooks(doc, cursor); if (table.settings.showHead === 'everyPage') { table.head.forEach(function (row) { return printRow(doc, table, row, cursor, columns); }); doc.applyStyles(doc.userStyles); } } exports.addPage = addPage; function nextPage(doc) { var current = doc.pageNumber(); doc.setPage(current + 1); var newCurrent = doc.pageNumber(); if (newCurrent === current) { doc.addPage(); return true; } return false; } /***/ }), /***/ 224: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.calculateAllColumnsCanFitInPage = void 0; var common_1 = __webpack_require__(420); // get columns can be fit into page function getColumnsCanFitInPage(doc, table, config) { var _a; if (config === void 0) { config = {}; } // Get page width var remainingWidth = (0, common_1.getPageAvailableWidth)(doc, table); // Get column data key to repeat var repeatColumnsMap = new Map(); var colIndexes = []; var columns = []; var horizontalPageBreakRepeat = []; table.settings.horizontalPageBreakRepeat; if (Array.isArray(table.settings.horizontalPageBreakRepeat)) { horizontalPageBreakRepeat = table.settings.horizontalPageBreakRepeat; // It can be a single value of type string or number (even number: 0) } else if (typeof table.settings.horizontalPageBreakRepeat === 'string' || typeof table.settings.horizontalPageBreakRepeat === 'number') { horizontalPageBreakRepeat = [table.settings.horizontalPageBreakRepeat]; } // Code to repeat the given column in split pages horizontalPageBreakRepeat.forEach(function (field) { var col = table.columns.find(function (item) { return item.dataKey === field || item.index === field; }); if (col && !repeatColumnsMap.has(col.index)) { repeatColumnsMap.set(col.index, true); colIndexes.push(col.index); columns.push(table.columns[col.index]); remainingWidth -= col.wrappedWidth; } }); var first = true; var i = (_a = config === null || config === void 0 ? void 0 : config.start) !== null && _a !== void 0 ? _a : 0; // make sure couter is initiated outside the loop while (i < table.columns.length) { // Prevent duplicates if (repeatColumnsMap.has(i)) { i++; continue; } var colWidth = table.columns[i].wrappedWidth; // Take at least one column even if it doesn't fit if (first || remainingWidth >= colWidth) { first = false; colIndexes.push(i); columns.push(table.columns[i]); remainingWidth -= colWidth; } else { break; } i++; } return { colIndexes: colIndexes, columns: columns, lastIndex: i - 1 }; } function calculateAllColumnsCanFitInPage(doc, table) { var allResults = []; for (var i = 0; i < table.columns.length; i++) { var result = getColumnsCanFitInPage(doc, table, { start: i }); if (result.columns.length) { allResults.push(result); i = result.lastIndex; } } return allResults; } exports.calculateAllColumnsCanFitInPage = calculateAllColumnsCanFitInPage; /***/ }), /***/ 324: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.ellipsize = exports.resizeColumns = exports.calculateWidths = void 0; var common_1 = __webpack_require__(420); /** * Calculate the column widths */ function calculateWidths(doc, table) { calculate(doc, table); var resizableColumns = []; var initialTableWidth = 0; table.columns.forEach(function (column) { var customWidth = column.getMaxCustomCellWidth(table); if (customWidth) { // final column width column.width = customWidth; } else { // initial column width (will be resized) column.width = column.wrappedWidth; resizableColumns.push(column); } initialTableWidth += column.width; }); // width difference that needs to be distributed var resizeWidth = table.getWidth(doc.pageSize().width) - initialTableWidth; // first resize attempt: with respect to minReadableWidth and minWidth if (resizeWidth) { resizeWidth = resizeColumns(resizableColumns, resizeWidth, function (column) { return Math.max(column.minReadableWidth, column.minWidth); }); } // second resize attempt: ignore minReadableWidth but respect minWidth if (resizeWidth) { resizeWidth = resizeColumns(resizableColumns, resizeWidth, function (column) { return column.minWidth; }); } resizeWidth = Math.abs(resizeWidth); if (!table.settings.horizontalPageBreak && resizeWidth > 0.1 / doc.scaleFactor()) { // Table can't get smaller due to custom-width or minWidth restrictions // We can't really do much here. Up to user to for example // reduce font size, increase page size or remove custom cell widths // to allow more columns to be reduced in size resizeWidth = resizeWidth < 1 ? resizeWidth : Math.round(resizeWidth); console.warn("Of the table content, ".concat(resizeWidth, " units width could not fit page")); } applyColSpans(table); fitContent(table, doc); applyRowSpans(table); } exports.calculateWidths = calculateWidths; function calculate(doc, table) { var sf = doc.scaleFactor(); var horizontalPageBreak = table.settings.horizontalPageBreak; var availablePageWidth = (0, common_1.getPageAvailableWidth)(doc, table); table.allRows().forEach(function (row) { for (var _i = 0, _a = table.columns; _i < _a.length; _i++) { var column = _a[_i]; var cell = row.cells[column.index]; if (!cell) continue; var hooks = table.hooks.didParseCell; table.callCellHooks(doc, hooks, cell, row, column, null); var padding = cell.padding('horizontal'); cell.contentWidth = (0, common_1.getStringWidth)(cell.text, cell.styles, doc) + padding; var longestWordWidth = (0, common_1.getStringWidth)(cell.text.join(' ').split(/\s+/), cell.styles, doc); cell.minReadableWidth = longestWordWidth + cell.padding('horizontal'); if (typeof cell.styles.cellWidth === 'number') { cell.minWidth = cell.styles.cellWidth; cell.wrappedWidth = cell.styles.cellWidth; } else if (cell.styles.cellWidth === 'wrap' || horizontalPageBreak === true) { // cell width should not be more than available page width if (cell.contentWidth > availablePageWidth) { cell.minWidth = availablePageWidth; cell.wrappedWidth = availablePageWidth; } else { cell.minWidth = cell.contentWidth; cell.wrappedWidth = cell.contentWidth; } } else { // auto var defaultMinWidth = 10 / sf; cell.minWidth = cell.styles.minCellWidth || defaultMinWidth; cell.wrappedWidth = cell.contentWidth; if (cell.minWidth > cell.wrappedWidth) { cell.wrappedWidth = cell.minWidth; } } } }); table.allRows().forEach(function (row) { for (var _i = 0, _a = table.columns; _i < _a.length; _i++) { var column = _a[_i]; var cell = row.cells[column.index]; // For now we ignore the minWidth and wrappedWidth of colspan cells when calculating colspan widths. // Could probably be improved upon however. if (cell && cell.colSpan === 1) { column.wrappedWidth = Math.max(column.wrappedWidth, cell.wrappedWidth); column.minWidth = Math.max(column.minWidth, cell.minWidth); column.minReadableWidth = Math.max(column.minReadableWidth, cell.minReadableWidth); } else { // Respect cellWidth set in columnStyles even if there is no cells for this column // or if the column only have colspan cells. Since the width of colspan cells // does not affect the width of columns, setting columnStyles cellWidth enables the // user to at least do it manually. // Note that this is not perfect for now since for example row and table styles are // not accounted for var columnStyles = table.styles.columnStyles[column.dataKey] || table.styles.columnStyles[column.index] || {}; var cellWidth = columnStyles.cellWidth || columnStyles.minCellWidth; if (cellWidth && typeof cellWidth === 'number') { column.minWidth = cellWidth; column.wrappedWidth = cellWidth; } } if (cell) { // Make sure all columns get at least min width even though width calculations are not based on them if (cell.colSpan > 1 && !column.minWidth) { column.minWidth = cell.minWidth; } if (cell.colSpan > 1 && !column.wrappedWidth) { column.wrappedWidth = cell.minWidth; } } } }); } /** * Distribute resizeWidth on passed resizable columns */ function resizeColumns(columns, resizeWidth, getMinWidth) { var initialResizeWidth = resizeWidth; var sumWrappedWidth = columns.reduce(function (acc, column) { return acc + column.wrappedWidth; }, 0); for (var i = 0; i < columns.length; i++) { var column = columns[i]; var ratio = column.wrappedWidth / sumWrappedWidth; var suggestedChange = initialResizeWidth * ratio; var suggestedWidth = column.width + suggestedChange; var minWidth = getMinWidth(column); var newWidth = suggestedWidth < minWidth ? minWidth : suggestedWidth; resizeWidth -= newWidth - column.width; column.width = newWidth; } resizeWidth = Math.round(resizeWidth * 1e10) / 1e10; // Run the resizer again if there's remaining width needs // to be distributed and there're columns that can be resized if (resizeWidth) { var resizableColumns = columns.filter(function (column) { return resizeWidth < 0 ? column.width > getMinWidth(column) // check if column can shrink : true; // check if column can grow }); if (resizableColumns.length) { resizeWidth = resizeColumns(resizableColumns, resizeWidth, getMinWidth); } } return resizeWidth; } exports.resizeColumns = resizeColumns; function applyRowSpans(table) { var rowSpanCells = {}; var colRowSpansLeft = 1; var all = table.allRows(); for (var rowIndex = 0; rowIndex < all.length; rowIndex++) { var row = all[rowIndex]; for (var _i = 0, _a = table.columns; _i < _a.length; _i++) { var column = _a[_i]; var data = rowSpanCells[column.index]; if (colRowSpansLeft > 1) { colRowSpansLeft--; delete row.cells[column.index]; } else if (data) { data.cell.height += row.height; colRowSpansLeft = data.cell.colSpan; delete row.cells[column.index]; data.left--; if (data.left <= 1) { delete rowSpanCells[column.index]; } } else { var cell = row.cells[column.index]; if (!cell) { continue; } cell.height = row.height; if (cell.rowSpan > 1) { var remaining = all.length - rowIndex; var left = cell.rowSpan > remaining ? remaining : cell.rowSpan; rowSpanCells[column.index] = { cell: cell, left: left, row: row }; } } } } } function applyColSpans(table) { var all = table.allRows(); for (var rowIndex = 0; rowIndex < all.length; rowIndex++) { var row = all[rowIndex]; var colSpanCell = null; var combinedColSpanWidth = 0; var colSpansLeft = 0; for (var columnIndex = 0; columnIndex < table.columns.length; columnIndex++) { var column = table.columns[columnIndex]; // Width and colspan colSpansLeft -= 1; if (colSpansLeft > 1 && table.columns[columnIndex + 1]) { combinedColSpanWidth += column.width; delete row.cells[column.index]; } else if (colSpanCell) { var cell = colSpanCell; delete row.cells[column.index]; colSpanCell = null; cell.width = column.width + combinedColSpanWidth; } else { var cell = row.cells[column.index]; if (!cell) continue; colSpansLeft = cell.colSpan; combinedColSpanWidth = 0; if (cell.colSpan > 1) { colSpanCell = cell; combinedColSpanWidth += column.width; continue; } cell.width = column.width + combinedColSpanWidth; } } } } function fitContent(table, doc) { var rowSpanHeight = { count: 0, height: 0 }; for (var _i = 0, _a = table.allRows(); _i < _a.length; _i++) { var row = _a[_i]; for (var _b = 0, _c = table.columns; _b < _c.length; _b++) { var column = _c[_b]; var cell = row.cells[column.index]; if (!cell) continue; doc.applyStyles(cell.styles, true); var textSpace = cell.width - cell.padding('horizontal'); if (cell.styles.overflow === 'linebreak') { // Add one pt to textSpace to fix rounding error cell.text = doc.splitTextToSize(cell.text, textSpace + 1 / doc.scaleFactor(), { fontSize: cell.styles.fontSize }); } else if (cell.styles.overflow === 'ellipsize') { cell.text = ellipsize(cell.text, textSpace, cell.styles, doc, '...'); } else if (cell.styles.overflow === 'hidden') { cell.text = ellipsize(cell.text, textSpace, cell.styles, doc, ''); } else if (typeof cell.styles.overflow === 'function') { var result = cell.styles.overflow(cell.text, textSpace); if (typeof result === 'string') { cell.text = [result]; } else { cell.text = result; } } cell.contentHeight = cell.getContentHeight(doc.scaleFactor(), doc.getLineHeightFactor()); var realContentHeight = cell.contentHeight / cell.rowSpan; if (cell.rowSpan > 1 && rowSpanHeight.count * rowSpanHeight.height < realContentHeight * cell.rowSpan) { rowSpanHeight = { height: realContentHeight, count: cell.rowSpan }; } else if (rowSpanHeight && rowSpanHeight.count > 0) { if (rowSpanHeight.height > realContentHeight) { realContentHeight = rowSpanHeight.height; } } if (realContentHeight > row.height) { row.height = realContentHeight; } } rowSpanHeight.count--; } } function ellipsize(text, width, styles, doc, overflow) { return text.map(function (str) { return ellipsizeStr(str, width, styles, doc, overflow); }); } exports.ellipsize = ellipsize; function ellipsizeStr(text, width, styles, doc, overflow) { var precision = 10000 * doc.scaleFactor(); width = Math.ceil(width * precision) / precision; if (width >= (0, common_1.getStringWidth)(text, styles, doc)) { return text; } while (width < (0, common_1.getStringWidth)(text + overflow, styles, doc)) { if (text.length <= 1) { break; } text = text.substring(0, text.length - 1); } return text.trim() + overflow; } /***/ }), /***/ 964: /***/ (function(module) { if(typeof __WEBPACK_EXTERNAL_MODULE__964__ === 'undefined') { var e = new Error("Cannot find module 'undefined'"); e.code = 'MODULE_NOT_FOUND'; throw e; } module.exports = __WEBPACK_EXTERNAL_MODULE__964__; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. !function() { var exports = __webpack_exports__; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Cell = exports.Column = exports.Row = exports.Table = exports.CellHookData = exports.__drawTable = exports.__createTable = exports.applyPlugin = void 0; var applyPlugin_1 = __webpack_require__(340); var inputParser_1 = __webpack_require__(776); var tableDrawer_1 = __webpack_require__(664); var tableCalculator_1 = __webpack_require__(972); var models_1 = __webpack_require__(260); Object.defineProperty(exports, "Table", ({ enumerable: true, get: function () { return models_1.Table; } })); var HookData_1 = __webpack_require__(172); Object.defineProperty(exports, "CellHookData", ({ enumerable: true, get: function () { return HookData_1.CellHookData; } })); var models_2 = __webpack_require__(260); Object.defineProperty(exports, "Cell", ({ enumerable: true, get: function () { return models_2.Cell; } })); Object.defineProperty(exports, "Column", ({ enumerable: true, get: function () { return models_2.Column; } })); Object.defineProperty(exports, "Row", ({ enumerable: true, get: function () { return models_2.Row; } })); // export { applyPlugin } didn't export applyPlugin // to index.d.ts for some reason function applyPlugin(jsPDF) { (0, applyPlugin_1.default)(jsPDF); } exports.applyPlugin = applyPlugin; function autoTable(d, options) { var input = (0, inputParser_1.parseInput)(d, options); var table = (0, tableCalculator_1.createTable)(d, input); (0, tableDrawer_1.drawTable)(d, table); } // Experimental export function __createTable(d, options) { var input = (0, inputParser_1.parseInput)(d, options); return (0, tableCalculator_1.createTable)(d, input); } exports.__createTable = __createTable; function __drawTable(d, table) { (0, tableDrawer_1.drawTable)(d, table); } exports.__drawTable = __drawTable; try { // eslint-disable-next-line @typescript-eslint/no-var-requires var jsPDF = __webpack_require__(964); // Webpack imported jspdf instead of jsPDF for some reason // while it seemed to work everywhere else. if (jsPDF.jsPDF) jsPDF = jsPDF.jsPDF; applyPlugin(jsPDF); } catch (error) { // Importing jspdf in nodejs environments does not work as of jspdf // 1.5.3 so we need to silence potential errors to support using for example // the nodejs jspdf dist files with the exported applyPlugin } exports["default"] = autoTable; }(); /******/ return __webpack_exports__; /******/ })() ; });