react-markdown-table-ts 0.5.5 → 0.5.7
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 -63
- package/dist/index.cjs.js +24 -28
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +24 -28
- package/dist/index.esm.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
@@ -4068,6 +4068,17 @@ var MarkdownTableError = /** @class */ (function (_super) {
|
|
4068
4068
|
}(Error));
|
4069
4069
|
|
4070
4070
|
// src/utils.ts
|
4071
|
+
/**
|
4072
|
+
* Adjusts column alignments array to match the required column count
|
4073
|
+
* @param columnAlignments - Original alignment settings
|
4074
|
+
* @param columnCount - Required number of columns
|
4075
|
+
* @returns Adjusted array of column alignments
|
4076
|
+
*/
|
4077
|
+
function getAdjustedAlignments(columnAlignments, columnCount) {
|
4078
|
+
var defaultAlignment = 'left';
|
4079
|
+
return columnAlignments.length < columnCount
|
4080
|
+
? __spreadArray(__spreadArray([], Array.from(columnAlignments), true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : Array.from(columnAlignments);
|
4081
|
+
}
|
4071
4082
|
/**
|
4072
4083
|
* Calculates the maximum width for each column based on the content.
|
4073
4084
|
* @param tableRows - All rows (header and body) of the table.
|
@@ -4101,16 +4112,14 @@ function formatMarkdownRow(columnCount, currentRow, columnAlignments, columnWidt
|
|
4101
4112
|
if (useTabs === void 0) { useTabs = false; }
|
4102
4113
|
if (canReplaceNewlines === void 0) { canReplaceNewlines = false; }
|
4103
4114
|
if (hasPadding === void 0) { hasPadding = true; }
|
4104
|
-
var
|
4105
|
-
var adjustedAlignments = columnAlignments.length < columnCount
|
4106
|
-
? __spreadArray(__spreadArray([], columnAlignments, true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : columnAlignments;
|
4115
|
+
var adjustedAlignments = getAdjustedAlignments(columnAlignments, columnCount);
|
4107
4116
|
var markdownRow = '|';
|
4108
4117
|
for (var i = 0; i < columnCount; i++) {
|
4109
4118
|
var cell = (_a = currentRow[i]) !== null && _a !== void 0 ? _a : '';
|
4110
4119
|
if (canReplaceNewlines) {
|
4111
4120
|
cell = replaceNewlinesInCell(cell);
|
4112
4121
|
}
|
4113
|
-
var alignment = (_b = adjustedAlignments[i]) !== null && _b !== void 0 ? _b :
|
4122
|
+
var alignment = (_b = adjustedAlignments[i]) !== null && _b !== void 0 ? _b : 'left';
|
4114
4123
|
var targetWidth = columnWidths ? columnWidths[i] : cell.length;
|
4115
4124
|
var padding = hasPadding ? ' ' : '';
|
4116
4125
|
if (alignment === 'right') {
|
@@ -4142,12 +4151,10 @@ function formatAlignmentRow(columnCount, columnAlignments, columnWidths, useTabs
|
|
4142
4151
|
var _a;
|
4143
4152
|
if (useTabs === void 0) { useTabs = false; }
|
4144
4153
|
if (hasPadding === void 0) { hasPadding = true; }
|
4145
|
-
var
|
4146
|
-
var adjustedAlignments = columnAlignments.length < columnCount
|
4147
|
-
? __spreadArray(__spreadArray([], columnAlignments, true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : columnAlignments;
|
4154
|
+
var adjustedAlignments = getAdjustedAlignments(columnAlignments, columnCount);
|
4148
4155
|
var alignmentRow = '|';
|
4149
4156
|
for (var i = 0; i < columnCount; i++) {
|
4150
|
-
var alignment = (_a = adjustedAlignments[i]) !== null && _a !== void 0 ? _a :
|
4157
|
+
var alignment = (_a = adjustedAlignments[i]) !== null && _a !== void 0 ? _a : 'left';
|
4151
4158
|
var targetWidth = columnWidths ? columnWidths[i] : 3;
|
4152
4159
|
var alignIndicator = '';
|
4153
4160
|
var padding = hasPadding ? ' ' : '';
|
@@ -18539,10 +18546,10 @@ var Tooltip$1 = Tooltip;
|
|
18539
18546
|
var LIGHT_THEME_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: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
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";
|
18541
18548
|
var MarkdownTable = function (_a) {
|
18542
|
-
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;
|
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;
|
18543
18550
|
var adjustColumnWidths = !isCompact;
|
18544
18551
|
var preElementRef = useRef(null);
|
18545
|
-
var
|
18552
|
+
var _l = useState(false), isCopied = _l[0], setIsCopied = _l[1];
|
18546
18553
|
var markdownTableSyntax = useMemo(function () {
|
18547
18554
|
if (inputData === null) {
|
18548
18555
|
return 'Error: No data provided for the table.';
|
@@ -18551,24 +18558,13 @@ var MarkdownTable = function (_a) {
|
|
18551
18558
|
if (!Array.isArray(inputData) || inputData.length === 0) {
|
18552
18559
|
throw new MarkdownTableError("The 'data' prop must be a non-empty two-dimensional array.");
|
18553
18560
|
}
|
18554
|
-
var
|
18555
|
-
? {
|
18556
|
-
|
18557
|
-
|
18558
|
-
}
|
18559
|
-
: {
|
18560
|
-
inputDataHeader: generateAlphabetHeaders(inputData[0].length),
|
18561
|
-
inputDataBody: inputData,
|
18562
|
-
};
|
18563
|
-
return generateMarkdownTableString(tableData, columnAlignments, adjustColumnWidths, hasTabs, canReplaceNewlines, hasPadding);
|
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);
|
18564
18565
|
}
|
18565
18566
|
catch (error) {
|
18566
|
-
|
18567
|
-
return "Error: ".concat(error.message);
|
18568
|
-
}
|
18569
|
-
else {
|
18570
|
-
throw error;
|
18571
|
-
}
|
18567
|
+
return error instanceof MarkdownTableError ? "Error: ".concat(error.message) : (function () { throw error; })();
|
18572
18568
|
}
|
18573
18569
|
}, [
|
18574
18570
|
inputData,
|
@@ -18601,12 +18597,12 @@ var MarkdownTable = function (_a) {
|
|
18601
18597
|
return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("style", { children: theme === 'light' ? LIGHT_THEME_CSS : DARK_THEME_CSS }), jsxRuntimeExports.jsxs("div", { style: {
|
18602
18598
|
position: 'relative',
|
18603
18599
|
isolation: 'isolate'
|
18604
|
-
}, children: [jsxRuntimeExports.jsx(Tooltip$1, { title: isCopied ? 'Copied!' : 'Copy markdown table syntax', placement: "left-end", arrow: true, children: jsxRuntimeExports.jsx(IconButton$1, { onClick: handleCopy, sx: {
|
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: {
|
18605
18601
|
position: 'absolute',
|
18606
18602
|
top: '12px',
|
18607
18603
|
right: '8px',
|
18608
18604
|
zIndex: 1
|
18609
|
-
}, "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 }) })] })] }));
|
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 }) })] })] }));
|
18610
18606
|
};
|
18611
18607
|
|
18612
18608
|
export { MarkdownTable };
|