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.cjs.js
CHANGED
@@ -4104,7 +4104,7 @@ var MarkdownTableError = /** @class */ (function (_super) {
|
|
4104
4104
|
function getAdjustedAlignments(columnAlignments, columnCount) {
|
4105
4105
|
var defaultAlignment = 'left';
|
4106
4106
|
return columnAlignments.length < columnCount
|
4107
|
-
? __spreadArray(__spreadArray([],
|
4107
|
+
? __spreadArray(__spreadArray([], columnAlignments, true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : columnAlignments.slice(0, columnCount);
|
4108
4108
|
}
|
4109
4109
|
/**
|
4110
4110
|
* Calculates the maximum width for each column based on the content.
|
@@ -4125,28 +4125,20 @@ function calculateColumnWidths(tableRows, maxColumnCount) {
|
|
4125
4125
|
}
|
4126
4126
|
/**
|
4127
4127
|
* Formats a single row into a Markdown-formatted string.
|
4128
|
-
* @param
|
4129
|
-
* @param currentRow - The data of the current row.
|
4130
|
-
* @param columnAlignments - Alignment settings for each column.
|
4131
|
-
* @param columnWidths - Widths of each column.
|
4132
|
-
* @param useTabs - Flag to use tabs between columns.
|
4133
|
-
* @param canReplaceNewlines - Flag to replace newlines with <br> tags.
|
4134
|
-
* @param hasPadding - Flag to add padding spaces around cell content.
|
4128
|
+
* @param params - Object containing formatting options and row data.
|
4135
4129
|
* @returns The Markdown string for the row.
|
4136
4130
|
*/
|
4137
|
-
function formatMarkdownRow(
|
4138
|
-
var
|
4139
|
-
|
4140
|
-
if (canReplaceNewlines === void 0) { canReplaceNewlines = false; }
|
4141
|
-
if (hasPadding === void 0) { hasPadding = true; }
|
4131
|
+
function formatMarkdownRow(_a) {
|
4132
|
+
var _b, _c;
|
4133
|
+
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;
|
4142
4134
|
var adjustedAlignments = getAdjustedAlignments(columnAlignments, columnCount);
|
4143
4135
|
var markdownRow = '|';
|
4144
4136
|
for (var i = 0; i < columnCount; i++) {
|
4145
|
-
var cell = (
|
4146
|
-
if (
|
4137
|
+
var cell = (_b = currentRow[i]) !== null && _b !== void 0 ? _b : '';
|
4138
|
+
if (replaceNewlines) {
|
4147
4139
|
cell = replaceNewlinesInCell(cell);
|
4148
4140
|
}
|
4149
|
-
var alignment = (
|
4141
|
+
var alignment = (_c = adjustedAlignments[i]) !== null && _c !== void 0 ? _c : 'left';
|
4150
4142
|
var targetWidth = columnWidths ? columnWidths[i] : cell.length;
|
4151
4143
|
var padding = hasPadding ? ' ' : '';
|
4152
4144
|
if (alignment === 'right') {
|
@@ -4165,70 +4157,70 @@ function formatMarkdownRow(columnCount, currentRow, columnAlignments, columnWidt
|
|
4165
4157
|
}
|
4166
4158
|
return markdownRow;
|
4167
4159
|
}
|
4168
|
-
|
4169
|
-
|
4170
|
-
|
4171
|
-
|
4172
|
-
|
4173
|
-
|
4174
|
-
|
4175
|
-
|
4176
|
-
|
4177
|
-
|
4178
|
-
|
4179
|
-
|
4180
|
-
|
4160
|
+
function getAlignmentIndicator(_a) {
|
4161
|
+
var _b;
|
4162
|
+
var alignment = _a.alignment, targetWidth = _a.targetWidth;
|
4163
|
+
var indicators = {
|
4164
|
+
left: ":".concat('-'.repeat(targetWidth - 1)),
|
4165
|
+
center: ":".concat('-'.repeat(targetWidth - 2), ":"),
|
4166
|
+
right: "".concat('-'.repeat(targetWidth - 1), ":"),
|
4167
|
+
none: "".concat('-'.repeat(targetWidth)),
|
4168
|
+
};
|
4169
|
+
return (_b = indicators[alignment]) !== null && _b !== void 0 ? _b : indicators.none;
|
4170
|
+
}
|
4171
|
+
function formatAlignmentRow(_a) {
|
4172
|
+
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;
|
4181
4173
|
var adjustedAlignments = getAdjustedAlignments(columnAlignments, columnCount);
|
4182
|
-
var
|
4183
|
-
|
4174
|
+
var padding = hasPadding ? ' ' : '';
|
4175
|
+
var alignmentCells = Array.from({ length: columnCount }, function (_, i) {
|
4176
|
+
var _a, _b;
|
4184
4177
|
var alignment = (_a = adjustedAlignments[i]) !== null && _a !== void 0 ? _a : 'left';
|
4185
|
-
var targetWidth = columnWidths ? columnWidths[i] : 3;
|
4186
|
-
var alignIndicator =
|
4187
|
-
|
4188
|
-
|
4189
|
-
|
4190
|
-
alignIndicator = ":".concat('-'.repeat(targetWidth - 1));
|
4191
|
-
break;
|
4192
|
-
case 'center':
|
4193
|
-
alignIndicator = ":".concat('-'.repeat(targetWidth - 2), ":");
|
4194
|
-
break;
|
4195
|
-
case 'right':
|
4196
|
-
alignIndicator = "".concat('-'.repeat(targetWidth - 1), ":");
|
4197
|
-
break;
|
4198
|
-
default:
|
4199
|
-
alignIndicator = "".concat('-'.repeat(targetWidth));
|
4200
|
-
break;
|
4201
|
-
}
|
4202
|
-
alignmentRow += "".concat(useTabs ? '\t' : padding).concat(alignIndicator).concat(useTabs ? '\t' : padding, "|");
|
4203
|
-
}
|
4204
|
-
return alignmentRow;
|
4178
|
+
var targetWidth = (_b = columnWidths === null || columnWidths === void 0 ? void 0 : columnWidths[i]) !== null && _b !== void 0 ? _b : 3;
|
4179
|
+
var alignIndicator = getAlignmentIndicator({ alignment: alignment, targetWidth: targetWidth });
|
4180
|
+
return "".concat(useTabs ? '\t' : padding).concat(alignIndicator).concat(useTabs ? '\t' : padding);
|
4181
|
+
});
|
4182
|
+
return "|".concat(alignmentCells.join('|'), "|");
|
4205
4183
|
}
|
4206
4184
|
/**
|
4207
4185
|
* Generates a complete Markdown table string from the provided data.
|
4208
|
-
* @param
|
4209
|
-
* @param columnAlignments - Alignment settings for each column.
|
4210
|
-
* @param canAdjustColumnWidths - Flag to adjust column widths based on content.
|
4211
|
-
* @param useTabs - Flag to use tabs between columns.
|
4212
|
-
* @param replaceNewlines - Flag to replace newlines with <br> tags.
|
4213
|
-
* @param hasPadding - Flag to add padding spaces around cell content.
|
4186
|
+
* @param params - Object containing table data and formatting options.
|
4214
4187
|
* @returns The complete Markdown table string.
|
4215
4188
|
*/
|
4216
|
-
function generateMarkdownTableString(
|
4217
|
-
|
4218
|
-
if (useTabs === void 0) { useTabs = false; }
|
4219
|
-
if (replaceNewlines === void 0) { replaceNewlines = false; }
|
4220
|
-
if (hasPadding === void 0) { hasPadding = true; }
|
4189
|
+
function generateMarkdownTableString(_a) {
|
4190
|
+
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;
|
4221
4191
|
var headerColumnCount = inputData.inputDataHeader.length;
|
4222
4192
|
var bodyColumnCounts = inputData.inputDataBody.map(function (currentRow) { return currentRow.length; });
|
4223
4193
|
var maxColumnCount = Math.max.apply(Math, __spreadArray([headerColumnCount], bodyColumnCounts, false));
|
4224
4194
|
var columnWidths = canAdjustColumnWidths
|
4225
4195
|
? calculateColumnWidths(__spreadArray([inputData.inputDataHeader], inputData.inputDataBody, true), maxColumnCount)
|
4226
4196
|
: undefined;
|
4227
|
-
var markdownHeaderRow = formatMarkdownRow(
|
4228
|
-
|
4197
|
+
var markdownHeaderRow = formatMarkdownRow({
|
4198
|
+
columnCount: maxColumnCount,
|
4199
|
+
currentRow: inputData.inputDataHeader,
|
4200
|
+
columnAlignments: columnAlignments,
|
4201
|
+
columnWidths: columnWidths,
|
4202
|
+
useTabs: useTabs,
|
4203
|
+
replaceNewlines: replaceNewlines,
|
4204
|
+
hasPadding: hasPadding,
|
4205
|
+
});
|
4206
|
+
var markdownAlignmentRow = formatAlignmentRow({
|
4207
|
+
columnCount: maxColumnCount,
|
4208
|
+
columnAlignments: columnAlignments,
|
4209
|
+
columnWidths: columnWidths,
|
4210
|
+
useTabs: useTabs,
|
4211
|
+
hasPadding: hasPadding,
|
4212
|
+
});
|
4229
4213
|
var markdownBodyRows = inputData.inputDataBody
|
4230
4214
|
.map(function (currentRow) {
|
4231
|
-
return formatMarkdownRow(
|
4215
|
+
return formatMarkdownRow({
|
4216
|
+
columnCount: maxColumnCount,
|
4217
|
+
currentRow: currentRow,
|
4218
|
+
columnAlignments: columnAlignments,
|
4219
|
+
columnWidths: columnWidths,
|
4220
|
+
useTabs: useTabs,
|
4221
|
+
replaceNewlines: replaceNewlines,
|
4222
|
+
hasPadding: hasPadding,
|
4223
|
+
});
|
4232
4224
|
})
|
4233
4225
|
.join('\n');
|
4234
4226
|
return "".concat(markdownHeaderRow, "\n").concat(markdownAlignmentRow, "\n").concat(markdownBodyRows).trimEnd();
|
@@ -18574,48 +18566,40 @@ var LIGHT_THEME_CSS = "\ncode[class*=language-],pre[class*=language-]{color:#000
|
|
18574
18566
|
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";
|
18575
18567
|
var MarkdownTable = function (_a) {
|
18576
18568
|
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;
|
18577
|
-
var adjustColumnWidths = !isCompact;
|
18578
18569
|
var preElementRef = React.useRef(null);
|
18579
18570
|
var _l = React.useState(false), isCopied = _l[0], setIsCopied = _l[1];
|
18571
|
+
var adjustColumnWidths = !isCompact;
|
18572
|
+
var convertedInputData = React.useMemo(function () {
|
18573
|
+
if (!inputData)
|
18574
|
+
return null;
|
18575
|
+
var header = inputData[0], body = inputData.slice(1);
|
18576
|
+
return { inputDataHeader: header, inputDataBody: body };
|
18577
|
+
}, [inputData]);
|
18580
18578
|
var markdownTableSyntax = React.useMemo(function () {
|
18581
|
-
|
18582
|
-
|
18583
|
-
|
18584
|
-
|
18585
|
-
|
18586
|
-
|
18587
|
-
|
18588
|
-
|
18589
|
-
|
18590
|
-
: { inputDataHeader: generateAlphabetHeaders(inputData[0].length), inputDataBody: inputData }, inputDataHeader = _a.inputDataHeader, inputDataBody = _a.inputDataBody;
|
18591
|
-
return generateMarkdownTableString({ inputDataHeader: inputDataHeader, inputDataBody: inputDataBody }, columnAlignments, adjustColumnWidths, hasTabs, canReplaceNewlines, hasPadding);
|
18592
|
-
}
|
18593
|
-
catch (error) {
|
18594
|
-
return error instanceof MarkdownTableError ? "Error: ".concat(error.message) : (function () { throw error; })();
|
18595
|
-
}
|
18579
|
+
return generateMarkdownTableSyntax({
|
18580
|
+
inputData: convertedInputData,
|
18581
|
+
hasHeader: hasHeader,
|
18582
|
+
columnAlignments: columnAlignments,
|
18583
|
+
adjustColumnWidths: adjustColumnWidths,
|
18584
|
+
hasTabs: hasTabs,
|
18585
|
+
hasPadding: hasPadding,
|
18586
|
+
canReplaceNewlines: canReplaceNewlines,
|
18587
|
+
});
|
18596
18588
|
}, [
|
18597
|
-
|
18589
|
+
convertedInputData,
|
18598
18590
|
hasHeader,
|
18599
18591
|
columnAlignments,
|
18600
|
-
|
18592
|
+
adjustColumnWidths,
|
18601
18593
|
hasTabs,
|
18602
|
-
canReplaceNewlines,
|
18603
18594
|
hasPadding,
|
18595
|
+
canReplaceNewlines,
|
18604
18596
|
]);
|
18605
18597
|
React.useEffect(function () {
|
18606
18598
|
if (onTableCreate) {
|
18607
18599
|
onTableCreate(markdownTableSyntax);
|
18608
18600
|
}
|
18609
18601
|
}, [markdownTableSyntax, onTableCreate]);
|
18610
|
-
|
18611
|
-
var _a;
|
18612
|
-
var codeElement = (_a = preElementRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('code');
|
18613
|
-
if (codeElement && markdownTableSyntax) {
|
18614
|
-
requestAnimationFrame(function () {
|
18615
|
-
Prism$1.highlightElement(codeElement);
|
18616
|
-
});
|
18617
|
-
}
|
18618
|
-
}, [markdownTableSyntax]);
|
18602
|
+
usePrismHighlight(markdownTableSyntax, preElementRef);
|
18619
18603
|
var handleCopy = function () {
|
18620
18604
|
navigator.clipboard.writeText(markdownTableSyntax);
|
18621
18605
|
setIsCopied(true);
|
@@ -18623,14 +18607,51 @@ var MarkdownTable = function (_a) {
|
|
18623
18607
|
};
|
18624
18608
|
return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("style", { children: theme === 'light' ? LIGHT_THEME_CSS : DARK_THEME_CSS }), jsxRuntimeExports.jsxs("div", { style: {
|
18625
18609
|
position: 'relative',
|
18626
|
-
isolation: 'isolate'
|
18610
|
+
isolation: 'isolate',
|
18627
18611
|
}, 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: {
|
18628
18612
|
position: 'absolute',
|
18629
18613
|
top: '12px',
|
18630
18614
|
right: '8px',
|
18631
|
-
zIndex: 1
|
18615
|
+
zIndex: 1,
|
18632
18616
|
}, "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 }) })] })] }));
|
18633
18617
|
};
|
18618
|
+
var generateMarkdownTableSyntax = function (_a) {
|
18619
|
+
var inputData = _a.inputData, hasHeader = _a.hasHeader, columnAlignments = _a.columnAlignments, adjustColumnWidths = _a.adjustColumnWidths, hasTabs = _a.hasTabs, hasPadding = _a.hasPadding, canReplaceNewlines = _a.canReplaceNewlines;
|
18620
|
+
if (inputData === null) {
|
18621
|
+
return 'Error: No data provided for the table.';
|
18622
|
+
}
|
18623
|
+
if (!Array.isArray(inputData) || inputData.length === 0) {
|
18624
|
+
throw new MarkdownTableError("The 'inputData' prop must be a non-empty two-dimensional array.");
|
18625
|
+
}
|
18626
|
+
var _b = hasHeader
|
18627
|
+
? {
|
18628
|
+
inputDataHeader: inputData[0],
|
18629
|
+
inputDataBody: inputData.slice(1),
|
18630
|
+
}
|
18631
|
+
: {
|
18632
|
+
inputDataHeader: generateAlphabetHeaders(inputData[0].length),
|
18633
|
+
inputDataBody: inputData,
|
18634
|
+
}, inputDataHeader = _b.inputDataHeader, inputDataBody = _b.inputDataBody;
|
18635
|
+
return generateMarkdownTableString({
|
18636
|
+
inputData: { inputDataHeader: inputDataHeader, inputDataBody: inputDataBody },
|
18637
|
+
columnAlignments: columnAlignments,
|
18638
|
+
canAdjustColumnWidths: adjustColumnWidths,
|
18639
|
+
useTabs: hasTabs,
|
18640
|
+
replaceNewlines: canReplaceNewlines,
|
18641
|
+
hasPadding: hasPadding,
|
18642
|
+
});
|
18643
|
+
};
|
18644
|
+
var usePrismHighlight = function (markdownTableSyntax, preElementRef) {
|
18645
|
+
React.useEffect(function () {
|
18646
|
+
var _a;
|
18647
|
+
var codeElement = (_a = preElementRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('code');
|
18648
|
+
if (codeElement) {
|
18649
|
+
requestAnimationFrame(function () {
|
18650
|
+
Prism$1.highlightElement(codeElement);
|
18651
|
+
});
|
18652
|
+
}
|
18653
|
+
}, [markdownTableSyntax]);
|
18654
|
+
};
|
18634
18655
|
|
18635
18656
|
exports.MarkdownTable = MarkdownTable;
|
18636
18657
|
//# sourceMappingURL=index.cjs.js.map
|