react-markdown-table-ts 0.5.7 → 0.5.8
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 +116 -95
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +116 -95
- package/dist/index.esm.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/utils.d.ts +28 -25
- 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([],
|
4080
|
+
? __spreadArray(__spreadArray([], columnAlignments, true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : columnAlignments.slice(0, columnCount);
|
4081
4081
|
}
|
4082
4082
|
/**
|
4083
4083
|
* Calculates the maximum width for each column based on the content.
|
@@ -4098,28 +4098,20 @@ function calculateColumnWidths(tableRows, maxColumnCount) {
|
|
4098
4098
|
}
|
4099
4099
|
/**
|
4100
4100
|
* Formats a single row into a Markdown-formatted string.
|
4101
|
-
* @param
|
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.
|
4101
|
+
* @param params - Object containing formatting options and row data.
|
4108
4102
|
* @returns The Markdown string for the row.
|
4109
4103
|
*/
|
4110
|
-
function formatMarkdownRow(
|
4111
|
-
var
|
4112
|
-
|
4113
|
-
if (canReplaceNewlines === void 0) { canReplaceNewlines = false; }
|
4114
|
-
if (hasPadding === void 0) { hasPadding = true; }
|
4104
|
+
function formatMarkdownRow(_a) {
|
4105
|
+
var _b, _c;
|
4106
|
+
var columnCount = _a.columnCount, currentRow = _a.currentRow, columnAlignments = _a.columnAlignments, columnWidths = _a.columnWidths, _d = _a.useTabs, useTabs = _d === void 0 ? false : _d, _e = _a.replaceNewlines, replaceNewlines = _e === void 0 ? false : _e, _f = _a.hasPadding, hasPadding = _f === void 0 ? true : _f;
|
4115
4107
|
var adjustedAlignments = getAdjustedAlignments(columnAlignments, columnCount);
|
4116
4108
|
var markdownRow = '|';
|
4117
4109
|
for (var i = 0; i < columnCount; i++) {
|
4118
|
-
var cell = (
|
4119
|
-
if (
|
4110
|
+
var cell = (_b = currentRow[i]) !== null && _b !== void 0 ? _b : '';
|
4111
|
+
if (replaceNewlines) {
|
4120
4112
|
cell = replaceNewlinesInCell(cell);
|
4121
4113
|
}
|
4122
|
-
var alignment = (
|
4114
|
+
var alignment = (_c = adjustedAlignments[i]) !== null && _c !== void 0 ? _c : 'left';
|
4123
4115
|
var targetWidth = columnWidths ? columnWidths[i] : cell.length;
|
4124
4116
|
var padding = hasPadding ? ' ' : '';
|
4125
4117
|
if (alignment === 'right') {
|
@@ -4138,70 +4130,70 @@ function formatMarkdownRow(columnCount, currentRow, columnAlignments, columnWidt
|
|
4138
4130
|
}
|
4139
4131
|
return markdownRow;
|
4140
4132
|
}
|
4141
|
-
|
4142
|
-
|
4143
|
-
|
4144
|
-
|
4145
|
-
|
4146
|
-
|
4147
|
-
|
4148
|
-
|
4149
|
-
|
4150
|
-
|
4151
|
-
|
4152
|
-
|
4153
|
-
|
4133
|
+
function getAlignmentIndicator(_a) {
|
4134
|
+
var _b;
|
4135
|
+
var alignment = _a.alignment, targetWidth = _a.targetWidth;
|
4136
|
+
var indicators = {
|
4137
|
+
left: ":".concat('-'.repeat(targetWidth - 1)),
|
4138
|
+
center: ":".concat('-'.repeat(targetWidth - 2), ":"),
|
4139
|
+
right: "".concat('-'.repeat(targetWidth - 1), ":"),
|
4140
|
+
none: "".concat('-'.repeat(targetWidth)),
|
4141
|
+
};
|
4142
|
+
return (_b = indicators[alignment]) !== null && _b !== void 0 ? _b : indicators.none;
|
4143
|
+
}
|
4144
|
+
function formatAlignmentRow(_a) {
|
4145
|
+
var columnCount = _a.columnCount, columnAlignments = _a.columnAlignments, columnWidths = _a.columnWidths, _b = _a.useTabs, useTabs = _b === void 0 ? false : _b, _c = _a.hasPadding, hasPadding = _c === void 0 ? true : _c;
|
4154
4146
|
var adjustedAlignments = getAdjustedAlignments(columnAlignments, columnCount);
|
4155
|
-
var
|
4156
|
-
|
4147
|
+
var padding = hasPadding ? ' ' : '';
|
4148
|
+
var alignmentCells = Array.from({ length: columnCount }, function (_, i) {
|
4149
|
+
var _a, _b;
|
4157
4150
|
var alignment = (_a = adjustedAlignments[i]) !== null && _a !== void 0 ? _a : 'left';
|
4158
|
-
var targetWidth = columnWidths ? columnWidths[i] : 3;
|
4159
|
-
var alignIndicator =
|
4160
|
-
|
4161
|
-
|
4162
|
-
|
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;
|
4151
|
+
var targetWidth = (_b = columnWidths === null || columnWidths === void 0 ? void 0 : columnWidths[i]) !== null && _b !== void 0 ? _b : 3;
|
4152
|
+
var alignIndicator = getAlignmentIndicator({ alignment: alignment, targetWidth: targetWidth });
|
4153
|
+
return "".concat(useTabs ? '\t' : padding).concat(alignIndicator).concat(useTabs ? '\t' : padding);
|
4154
|
+
});
|
4155
|
+
return "|".concat(alignmentCells.join('|'), "|");
|
4178
4156
|
}
|
4179
4157
|
/**
|
4180
4158
|
* Generates a complete Markdown table string from the provided data.
|
4181
|
-
* @param
|
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.
|
4159
|
+
* @param params - Object containing table data and formatting options.
|
4187
4160
|
* @returns The complete Markdown table string.
|
4188
4161
|
*/
|
4189
|
-
function generateMarkdownTableString(
|
4190
|
-
|
4191
|
-
if (useTabs === void 0) { useTabs = false; }
|
4192
|
-
if (replaceNewlines === void 0) { replaceNewlines = false; }
|
4193
|
-
if (hasPadding === void 0) { hasPadding = true; }
|
4162
|
+
function generateMarkdownTableString(_a) {
|
4163
|
+
var inputData = _a.inputData, columnAlignments = _a.columnAlignments, _b = _a.canAdjustColumnWidths, canAdjustColumnWidths = _b === void 0 ? true : _b, _c = _a.useTabs, useTabs = _c === void 0 ? false : _c, _d = _a.replaceNewlines, replaceNewlines = _d === void 0 ? false : _d, _e = _a.hasPadding, hasPadding = _e === void 0 ? true : _e;
|
4194
4164
|
var headerColumnCount = inputData.inputDataHeader.length;
|
4195
4165
|
var bodyColumnCounts = inputData.inputDataBody.map(function (currentRow) { return currentRow.length; });
|
4196
4166
|
var maxColumnCount = Math.max.apply(Math, __spreadArray([headerColumnCount], bodyColumnCounts, false));
|
4197
4167
|
var columnWidths = canAdjustColumnWidths
|
4198
4168
|
? calculateColumnWidths(__spreadArray([inputData.inputDataHeader], inputData.inputDataBody, true), maxColumnCount)
|
4199
4169
|
: undefined;
|
4200
|
-
var markdownHeaderRow = formatMarkdownRow(
|
4201
|
-
|
4170
|
+
var markdownHeaderRow = formatMarkdownRow({
|
4171
|
+
columnCount: maxColumnCount,
|
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
|
+
});
|
4202
4186
|
var markdownBodyRows = inputData.inputDataBody
|
4203
4187
|
.map(function (currentRow) {
|
4204
|
-
return formatMarkdownRow(
|
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
|
+
});
|
4205
4197
|
})
|
4206
4198
|
.join('\n');
|
4207
4199
|
return "".concat(markdownHeaderRow, "\n").concat(markdownAlignmentRow, "\n").concat(markdownBodyRows).trimEnd();
|
@@ -18547,48 +18539,40 @@ var LIGHT_THEME_CSS = "\ncode[class*=language-],pre[class*=language-]{color:#000
|
|
18547
18539
|
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";
|
18548
18540
|
var MarkdownTable = function (_a) {
|
18549
18541
|
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;
|
18551
18542
|
var preElementRef = useRef(null);
|
18552
18543
|
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]);
|
18553
18551
|
var markdownTableSyntax = useMemo(function () {
|
18554
|
-
|
18555
|
-
|
18556
|
-
|
18557
|
-
|
18558
|
-
|
18559
|
-
|
18560
|
-
|
18561
|
-
|
18562
|
-
|
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
|
-
}
|
18552
|
+
return generateMarkdownTableSyntax({
|
18553
|
+
inputData: convertedInputData,
|
18554
|
+
hasHeader: hasHeader,
|
18555
|
+
columnAlignments: columnAlignments,
|
18556
|
+
adjustColumnWidths: adjustColumnWidths,
|
18557
|
+
hasTabs: hasTabs,
|
18558
|
+
hasPadding: hasPadding,
|
18559
|
+
canReplaceNewlines: canReplaceNewlines,
|
18560
|
+
});
|
18569
18561
|
}, [
|
18570
|
-
|
18562
|
+
convertedInputData,
|
18571
18563
|
hasHeader,
|
18572
18564
|
columnAlignments,
|
18573
|
-
|
18565
|
+
adjustColumnWidths,
|
18574
18566
|
hasTabs,
|
18575
|
-
canReplaceNewlines,
|
18576
18567
|
hasPadding,
|
18568
|
+
canReplaceNewlines,
|
18577
18569
|
]);
|
18578
18570
|
useEffect(function () {
|
18579
18571
|
if (onTableCreate) {
|
18580
18572
|
onTableCreate(markdownTableSyntax);
|
18581
18573
|
}
|
18582
18574
|
}, [markdownTableSyntax, onTableCreate]);
|
18583
|
-
|
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]);
|
18575
|
+
usePrismHighlight(markdownTableSyntax, preElementRef);
|
18592
18576
|
var handleCopy = function () {
|
18593
18577
|
navigator.clipboard.writeText(markdownTableSyntax);
|
18594
18578
|
setIsCopied(true);
|
@@ -18596,14 +18580,51 @@ var MarkdownTable = function (_a) {
|
|
18596
18580
|
};
|
18597
18581
|
return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("style", { children: theme === 'light' ? LIGHT_THEME_CSS : DARK_THEME_CSS }), jsxRuntimeExports.jsxs("div", { style: {
|
18598
18582
|
position: 'relative',
|
18599
|
-
isolation: 'isolate'
|
18583
|
+
isolation: 'isolate',
|
18600
18584
|
}, 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: {
|
18601
18585
|
position: 'absolute',
|
18602
18586
|
top: '12px',
|
18603
18587
|
right: '8px',
|
18604
|
-
zIndex: 1
|
18588
|
+
zIndex: 1,
|
18605
18589
|
}, "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 }) })] })] }));
|
18606
18590
|
};
|
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
|
+
};
|
18607
18628
|
|
18608
18629
|
export { MarkdownTable };
|
18609
18630
|
//# sourceMappingURL=index.esm.js.map
|