react-markdown-table-ts 0.2.4 → 0.3.0
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.
- package/dist/errors.js +31 -0
- package/dist/errors.js.map +1 -0
- package/dist/helpers.js +93 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.cjs.js +2 -2
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/src/errors.d.ts +6 -0
- package/dist/src/errors.js +31 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/helpers.d.ts +34 -0
- package/dist/src/helpers.js +93 -0
- package/dist/src/helpers.js.map +1 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.js +200 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/types.d.ts +62 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils.d.ts +44 -0
- package/dist/src/utils.js +142 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/src/validation.d.ts +7 -0
- package/dist/src/validation.js +65 -0
- package/dist/src/validation.js.map +1 -0
- package/dist/test/MarkdownTable.test.d.ts +1 -0
- package/dist/test/MarkdownTable.test.js +91 -0
- package/dist/test/MarkdownTable.test.js.map +1 -0
- package/dist/test/helpers.test.d.ts +1 -0
- package/dist/test/helpers.test.js +99 -0
- package/dist/test/helpers.test.js.map +1 -0
- package/dist/test/jest.setup.d.ts +2 -0
- package/dist/test/jest.setup.js +3 -0
- package/dist/test/jest.setup.js.map +1 -0
- package/dist/test/utils.test.d.ts +1 -0
- package/dist/test/utils.test.js +46 -0
- package/dist/test/utils.test.js.map +1 -0
- package/dist/test/validation.test.d.ts +1 -0
- package/dist/test/validation.test.js +81 -0
- package/dist/test/validation.test.js.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.js +142 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation.js +65 -0
- package/dist/validation.js.map +1 -0
- package/package.json +2 -1
package/dist/utils.js
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
// src/utils.ts
|
2
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
3
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
4
|
+
if (ar || !(i in from)) {
|
5
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
6
|
+
ar[i] = from[i];
|
7
|
+
}
|
8
|
+
}
|
9
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
10
|
+
};
|
11
|
+
/**
|
12
|
+
* Calculates the maximum width for each column based on the content.
|
13
|
+
* @param allRows - All rows (header and body) of the table.
|
14
|
+
* @param maxColumnCount - The maximum number of columns in the table.
|
15
|
+
* @returns An array of maximum widths for each column.
|
16
|
+
*/
|
17
|
+
export function calculateColumnWidths(allRows, maxColumnCount) {
|
18
|
+
var widths = new Array(maxColumnCount).fill(3); // Minimum width of 3 for each column.
|
19
|
+
allRows.forEach(function (row) {
|
20
|
+
var _a;
|
21
|
+
for (var i = 0; i < maxColumnCount; i++) {
|
22
|
+
var cell = (_a = row[i]) !== null && _a !== void 0 ? _a : '';
|
23
|
+
widths[i] = Math.max(widths[i], cell.length);
|
24
|
+
}
|
25
|
+
});
|
26
|
+
return widths;
|
27
|
+
}
|
28
|
+
/**
|
29
|
+
* Replaces newline characters in a string with <br> tags.
|
30
|
+
* @param cell - The cell content to process.
|
31
|
+
* @returns The processed cell content with newlines replaced.
|
32
|
+
*/
|
33
|
+
export function replaceNewlinesInCell(cell) {
|
34
|
+
return cell.replace(/\n/g, '<br>');
|
35
|
+
}
|
36
|
+
/**
|
37
|
+
* Formats a single row into a Markdown-formatted string.
|
38
|
+
* @param columnCount - The number of columns in the table.
|
39
|
+
* @param row - The data of the current row.
|
40
|
+
* @param columnAlignments - Alignment settings for each column.
|
41
|
+
* @param columnWidths - Widths of each column.
|
42
|
+
* @param useTabs - Flag to use tabs between columns.
|
43
|
+
* @param replaceNewlines - Flag to replace newlines with <br> tags.
|
44
|
+
* @returns The Markdown string for the row.
|
45
|
+
*/
|
46
|
+
export function formatMarkdownRow(columnCount, row, columnAlignments, columnWidths, useTabs, replaceNewlines) {
|
47
|
+
var _a, _b;
|
48
|
+
if (useTabs === void 0) { useTabs = false; }
|
49
|
+
if (replaceNewlines === void 0) { replaceNewlines = false; }
|
50
|
+
var defaultAlignment = 'left';
|
51
|
+
var adjustedAlignments = columnAlignments.length < columnCount
|
52
|
+
? __spreadArray(__spreadArray([], columnAlignments, true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : columnAlignments;
|
53
|
+
var markdownRow = '|';
|
54
|
+
for (var i = 0; i < columnCount; i++) {
|
55
|
+
var cell = (_a = row[i]) !== null && _a !== void 0 ? _a : '';
|
56
|
+
if (replaceNewlines) {
|
57
|
+
cell = replaceNewlinesInCell(cell);
|
58
|
+
}
|
59
|
+
var alignment = (_b = adjustedAlignments[i]) !== null && _b !== void 0 ? _b : defaultAlignment;
|
60
|
+
var targetWidth = columnWidths ? columnWidths[i] : cell.length;
|
61
|
+
if (alignment === 'right') {
|
62
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(cell.padStart(targetWidth)).concat(useTabs ? '\t' : ' ', "|");
|
63
|
+
}
|
64
|
+
else if (alignment === 'center') {
|
65
|
+
var totalPadding = targetWidth - cell.length;
|
66
|
+
var paddingLeft = Math.floor(totalPadding / 2);
|
67
|
+
var paddingRight = totalPadding - paddingLeft;
|
68
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(' '.repeat(paddingLeft)).concat(cell).concat(' '.repeat(paddingRight)).concat(useTabs ? '\t' : ' ', "|");
|
69
|
+
}
|
70
|
+
else {
|
71
|
+
// Left alignment or default
|
72
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(cell.padEnd(targetWidth)).concat(useTabs ? '\t' : ' ', "|");
|
73
|
+
}
|
74
|
+
}
|
75
|
+
return markdownRow;
|
76
|
+
}
|
77
|
+
/**
|
78
|
+
* Generates the alignment row for the Markdown table syntax.
|
79
|
+
* @param columnCount - The number of columns in the table.
|
80
|
+
* @param columnAlignments - Alignment settings for each column.
|
81
|
+
* @param columnWidths - Widths of each column.
|
82
|
+
* @param useTabs - Flag to use tabs between columns.
|
83
|
+
* @returns The Markdown string for the alignment row.
|
84
|
+
*/
|
85
|
+
export function formatAlignmentRow(columnCount, columnAlignments, columnWidths, useTabs) {
|
86
|
+
var _a;
|
87
|
+
if (useTabs === void 0) { useTabs = false; }
|
88
|
+
var defaultAlignment = 'left';
|
89
|
+
var adjustedAlignments = columnAlignments.length < columnCount
|
90
|
+
? __spreadArray(__spreadArray([], columnAlignments, true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : columnAlignments;
|
91
|
+
var alignmentRow = '|';
|
92
|
+
for (var i = 0; i < columnCount; i++) {
|
93
|
+
var alignment = (_a = adjustedAlignments[i]) !== null && _a !== void 0 ? _a : defaultAlignment;
|
94
|
+
var targetWidth = columnWidths ? columnWidths[i] : 3;
|
95
|
+
var alignIndicator = '';
|
96
|
+
switch (alignment) {
|
97
|
+
case 'left':
|
98
|
+
alignIndicator = ":".concat('-'.repeat(targetWidth - 1));
|
99
|
+
break;
|
100
|
+
case 'center':
|
101
|
+
alignIndicator = ":".concat('-'.repeat(targetWidth - 2), ":");
|
102
|
+
break;
|
103
|
+
case 'right':
|
104
|
+
alignIndicator = "".concat('-'.repeat(targetWidth - 1), ":");
|
105
|
+
break;
|
106
|
+
default:
|
107
|
+
alignIndicator = "".concat('-'.repeat(targetWidth));
|
108
|
+
break;
|
109
|
+
}
|
110
|
+
alignmentRow += "".concat(useTabs ? '\t' : ' ').concat(alignIndicator).concat(useTabs ? '\t' : ' ', "|");
|
111
|
+
}
|
112
|
+
return alignmentRow;
|
113
|
+
}
|
114
|
+
/**
|
115
|
+
* Generates a complete Markdown table string from the provided data.
|
116
|
+
* @param tableData - The table data including headers and rows.
|
117
|
+
* @param columnAlignments - Alignment settings for each column.
|
118
|
+
* @param adjustColumnWidths - Flag to adjust column widths based on content.
|
119
|
+
* @param useTabs - Flag to use tabs between columns.
|
120
|
+
* @param replaceNewlines - Flag to replace newlines with <br> tags.
|
121
|
+
* @returns The complete Markdown table string.
|
122
|
+
*/
|
123
|
+
export function generateMarkdownTableString(tableData, columnAlignments, adjustColumnWidths, useTabs, replaceNewlines) {
|
124
|
+
if (adjustColumnWidths === void 0) { adjustColumnWidths = true; }
|
125
|
+
if (useTabs === void 0) { useTabs = false; }
|
126
|
+
if (replaceNewlines === void 0) { replaceNewlines = false; }
|
127
|
+
var headerColumnCount = tableData.header.length;
|
128
|
+
var bodyColumnCounts = tableData.rows.map(function (row) { return row.length; });
|
129
|
+
var maxColumnCount = Math.max.apply(Math, __spreadArray([headerColumnCount], bodyColumnCounts, false));
|
130
|
+
var columnWidths = adjustColumnWidths
|
131
|
+
? calculateColumnWidths(__spreadArray([tableData.header], tableData.rows, true), maxColumnCount)
|
132
|
+
: undefined;
|
133
|
+
var markdownHeaderRow = formatMarkdownRow(maxColumnCount, tableData.header, columnAlignments, columnWidths, useTabs, replaceNewlines);
|
134
|
+
var markdownAlignmentRow = formatAlignmentRow(maxColumnCount, columnAlignments, columnWidths, useTabs);
|
135
|
+
var markdownBodyRows = tableData.rows
|
136
|
+
.map(function (row) {
|
137
|
+
return formatMarkdownRow(maxColumnCount, row, columnAlignments, columnWidths, useTabs, replaceNewlines);
|
138
|
+
})
|
139
|
+
.join('\n');
|
140
|
+
return "".concat(markdownHeaderRow, "\n").concat(markdownAlignmentRow, "\n").concat(markdownBodyRows).trimEnd();
|
141
|
+
}
|
142
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
// src/validation.ts
|
2
|
+
import { MarkdownTableError } from './errors';
|
3
|
+
/**
|
4
|
+
* Validates the structure of the table data based on the `hasHeader` flag.
|
5
|
+
* Throws an error if validation fails.
|
6
|
+
* @param props - The props to validate.
|
7
|
+
*/
|
8
|
+
export function validateMarkdownTableProps(props) {
|
9
|
+
var data = props.data, _a = props.hasHeader, hasHeader = _a === void 0 ? true : _a, columnAlignments = props.columnAlignments, _b = props.isCompact, isCompact = _b === void 0 ? false : _b, _c = props.hasTabs, hasTabs = _c === void 0 ? false : _c, _d = props.canReplaceNewlines, canReplaceNewlines = _d === void 0 ? false : _d;
|
10
|
+
if (!Array.isArray(data)) {
|
11
|
+
throw new MarkdownTableError("The 'data' prop must be a two-dimensional array.");
|
12
|
+
}
|
13
|
+
if (data.length === 0) {
|
14
|
+
throw new MarkdownTableError("The 'data' array must contain at least one row.");
|
15
|
+
}
|
16
|
+
// If hasHeader is true, ensure the first row exists and is valid
|
17
|
+
if (hasHeader) {
|
18
|
+
var header = data[0];
|
19
|
+
if (!Array.isArray(header) || header.length === 0) {
|
20
|
+
throw new MarkdownTableError("The first row of 'data' must be a non-empty array representing the header.");
|
21
|
+
}
|
22
|
+
// Validate each header cell is a string
|
23
|
+
header.forEach(function (cell, index) {
|
24
|
+
if (typeof cell !== 'string') {
|
25
|
+
throw new MarkdownTableError("Header cell at index ".concat(index, " must be a string."));
|
26
|
+
}
|
27
|
+
});
|
28
|
+
}
|
29
|
+
// Validate each row
|
30
|
+
data.forEach(function (row, rowIndex) {
|
31
|
+
if (!Array.isArray(row)) {
|
32
|
+
throw new MarkdownTableError("Row ".concat(rowIndex + 1, " in 'data' must be an array of strings."));
|
33
|
+
}
|
34
|
+
row.forEach(function (cell, cellIndex) {
|
35
|
+
if (typeof cell !== 'string') {
|
36
|
+
throw new MarkdownTableError("Cell at row ".concat(rowIndex + 1, ", column ").concat(cellIndex + 1, " must be a string."));
|
37
|
+
}
|
38
|
+
});
|
39
|
+
});
|
40
|
+
// Validate columnAlignments if provided
|
41
|
+
if (columnAlignments) {
|
42
|
+
if (!Array.isArray(columnAlignments)) {
|
43
|
+
throw new MarkdownTableError("'columnAlignments' must be an array of alignment strings.");
|
44
|
+
}
|
45
|
+
var validAlignments_1 = ['left', 'center', 'right', 'none'];
|
46
|
+
columnAlignments.forEach(function (alignment, index) {
|
47
|
+
if (!validAlignments_1.includes(alignment)) {
|
48
|
+
throw new MarkdownTableError("Invalid alignment '".concat(alignment, "' at index ").concat(index, ". Valid options are 'left', 'center', 'right', 'none'."));
|
49
|
+
}
|
50
|
+
});
|
51
|
+
}
|
52
|
+
// Validate isCompact
|
53
|
+
if (typeof isCompact !== 'boolean') {
|
54
|
+
throw new MarkdownTableError("'isCompact' must be a boolean.");
|
55
|
+
}
|
56
|
+
// Validate hasTabs
|
57
|
+
if (typeof hasTabs !== 'boolean') {
|
58
|
+
throw new MarkdownTableError("'hasTabs' must be a boolean.");
|
59
|
+
}
|
60
|
+
// Validate canReplaceNewlines
|
61
|
+
if (typeof canReplaceNewlines !== 'boolean') {
|
62
|
+
throw new MarkdownTableError("'canReplaceNewlines' must be a boolean.");
|
63
|
+
}
|
64
|
+
}
|
65
|
+
//# sourceMappingURL=validation.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "react-markdown-table-ts",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.3.0",
|
4
4
|
"description": "A React component that converts structured data into Markdown table syntax and displays it within a `<pre>` tag.",
|
5
5
|
"main": "dist/index.cjs.js",
|
6
6
|
"module": "dist/index.esm.js",
|
@@ -56,6 +56,7 @@
|
|
56
56
|
"@types/react": "^18.3.8",
|
57
57
|
"@types/react-dom": "^18.3.0",
|
58
58
|
"gts": "^5.3.1",
|
59
|
+
"identity-obj-proxy": "^3.0.0",
|
59
60
|
"jest": "^29.7.0",
|
60
61
|
"jest-environment-jsdom": "^29.7.0",
|
61
62
|
"react": "^18.2.0",
|