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.d.ts
CHANGED
package/dist/index.esm.js
CHANGED
@@ -4066,46 +4066,21 @@ var MarkdownTableError = /** @class */ (function (_super) {
|
|
4066
4066
|
|
4067
4067
|
// src/utils.ts
|
4068
4068
|
/**
|
4069
|
-
* Calculates the maximum width for each column based on the content
|
4070
|
-
* @param
|
4071
|
-
* @param maxColumnCount - The maximum number of columns in the
|
4072
|
-
* @param minWidth - The minimum width for each column. Defaults to 3.
|
4073
|
-
* @param canReplaceNewlines - Whether to replace newlines with '<br>' (affects width) or a space.
|
4069
|
+
* Calculates the maximum width for each column based on the content.
|
4070
|
+
* @param tableRows - All rows (header and body) of the table.
|
4071
|
+
* @param maxColumnCount - The maximum number of columns in the table.
|
4074
4072
|
* @returns An array of maximum widths for each column.
|
4075
4073
|
*/
|
4076
|
-
function calculateColumnWidths(
|
4077
|
-
|
4078
|
-
|
4079
|
-
|
4080
|
-
|
4081
|
-
|
4082
|
-
|
4083
|
-
// Iterate over each column index up to maxColumnCount.
|
4084
|
-
for (var columnIndex = 0; columnIndex < maxColumnCount; columnIndex++) {
|
4085
|
-
// Retrieve the cell value; default to an empty string if undefined or null.
|
4086
|
-
var cellValue = currentRow[columnIndex];
|
4087
|
-
var cellString = cellValue !== null && cellValue !== undefined ? String(cellValue) : '';
|
4088
|
-
if (canReplaceNewlines) {
|
4089
|
-
// Replace newlines with <br>, which increases the length by 3 per newline.
|
4090
|
-
var replacedString = cellString.replace(/\n/g, '<br>');
|
4091
|
-
var adjustedLength = replacedString.length;
|
4092
|
-
// Update the column width if the adjusted length is greater.
|
4093
|
-
if (adjustedLength > columnWidths[columnIndex]) {
|
4094
|
-
columnWidths[columnIndex] = adjustedLength;
|
4095
|
-
}
|
4096
|
-
}
|
4097
|
-
else {
|
4098
|
-
// Replace newlines with a space and calculate the length.
|
4099
|
-
cellString = cellString.replace(/\n/g, ' ');
|
4100
|
-
// Update the column width if the current cell's length is greater.
|
4101
|
-
if (cellString.length > columnWidths[columnIndex]) {
|
4102
|
-
columnWidths[columnIndex] = cellString.length;
|
4103
|
-
}
|
4104
|
-
}
|
4074
|
+
function calculateColumnWidths(tableRows, maxColumnCount) {
|
4075
|
+
var widths = new Array(maxColumnCount).fill(3); // Minimum width of 3 for each column.
|
4076
|
+
tableRows.forEach(function (currentRow) {
|
4077
|
+
var _a;
|
4078
|
+
for (var i = 0; i < maxColumnCount; i++) {
|
4079
|
+
var cell = (_a = currentRow[i]) !== null && _a !== void 0 ? _a : '';
|
4080
|
+
widths[i] = Math.max(widths[i], cell.length);
|
4105
4081
|
}
|
4106
|
-
}
|
4107
|
-
|
4108
|
-
return columnWidths;
|
4082
|
+
});
|
4083
|
+
return widths;
|
4109
4084
|
}
|
4110
4085
|
/**
|
4111
4086
|
* Formats a single row into a Markdown-formatted string.
|
@@ -4117,8 +4092,8 @@ function calculateColumnWidths(inputDataRows, maxColumnCount, minWidth, canRepla
|
|
4117
4092
|
* @param canReplaceNewlines - Flag to replace newlines with <br> tags.
|
4118
4093
|
* @returns The Markdown string for the row.
|
4119
4094
|
*/
|
4120
|
-
function
|
4121
|
-
var _a, _b
|
4095
|
+
function formatMarkdownRow(columnCount, currentRow, columnAlignments, columnWidths, useTabs, canReplaceNewlines) {
|
4096
|
+
var _a, _b;
|
4122
4097
|
if (useTabs === void 0) { useTabs = false; }
|
4123
4098
|
if (canReplaceNewlines === void 0) { canReplaceNewlines = false; }
|
4124
4099
|
var defaultAlignment = 'left';
|
@@ -4127,22 +4102,23 @@ function formatMarkdownTableBody(columnCount, currentRow, columnAlignments, colu
|
|
4127
4102
|
var markdownRow = '|';
|
4128
4103
|
for (var i = 0; i < columnCount; i++) {
|
4129
4104
|
var cell = (_a = currentRow[i]) !== null && _a !== void 0 ? _a : '';
|
4105
|
+
if (canReplaceNewlines) {
|
4106
|
+
cell = replaceNewlinesInCell(cell);
|
4107
|
+
}
|
4130
4108
|
var alignment = (_b = adjustedAlignments[i]) !== null && _b !== void 0 ? _b : defaultAlignment;
|
4131
|
-
|
4132
|
-
// Safe access to columnWidths with fallback
|
4133
|
-
var targetWidth = (_c = columnWidths === null || columnWidths === void 0 ? void 0 : columnWidths[i]) !== null && _c !== void 0 ? _c : cell.length;
|
4109
|
+
var targetWidth = columnWidths ? columnWidths[i] : cell.length;
|
4134
4110
|
if (alignment === 'right') {
|
4135
|
-
markdownRow += "".concat(cell.padStart(targetWidth)).concat(useTabs ? '\t' : '', "|");
|
4111
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(cell.padStart(targetWidth)).concat(useTabs ? '\t' : ' ', "|");
|
4136
4112
|
}
|
4137
4113
|
else if (alignment === 'center') {
|
4138
4114
|
var totalPadding = targetWidth - cell.length;
|
4139
4115
|
var paddingLeft = Math.floor(totalPadding / 2);
|
4140
4116
|
var paddingRight = totalPadding - paddingLeft;
|
4141
|
-
markdownRow += "".concat(' '.repeat(paddingLeft)).concat(cell).concat(' '.repeat(paddingRight)).concat(useTabs ? '\t' : '', "|");
|
4117
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(' '.repeat(paddingLeft)).concat(cell).concat(' '.repeat(paddingRight)).concat(useTabs ? '\t' : ' ', "|");
|
4142
4118
|
}
|
4143
4119
|
else {
|
4144
4120
|
// Left alignment or default
|
4145
|
-
markdownRow += "".concat(cell.padEnd(targetWidth)).concat(useTabs ? '\t' : '', "|");
|
4121
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(cell.padEnd(targetWidth)).concat(useTabs ? '\t' : ' ', "|");
|
4146
4122
|
}
|
4147
4123
|
}
|
4148
4124
|
return markdownRow;
|
@@ -4155,7 +4131,7 @@ function formatMarkdownTableBody(columnCount, currentRow, columnAlignments, colu
|
|
4155
4131
|
* @param useTabs - Flag to use tabs between columns.
|
4156
4132
|
* @returns The Markdown string for the alignment row.
|
4157
4133
|
*/
|
4158
|
-
function
|
4134
|
+
function formatAlignmentRow(columnCount, columnAlignments, columnWidths, useTabs) {
|
4159
4135
|
var _a;
|
4160
4136
|
if (useTabs === void 0) { useTabs = false; }
|
4161
4137
|
var defaultAlignment = 'left';
|
@@ -4180,7 +4156,7 @@ function formatMarkdownTableAlignmentRow(columnCount, columnAlignments, columnWi
|
|
4180
4156
|
alignIndicator = "".concat('-'.repeat(targetWidth));
|
4181
4157
|
break;
|
4182
4158
|
}
|
4183
|
-
alignmentRow += "".concat(alignIndicator).concat(useTabs ? '\t' : '', "|");
|
4159
|
+
alignmentRow += "".concat(useTabs ? '\t' : ' ').concat(alignIndicator).concat(useTabs ? '\t' : ' ', "|");
|
4184
4160
|
}
|
4185
4161
|
return alignmentRow;
|
4186
4162
|
}
|
@@ -4197,23 +4173,29 @@ function generateMarkdownTableString(inputData, columnAlignments, canAdjustColum
|
|
4197
4173
|
if (canAdjustColumnWidths === void 0) { canAdjustColumnWidths = true; }
|
4198
4174
|
if (useTabs === void 0) { useTabs = false; }
|
4199
4175
|
if (replaceNewlines === void 0) { replaceNewlines = false; }
|
4200
|
-
var headerColumnCount = inputData.
|
4201
|
-
var bodyColumnCounts = inputData.
|
4176
|
+
var headerColumnCount = inputData.inputDataHeader.length;
|
4177
|
+
var bodyColumnCounts = inputData.inputDataBody.map(function (currentRow) { return currentRow.length; });
|
4202
4178
|
var maxColumnCount = Math.max.apply(Math, __spreadArray([headerColumnCount], bodyColumnCounts, false));
|
4203
4179
|
var columnWidths = canAdjustColumnWidths
|
4204
|
-
? calculateColumnWidths(__spreadArray([inputData.
|
4205
|
-
replaceNewlines // Pass replaceNewlines here
|
4206
|
-
)
|
4180
|
+
? calculateColumnWidths(__spreadArray([inputData.inputDataHeader], inputData.inputDataBody, true), maxColumnCount)
|
4207
4181
|
: undefined;
|
4208
|
-
var markdownHeaderRow =
|
4209
|
-
var markdownAlignmentRow =
|
4210
|
-
var markdownBodyRows = inputData.
|
4182
|
+
var markdownHeaderRow = formatMarkdownRow(maxColumnCount, inputData.inputDataHeader, columnAlignments, columnWidths, useTabs, replaceNewlines);
|
4183
|
+
var markdownAlignmentRow = formatAlignmentRow(maxColumnCount, columnAlignments, columnWidths, useTabs);
|
4184
|
+
var markdownBodyRows = inputData.inputDataBody
|
4211
4185
|
.map(function (currentRow) {
|
4212
|
-
return
|
4186
|
+
return formatMarkdownRow(maxColumnCount, currentRow, columnAlignments, columnWidths, useTabs, replaceNewlines);
|
4213
4187
|
})
|
4214
4188
|
.join('\n');
|
4215
4189
|
return "".concat(markdownHeaderRow, "\n").concat(markdownAlignmentRow, "\n").concat(markdownBodyRows).trimEnd();
|
4216
4190
|
}
|
4191
|
+
/**
|
4192
|
+
* Replaces newline characters in a string with <br> tags.
|
4193
|
+
* @param cell - The cell content to process.
|
4194
|
+
* @returns The processed cell content with newlines replaced.
|
4195
|
+
*/
|
4196
|
+
function replaceNewlinesInCell(cell) {
|
4197
|
+
return cell.replace(/\n/g, '<br>');
|
4198
|
+
}
|
4217
4199
|
/**
|
4218
4200
|
* Converts a zero-based column index to its corresponding Excel-style column name.
|
4219
4201
|
* For example, 0 -> 'A', 1 -> 'B', ..., 25 -> 'Z', 26 -> 'AA', etc.
|
@@ -4243,14 +4225,14 @@ function generateAlphabetHeaders(columnCount) {
|
|
4243
4225
|
}
|
4244
4226
|
|
4245
4227
|
// CSS styles
|
4246
|
-
var PRISM_CSS = "\ncode[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco
|
4228
|
+
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";
|
4247
4229
|
var MarkdownTable = function (_a) {
|
4248
4230
|
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;
|
4249
4231
|
var adjustColumnWidths = !isCompact;
|
4250
4232
|
var preElementRef = useRef(null);
|
4251
4233
|
var markdownTableSyntax = useMemo(function () {
|
4252
4234
|
if (inputData === null) {
|
4253
|
-
return '
|
4235
|
+
return 'Error: No data provided for the table.';
|
4254
4236
|
}
|
4255
4237
|
try {
|
4256
4238
|
if (!Array.isArray(inputData) || inputData.length === 0) {
|
@@ -4258,12 +4240,12 @@ var MarkdownTable = function (_a) {
|
|
4258
4240
|
}
|
4259
4241
|
var tableData = hasHeader
|
4260
4242
|
? {
|
4261
|
-
|
4262
|
-
|
4243
|
+
inputDataHeader: inputData[0],
|
4244
|
+
inputDataBody: inputData.slice(1),
|
4263
4245
|
}
|
4264
4246
|
: {
|
4265
|
-
|
4266
|
-
|
4247
|
+
inputDataHeader: generateAlphabetHeaders(inputData[0].length),
|
4248
|
+
inputDataBody: inputData,
|
4267
4249
|
};
|
4268
4250
|
return generateMarkdownTableString(tableData, columnAlignments, adjustColumnWidths, hasTabs, canReplaceNewlines);
|
4269
4251
|
}
|
@@ -4289,8 +4271,12 @@ var MarkdownTable = function (_a) {
|
|
4289
4271
|
}
|
4290
4272
|
}, [markdownTableSyntax, onTableCreate]);
|
4291
4273
|
useEffect(function () {
|
4292
|
-
|
4293
|
-
|
4274
|
+
var _a;
|
4275
|
+
var codeElement = (_a = preElementRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('code');
|
4276
|
+
if (codeElement && markdownTableSyntax) {
|
4277
|
+
requestAnimationFrame(function () {
|
4278
|
+
Prism$1.highlightElement(codeElement);
|
4279
|
+
});
|
4294
4280
|
}
|
4295
4281
|
}, [markdownTableSyntax]);
|
4296
4282
|
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 }) })] }));
|