@harbortouch/skytab-analytics-report-utils 0.41.2 → 0.41.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -49,23 +49,21 @@ var sanitizePdfText = (text) => {
|
|
|
49
49
|
return "";
|
|
50
50
|
}
|
|
51
51
|
const leadingSpaces = /^ */.exec(text)?.[0] ?? "";
|
|
52
|
-
return leadingSpaces + text.trimStart().replace(
|
|
52
|
+
return leadingSpaces + text.trimStart().replace(
|
|
53
53
|
/[\u{1F300}-\u{1F9FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{1F1E0}-\u{1F1FF}]|[\u{1F600}-\u{1F64F}]|[\u{1F680}-\u{1F6FF}]|[\u{1F900}-\u{1F9FF}]|[\u{1FA00}-\u{1FA6F}]|[\u{1FA70}-\u{1FAFF}]|[\u{FE00}-\u{FE0F}]|[\u{1F004}]|[\u{1F0CF}]|[\u{1F18E}]|[\u{1F191}-\u{1F19A}]|[\u{1F1E6}-\u{1F1FF}]|[\u{1F201}-\u{1F251}]/gu,
|
|
54
54
|
""
|
|
55
|
-
).replace(/[\x00-\x1F\x7F-\x9F]/g, " ").replace(/ /g, " ").replace(/[^\x20-\x7E\xA1-\xFF]/g, "").replace(/\s+/g, " ").trim();
|
|
55
|
+
).replace(/[\x00-\x1F\x7F-\x9F]/g, " ").replace(/ /g, " ").replace(/[^\x20-\x7E\xA1-\xFF€₹₩₪₽]/g, "").replace(/\s+/g, " ").trim();
|
|
56
56
|
};
|
|
57
57
|
|
|
58
58
|
// src/exporters/pdf/constants.ts
|
|
59
|
-
var ZOOM_FACTOR = 1.44;
|
|
60
59
|
var FONT_REGULAR = "Lato";
|
|
61
60
|
var FONT_BOLD = "Lato-Bold";
|
|
62
61
|
var DEFAULT_TEXT_COLOR = "#000000";
|
|
63
62
|
var HEADER_BACKGROUND_COLOR = "#f9fafb";
|
|
64
63
|
var ZEBRA_BACKGROUND_COLOR = "#fafbfc";
|
|
65
64
|
var SEPARATOR_COLOR = "#E4E5E5";
|
|
66
|
-
var SECTION_TITLE_FONT_SIZE =
|
|
67
|
-
var
|
|
68
|
-
var BODY_FONT_SIZE = 6 * ZOOM_FACTOR;
|
|
65
|
+
var SECTION_TITLE_FONT_SIZE = 9;
|
|
66
|
+
var BODY_FONT_SIZE = 9;
|
|
69
67
|
var TABLE_CELL_PADDING = 4;
|
|
70
68
|
var DEFAULT_ROW_HEIGHT = 25;
|
|
71
69
|
var MIN_COLUMN_WIDTH = 35;
|
|
@@ -200,8 +198,8 @@ var PdfExporter = class {
|
|
|
200
198
|
const columns = table.columns.length > 0 ? table.columns.map((c) => ({ ...c })) : [{ header: "No data", key: "no_data", width: 100 }];
|
|
201
199
|
const rows = table.rows ?? [];
|
|
202
200
|
const columnCount = columns.length;
|
|
203
|
-
const headerFontSize = columnCount > 13 ?
|
|
204
|
-
const dataFontSize = columnCount > 13 ?
|
|
201
|
+
const headerFontSize = columnCount > 13 ? 6 : columnCount > 10 ? 7 : columnCount > 7 ? 8 : 9;
|
|
202
|
+
const dataFontSize = columnCount > 13 ? 5 : columnCount > 10 ? 6 : columnCount > 7 ? 7 : 8;
|
|
205
203
|
const headerWidthSlack = 2;
|
|
206
204
|
const headerMinWidths = /* @__PURE__ */ new Map();
|
|
207
205
|
columns.forEach((col) => {
|
|
@@ -230,6 +228,16 @@ var PdfExporter = class {
|
|
|
230
228
|
const headerMin = headerMinWidths.get(c) ?? MIN_COLUMN_WIDTH;
|
|
231
229
|
c.width = Math.max(Math.floor((c.width ?? MIN_COLUMN_WIDTH) * scale), headerMin, MIN_COLUMN_WIDTH);
|
|
232
230
|
});
|
|
231
|
+
let excess = columns.reduce((sum, c) => sum + (c.width ?? MIN_COLUMN_WIDTH), 0) - usableWidth;
|
|
232
|
+
for (let i = columns.length - 1; i >= 0 && excess > 0; i--) {
|
|
233
|
+
const col = columns[i];
|
|
234
|
+
const available = (col.width ?? MIN_COLUMN_WIDTH) - MIN_COLUMN_WIDTH;
|
|
235
|
+
const trim = Math.min(excess, available);
|
|
236
|
+
if (trim > 0) {
|
|
237
|
+
col.width = (col.width ?? MIN_COLUMN_WIDTH) - trim;
|
|
238
|
+
excess -= trim;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
233
241
|
} else if (totalColumnWidth < usableWidth) {
|
|
234
242
|
const scale = usableWidth / totalColumnWidth;
|
|
235
243
|
columns.forEach((c) => {
|
|
@@ -9,23 +9,21 @@ var sanitizePdfText = (text) => {
|
|
|
9
9
|
return "";
|
|
10
10
|
}
|
|
11
11
|
const leadingSpaces = /^ */.exec(text)?.[0] ?? "";
|
|
12
|
-
return leadingSpaces + text.trimStart().replace(
|
|
12
|
+
return leadingSpaces + text.trimStart().replace(
|
|
13
13
|
/[\u{1F300}-\u{1F9FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{1F1E0}-\u{1F1FF}]|[\u{1F600}-\u{1F64F}]|[\u{1F680}-\u{1F6FF}]|[\u{1F900}-\u{1F9FF}]|[\u{1FA00}-\u{1FA6F}]|[\u{1FA70}-\u{1FAFF}]|[\u{FE00}-\u{FE0F}]|[\u{1F004}]|[\u{1F0CF}]|[\u{1F18E}]|[\u{1F191}-\u{1F19A}]|[\u{1F1E6}-\u{1F1FF}]|[\u{1F201}-\u{1F251}]/gu,
|
|
14
14
|
""
|
|
15
|
-
).replace(/[\x00-\x1F\x7F-\x9F]/g, " ").replace(/ /g, " ").replace(/[^\x20-\x7E\xA1-\xFF]/g, "").replace(/\s+/g, " ").trim();
|
|
15
|
+
).replace(/[\x00-\x1F\x7F-\x9F]/g, " ").replace(/ /g, " ").replace(/[^\x20-\x7E\xA1-\xFF€₹₩₪₽]/g, "").replace(/\s+/g, " ").trim();
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
// src/exporters/pdf/constants.ts
|
|
19
|
-
var ZOOM_FACTOR = 1.44;
|
|
20
19
|
var FONT_REGULAR = "Lato";
|
|
21
20
|
var FONT_BOLD = "Lato-Bold";
|
|
22
21
|
var DEFAULT_TEXT_COLOR = "#000000";
|
|
23
22
|
var HEADER_BACKGROUND_COLOR = "#f9fafb";
|
|
24
23
|
var ZEBRA_BACKGROUND_COLOR = "#fafbfc";
|
|
25
24
|
var SEPARATOR_COLOR = "#E4E5E5";
|
|
26
|
-
var SECTION_TITLE_FONT_SIZE =
|
|
27
|
-
var
|
|
28
|
-
var BODY_FONT_SIZE = 6 * ZOOM_FACTOR;
|
|
25
|
+
var SECTION_TITLE_FONT_SIZE = 9;
|
|
26
|
+
var BODY_FONT_SIZE = 9;
|
|
29
27
|
var TABLE_CELL_PADDING = 4;
|
|
30
28
|
var DEFAULT_ROW_HEIGHT = 25;
|
|
31
29
|
var MIN_COLUMN_WIDTH = 35;
|
|
@@ -160,8 +158,8 @@ var PdfExporter = class {
|
|
|
160
158
|
const columns = table.columns.length > 0 ? table.columns.map((c) => ({ ...c })) : [{ header: "No data", key: "no_data", width: 100 }];
|
|
161
159
|
const rows = table.rows ?? [];
|
|
162
160
|
const columnCount = columns.length;
|
|
163
|
-
const headerFontSize = columnCount > 13 ?
|
|
164
|
-
const dataFontSize = columnCount > 13 ?
|
|
161
|
+
const headerFontSize = columnCount > 13 ? 6 : columnCount > 10 ? 7 : columnCount > 7 ? 8 : 9;
|
|
162
|
+
const dataFontSize = columnCount > 13 ? 5 : columnCount > 10 ? 6 : columnCount > 7 ? 7 : 8;
|
|
165
163
|
const headerWidthSlack = 2;
|
|
166
164
|
const headerMinWidths = /* @__PURE__ */ new Map();
|
|
167
165
|
columns.forEach((col) => {
|
|
@@ -190,6 +188,16 @@ var PdfExporter = class {
|
|
|
190
188
|
const headerMin = headerMinWidths.get(c) ?? MIN_COLUMN_WIDTH;
|
|
191
189
|
c.width = Math.max(Math.floor((c.width ?? MIN_COLUMN_WIDTH) * scale), headerMin, MIN_COLUMN_WIDTH);
|
|
192
190
|
});
|
|
191
|
+
let excess = columns.reduce((sum, c) => sum + (c.width ?? MIN_COLUMN_WIDTH), 0) - usableWidth;
|
|
192
|
+
for (let i = columns.length - 1; i >= 0 && excess > 0; i--) {
|
|
193
|
+
const col = columns[i];
|
|
194
|
+
const available = (col.width ?? MIN_COLUMN_WIDTH) - MIN_COLUMN_WIDTH;
|
|
195
|
+
const trim = Math.min(excess, available);
|
|
196
|
+
if (trim > 0) {
|
|
197
|
+
col.width = (col.width ?? MIN_COLUMN_WIDTH) - trim;
|
|
198
|
+
excess -= trim;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
193
201
|
} else if (totalColumnWidth < usableWidth) {
|
|
194
202
|
const scale = usableWidth / totalColumnWidth;
|
|
195
203
|
columns.forEach((c) => {
|