react-markdown-table-ts 0.3.14 → 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 -63
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +50 -63
- 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,45 +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
|
-
return
|
4090
|
+
});
|
4091
|
+
return widths;
|
4116
4092
|
}
|
4117
4093
|
/**
|
4118
4094
|
* Formats a single row into a Markdown-formatted string.
|
@@ -4124,8 +4100,8 @@ function calculateColumnWidths(inputDataRows, maxColumnCount, minWidth, canRepla
|
|
4124
4100
|
* @param canReplaceNewlines - Flag to replace newlines with <br> tags.
|
4125
4101
|
* @returns The Markdown string for the row.
|
4126
4102
|
*/
|
4127
|
-
function
|
4128
|
-
var _a, _b
|
4103
|
+
function formatMarkdownRow(columnCount, currentRow, columnAlignments, columnWidths, useTabs, canReplaceNewlines) {
|
4104
|
+
var _a, _b;
|
4129
4105
|
if (useTabs === void 0) { useTabs = false; }
|
4130
4106
|
if (canReplaceNewlines === void 0) { canReplaceNewlines = false; }
|
4131
4107
|
var defaultAlignment = 'left';
|
@@ -4134,22 +4110,23 @@ function formatMarkdownTableBody(columnCount, currentRow, columnAlignments, colu
|
|
4134
4110
|
var markdownRow = '|';
|
4135
4111
|
for (var i = 0; i < columnCount; i++) {
|
4136
4112
|
var cell = (_a = currentRow[i]) !== null && _a !== void 0 ? _a : '';
|
4113
|
+
if (canReplaceNewlines) {
|
4114
|
+
cell = replaceNewlinesInCell(cell);
|
4115
|
+
}
|
4137
4116
|
var alignment = (_b = adjustedAlignments[i]) !== null && _b !== void 0 ? _b : defaultAlignment;
|
4138
|
-
|
4139
|
-
// Safe access to columnWidths with fallback
|
4140
|
-
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;
|
4141
4118
|
if (alignment === 'right') {
|
4142
|
-
markdownRow += "".concat(cell.padStart(targetWidth)).concat(useTabs ? '\t' : '', "|");
|
4119
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(cell.padStart(targetWidth)).concat(useTabs ? '\t' : ' ', "|");
|
4143
4120
|
}
|
4144
4121
|
else if (alignment === 'center') {
|
4145
4122
|
var totalPadding = targetWidth - cell.length;
|
4146
4123
|
var paddingLeft = Math.floor(totalPadding / 2);
|
4147
4124
|
var paddingRight = totalPadding - paddingLeft;
|
4148
|
-
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' : ' ', "|");
|
4149
4126
|
}
|
4150
4127
|
else {
|
4151
4128
|
// Left alignment or default
|
4152
|
-
markdownRow += "".concat(cell.padEnd(targetWidth)).concat(useTabs ? '\t' : '', "|");
|
4129
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(cell.padEnd(targetWidth)).concat(useTabs ? '\t' : ' ', "|");
|
4153
4130
|
}
|
4154
4131
|
}
|
4155
4132
|
return markdownRow;
|
@@ -4162,7 +4139,7 @@ function formatMarkdownTableBody(columnCount, currentRow, columnAlignments, colu
|
|
4162
4139
|
* @param useTabs - Flag to use tabs between columns.
|
4163
4140
|
* @returns The Markdown string for the alignment row.
|
4164
4141
|
*/
|
4165
|
-
function
|
4142
|
+
function formatAlignmentRow(columnCount, columnAlignments, columnWidths, useTabs) {
|
4166
4143
|
var _a;
|
4167
4144
|
if (useTabs === void 0) { useTabs = false; }
|
4168
4145
|
var defaultAlignment = 'left';
|
@@ -4187,7 +4164,7 @@ function formatMarkdownTableAlignmentRow(columnCount, columnAlignments, columnWi
|
|
4187
4164
|
alignIndicator = "".concat('-'.repeat(targetWidth));
|
4188
4165
|
break;
|
4189
4166
|
}
|
4190
|
-
alignmentRow += "".concat(alignIndicator).concat(useTabs ? '\t' : '', "|");
|
4167
|
+
alignmentRow += "".concat(useTabs ? '\t' : ' ').concat(alignIndicator).concat(useTabs ? '\t' : ' ', "|");
|
4191
4168
|
}
|
4192
4169
|
return alignmentRow;
|
4193
4170
|
}
|
@@ -4204,23 +4181,29 @@ function generateMarkdownTableString(inputData, columnAlignments, canAdjustColum
|
|
4204
4181
|
if (canAdjustColumnWidths === void 0) { canAdjustColumnWidths = true; }
|
4205
4182
|
if (useTabs === void 0) { useTabs = false; }
|
4206
4183
|
if (replaceNewlines === void 0) { replaceNewlines = false; }
|
4207
|
-
var headerColumnCount = inputData.
|
4208
|
-
var bodyColumnCounts = inputData.
|
4184
|
+
var headerColumnCount = inputData.inputDataHeader.length;
|
4185
|
+
var bodyColumnCounts = inputData.inputDataBody.map(function (currentRow) { return currentRow.length; });
|
4209
4186
|
var maxColumnCount = Math.max.apply(Math, __spreadArray([headerColumnCount], bodyColumnCounts, false));
|
4210
4187
|
var columnWidths = canAdjustColumnWidths
|
4211
|
-
? calculateColumnWidths(__spreadArray([inputData.
|
4212
|
-
true // canReplaceNewlines (set this to true or false based on your logic)
|
4213
|
-
)
|
4188
|
+
? calculateColumnWidths(__spreadArray([inputData.inputDataHeader], inputData.inputDataBody, true), maxColumnCount)
|
4214
4189
|
: undefined;
|
4215
|
-
var markdownHeaderRow =
|
4216
|
-
var markdownAlignmentRow =
|
4217
|
-
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
|
4218
4193
|
.map(function (currentRow) {
|
4219
|
-
return
|
4194
|
+
return formatMarkdownRow(maxColumnCount, currentRow, columnAlignments, columnWidths, useTabs, replaceNewlines);
|
4220
4195
|
})
|
4221
4196
|
.join('\n');
|
4222
4197
|
return "".concat(markdownHeaderRow, "\n").concat(markdownAlignmentRow, "\n").concat(markdownBodyRows).trimEnd();
|
4223
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
|
+
}
|
4224
4207
|
/**
|
4225
4208
|
* Converts a zero-based column index to its corresponding Excel-style column name.
|
4226
4209
|
* For example, 0 -> 'A', 1 -> 'B', ..., 25 -> 'Z', 26 -> 'AA', etc.
|
@@ -4250,14 +4233,14 @@ function generateAlphabetHeaders(columnCount) {
|
|
4250
4233
|
}
|
4251
4234
|
|
4252
4235
|
// CSS styles
|
4253
|
-
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";
|
4254
4237
|
var MarkdownTable = function (_a) {
|
4255
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;
|
4256
4239
|
var adjustColumnWidths = !isCompact;
|
4257
4240
|
var preElementRef = require$$0.useRef(null);
|
4258
4241
|
var markdownTableSyntax = require$$0.useMemo(function () {
|
4259
4242
|
if (inputData === null) {
|
4260
|
-
return '
|
4243
|
+
return 'Error: No data provided for the table.';
|
4261
4244
|
}
|
4262
4245
|
try {
|
4263
4246
|
if (!Array.isArray(inputData) || inputData.length === 0) {
|
@@ -4265,12 +4248,12 @@ var MarkdownTable = function (_a) {
|
|
4265
4248
|
}
|
4266
4249
|
var tableData = hasHeader
|
4267
4250
|
? {
|
4268
|
-
|
4269
|
-
|
4251
|
+
inputDataHeader: inputData[0],
|
4252
|
+
inputDataBody: inputData.slice(1),
|
4270
4253
|
}
|
4271
4254
|
: {
|
4272
|
-
|
4273
|
-
|
4255
|
+
inputDataHeader: generateAlphabetHeaders(inputData[0].length),
|
4256
|
+
inputDataBody: inputData,
|
4274
4257
|
};
|
4275
4258
|
return generateMarkdownTableString(tableData, columnAlignments, adjustColumnWidths, hasTabs, canReplaceNewlines);
|
4276
4259
|
}
|
@@ -4296,8 +4279,12 @@ var MarkdownTable = function (_a) {
|
|
4296
4279
|
}
|
4297
4280
|
}, [markdownTableSyntax, onTableCreate]);
|
4298
4281
|
require$$0.useEffect(function () {
|
4299
|
-
|
4300
|
-
|
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
|
+
});
|
4301
4288
|
}
|
4302
4289
|
}, [markdownTableSyntax]);
|
4303
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 }) })] }));
|