react-markdown-table-ts 1.1.8 → 1.2.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/README.md +90 -56
- package/dist/cellFormatter.d.ts +9 -0
- package/dist/index.cjs.js +51 -10
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +51 -10
- package/dist/index.esm.js.map +1 -1
- package/dist/types.d.ts +16 -4
- package/dist/utils.d.ts +4 -4
- package/package.json +1 -1
- package/dist/MarkdownTable.stories.d.ts +0 -156
- 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/MarkdownTable.stories.d.ts +0 -156
- package/dist/src/MarkdownTable.stories.js +0 -172
- package/dist/src/MarkdownTable.stories.js.map +0 -1
- package/dist/src/index.d.ts +0 -5
- package/dist/src/index.js +0 -78
- package/dist/src/index.js.map +0 -1
- package/dist/src/types.d.ts +0 -123
- package/dist/src/types.js +0 -3
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils.d.ts +0 -8
- package/dist/src/utils.js +0 -176
- package/dist/src/utils.js.map +0 -1
- package/dist/src/validation.d.ts +0 -19
- package/dist/src/validation.js +0 -106
- package/dist/src/validation.js.map +0 -1
- package/dist/stories/Button.d.ts +0 -15
- package/dist/stories/Button.stories.d.ts +0 -23
- package/dist/stories/Header.d.ts +0 -12
- package/dist/stories/Header.stories.d.ts +0 -18
- package/dist/stories/Page.d.ts +0 -3
- package/dist/stories/Page.stories.d.ts +0 -13
- 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 -234
- 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.esm.js
CHANGED
@@ -4060,14 +4060,53 @@ var Prism$1 = /*@__PURE__*/getDefaultExportFromCjs(prismExports);
|
|
4060
4060
|
|
4061
4061
|
}());
|
4062
4062
|
|
4063
|
+
/**
|
4064
|
+
* Formats cell content with markdown syntax based on CellData formatting options
|
4065
|
+
*/
|
4066
|
+
function formatCellContent(cell) {
|
4067
|
+
if (typeof cell === 'string') {
|
4068
|
+
return cell;
|
4069
|
+
}
|
4070
|
+
var content = cell.content;
|
4071
|
+
// Apply code formatting first (if present) as it should override other formatting
|
4072
|
+
if (cell.code) {
|
4073
|
+
content = "`".concat(content, "`");
|
4074
|
+
return content; // Code formatting should not be combined with other formatting
|
4075
|
+
}
|
4076
|
+
// Apply bold formatting
|
4077
|
+
if (cell.bold) {
|
4078
|
+
content = "**".concat(content, "**");
|
4079
|
+
}
|
4080
|
+
// Apply italic formatting
|
4081
|
+
if (cell.italic) {
|
4082
|
+
content = "*".concat(content, "*");
|
4083
|
+
}
|
4084
|
+
// Apply link formatting last
|
4085
|
+
if (cell.link) {
|
4086
|
+
content = "[".concat(content, "](").concat(cell.link, ")");
|
4087
|
+
}
|
4088
|
+
return content;
|
4089
|
+
}
|
4090
|
+
/**
|
4091
|
+
* Gets the alignment for a cell, prioritizing cell-specific alignment over column alignment
|
4092
|
+
*/
|
4093
|
+
function getCellAlignment(cell, columnAlignment) {
|
4094
|
+
if (typeof cell === 'string') {
|
4095
|
+
return columnAlignment || 'none';
|
4096
|
+
}
|
4097
|
+
return cell.alignment || columnAlignment || 'none';
|
4098
|
+
}
|
4099
|
+
|
4063
4100
|
var CellFormatter = /** @class */ (function () {
|
4064
4101
|
function CellFormatter(config) {
|
4065
4102
|
this.config = config;
|
4066
4103
|
this.padding = this.config.useTabs ? '\t' : (this.config.hasPadding ? ' ' : '');
|
4067
4104
|
}
|
4068
|
-
CellFormatter.prototype.formatCell = function (
|
4105
|
+
CellFormatter.prototype.formatCell = function (cell, alignment, width) {
|
4106
|
+
var content = formatCellContent(cell);
|
4107
|
+
var cellAlignment = getCellAlignment(cell, alignment);
|
4069
4108
|
var totalWidth = width;
|
4070
|
-
switch (
|
4109
|
+
switch (cellAlignment) {
|
4071
4110
|
case 'right':
|
4072
4111
|
return "".concat(this.padding).concat(content.padStart(totalWidth)).concat(this.padding);
|
4073
4112
|
case 'center': {
|
@@ -4120,7 +4159,7 @@ var TableFormatter = /** @class */ (function () {
|
|
4120
4159
|
cell = replaceNewlinesInCell(cell);
|
4121
4160
|
}
|
4122
4161
|
var alignment = _this.adjustedAlignments[i];
|
4123
|
-
var width = _this.config.columnWidths ? _this.config.columnWidths[i] : cell.length;
|
4162
|
+
var width = _this.config.columnWidths ? _this.config.columnWidths[i] : formatCellContent(cell).length;
|
4124
4163
|
return _this.cellFormatter.formatCell(cell, alignment, width);
|
4125
4164
|
});
|
4126
4165
|
return "|".concat(formattedCells.join('|'), "|");
|
@@ -4144,7 +4183,8 @@ function calculateColumnWidths(tableRows, maxColumnCount) {
|
|
4144
4183
|
var _a;
|
4145
4184
|
for (var i = 0; i < maxColumnCount; i++) {
|
4146
4185
|
var cell = (_a = row[i]) !== null && _a !== void 0 ? _a : '';
|
4147
|
-
|
4186
|
+
var content = formatCellContent(cell);
|
4187
|
+
widths[i] = Math.max(widths[i], content.length);
|
4148
4188
|
}
|
4149
4189
|
});
|
4150
4190
|
return widths;
|
@@ -4183,7 +4223,8 @@ function generateMarkdownTableString(inputData, columnAlignments, canAdjustColum
|
|
4183
4223
|
return "".concat(headerRow, "\n").concat(alignmentRow, "\n").concat(bodyRows).trimEnd();
|
4184
4224
|
}
|
4185
4225
|
function replaceNewlinesInCell(cell) {
|
4186
|
-
|
4226
|
+
var content = typeof cell === 'string' ? cell : cell.content;
|
4227
|
+
return content.replace(/\n/g, '<br>');
|
4187
4228
|
}
|
4188
4229
|
function getColumnName(index) {
|
4189
4230
|
var columnName = '';
|
@@ -4219,10 +4260,10 @@ var MarkdownTableError = /** @class */ (function (_super) {
|
|
4219
4260
|
*/
|
4220
4261
|
function validateInputData(inputData) {
|
4221
4262
|
if (inputData === null || !Array.isArray(inputData)) {
|
4222
|
-
throw new MarkdownTableError(
|
4263
|
+
throw new MarkdownTableError('The \'data\' prop must be a two-dimensional array.');
|
4223
4264
|
}
|
4224
4265
|
if (inputData.length === 0) {
|
4225
|
-
throw new MarkdownTableError(
|
4266
|
+
throw new MarkdownTableError('The \'data\' array must contain at least one row.');
|
4226
4267
|
}
|
4227
4268
|
}
|
4228
4269
|
|
@@ -4232,7 +4273,7 @@ var DARK_THEME_CSS = "\ncode[class*=language-],pre[class*=language-]{color:#f8f8
|
|
4232
4273
|
var getTableData = function (inputData, hasHeader) {
|
4233
4274
|
return hasHeader
|
4234
4275
|
? { inputDataHeader: inputData[0], inputDataBody: inputData.slice(1) }
|
4235
|
-
: { inputDataHeader: generateAlphabetHeaders(inputData[0].length), inputDataBody: inputData };
|
4276
|
+
: { inputDataHeader: generateAlphabetHeaders(inputData[0].length).map(function (header) { return ({ content: header }); }), inputDataBody: inputData };
|
4236
4277
|
};
|
4237
4278
|
var generateTableSyntax = function (inputData, hasHeader, columnAlignments, adjustColumnWidths, hasTabs, canReplaceNewlines, hasPadding) {
|
4238
4279
|
try {
|
@@ -4259,7 +4300,7 @@ var applySyntaxHighlighting = function (preElementRef, markdownTableSyntax) {
|
|
4259
4300
|
}, [markdownTableSyntax]);
|
4260
4301
|
};
|
4261
4302
|
var MarkdownTable = function (_a) {
|
4262
|
-
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.convertLineBreaks, convertLineBreaks = _h === void 0 ? false : _h, className = _a.className, onGenerate = _a.onGenerate, _j = _a.theme, theme = _j === void 0 ? 'light' : _j, preStyle = _a.preStyle
|
4303
|
+
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.convertLineBreaks, convertLineBreaks = _h === void 0 ? false : _h, className = _a.className, onGenerate = _a.onGenerate, _j = _a.theme, theme = _j === void 0 ? 'light' : _j, preStyle = _a.preStyle, _k = _a.topPadding, topPadding = _k === void 0 ? 16 : _k, minWidth = _a.minWidth;
|
4263
4304
|
var adjustColumnWidths = !isCompact;
|
4264
4305
|
var preElementRef = useRef(null);
|
4265
4306
|
var markdownTableSyntax = useMemo(function () { return generateTableSyntax(inputData, hasHeader, columnAlignments, adjustColumnWidths, hasTabs, convertLineBreaks, hasPadding); }, [
|
@@ -4277,7 +4318,7 @@ var MarkdownTable = function (_a) {
|
|
4277
4318
|
}
|
4278
4319
|
}, [markdownTableSyntax, onGenerate]);
|
4279
4320
|
applySyntaxHighlighting(preElementRef, markdownTableSyntax);
|
4280
|
-
return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsxs("style", { children: [theme === 'light' ? LIGHT_THEME_CSS : DARK_THEME_CSS, "\n pre {\n position: relative;\n }\n pre::before {\n position: absolute;\n top: 8px;\n left: 12px;\n color: ".concat(theme === 'light' ? '#666' : '#999', ";\n letter-spacing: 2px;\n font-size: 12px;\n }\n ")] }), jsxRuntimeExports.jsx("div", { id: "MarkdownTable", style: {
|
4321
|
+
return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsxs("style", { children: [theme === 'light' ? LIGHT_THEME_CSS : DARK_THEME_CSS, "\n pre {\n position: relative;\n padding-top: ".concat(topPadding, "px !important;\n }\n pre::before {\n position: absolute;\n top: 8px;\n left: 12px;\n color: ").concat(theme === 'light' ? '#666' : '#999', ";\n letter-spacing: 2px;\n font-size: 12px;\n }\n ")] }), jsxRuntimeExports.jsx("div", { id: "MarkdownTable", style: {
|
4281
4322
|
position: 'relative',
|
4282
4323
|
isolation: 'isolate',
|
4283
4324
|
display: 'inline-block'
|