react-markdown-table-ts 0.2.5 → 0.3.1
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 +2 -2
- package/dist/errors.js +31 -0
- package/dist/errors.js.map +1 -0
- package/dist/helpers.js +93 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.cjs.js +17 -17
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +17 -17
- package/dist/index.esm.js.map +1 -1
- package/dist/src/errors.d.ts +6 -0
- package/dist/src/errors.js +31 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/helpers.d.ts +34 -0
- package/dist/src/helpers.js +93 -0
- package/dist/src/helpers.js.map +1 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.js +201 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/types.d.ts +62 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils.d.ts +47 -0
- package/dist/src/utils.js +142 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/src/validation.d.ts +7 -0
- package/dist/src/validation.js +65 -0
- package/dist/src/validation.js.map +1 -0
- package/dist/test/MarkdownTable.test.d.ts +1 -0
- package/dist/test/MarkdownTable.test.js +91 -0
- package/dist/test/MarkdownTable.test.js.map +1 -0
- package/dist/test/helpers.test.d.ts +1 -0
- package/dist/test/helpers.test.js +99 -0
- package/dist/test/helpers.test.js.map +1 -0
- package/dist/test/jest.setup.d.ts +2 -0
- package/dist/test/jest.setup.js +3 -0
- package/dist/test/jest.setup.js.map +1 -0
- package/dist/test/utils.test.d.ts +1 -0
- package/dist/test/utils.test.js +191 -0
- package/dist/test/utils.test.js.map +1 -0
- package/dist/test/validation.test.d.ts +1 -0
- package/dist/test/validation.test.js +87 -0
- package/dist/test/validation.test.js.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.js +142 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation.js +65 -0
- package/dist/validation.js.map +1 -0
- package/package.json +2 -1
@@ -0,0 +1,31 @@
|
|
1
|
+
// src/errors.ts
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
3
|
+
var extendStatics = function (d, b) {
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
7
|
+
return extendStatics(d, b);
|
8
|
+
};
|
9
|
+
return function (d, b) {
|
10
|
+
if (typeof b !== "function" && b !== null)
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
12
|
+
extendStatics(d, b);
|
13
|
+
function __() { this.constructor = d; }
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
15
|
+
};
|
16
|
+
})();
|
17
|
+
/**
|
18
|
+
* Custom error class for handling Markdown table generation errors.
|
19
|
+
*/
|
20
|
+
var MarkdownTableError = /** @class */ (function (_super) {
|
21
|
+
__extends(MarkdownTableError, _super);
|
22
|
+
function MarkdownTableError(message) {
|
23
|
+
var _this = _super.call(this, message) || this;
|
24
|
+
_this.name = 'MarkdownTableError';
|
25
|
+
Object.setPrototypeOf(_this, MarkdownTableError.prototype);
|
26
|
+
return _this;
|
27
|
+
}
|
28
|
+
return MarkdownTableError;
|
29
|
+
}(Error));
|
30
|
+
export { MarkdownTableError };
|
31
|
+
//# sourceMappingURL=errors.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,gBAAgB;;;;;;;;;;;;;;;;AAEhB;;GAEG;AACH;IAAwC,sCAAK;IAC3C,4BAAY,OAAe;QAA3B,YACE,kBAAM,OAAO,CAAC,SAGf;QAFC,KAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;;IAC5D,CAAC;IACH,yBAAC;AAAD,CAAC,AAND,CAAwC,KAAK,GAM5C"}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
/**
|
2
|
+
* @fileoverview Contains helper functions for formatting Markdown table syntax and calculating column widths.
|
3
|
+
*/
|
4
|
+
import { TableRow } from './types';
|
5
|
+
/**
|
6
|
+
* Calculates the maximum width for each column based on the content.
|
7
|
+
* @param params - The parameters for column width calculation.
|
8
|
+
* @returns An array of maximum widths for each column.
|
9
|
+
*/
|
10
|
+
export declare function calculateColumnWidths({ allRows, maxColumnCount, }: {
|
11
|
+
allRows: readonly TableRow[];
|
12
|
+
maxColumnCount: number;
|
13
|
+
}): number[];
|
14
|
+
/**
|
15
|
+
* Formats a single row into a Markdown-formatted string.
|
16
|
+
* @param params - The parameters for row formatting.
|
17
|
+
* @returns The Markdown string for the row.
|
18
|
+
*/
|
19
|
+
export declare function formatMarkdownRow({ columnCount, row, columnAlignments, columnWidths, }: {
|
20
|
+
columnCount: number;
|
21
|
+
row: TableRow;
|
22
|
+
columnAlignments?: readonly ('left' | 'right' | 'center' | 'none')[];
|
23
|
+
columnWidths?: readonly number[];
|
24
|
+
}): string;
|
25
|
+
/**
|
26
|
+
* Generates the alignment row for the Markdown table syntax.
|
27
|
+
* @param params - The parameters for alignment row generation.
|
28
|
+
* @returns The Markdown string for the alignment row.
|
29
|
+
*/
|
30
|
+
export declare function formatAlignmentRow({ columnCount, columnAlignments, columnWidths, }: {
|
31
|
+
columnCount: number;
|
32
|
+
columnAlignments?: readonly ('left' | 'right' | 'center' | 'none')[];
|
33
|
+
columnWidths?: readonly number[];
|
34
|
+
}): string;
|
@@ -0,0 +1,93 @@
|
|
1
|
+
// src/helpers.ts
|
2
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
3
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
4
|
+
if (ar || !(i in from)) {
|
5
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
6
|
+
ar[i] = from[i];
|
7
|
+
}
|
8
|
+
}
|
9
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
10
|
+
};
|
11
|
+
/**
|
12
|
+
* Calculates the maximum width for each column based on the content.
|
13
|
+
* @param params - The parameters for column width calculation.
|
14
|
+
* @returns An array of maximum widths for each column.
|
15
|
+
*/
|
16
|
+
export function calculateColumnWidths(_a) {
|
17
|
+
var allRows = _a.allRows, maxColumnCount = _a.maxColumnCount;
|
18
|
+
return allRows.reduce(function (widths, row) {
|
19
|
+
var _a, _b;
|
20
|
+
for (var i = 0; i < maxColumnCount; i++) {
|
21
|
+
var cell = (_a = row[i]) !== null && _a !== void 0 ? _a : '';
|
22
|
+
widths[i] = Math.max((_b = widths[i]) !== null && _b !== void 0 ? _b : 3, cell.length);
|
23
|
+
}
|
24
|
+
return widths;
|
25
|
+
}, new Array(maxColumnCount).fill(3));
|
26
|
+
}
|
27
|
+
/**
|
28
|
+
* Formats a single row into a Markdown-formatted string.
|
29
|
+
* @param params - The parameters for row formatting.
|
30
|
+
* @returns The Markdown string for the row.
|
31
|
+
*/
|
32
|
+
export function formatMarkdownRow(_a) {
|
33
|
+
var _b, _c;
|
34
|
+
var columnCount = _a.columnCount, row = _a.row, _d = _a.columnAlignments, columnAlignments = _d === void 0 ? [] : _d, columnWidths = _a.columnWidths;
|
35
|
+
var defaultAlignment = 'left';
|
36
|
+
var adjustedAlignments = columnAlignments.length < columnCount
|
37
|
+
? __spreadArray(__spreadArray([], columnAlignments, true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : columnAlignments;
|
38
|
+
var markdownRow = '|';
|
39
|
+
for (var i = 0; i < columnCount; i++) {
|
40
|
+
var cell = (_b = row[i]) !== null && _b !== void 0 ? _b : '';
|
41
|
+
var alignment = (_c = adjustedAlignments[i]) !== null && _c !== void 0 ? _c : defaultAlignment;
|
42
|
+
var targetWidth = columnWidths ? columnWidths[i] : cell.length;
|
43
|
+
if (alignment === 'right') {
|
44
|
+
markdownRow += " ".concat(cell.padStart(targetWidth), " |");
|
45
|
+
}
|
46
|
+
else if (alignment === 'center') {
|
47
|
+
var totalPadding = targetWidth - cell.length;
|
48
|
+
var paddingLeft = Math.floor(totalPadding / 2);
|
49
|
+
var paddingRight = totalPadding - paddingLeft;
|
50
|
+
markdownRow += " ".concat(' '.repeat(paddingLeft)).concat(cell).concat(' '.repeat(paddingRight), " |");
|
51
|
+
}
|
52
|
+
else {
|
53
|
+
// Left alignment or default
|
54
|
+
markdownRow += " ".concat(cell.padEnd(targetWidth), " |");
|
55
|
+
}
|
56
|
+
}
|
57
|
+
return markdownRow;
|
58
|
+
}
|
59
|
+
/**
|
60
|
+
* Generates the alignment row for the Markdown table syntax.
|
61
|
+
* @param params - The parameters for alignment row generation.
|
62
|
+
* @returns The Markdown string for the alignment row.
|
63
|
+
*/
|
64
|
+
export function formatAlignmentRow(_a) {
|
65
|
+
var _b;
|
66
|
+
var columnCount = _a.columnCount, _c = _a.columnAlignments, columnAlignments = _c === void 0 ? [] : _c, columnWidths = _a.columnWidths;
|
67
|
+
var defaultAlignment = 'left';
|
68
|
+
var adjustedAlignments = columnAlignments.length < columnCount
|
69
|
+
? __spreadArray(__spreadArray([], columnAlignments, true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : columnAlignments;
|
70
|
+
var alignmentRow = '|';
|
71
|
+
for (var i = 0; i < columnCount; i++) {
|
72
|
+
var alignment = (_b = adjustedAlignments[i]) !== null && _b !== void 0 ? _b : defaultAlignment;
|
73
|
+
var targetWidth = columnWidths ? columnWidths[i] : 3;
|
74
|
+
var alignIndicator = '';
|
75
|
+
switch (alignment) {
|
76
|
+
case 'left':
|
77
|
+
alignIndicator = ":".concat('-'.repeat(targetWidth - 1));
|
78
|
+
break;
|
79
|
+
case 'center':
|
80
|
+
alignIndicator = ":".concat('-'.repeat(targetWidth - 2), ":");
|
81
|
+
break;
|
82
|
+
case 'right':
|
83
|
+
alignIndicator = "".concat('-'.repeat(targetWidth - 1), ":");
|
84
|
+
break;
|
85
|
+
default:
|
86
|
+
alignIndicator = "".concat('-'.repeat(targetWidth));
|
87
|
+
break;
|
88
|
+
}
|
89
|
+
alignmentRow += " ".concat(alignIndicator, " |");
|
90
|
+
}
|
91
|
+
return alignmentRow;
|
92
|
+
}
|
93
|
+
//# sourceMappingURL=helpers.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import 'prismjs/components/prism-markdown';
|
3
|
+
import 'prismjs/plugins/line-numbers/prism-line-numbers';
|
4
|
+
export type TableRow = Array<string>;
|
5
|
+
export interface MarkdownTableData {
|
6
|
+
header: string[];
|
7
|
+
rows: readonly string[][];
|
8
|
+
}
|
9
|
+
export interface MarkdownTableProps {
|
10
|
+
inputData?: string[][] | null;
|
11
|
+
hasHeader?: boolean;
|
12
|
+
columnAlignments?: readonly ('left' | 'center' | 'right' | 'none')[];
|
13
|
+
isCompact?: boolean;
|
14
|
+
hasTabs?: boolean;
|
15
|
+
className?: string;
|
16
|
+
canReplaceNewlines?: boolean;
|
17
|
+
onTableCreate?: (markdownString: string) => void;
|
18
|
+
}
|
19
|
+
export declare const MarkdownTable: React.FC<MarkdownTableProps>;
|
@@ -0,0 +1,201 @@
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
2
|
+
var extendStatics = function (d, b) {
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
6
|
+
return extendStatics(d, b);
|
7
|
+
};
|
8
|
+
return function (d, b) {
|
9
|
+
if (typeof b !== "function" && b !== null)
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
11
|
+
extendStatics(d, b);
|
12
|
+
function __() { this.constructor = d; }
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
14
|
+
};
|
15
|
+
})();
|
16
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
17
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
18
|
+
if (ar || !(i in from)) {
|
19
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
20
|
+
ar[i] = from[i];
|
21
|
+
}
|
22
|
+
}
|
23
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
24
|
+
};
|
25
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
26
|
+
// src/index.tsx
|
27
|
+
import { useEffect, useMemo, useRef } from 'react';
|
28
|
+
import Prism from 'prismjs';
|
29
|
+
import 'prismjs/components/prism-markdown';
|
30
|
+
import 'prismjs/plugins/line-numbers/prism-line-numbers';
|
31
|
+
// CSS styles
|
32
|
+
var PRISM_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:3.8em;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:.8em;text-align:right}\n";
|
33
|
+
var MarkdownTableError = /** @class */ (function (_super) {
|
34
|
+
__extends(MarkdownTableError, _super);
|
35
|
+
function MarkdownTableError(message) {
|
36
|
+
var _this = _super.call(this, message) || this;
|
37
|
+
_this.name = 'MarkdownTableError';
|
38
|
+
return _this;
|
39
|
+
}
|
40
|
+
return MarkdownTableError;
|
41
|
+
}(Error));
|
42
|
+
function calculateColumnWidths(allRows, maxColumnCount) {
|
43
|
+
var widths = new Array(maxColumnCount).fill(3);
|
44
|
+
allRows.forEach(function (row) {
|
45
|
+
var _a;
|
46
|
+
for (var i = 0; i < maxColumnCount; i++) {
|
47
|
+
var cell = (_a = row[i]) !== null && _a !== void 0 ? _a : '';
|
48
|
+
widths[i] = Math.max(widths[i], cell.length);
|
49
|
+
}
|
50
|
+
});
|
51
|
+
return widths;
|
52
|
+
}
|
53
|
+
function replaceNewlinesInCell(cell) {
|
54
|
+
return cell.replace(/\n/g, '<br>');
|
55
|
+
}
|
56
|
+
function formatMarkdownRow(columnCount, row, columnAlignments, columnWidths, useTabs, replaceNewlines) {
|
57
|
+
var _a, _b;
|
58
|
+
if (useTabs === void 0) { useTabs = false; }
|
59
|
+
if (replaceNewlines === void 0) { replaceNewlines = false; }
|
60
|
+
var defaultAlignment = 'left';
|
61
|
+
var adjustedAlignments = columnAlignments.length < columnCount
|
62
|
+
? __spreadArray(__spreadArray([], columnAlignments, true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : columnAlignments;
|
63
|
+
var markdownRow = '|';
|
64
|
+
for (var i = 0; i < columnCount; i++) {
|
65
|
+
var cell = (_a = row[i]) !== null && _a !== void 0 ? _a : '';
|
66
|
+
if (replaceNewlines) {
|
67
|
+
cell = replaceNewlinesInCell(cell);
|
68
|
+
}
|
69
|
+
var alignment = (_b = adjustedAlignments[i]) !== null && _b !== void 0 ? _b : defaultAlignment;
|
70
|
+
var targetWidth = columnWidths ? columnWidths[i] : cell.length;
|
71
|
+
if (alignment === 'right') {
|
72
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(cell.padStart(targetWidth)).concat(useTabs ? '\t' : ' ', "|");
|
73
|
+
}
|
74
|
+
else if (alignment === 'center') {
|
75
|
+
var totalPadding = targetWidth - cell.length;
|
76
|
+
var paddingLeft = Math.floor(totalPadding / 2);
|
77
|
+
var paddingRight = totalPadding - paddingLeft;
|
78
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(' '.repeat(paddingLeft)).concat(cell).concat(' '.repeat(paddingRight)).concat(useTabs ? '\t' : ' ', "|");
|
79
|
+
}
|
80
|
+
else {
|
81
|
+
markdownRow += "".concat(useTabs ? '\t' : ' ').concat(cell.padEnd(targetWidth)).concat(useTabs ? '\t' : ' ', "|");
|
82
|
+
}
|
83
|
+
}
|
84
|
+
return markdownRow;
|
85
|
+
}
|
86
|
+
function formatAlignmentRow(columnCount, columnAlignments, columnWidths, useTabs) {
|
87
|
+
var _a;
|
88
|
+
if (useTabs === void 0) { useTabs = false; }
|
89
|
+
var defaultAlignment = 'left';
|
90
|
+
var adjustedAlignments = columnAlignments.length < columnCount
|
91
|
+
? __spreadArray(__spreadArray([], columnAlignments, true), Array(columnCount - columnAlignments.length).fill(defaultAlignment), true) : columnAlignments;
|
92
|
+
var alignmentRow = '|';
|
93
|
+
for (var i = 0; i < columnCount; i++) {
|
94
|
+
var alignment = (_a = adjustedAlignments[i]) !== null && _a !== void 0 ? _a : defaultAlignment;
|
95
|
+
var targetWidth = columnWidths ? columnWidths[i] : 3;
|
96
|
+
var alignIndicator = '';
|
97
|
+
switch (alignment) {
|
98
|
+
case 'left':
|
99
|
+
alignIndicator = ":".concat('-'.repeat(targetWidth - 1));
|
100
|
+
break;
|
101
|
+
case 'center':
|
102
|
+
alignIndicator = ":".concat('-'.repeat(targetWidth - 2), ":");
|
103
|
+
break;
|
104
|
+
case 'right':
|
105
|
+
alignIndicator = "".concat('-'.repeat(targetWidth - 1), ":");
|
106
|
+
break;
|
107
|
+
default:
|
108
|
+
alignIndicator = "".concat('-'.repeat(targetWidth));
|
109
|
+
break;
|
110
|
+
}
|
111
|
+
alignmentRow += "".concat(useTabs ? '\t' : ' ').concat(alignIndicator).concat(useTabs ? '\t' : ' ', "|");
|
112
|
+
}
|
113
|
+
return alignmentRow;
|
114
|
+
}
|
115
|
+
function generateMarkdownTableString(tableData, columnAlignments, adjustColumnWidths, useTabs, replaceNewlines) {
|
116
|
+
if (adjustColumnWidths === void 0) { adjustColumnWidths = true; }
|
117
|
+
if (useTabs === void 0) { useTabs = false; }
|
118
|
+
if (replaceNewlines === void 0) { replaceNewlines = false; }
|
119
|
+
var headerColumnCount = tableData.header.length;
|
120
|
+
var bodyColumnCounts = tableData.rows.map(function (row) { return row.length; });
|
121
|
+
var maxColumnCount = Math.max.apply(Math, __spreadArray([headerColumnCount], bodyColumnCounts, false));
|
122
|
+
var columnWidths = adjustColumnWidths
|
123
|
+
? calculateColumnWidths(__spreadArray([tableData.header], tableData.rows, true), maxColumnCount)
|
124
|
+
: undefined;
|
125
|
+
var markdownHeaderRow = formatMarkdownRow(maxColumnCount, tableData.header, columnAlignments, columnWidths, useTabs, replaceNewlines);
|
126
|
+
var markdownAlignmentRow = formatAlignmentRow(maxColumnCount, columnAlignments, columnWidths, useTabs);
|
127
|
+
var markdownBodyRows = tableData.rows
|
128
|
+
.map(function (row) {
|
129
|
+
return formatMarkdownRow(maxColumnCount, row, columnAlignments, columnWidths, useTabs, replaceNewlines);
|
130
|
+
})
|
131
|
+
.join('\n');
|
132
|
+
return "".concat(markdownHeaderRow, "\n").concat(markdownAlignmentRow, "\n").concat(markdownBodyRows).trimEnd();
|
133
|
+
}
|
134
|
+
function generateAlphabetHeaders(columnCount) {
|
135
|
+
var headers = [];
|
136
|
+
for (var i = 0; i < columnCount; i++) {
|
137
|
+
headers.push(getColumnName(i));
|
138
|
+
}
|
139
|
+
return headers;
|
140
|
+
}
|
141
|
+
function getColumnName(index) {
|
142
|
+
var name = '';
|
143
|
+
var currentIndex = index;
|
144
|
+
while (currentIndex >= 0) {
|
145
|
+
name = String.fromCharCode((currentIndex % 26) + 65) + name;
|
146
|
+
currentIndex = Math.floor(currentIndex / 26) - 1;
|
147
|
+
}
|
148
|
+
return name;
|
149
|
+
}
|
150
|
+
export var MarkdownTable = function (_a) {
|
151
|
+
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.canReplaceNewlines, canReplaceNewlines = _g === void 0 ? false : _g, className = _a.className, onTableCreate = _a.onTableCreate;
|
152
|
+
var adjustColumnWidths = !isCompact;
|
153
|
+
var preElementRef = useRef(null);
|
154
|
+
var markdownTableSyntax = useMemo(function () {
|
155
|
+
if (inputData === null) {
|
156
|
+
return 'Error: No data provided for the table.';
|
157
|
+
}
|
158
|
+
try {
|
159
|
+
if (!Array.isArray(inputData) || inputData.length === 0) {
|
160
|
+
throw new MarkdownTableError("The 'data' prop must be a non-empty two-dimensional array.");
|
161
|
+
}
|
162
|
+
var tableData = hasHeader
|
163
|
+
? {
|
164
|
+
header: inputData[0],
|
165
|
+
rows: inputData.slice(1),
|
166
|
+
}
|
167
|
+
: {
|
168
|
+
header: generateAlphabetHeaders(inputData[0].length),
|
169
|
+
rows: inputData,
|
170
|
+
};
|
171
|
+
return generateMarkdownTableString(tableData, columnAlignments, adjustColumnWidths, hasTabs, canReplaceNewlines);
|
172
|
+
}
|
173
|
+
catch (error) {
|
174
|
+
if (error instanceof MarkdownTableError) {
|
175
|
+
return "Error: ".concat(error.message);
|
176
|
+
}
|
177
|
+
else {
|
178
|
+
throw error;
|
179
|
+
}
|
180
|
+
}
|
181
|
+
}, [
|
182
|
+
inputData,
|
183
|
+
hasHeader,
|
184
|
+
columnAlignments,
|
185
|
+
isCompact,
|
186
|
+
hasTabs,
|
187
|
+
canReplaceNewlines,
|
188
|
+
]);
|
189
|
+
useEffect(function () {
|
190
|
+
if (onTableCreate) {
|
191
|
+
onTableCreate(markdownTableSyntax);
|
192
|
+
}
|
193
|
+
}, [markdownTableSyntax, onTableCreate]);
|
194
|
+
useEffect(function () {
|
195
|
+
if (preElementRef.current) {
|
196
|
+
Prism.highlightElement(preElementRef.current.querySelector('code'));
|
197
|
+
}
|
198
|
+
}, [markdownTableSyntax]);
|
199
|
+
return (_jsxs(_Fragment, { children: [_jsx("style", { children: PRISM_CSS }), _jsx("pre", { ref: preElementRef, className: "".concat(className, " language-markdown line-numbers"), children: _jsx("code", { className: "language-markdown", role: "code", children: markdownTableSyntax }) })] }));
|
200
|
+
};
|
201
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
/**
|
2
|
+
* Represents a single row in a table, consisting of cells.
|
3
|
+
*/
|
4
|
+
export type TableRow = readonly string[];
|
5
|
+
/**
|
6
|
+
* Represents the structure of a Markdown table.
|
7
|
+
*/
|
8
|
+
export interface InputData {
|
9
|
+
/**
|
10
|
+
* The header row of the table.
|
11
|
+
*/
|
12
|
+
inputDataHeader: string[];
|
13
|
+
/**
|
14
|
+
* The body rows of the table.
|
15
|
+
*/
|
16
|
+
inputDataBody: readonly string[][];
|
17
|
+
}
|
18
|
+
/**
|
19
|
+
* Props for the MarkdownTable component.
|
20
|
+
*/
|
21
|
+
export interface MarkdownTableProps {
|
22
|
+
/**
|
23
|
+
* The entire table data as a two-dimensional array.
|
24
|
+
* If `hasHeader` is true, the first row is treated as the header.
|
25
|
+
* @default null
|
26
|
+
*/
|
27
|
+
inputData?: string[][] | null;
|
28
|
+
/**
|
29
|
+
* Indicates whether the first row of `data` is a header.
|
30
|
+
* @default true
|
31
|
+
*/
|
32
|
+
hasHeader?: boolean;
|
33
|
+
/**
|
34
|
+
* Optional array specifying the alignment for each column.
|
35
|
+
* Acceptable values are 'left', 'center', 'right', or 'none'.
|
36
|
+
*/
|
37
|
+
columnAlignments?: readonly ('left' | 'center' | 'right' | 'none')[];
|
38
|
+
/**
|
39
|
+
* Optional flag to provide a compact version of the table with minimal column widths.
|
40
|
+
* When `true`, column widths are not adjusted based on content.
|
41
|
+
* @default false
|
42
|
+
*/
|
43
|
+
isCompact?: boolean;
|
44
|
+
/**
|
45
|
+
* Optional flag to add tabs between columns in the Markdown table.
|
46
|
+
* @default false
|
47
|
+
*/
|
48
|
+
hasTabs?: boolean;
|
49
|
+
/**
|
50
|
+
* Optional CSS class for styling the rendered Markdown table.
|
51
|
+
*/
|
52
|
+
className?: string;
|
53
|
+
/**
|
54
|
+
* Optional flag to replace newlines with <br> tags in table cells.
|
55
|
+
* @default false
|
56
|
+
*/
|
57
|
+
canReplaceNewlines?: boolean;
|
58
|
+
/**
|
59
|
+
* Optional callback function to receive the generated Markdown table string.
|
60
|
+
*/
|
61
|
+
onTableCreate?: (markdownTableString: string) => void;
|
62
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,eAAe"}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
/**
|
2
|
+
* @fileoverview Contains helper functions for formatting Markdown table syntax, calculating column widths, and generating Markdown tables.
|
3
|
+
*/
|
4
|
+
import { TableRow, InputData } from './types';
|
5
|
+
/**
|
6
|
+
* Replaces newline characters in a string with <br> tags.
|
7
|
+
* @param cell - The cell content to process.
|
8
|
+
* @returns The processed cell content with newlines replaced.
|
9
|
+
*/
|
10
|
+
export declare function replaceNewlinesInCell(cell: string): string;
|
11
|
+
/**
|
12
|
+
* Calculates the maximum width for each column based on the content.
|
13
|
+
* @param tableRows - All rows (header and body) of the table.
|
14
|
+
* @param maxColumnCount - The maximum number of columns in the table.
|
15
|
+
* @returns An array of maximum widths for each column.
|
16
|
+
*/
|
17
|
+
export declare function calculateColumnWidths(tableRows: readonly TableRow[], maxColumnCount: number): number[];
|
18
|
+
/**
|
19
|
+
* Formats a single row into a Markdown-formatted string.
|
20
|
+
* @param columnCount - The number of columns in the table.
|
21
|
+
* @param currentRow - The data of the current row.
|
22
|
+
* @param columnAlignments - Alignment settings for each column.
|
23
|
+
* @param columnWidths - Widths of each column.
|
24
|
+
* @param useTabs - Flag to use tabs between columns.
|
25
|
+
* @param canReplaceNewlines - Flag to replace newlines with <br> tags.
|
26
|
+
* @returns The Markdown string for the row.
|
27
|
+
*/
|
28
|
+
export declare function formatMarkdownRow(columnCount: number, currentRow: TableRow, columnAlignments: readonly ('left' | 'right' | 'center' | 'none')[], columnWidths?: readonly number[], useTabs?: boolean, canReplaceNewlines?: boolean): string;
|
29
|
+
/**
|
30
|
+
* Generates the alignment row for the Markdown table syntax.
|
31
|
+
* @param columnCount - The number of columns in the table.
|
32
|
+
* @param columnAlignments - Alignment settings for each column.
|
33
|
+
* @param columnWidths - Widths of each column.
|
34
|
+
* @param useTabs - Flag to use tabs between columns.
|
35
|
+
* @returns The Markdown string for the alignment row.
|
36
|
+
*/
|
37
|
+
export declare function formatAlignmentRow(columnCount: number, columnAlignments: readonly ('left' | 'right' | 'center' | 'none')[], columnWidths?: readonly number[], useTabs?: boolean): string;
|
38
|
+
/**
|
39
|
+
* Generates a complete Markdown table string from the provided data.
|
40
|
+
* @param inputData - The table data including headers and rows.
|
41
|
+
* @param columnAlignments - Alignment settings for each column.
|
42
|
+
* @param canAdjustColumnWidths - Flag to adjust column widths based on content.
|
43
|
+
* @param useTabs - Flag to use tabs between columns.
|
44
|
+
* @param replaceNewlines - Flag to replace newlines with <br> tags.
|
45
|
+
* @returns The complete Markdown table string.
|
46
|
+
*/
|
47
|
+
export declare function generateMarkdownTableString(inputData: InputData, columnAlignments: readonly ('left' | 'right' | 'center' | 'none')[], canAdjustColumnWidths?: boolean, useTabs?: boolean, replaceNewlines?: boolean): string;
|