react-markdown-table-ts 0.3.15 → 0.4.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/index.cjs.js +50 -64
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +50 -64
- package/dist/index.esm.js.map +1 -1
- package/dist/types.d.ts +6 -6
- package/dist/utils.d.ts +14 -10
- package/package.json +75 -75
- package/dist/jest.setup.d.ts +0 -2
- package/dist/jest.setup.js +0 -3
- package/dist/jest.setup.js.map +0 -1
- package/dist/src/index.d.ts +0 -5
- package/dist/src/index.js +0 -62
- package/dist/src/index.js.map +0 -1
- package/dist/src/types.d.ts +0 -56
- package/dist/src/types.js +0 -3
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils.d.ts +0 -58
- package/dist/src/utils.js +0 -179
- package/dist/src/utils.js.map +0 -1
- package/dist/src/validation.d.ts +0 -13
- package/dist/src/validation.js +0 -93
- package/dist/src/validation.js.map +0 -1
- package/dist/test/MarkdownTable.test.d.ts +0 -1
- package/dist/test/MarkdownTable.test.js +0 -91
- package/dist/test/MarkdownTable.test.js.map +0 -1
- package/dist/test/utils.test.d.ts +0 -1
- package/dist/test/utils.test.js +0 -238
- package/dist/test/utils.test.js.map +0 -1
- package/dist/test/validation.test.d.ts +0 -1
- package/dist/test/validation.test.js +0 -86
- package/dist/test/validation.test.js.map +0 -1
package/dist/index.cjs.js
CHANGED
@@ -4074,46 +4074,21 @@ var MarkdownTableError = /** @class */ (function (_super) {
|
|
4074
4074
|
|
4075
4075
|
// src/utils.ts
|
4076
4076
|
/**
|
4077
|
-
* Calculates the maximum width for each column based on the content
|
4078
|
-
* @param
|
4079
|
-
* @param maxColumnCount - The maximum number of columns in the
|
4080
|
-
* @param minWidth - The minimum width for each column. Defaults to 3.
|
4081
|
-
* @param canReplaceNewlines - Whether to replace newlines with '<br>' (affects width) or a space.
|
4077
|
+
* Calculates the maximum width for each column based on the content.
|
4078
|
+
* @param tableRows - All rows (header and body) of the table.
|
4079
|
+
* @param maxColumnCount - The maximum number of columns in the table.
|
4082
4080
|
* @returns An array of maximum widths for each column.
|
4083
4081
|
*/
|
4084
|
-
function calculateColumnWidths(
|
4085
|
-
|
4086
|
-
|
4087
|
-
|
4088
|
-
|
4089
|
-
|
4090
|
-
|
4091
|
-
// Iterate over each column index up to maxColumnCount.
|
4092
|
-
for (var columnIndex = 0; columnIndex < maxColumnCount; columnIndex++) {
|
4093
|
-
// Retrieve the cell value; default to an empty string if undefined or null.
|
4094
|
-
var cellValue = currentRow[columnIndex];
|
4095
|
-
var cellString = cellValue !== null && cellValue !== undefined ? String(cellValue) : '';
|
4096
|
-
if (canReplaceNewlines) {
|
4097
|
-
// Replace newlines with <br>, which increases the length by 3 per newline.
|
4098
|
-
var replacedString = cellString.replace(/\n/g, '<br>');
|
4099
|
-
var adjustedLength = replacedString.length;
|
4100
|
-
// Update the column width if the adjusted length is greater.
|
4101
|
-
if (adjustedLength > columnWidths[columnIndex]) {
|
4102
|
-
columnWidths[columnIndex] = adjustedLength;
|
4103
|
-
}
|
4104
|
-
}
|
4105
|
-
else {
|
4106
|
-
// Replace newlines with a space and calculate the length.
|
4107
|
-
cellString = cellString.replace(/\n/g, ' ');
|
4108
|
-
// Update the column width if the current cell's length is greater.
|
4109
|
-
if (cellString.length > columnWidths[columnIndex]) {
|
4110
|
-
columnWidths[columnIndex] = cellString.length;
|
4111
|
-
}
|
4112
|
-
}
|
4082
|
+
function calculateColumnWidths(tableRows, maxColumnCount) {
|
4083
|
+
var widths = new Array(maxColumnCount).fill(3); // Minimum width of 3 for each column.
|
4084
|
+
tableRows.forEach(function (currentRow) {
|
4085
|
+
var _a;
|
4086
|
+
for (var i = 0; i < maxColumnCount; i++) {
|
4087
|
+
var cell = (_a = currentRow[i]) !== null && _a !== void 0 ? _a : '';
|
4088
|
+
widths[i] = Math.max(widths[i], cell.length);
|
4113
4089
|
}
|
4114
|
-
}
|
4115
|
-
|
4116
|
-
return columnWidths;
|
4090
|
+
});
|
4091
|
+
return widths;
|
4117
4092
|
}
|
4118
4093
|
/**
|
4119
4094
|
* Formats a single row into a Markdown-formatted string.
|
@@ -4125,8 +4100,8 @@ function calculateColumnWidths(inputDataRows, maxColumnCount, minWidth, canRepla
|
|
4125
4100
|
* @param canReplaceNewlines - Flag to replace newlines with <br> tags.
|
4126
4101
|
* @returns The Markdown string for the row.
|
4127
4102
|
*/
|
4128
|
-
function
|
4129
|
-
var _a, _b
|
4103
|
+
function formatMarkdownRow(columnCount, currentRow, columnAlignments, columnWidths, useTabs, canReplaceNewlines) {
|
4104
|
+
var _a, _b;
|
4130
4105
|
if (useTabs === void 0) { useTabs = false; }
|
4131
4106
|
if (canReplaceNewlines === void 0) { canReplaceNewlines = false; }
|
4132
4107
|
var defaultAlignment = 'left';
|
@@ -4135,22 +4110,23 @@ function formatMarkdownTableBody(columnCount, currentRow, columnAlignments, colu
|
|
4135
4110
|
var markdownRow = '|';
|
4136
4111
|
for (var i = 0; i < columnCount; i++) {
|
4137
4112
|
var cell = (_a = currentRow[i]) !== null && _a !== void 0 ? _a : '';
|
4113
|
+
if (canReplaceNewlines) {
|
4114
|
+
cell = replaceNewlinesInCell(cell);
|
4115
|
+
}
|
4138
4116
|
var alignment = (_b = adjustedAlignments[i]) !== null && _b !== void 0 ? _b : defaultAlignment;
|
4139
|
-
|
4140
|
-
// Safe access to columnWidths with fallback
|
4141
|
-
var targetWidth = (_c = columnWidths === null || columnWidths === void 0 ? void 0 : columnWidths[i]) !== null && _c !== void 0 ? _c : cell.length;
|
4117
|
+
var targetWidth = columnWidths ? columnWidths[i] : cell.length;
|
4142
4118
|
if (alignment === 'right') {
|
4143
|
-
markdownRow += "".concat(cell.padStart(targetWidth)).concat(useTabs ? '\t' : '', "|");
|
4119
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(cell.padStart(targetWidth)).concat(useTabs ? '\t' : ' ', "|");
|
4144
4120
|
}
|
4145
4121
|
else if (alignment === 'center') {
|
4146
4122
|
var totalPadding = targetWidth - cell.length;
|
4147
4123
|
var paddingLeft = Math.floor(totalPadding / 2);
|
4148
4124
|
var paddingRight = totalPadding - paddingLeft;
|
4149
|
-
markdownRow += "".concat(' '.repeat(paddingLeft)).concat(cell).concat(' '.repeat(paddingRight)).concat(useTabs ? '\t' : '', "|");
|
4125
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(' '.repeat(paddingLeft)).concat(cell).concat(' '.repeat(paddingRight)).concat(useTabs ? '\t' : ' ', "|");
|
4150
4126
|
}
|
4151
4127
|
else {
|
4152
4128
|
// Left alignment or default
|
4153
|
-
markdownRow += "".concat(cell.padEnd(targetWidth)).concat(useTabs ? '\t' : '', "|");
|
4129
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(cell.padEnd(targetWidth)).concat(useTabs ? '\t' : ' ', "|");
|
4154
4130
|
}
|
4155
4131
|
}
|
4156
4132
|
return markdownRow;
|
@@ -4163,7 +4139,7 @@ function formatMarkdownTableBody(columnCount, currentRow, columnAlignments, colu
|
|
4163
4139
|
* @param useTabs - Flag to use tabs between columns.
|
4164
4140
|
* @returns The Markdown string for the alignment row.
|
4165
4141
|
*/
|
4166
|
-
function
|
4142
|
+
function formatAlignmentRow(columnCount, columnAlignments, columnWidths, useTabs) {
|
4167
4143
|
var _a;
|
4168
4144
|
if (useTabs === void 0) { useTabs = false; }
|
4169
4145
|
var defaultAlignment = 'left';
|
@@ -4188,7 +4164,7 @@ function formatMarkdownTableAlignmentRow(columnCount, columnAlignments, columnWi
|
|
4188
4164
|
alignIndicator = "".concat('-'.repeat(targetWidth));
|
4189
4165
|
break;
|
4190
4166
|
}
|
4191
|
-
alignmentRow += "".concat(alignIndicator).concat(useTabs ? '\t' : '', "|");
|
4167
|
+
alignmentRow += "".concat(useTabs ? '\t' : ' ').concat(alignIndicator).concat(useTabs ? '\t' : ' ', "|");
|
4192
4168
|
}
|
4193
4169
|
return alignmentRow;
|
4194
4170
|
}
|
@@ -4205,23 +4181,29 @@ function generateMarkdownTableString(inputData, columnAlignments, canAdjustColum
|
|
4205
4181
|
if (canAdjustColumnWidths === void 0) { canAdjustColumnWidths = true; }
|
4206
4182
|
if (useTabs === void 0) { useTabs = false; }
|
4207
4183
|
if (replaceNewlines === void 0) { replaceNewlines = false; }
|
4208
|
-
var headerColumnCount = inputData.
|
4209
|
-
var bodyColumnCounts = inputData.
|
4184
|
+
var headerColumnCount = inputData.inputDataHeader.length;
|
4185
|
+
var bodyColumnCounts = inputData.inputDataBody.map(function (currentRow) { return currentRow.length; });
|
4210
4186
|
var maxColumnCount = Math.max.apply(Math, __spreadArray([headerColumnCount], bodyColumnCounts, false));
|
4211
4187
|
var columnWidths = canAdjustColumnWidths
|
4212
|
-
? calculateColumnWidths(__spreadArray([inputData.
|
4213
|
-
replaceNewlines // Pass replaceNewlines here
|
4214
|
-
)
|
4188
|
+
? calculateColumnWidths(__spreadArray([inputData.inputDataHeader], inputData.inputDataBody, true), maxColumnCount)
|
4215
4189
|
: undefined;
|
4216
|
-
var markdownHeaderRow =
|
4217
|
-
var markdownAlignmentRow =
|
4218
|
-
var markdownBodyRows = inputData.
|
4190
|
+
var markdownHeaderRow = formatMarkdownRow(maxColumnCount, inputData.inputDataHeader, columnAlignments, columnWidths, useTabs, replaceNewlines);
|
4191
|
+
var markdownAlignmentRow = formatAlignmentRow(maxColumnCount, columnAlignments, columnWidths, useTabs);
|
4192
|
+
var markdownBodyRows = inputData.inputDataBody
|
4219
4193
|
.map(function (currentRow) {
|
4220
|
-
return
|
4194
|
+
return formatMarkdownRow(maxColumnCount, currentRow, columnAlignments, columnWidths, useTabs, replaceNewlines);
|
4221
4195
|
})
|
4222
4196
|
.join('\n');
|
4223
4197
|
return "".concat(markdownHeaderRow, "\n").concat(markdownAlignmentRow, "\n").concat(markdownBodyRows).trimEnd();
|
4224
4198
|
}
|
4199
|
+
/**
|
4200
|
+
* Replaces newline characters in a string with <br> tags.
|
4201
|
+
* @param cell - The cell content to process.
|
4202
|
+
* @returns The processed cell content with newlines replaced.
|
4203
|
+
*/
|
4204
|
+
function replaceNewlinesInCell(cell) {
|
4205
|
+
return cell.replace(/\n/g, '<br>');
|
4206
|
+
}
|
4225
4207
|
/**
|
4226
4208
|
* Converts a zero-based column index to its corresponding Excel-style column name.
|
4227
4209
|
* For example, 0 -> 'A', 1 -> 'B', ..., 25 -> 'Z', 26 -> 'AA', etc.
|
@@ -4251,14 +4233,14 @@ function generateAlphabetHeaders(columnCount) {
|
|
4251
4233
|
}
|
4252
4234
|
|
4253
4235
|
// CSS styles
|
4254
|
-
var PRISM_CSS = "\ncode[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco
|
4236
|
+
var PRISM_CSS = "\ncode[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}\n";
|
4255
4237
|
var MarkdownTable = function (_a) {
|
4256
4238
|
var _b = _a.inputData, inputData = _b === void 0 ? null : _b, _c = _a.hasHeader, hasHeader = _c === void 0 ? true : _c, _d = _a.columnAlignments, columnAlignments = _d === void 0 ? [] : _d, _e = _a.isCompact, isCompact = _e === void 0 ? false : _e, _f = _a.hasTabs, hasTabs = _f === void 0 ? false : _f, _g = _a.canReplaceNewlines, canReplaceNewlines = _g === void 0 ? false : _g, className = _a.className, onTableCreate = _a.onTableCreate;
|
4257
4239
|
var adjustColumnWidths = !isCompact;
|
4258
4240
|
var preElementRef = require$$0.useRef(null);
|
4259
4241
|
var markdownTableSyntax = require$$0.useMemo(function () {
|
4260
4242
|
if (inputData === null) {
|
4261
|
-
return '
|
4243
|
+
return 'Error: No data provided for the table.';
|
4262
4244
|
}
|
4263
4245
|
try {
|
4264
4246
|
if (!Array.isArray(inputData) || inputData.length === 0) {
|
@@ -4266,12 +4248,12 @@ var MarkdownTable = function (_a) {
|
|
4266
4248
|
}
|
4267
4249
|
var tableData = hasHeader
|
4268
4250
|
? {
|
4269
|
-
|
4270
|
-
|
4251
|
+
inputDataHeader: inputData[0],
|
4252
|
+
inputDataBody: inputData.slice(1),
|
4271
4253
|
}
|
4272
4254
|
: {
|
4273
|
-
|
4274
|
-
|
4255
|
+
inputDataHeader: generateAlphabetHeaders(inputData[0].length),
|
4256
|
+
inputDataBody: inputData,
|
4275
4257
|
};
|
4276
4258
|
return generateMarkdownTableString(tableData, columnAlignments, adjustColumnWidths, hasTabs, canReplaceNewlines);
|
4277
4259
|
}
|
@@ -4297,8 +4279,12 @@ var MarkdownTable = function (_a) {
|
|
4297
4279
|
}
|
4298
4280
|
}, [markdownTableSyntax, onTableCreate]);
|
4299
4281
|
require$$0.useEffect(function () {
|
4300
|
-
|
4301
|
-
|
4282
|
+
var _a;
|
4283
|
+
var codeElement = (_a = preElementRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('code');
|
4284
|
+
if (codeElement && markdownTableSyntax) {
|
4285
|
+
requestAnimationFrame(function () {
|
4286
|
+
Prism$1.highlightElement(codeElement);
|
4287
|
+
});
|
4302
4288
|
}
|
4303
4289
|
}, [markdownTableSyntax]);
|
4304
4290
|
return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("style", { children: PRISM_CSS }), jsxRuntimeExports.jsx("pre", { ref: preElementRef, className: "".concat(className, " language-markdown line-numbers"), children: jsxRuntimeExports.jsx("code", { className: "language-markdown", role: "code", children: markdownTableSyntax }) })] }));
|