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.
Files changed (43) hide show
  1. package/README.md +90 -56
  2. package/dist/cellFormatter.d.ts +9 -0
  3. package/dist/index.cjs.js +51 -10
  4. package/dist/index.cjs.js.map +1 -1
  5. package/dist/index.esm.js +51 -10
  6. package/dist/index.esm.js.map +1 -1
  7. package/dist/types.d.ts +16 -4
  8. package/dist/utils.d.ts +4 -4
  9. package/package.json +1 -1
  10. package/dist/MarkdownTable.stories.d.ts +0 -156
  11. package/dist/jest.setup.d.ts +0 -2
  12. package/dist/jest.setup.js +0 -3
  13. package/dist/jest.setup.js.map +0 -1
  14. package/dist/src/MarkdownTable.stories.d.ts +0 -156
  15. package/dist/src/MarkdownTable.stories.js +0 -172
  16. package/dist/src/MarkdownTable.stories.js.map +0 -1
  17. package/dist/src/index.d.ts +0 -5
  18. package/dist/src/index.js +0 -78
  19. package/dist/src/index.js.map +0 -1
  20. package/dist/src/types.d.ts +0 -123
  21. package/dist/src/types.js +0 -3
  22. package/dist/src/types.js.map +0 -1
  23. package/dist/src/utils.d.ts +0 -8
  24. package/dist/src/utils.js +0 -176
  25. package/dist/src/utils.js.map +0 -1
  26. package/dist/src/validation.d.ts +0 -19
  27. package/dist/src/validation.js +0 -106
  28. package/dist/src/validation.js.map +0 -1
  29. package/dist/stories/Button.d.ts +0 -15
  30. package/dist/stories/Button.stories.d.ts +0 -23
  31. package/dist/stories/Header.d.ts +0 -12
  32. package/dist/stories/Header.stories.d.ts +0 -18
  33. package/dist/stories/Page.d.ts +0 -3
  34. package/dist/stories/Page.stories.d.ts +0 -13
  35. package/dist/test/MarkdownTable.test.d.ts +0 -1
  36. package/dist/test/MarkdownTable.test.js +0 -91
  37. package/dist/test/MarkdownTable.test.js.map +0 -1
  38. package/dist/test/utils.test.d.ts +0 -1
  39. package/dist/test/utils.test.js +0 -234
  40. package/dist/test/utils.test.js.map +0 -1
  41. package/dist/test/validation.test.d.ts +0 -1
  42. package/dist/test/validation.test.js +0 -86
  43. 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 (content, alignment, width) {
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 (alignment) {
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
- widths[i] = Math.max(widths[i], cell.length);
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
- return cell.replace(/\n/g, '<br>');
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("The 'data' prop must be a two-dimensional array.");
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("The 'data' array must contain at least one row.");
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; _a.topPadding; var minWidth = _a.minWidth;
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'