react-markdown-table-ts 0.5.8 → 0.5.9
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/README.md +65 -65
- package/dist/index.cjs.js +95 -116
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +95 -116
- package/dist/index.esm.js.map +1 -1
- package/dist/types.d.ts +0 -4
- package/dist/utils.d.ts +25 -28
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
@@ -4077,7 +4077,7 @@ var MarkdownTableError = /** @class */ (function (_super) {
|
|
4077
4077
|
function getAdjustedAlignments(columnAlignments, columnCount) {
|
4078
4078
|
var defaultAlignment = 'left';
|
4079
4079
|
return columnAlignments.length < columnCount
|
4080
|
-
? __spreadArray(__spreadArray([], columnAlignments, true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) :
|
4080
|
+
? __spreadArray(__spreadArray([], Array.from(columnAlignments), true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : Array.from(columnAlignments);
|
4081
4081
|
}
|
4082
4082
|
/**
|
4083
4083
|
* Calculates the maximum width for each column based on the content.
|
@@ -4098,20 +4098,28 @@ function calculateColumnWidths(tableRows, maxColumnCount) {
|
|
4098
4098
|
}
|
4099
4099
|
/**
|
4100
4100
|
* Formats a single row into a Markdown-formatted string.
|
4101
|
-
* @param
|
4101
|
+
* @param columnCount - The number of columns in the table.
|
4102
|
+
* @param currentRow - The data of the current row.
|
4103
|
+
* @param columnAlignments - Alignment settings for each column.
|
4104
|
+
* @param columnWidths - Widths of each column.
|
4105
|
+
* @param useTabs - Flag to use tabs between columns.
|
4106
|
+
* @param canReplaceNewlines - Flag to replace newlines with <br> tags.
|
4107
|
+
* @param hasPadding - Flag to add padding spaces around cell content.
|
4102
4108
|
* @returns The Markdown string for the row.
|
4103
4109
|
*/
|
4104
|
-
function formatMarkdownRow(
|
4105
|
-
var
|
4106
|
-
|
4110
|
+
function formatMarkdownRow(columnCount, currentRow, columnAlignments, columnWidths, useTabs, canReplaceNewlines, hasPadding) {
|
4111
|
+
var _a, _b;
|
4112
|
+
if (useTabs === void 0) { useTabs = false; }
|
4113
|
+
if (canReplaceNewlines === void 0) { canReplaceNewlines = false; }
|
4114
|
+
if (hasPadding === void 0) { hasPadding = true; }
|
4107
4115
|
var adjustedAlignments = getAdjustedAlignments(columnAlignments, columnCount);
|
4108
4116
|
var markdownRow = '|';
|
4109
4117
|
for (var i = 0; i < columnCount; i++) {
|
4110
|
-
var cell = (
|
4111
|
-
if (
|
4118
|
+
var cell = (_a = currentRow[i]) !== null && _a !== void 0 ? _a : '';
|
4119
|
+
if (canReplaceNewlines) {
|
4112
4120
|
cell = replaceNewlinesInCell(cell);
|
4113
4121
|
}
|
4114
|
-
var alignment = (
|
4122
|
+
var alignment = (_b = adjustedAlignments[i]) !== null && _b !== void 0 ? _b : 'left';
|
4115
4123
|
var targetWidth = columnWidths ? columnWidths[i] : cell.length;
|
4116
4124
|
var padding = hasPadding ? ' ' : '';
|
4117
4125
|
if (alignment === 'right') {
|
@@ -4130,70 +4138,70 @@ function formatMarkdownRow(_a) {
|
|
4130
4138
|
}
|
4131
4139
|
return markdownRow;
|
4132
4140
|
}
|
4133
|
-
|
4134
|
-
|
4135
|
-
|
4136
|
-
|
4137
|
-
|
4138
|
-
|
4139
|
-
|
4140
|
-
|
4141
|
-
|
4142
|
-
|
4143
|
-
|
4144
|
-
|
4145
|
-
|
4141
|
+
/**
|
4142
|
+
* Generates the alignment row for the Markdown table syntax.
|
4143
|
+
* @param columnCount - The number of columns in the table.
|
4144
|
+
* @param columnAlignments - Alignment settings for each column.
|
4145
|
+
* @param columnWidths - Widths of each column.
|
4146
|
+
* @param useTabs - Flag to use tabs between columns.
|
4147
|
+
* @param hasPadding - Flag to add padding spaces around cell content.
|
4148
|
+
* @returns The Markdown string for the alignment row.
|
4149
|
+
*/
|
4150
|
+
function formatAlignmentRow(columnCount, columnAlignments, columnWidths, useTabs, hasPadding) {
|
4151
|
+
var _a;
|
4152
|
+
if (useTabs === void 0) { useTabs = false; }
|
4153
|
+
if (hasPadding === void 0) { hasPadding = true; }
|
4146
4154
|
var adjustedAlignments = getAdjustedAlignments(columnAlignments, columnCount);
|
4147
|
-
var
|
4148
|
-
var
|
4149
|
-
var _a, _b;
|
4155
|
+
var alignmentRow = '|';
|
4156
|
+
for (var i = 0; i < columnCount; i++) {
|
4150
4157
|
var alignment = (_a = adjustedAlignments[i]) !== null && _a !== void 0 ? _a : 'left';
|
4151
|
-
var targetWidth =
|
4152
|
-
var alignIndicator =
|
4153
|
-
|
4154
|
-
|
4155
|
-
|
4158
|
+
var targetWidth = columnWidths ? columnWidths[i] : 3;
|
4159
|
+
var alignIndicator = '';
|
4160
|
+
var padding = hasPadding ? ' ' : '';
|
4161
|
+
switch (alignment) {
|
4162
|
+
case 'left':
|
4163
|
+
alignIndicator = ":".concat('-'.repeat(targetWidth - 1));
|
4164
|
+
break;
|
4165
|
+
case 'center':
|
4166
|
+
alignIndicator = ":".concat('-'.repeat(targetWidth - 2), ":");
|
4167
|
+
break;
|
4168
|
+
case 'right':
|
4169
|
+
alignIndicator = "".concat('-'.repeat(targetWidth - 1), ":");
|
4170
|
+
break;
|
4171
|
+
default:
|
4172
|
+
alignIndicator = "".concat('-'.repeat(targetWidth));
|
4173
|
+
break;
|
4174
|
+
}
|
4175
|
+
alignmentRow += "".concat(useTabs ? '\t' : padding).concat(alignIndicator).concat(useTabs ? '\t' : padding, "|");
|
4176
|
+
}
|
4177
|
+
return alignmentRow;
|
4156
4178
|
}
|
4157
4179
|
/**
|
4158
4180
|
* Generates a complete Markdown table string from the provided data.
|
4159
|
-
* @param
|
4181
|
+
* @param inputData - The table data including headers and rows.
|
4182
|
+
* @param columnAlignments - Alignment settings for each column.
|
4183
|
+
* @param canAdjustColumnWidths - Flag to adjust column widths based on content.
|
4184
|
+
* @param useTabs - Flag to use tabs between columns.
|
4185
|
+
* @param replaceNewlines - Flag to replace newlines with <br> tags.
|
4186
|
+
* @param hasPadding - Flag to add padding spaces around cell content.
|
4160
4187
|
* @returns The complete Markdown table string.
|
4161
4188
|
*/
|
4162
|
-
function generateMarkdownTableString(
|
4163
|
-
|
4189
|
+
function generateMarkdownTableString(inputData, columnAlignments, canAdjustColumnWidths, useTabs, replaceNewlines, hasPadding) {
|
4190
|
+
if (canAdjustColumnWidths === void 0) { canAdjustColumnWidths = true; }
|
4191
|
+
if (useTabs === void 0) { useTabs = false; }
|
4192
|
+
if (replaceNewlines === void 0) { replaceNewlines = false; }
|
4193
|
+
if (hasPadding === void 0) { hasPadding = true; }
|
4164
4194
|
var headerColumnCount = inputData.inputDataHeader.length;
|
4165
4195
|
var bodyColumnCounts = inputData.inputDataBody.map(function (currentRow) { return currentRow.length; });
|
4166
4196
|
var maxColumnCount = Math.max.apply(Math, __spreadArray([headerColumnCount], bodyColumnCounts, false));
|
4167
4197
|
var columnWidths = canAdjustColumnWidths
|
4168
4198
|
? calculateColumnWidths(__spreadArray([inputData.inputDataHeader], inputData.inputDataBody, true), maxColumnCount)
|
4169
4199
|
: undefined;
|
4170
|
-
var markdownHeaderRow = formatMarkdownRow(
|
4171
|
-
|
4172
|
-
currentRow: inputData.inputDataHeader,
|
4173
|
-
columnAlignments: columnAlignments,
|
4174
|
-
columnWidths: columnWidths,
|
4175
|
-
useTabs: useTabs,
|
4176
|
-
replaceNewlines: replaceNewlines,
|
4177
|
-
hasPadding: hasPadding,
|
4178
|
-
});
|
4179
|
-
var markdownAlignmentRow = formatAlignmentRow({
|
4180
|
-
columnCount: maxColumnCount,
|
4181
|
-
columnAlignments: columnAlignments,
|
4182
|
-
columnWidths: columnWidths,
|
4183
|
-
useTabs: useTabs,
|
4184
|
-
hasPadding: hasPadding,
|
4185
|
-
});
|
4200
|
+
var markdownHeaderRow = formatMarkdownRow(maxColumnCount, inputData.inputDataHeader, columnAlignments, columnWidths, useTabs, replaceNewlines, hasPadding);
|
4201
|
+
var markdownAlignmentRow = formatAlignmentRow(maxColumnCount, columnAlignments, columnWidths, useTabs, hasPadding);
|
4186
4202
|
var markdownBodyRows = inputData.inputDataBody
|
4187
4203
|
.map(function (currentRow) {
|
4188
|
-
return formatMarkdownRow(
|
4189
|
-
columnCount: maxColumnCount,
|
4190
|
-
currentRow: currentRow,
|
4191
|
-
columnAlignments: columnAlignments,
|
4192
|
-
columnWidths: columnWidths,
|
4193
|
-
useTabs: useTabs,
|
4194
|
-
replaceNewlines: replaceNewlines,
|
4195
|
-
hasPadding: hasPadding,
|
4196
|
-
});
|
4204
|
+
return formatMarkdownRow(maxColumnCount, currentRow, columnAlignments, columnWidths, useTabs, replaceNewlines, hasPadding);
|
4197
4205
|
})
|
4198
4206
|
.join('\n');
|
4199
4207
|
return "".concat(markdownHeaderRow, "\n").concat(markdownAlignmentRow, "\n").concat(markdownBodyRows).trimEnd();
|
@@ -18539,40 +18547,48 @@ var LIGHT_THEME_CSS = "\ncode[class*=language-],pre[class*=language-]{color:#000
|
|
18539
18547
|
var DARK_THEME_CSS = "\ncode[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);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}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}pre[class*=language-].line-numbers{position:relative;padding-left:2.4em;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:.5em;text-align:right}\n";
|
18540
18548
|
var MarkdownTable = function (_a) {
|
18541
18549
|
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.hasPadding, hasPadding = _g === void 0 ? true : _g, _h = _a.canReplaceNewlines, canReplaceNewlines = _h === void 0 ? false : _h, className = _a.className, onTableCreate = _a.onTableCreate, _j = _a.theme, theme = _j === void 0 ? 'light' : _j, preStyle = _a.preStyle, _k = _a.showCopyButton, showCopyButton = _k === void 0 ? false : _k;
|
18550
|
+
var adjustColumnWidths = !isCompact;
|
18542
18551
|
var preElementRef = useRef(null);
|
18543
18552
|
var _l = useState(false), isCopied = _l[0], setIsCopied = _l[1];
|
18544
|
-
var adjustColumnWidths = !isCompact;
|
18545
|
-
var convertedInputData = useMemo(function () {
|
18546
|
-
if (!inputData)
|
18547
|
-
return null;
|
18548
|
-
var header = inputData[0], body = inputData.slice(1);
|
18549
|
-
return { inputDataHeader: header, inputDataBody: body };
|
18550
|
-
}, [inputData]);
|
18551
18553
|
var markdownTableSyntax = useMemo(function () {
|
18552
|
-
|
18553
|
-
|
18554
|
-
|
18555
|
-
|
18556
|
-
|
18557
|
-
|
18558
|
-
|
18559
|
-
|
18560
|
-
|
18554
|
+
if (inputData === null) {
|
18555
|
+
return 'Error: No data provided for the table.';
|
18556
|
+
}
|
18557
|
+
try {
|
18558
|
+
if (!Array.isArray(inputData) || inputData.length === 0) {
|
18559
|
+
throw new MarkdownTableError("The 'data' prop must be a non-empty two-dimensional array.");
|
18560
|
+
}
|
18561
|
+
var _a = hasHeader
|
18562
|
+
? { inputDataHeader: inputData[0], inputDataBody: inputData.slice(1) }
|
18563
|
+
: { inputDataHeader: generateAlphabetHeaders(inputData[0].length), inputDataBody: inputData }, inputDataHeader = _a.inputDataHeader, inputDataBody = _a.inputDataBody;
|
18564
|
+
return generateMarkdownTableString({ inputDataHeader: inputDataHeader, inputDataBody: inputDataBody }, columnAlignments, adjustColumnWidths, hasTabs, canReplaceNewlines, hasPadding);
|
18565
|
+
}
|
18566
|
+
catch (error) {
|
18567
|
+
return error instanceof MarkdownTableError ? "Error: ".concat(error.message) : (function () { throw error; })();
|
18568
|
+
}
|
18561
18569
|
}, [
|
18562
|
-
|
18570
|
+
inputData,
|
18563
18571
|
hasHeader,
|
18564
18572
|
columnAlignments,
|
18565
|
-
|
18573
|
+
isCompact,
|
18566
18574
|
hasTabs,
|
18567
|
-
hasPadding,
|
18568
18575
|
canReplaceNewlines,
|
18576
|
+
hasPadding,
|
18569
18577
|
]);
|
18570
18578
|
useEffect(function () {
|
18571
18579
|
if (onTableCreate) {
|
18572
18580
|
onTableCreate(markdownTableSyntax);
|
18573
18581
|
}
|
18574
18582
|
}, [markdownTableSyntax, onTableCreate]);
|
18575
|
-
|
18583
|
+
useEffect(function () {
|
18584
|
+
var _a;
|
18585
|
+
var codeElement = (_a = preElementRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('code');
|
18586
|
+
if (codeElement && markdownTableSyntax) {
|
18587
|
+
requestAnimationFrame(function () {
|
18588
|
+
Prism$1.highlightElement(codeElement);
|
18589
|
+
});
|
18590
|
+
}
|
18591
|
+
}, [markdownTableSyntax]);
|
18576
18592
|
var handleCopy = function () {
|
18577
18593
|
navigator.clipboard.writeText(markdownTableSyntax);
|
18578
18594
|
setIsCopied(true);
|
@@ -18580,51 +18596,14 @@ var MarkdownTable = function (_a) {
|
|
18580
18596
|
};
|
18581
18597
|
return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("style", { children: theme === 'light' ? LIGHT_THEME_CSS : DARK_THEME_CSS }), jsxRuntimeExports.jsxs("div", { style: {
|
18582
18598
|
position: 'relative',
|
18583
|
-
isolation: 'isolate'
|
18599
|
+
isolation: 'isolate'
|
18584
18600
|
}, children: [showCopyButton && (jsxRuntimeExports.jsx(Tooltip$1, { title: isCopied ? 'Copied!' : 'Copy markdown table syntax', placement: "left-end", arrow: true, children: jsxRuntimeExports.jsx(IconButton$1, { onClick: handleCopy, sx: {
|
18585
18601
|
position: 'absolute',
|
18586
18602
|
top: '12px',
|
18587
18603
|
right: '8px',
|
18588
|
-
zIndex: 1
|
18604
|
+
zIndex: 1
|
18589
18605
|
}, "aria-label": "Copy to clipboard", size: "small", children: jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" }) }) })), jsxRuntimeExports.jsx("pre", { ref: preElementRef, className: "".concat(className, " language-markdown line-numbers ").concat(theme === 'dark' ? 'dark-theme' : ''), style: preStyle, children: jsxRuntimeExports.jsx("code", { className: "language-markdown", role: "code", children: markdownTableSyntax }) })] })] }));
|
18590
18606
|
};
|
18591
|
-
var generateMarkdownTableSyntax = function (_a) {
|
18592
|
-
var inputData = _a.inputData, hasHeader = _a.hasHeader, columnAlignments = _a.columnAlignments, adjustColumnWidths = _a.adjustColumnWidths, hasTabs = _a.hasTabs, hasPadding = _a.hasPadding, canReplaceNewlines = _a.canReplaceNewlines;
|
18593
|
-
if (inputData === null) {
|
18594
|
-
return 'Error: No data provided for the table.';
|
18595
|
-
}
|
18596
|
-
if (!Array.isArray(inputData) || inputData.length === 0) {
|
18597
|
-
throw new MarkdownTableError("The 'inputData' prop must be a non-empty two-dimensional array.");
|
18598
|
-
}
|
18599
|
-
var _b = hasHeader
|
18600
|
-
? {
|
18601
|
-
inputDataHeader: inputData[0],
|
18602
|
-
inputDataBody: inputData.slice(1),
|
18603
|
-
}
|
18604
|
-
: {
|
18605
|
-
inputDataHeader: generateAlphabetHeaders(inputData[0].length),
|
18606
|
-
inputDataBody: inputData,
|
18607
|
-
}, inputDataHeader = _b.inputDataHeader, inputDataBody = _b.inputDataBody;
|
18608
|
-
return generateMarkdownTableString({
|
18609
|
-
inputData: { inputDataHeader: inputDataHeader, inputDataBody: inputDataBody },
|
18610
|
-
columnAlignments: columnAlignments,
|
18611
|
-
canAdjustColumnWidths: adjustColumnWidths,
|
18612
|
-
useTabs: hasTabs,
|
18613
|
-
replaceNewlines: canReplaceNewlines,
|
18614
|
-
hasPadding: hasPadding,
|
18615
|
-
});
|
18616
|
-
};
|
18617
|
-
var usePrismHighlight = function (markdownTableSyntax, preElementRef) {
|
18618
|
-
useEffect(function () {
|
18619
|
-
var _a;
|
18620
|
-
var codeElement = (_a = preElementRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('code');
|
18621
|
-
if (codeElement) {
|
18622
|
-
requestAnimationFrame(function () {
|
18623
|
-
Prism$1.highlightElement(codeElement);
|
18624
|
-
});
|
18625
|
-
}
|
18626
|
-
}, [markdownTableSyntax]);
|
18627
|
-
};
|
18628
18607
|
|
18629
18608
|
export { MarkdownTable };
|
18630
18609
|
//# sourceMappingURL=index.esm.js.map
|