namirasoft-site-react 1.5.35 → 1.5.36

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.
@@ -0,0 +1,21 @@
1
+ import { Component } from "react";
2
+ export interface NSMarkdownProps {
3
+ text: string;
4
+ taskDownloadUrl?: (id: string) => string;
5
+ }
6
+ export declare class NSMarkdown extends Component<NSMarkdownProps> {
7
+ private keyCounter;
8
+ private nextKey;
9
+ private normalize;
10
+ private parseInline;
11
+ private isListLine;
12
+ private renderList;
13
+ private buildListTree;
14
+ private isTableRow;
15
+ private isTableSeparator;
16
+ private parseTableRow;
17
+ private parseTableAlignments;
18
+ private renderTable;
19
+ private render_blocks;
20
+ render(): import("react/jsx-runtime").JSX.Element;
21
+ }
@@ -0,0 +1,310 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Component } from "react";
3
+ import Styles from "./NSMarkdown.module.css";
4
+ export class NSMarkdown extends Component {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.keyCounter = 0;
8
+ }
9
+ nextKey() {
10
+ this.keyCounter += 1;
11
+ return `md_${this.keyCounter}`;
12
+ }
13
+ normalize(text) {
14
+ let normalized = text.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
15
+ if (!normalized.includes("\n")) {
16
+ normalized = normalized
17
+ .replace(/\s+(#{1,6}\s)/g, "\n\n$1")
18
+ .replace(/\s+(\d+\.\s)/g, "\n$1")
19
+ .replace(/\s+([-*+]\s)/g, "\n$1");
20
+ if (normalized.startsWith(" "))
21
+ normalized = normalized.trimStart();
22
+ }
23
+ normalized = normalized
24
+ .split("\n")
25
+ .map((line) => {
26
+ if (/\S.*\|\s*:?-{3,}:?\s*\|/.test(line))
27
+ return line.replace(/\|[ \t]+\|/g, "|\n|");
28
+ return line;
29
+ })
30
+ .join("\n");
31
+ return normalized;
32
+ }
33
+ parseInline(text) {
34
+ let nodes = [];
35
+ let buffer = "";
36
+ let i = 0;
37
+ let flush = () => {
38
+ if (buffer.length > 0) {
39
+ nodes.push(buffer);
40
+ buffer = "";
41
+ }
42
+ };
43
+ while (i < text.length) {
44
+ let ch = text[i];
45
+ if (ch === "`") {
46
+ let end = text.indexOf("`", i + 1);
47
+ if (end !== -1) {
48
+ flush();
49
+ nodes.push(_jsx("code", { className: Styles.ns_md_code_inline, children: text.slice(i + 1, end) }, this.nextKey()));
50
+ i = end + 1;
51
+ continue;
52
+ }
53
+ }
54
+ if ((ch === "*" && text[i + 1] === "*") || (ch === "_" && text[i + 1] === "_")) {
55
+ let marker = ch + ch;
56
+ let end = text.indexOf(marker, i + 2);
57
+ if (end !== -1) {
58
+ flush();
59
+ nodes.push(_jsx("strong", { children: this.parseInline(text.slice(i + 2, end)) }, this.nextKey()));
60
+ i = end + 2;
61
+ continue;
62
+ }
63
+ }
64
+ if ((ch === "*" || ch === "_") && text[i + 1] !== undefined && text[i + 1] !== ch) {
65
+ let end = -1;
66
+ for (let j = i + 1; j < text.length; j++) {
67
+ if (text[j] === ch && text[j - 1] !== " " && text[j + 1] !== ch) {
68
+ end = j;
69
+ break;
70
+ }
71
+ }
72
+ if (end !== -1 && end > i + 1 && text[i + 1] !== " ") {
73
+ flush();
74
+ nodes.push(_jsx("em", { children: this.parseInline(text.slice(i + 1, end)) }, this.nextKey()));
75
+ i = end + 1;
76
+ continue;
77
+ }
78
+ }
79
+ if (this.props.taskDownloadUrl && ch === "@" && text.slice(i, i + 6) === "@task:") {
80
+ let idStart = i + 6;
81
+ let idEnd = idStart;
82
+ while (idEnd < text.length && /[A-Za-z0-9_-]/.test(text[idEnd]))
83
+ idEnd += 1;
84
+ if (idEnd > idStart) {
85
+ flush();
86
+ let rid = text.slice(idStart, idEnd);
87
+ let url = this.props.taskDownloadUrl(rid);
88
+ nodes.push(_jsx("a", { href: url, target: "_blank", rel: "noopener noreferrer", className: Styles.ns_md_link, children: `Download Task Result (${rid})` }, this.nextKey()));
89
+ i = idEnd;
90
+ continue;
91
+ }
92
+ }
93
+ if (ch === "[") {
94
+ let closeBracket = text.indexOf("]", i + 1);
95
+ if (closeBracket !== -1 && text[closeBracket + 1] === "(") {
96
+ let closeParen = text.indexOf(")", closeBracket + 2);
97
+ if (closeParen !== -1) {
98
+ flush();
99
+ let label = text.slice(i + 1, closeBracket);
100
+ let url = text.slice(closeBracket + 2, closeParen);
101
+ nodes.push(_jsx("a", { href: url, target: "_blank", rel: "noopener noreferrer", className: Styles.ns_md_link, children: this.parseInline(label) }, this.nextKey()));
102
+ i = closeParen + 1;
103
+ continue;
104
+ }
105
+ }
106
+ }
107
+ buffer += ch;
108
+ i += 1;
109
+ }
110
+ flush();
111
+ return nodes;
112
+ }
113
+ isListLine(line) {
114
+ let leading = line.match(/^(\s*)/);
115
+ let indent = leading ? leading[1].length : 0;
116
+ let unordered = line.match(/^\s*[-*+]\s+(.*)$/);
117
+ if (unordered)
118
+ return { ordered: false, indent, content: unordered[1] };
119
+ let ordered = line.match(/^\s*\d+\.\s+(.*)$/);
120
+ if (ordered)
121
+ return { ordered: true, indent, content: ordered[1] };
122
+ return null;
123
+ }
124
+ renderList(items) {
125
+ if (items.length === 0)
126
+ return null;
127
+ let ordered = items[0].ordered;
128
+ let Tag = ordered ? "ol" : "ul";
129
+ let className = ordered ? Styles.ns_md_ol : Styles.ns_md_ul;
130
+ return (_jsx(Tag, { className: className, children: items.map((item) => (_jsxs("li", { className: Styles.ns_md_li, children: [this.parseInline(item.content), item.children.length > 0 && this.renderList(item.children)] }, this.nextKey()))) }, this.nextKey()));
131
+ }
132
+ buildListTree(flat) {
133
+ let root = [];
134
+ let stack = [{ indent: -1, items: root }];
135
+ for (let entry of flat) {
136
+ let item = {
137
+ indent: entry.indent,
138
+ ordered: entry.ordered,
139
+ content: entry.content,
140
+ children: [],
141
+ };
142
+ while (stack.length > 1 && stack[stack.length - 1].indent >= entry.indent)
143
+ stack.pop();
144
+ stack[stack.length - 1].items.push(item);
145
+ stack.push({ indent: entry.indent, items: item.children });
146
+ }
147
+ return root;
148
+ }
149
+ isTableRow(line) {
150
+ let trimmed = line.trim();
151
+ if (!trimmed.startsWith("|") || !trimmed.endsWith("|"))
152
+ return false;
153
+ return trimmed.length >= 2 && trimmed.includes("|", 1);
154
+ }
155
+ isTableSeparator(line) {
156
+ let trimmed = line.trim();
157
+ if (!trimmed.startsWith("|") || !trimmed.endsWith("|"))
158
+ return false;
159
+ let cells = trimmed.slice(1, -1).split("|");
160
+ if (cells.length === 0)
161
+ return false;
162
+ return cells.every((cell) => /^\s*:?-{3,}:?\s*$/.test(cell));
163
+ }
164
+ parseTableRow(line) {
165
+ let trimmed = line.trim();
166
+ if (trimmed.startsWith("|"))
167
+ trimmed = trimmed.slice(1);
168
+ if (trimmed.endsWith("|"))
169
+ trimmed = trimmed.slice(0, -1);
170
+ return trimmed.split("|").map((s) => s.trim());
171
+ }
172
+ parseTableAlignments(line) {
173
+ return this.parseTableRow(line).map((cell) => {
174
+ let c = cell.trim();
175
+ let left = c.startsWith(":");
176
+ let right = c.endsWith(":");
177
+ if (left && right)
178
+ return "center";
179
+ if (right)
180
+ return "right";
181
+ if (left)
182
+ return "left";
183
+ return null;
184
+ });
185
+ }
186
+ renderTable(headers, alignments, rows) {
187
+ let colCount = headers.length;
188
+ return (_jsx("div", { className: Styles.ns_md_table_wrap, children: _jsxs("table", { className: Styles.ns_md_table, children: [_jsx("thead", { children: _jsx("tr", { children: headers.map((h, idx) => (_jsx("th", { className: Styles.ns_md_th, style: alignments[idx] ? { textAlign: alignments[idx] } : undefined, children: this.parseInline(h) }, this.nextKey()))) }) }), _jsx("tbody", { children: rows.map((row) => (_jsx("tr", { children: Array.from({ length: colCount }).map((_, idx) => {
189
+ var _a;
190
+ return (_jsx("td", { className: Styles.ns_md_td, style: alignments[idx] ? { textAlign: alignments[idx] } : undefined, children: this.parseInline((_a = row[idx]) !== null && _a !== void 0 ? _a : "") }, this.nextKey()));
191
+ }) }, this.nextKey()))) })] }) }, this.nextKey()));
192
+ }
193
+ render_blocks(text) {
194
+ let lines = text.split("\n");
195
+ let blocks = [];
196
+ let i = 0;
197
+ while (i < lines.length) {
198
+ let line = lines[i];
199
+ if (line.trim() === "") {
200
+ i += 1;
201
+ continue;
202
+ }
203
+ let fence = line.match(/^\s*```(\w*)\s*$/);
204
+ if (fence) {
205
+ let lang = fence[1];
206
+ let codeLines = [];
207
+ i += 1;
208
+ while (i < lines.length && !/^\s*```\s*$/.test(lines[i])) {
209
+ codeLines.push(lines[i]);
210
+ i += 1;
211
+ }
212
+ if (i < lines.length)
213
+ i += 1;
214
+ blocks.push(_jsx("pre", { className: Styles.ns_md_pre, children: _jsx("code", { className: lang ? `${Styles.ns_md_code} language-${lang}` : Styles.ns_md_code, children: codeLines.join("\n") }) }, this.nextKey()));
215
+ continue;
216
+ }
217
+ let heading = line.match(/^\s*(#{1,6})\s+(.*)$/);
218
+ if (heading) {
219
+ let level = heading[1].length;
220
+ let content = heading[2].replace(/\s*#+\s*$/, "");
221
+ let className = level === 1 ? Styles.ns_md_h1 :
222
+ level === 2 ? Styles.ns_md_h2 :
223
+ level === 3 ? Styles.ns_md_h3 :
224
+ level === 4 ? Styles.ns_md_h4 :
225
+ level === 5 ? Styles.ns_md_h5 :
226
+ Styles.ns_md_h6;
227
+ let Tag = `h${level}`;
228
+ blocks.push(_jsx(Tag, { className: className, children: this.parseInline(content) }, this.nextKey()));
229
+ i += 1;
230
+ continue;
231
+ }
232
+ if (/^\s*(-{3,}|_{3,}|\*{3,})\s*$/.test(line)) {
233
+ blocks.push(_jsx("hr", { className: Styles.ns_md_hr }, this.nextKey()));
234
+ i += 1;
235
+ continue;
236
+ }
237
+ if (/^\s*>\s?/.test(line)) {
238
+ let quoteLines = [];
239
+ while (i < lines.length && /^\s*>\s?/.test(lines[i])) {
240
+ quoteLines.push(lines[i].replace(/^\s*>\s?/, ""));
241
+ i += 1;
242
+ }
243
+ blocks.push(_jsx("blockquote", { className: Styles.ns_md_blockquote, children: this.render_blocks(quoteLines.join("\n")) }, this.nextKey()));
244
+ continue;
245
+ }
246
+ let listCheck = this.isListLine(line);
247
+ if (listCheck) {
248
+ let flat = [];
249
+ while (i < lines.length) {
250
+ let current = lines[i];
251
+ let parsed = this.isListLine(current);
252
+ if (parsed) {
253
+ flat.push(parsed);
254
+ i += 1;
255
+ continue;
256
+ }
257
+ if (flat.length > 0 && /^\s+\S/.test(current) && current.trim() !== "") {
258
+ flat[flat.length - 1].content += " " + current.trim();
259
+ i += 1;
260
+ continue;
261
+ }
262
+ break;
263
+ }
264
+ let tree = this.buildListTree(flat);
265
+ blocks.push(this.renderList(tree));
266
+ continue;
267
+ }
268
+ if (this.isTableRow(line) && i + 1 < lines.length && this.isTableSeparator(lines[i + 1])) {
269
+ let headers = this.parseTableRow(line);
270
+ let alignments = this.parseTableAlignments(lines[i + 1]);
271
+ i += 2;
272
+ let rows = [];
273
+ while (i < lines.length && this.isTableRow(lines[i])) {
274
+ rows.push(this.parseTableRow(lines[i]));
275
+ i += 1;
276
+ }
277
+ blocks.push(this.renderTable(headers, alignments, rows));
278
+ continue;
279
+ }
280
+ let paraLines = [line];
281
+ i += 1;
282
+ while (i < lines.length) {
283
+ let next = lines[i];
284
+ if (next.trim() === "")
285
+ break;
286
+ if (/^\s*#{1,6}\s+/.test(next))
287
+ break;
288
+ if (/^\s*```/.test(next))
289
+ break;
290
+ if (/^\s*>\s?/.test(next))
291
+ break;
292
+ if (this.isListLine(next))
293
+ break;
294
+ if (/^\s*(-{3,}|_{3,}|\*{3,})\s*$/.test(next))
295
+ break;
296
+ paraLines.push(next);
297
+ i += 1;
298
+ }
299
+ blocks.push(_jsx("p", { className: Styles.ns_md_p, children: this.parseInline(paraLines.join(" ")) }, this.nextKey()));
300
+ }
301
+ return blocks;
302
+ }
303
+ render() {
304
+ var _a;
305
+ this.keyCounter = 0;
306
+ let text = this.normalize((_a = this.props.text) !== null && _a !== void 0 ? _a : "");
307
+ return _jsx("div", { className: Styles.ns_md, children: this.render_blocks(text) });
308
+ }
309
+ }
310
+ //# sourceMappingURL=NSMarkdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NSMarkdown.js","sourceRoot":"","sources":["../../src/components/NSMarkdown.tsx"],"names":[],"mappings":"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"}
package/dist/main.d.ts CHANGED
@@ -88,6 +88,7 @@ export * from "./components/NSLinkRed";
88
88
  export * from "./components/NSListGrouped";
89
89
  export * from "./components/NSListProduct";
90
90
  export * from "./components/NSLoading";
91
+ export * from "./components/NSMarkdown";
91
92
  export * from "./components/NSMenuAction";
92
93
  export * from "./components/NSMenuButton";
93
94
  export * from "./components/NSNoData";
package/dist/main.js CHANGED
@@ -90,6 +90,7 @@ export * from "./components/NSLinkRed";
90
90
  export * from "./components/NSListGrouped";
91
91
  export * from "./components/NSListProduct";
92
92
  export * from "./components/NSLoading";
93
+ export * from "./components/NSMarkdown";
93
94
  export * from "./components/NSMenuAction";
94
95
  export * from "./components/NSMenuButton";
95
96
  export * from "./components/NSNoData";
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.5.35",
11
+ "version": "1.5.36",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/main.js",
@@ -0,0 +1,182 @@
1
+ .ns_md {
2
+ width: 100%;
3
+ color: #141b5c;
4
+ font-size: 0.95rem;
5
+ line-height: 1.6;
6
+ word-break: break-word;
7
+ }
8
+
9
+ .ns_md>*:first-child {
10
+ margin-top: 0;
11
+ }
12
+
13
+ .ns_md>*:last-child {
14
+ margin-bottom: 0;
15
+ }
16
+
17
+ .ns_md_h1,
18
+ .ns_md_h2,
19
+ .ns_md_h3,
20
+ .ns_md_h4,
21
+ .ns_md_h5,
22
+ .ns_md_h6 {
23
+ margin: 1.25rem 0 0.5rem;
24
+ color: #141b5c;
25
+ font-weight: 700;
26
+ line-height: 1.3;
27
+ }
28
+
29
+ .ns_md_h1 {
30
+ font-size: 1.5rem;
31
+ padding-bottom: 0.3rem;
32
+ border-bottom: 1px solid rgba(20, 27, 92, 0.12);
33
+ }
34
+
35
+ .ns_md_h2 {
36
+ font-size: 1.25rem;
37
+ padding-bottom: 0.25rem;
38
+ border-bottom: 1px solid rgba(20, 27, 92, 0.08);
39
+ }
40
+
41
+ .ns_md_h3 {
42
+ font-size: 1.1rem;
43
+ }
44
+
45
+ .ns_md_h4 {
46
+ font-size: 1rem;
47
+ }
48
+
49
+ .ns_md_h5 {
50
+ font-size: 0.95rem;
51
+ }
52
+
53
+ .ns_md_h6 {
54
+ font-size: 0.9rem;
55
+ color: rgba(20, 27, 92, 0.8);
56
+ }
57
+
58
+ .ns_md_p {
59
+ margin: 0 0 0.75rem;
60
+ }
61
+
62
+ .ns_md_ul,
63
+ .ns_md_ol {
64
+ margin: 0.25rem 0 0.75rem;
65
+ padding-left: 1.5rem;
66
+ }
67
+
68
+ .ns_md_ul {
69
+ list-style: disc;
70
+ }
71
+
72
+ .ns_md_ol {
73
+ list-style: decimal;
74
+ }
75
+
76
+ .ns_md_ul .ns_md_ul {
77
+ list-style: circle;
78
+ }
79
+
80
+ .ns_md_ul .ns_md_ul .ns_md_ul {
81
+ list-style: square;
82
+ }
83
+
84
+ .ns_md_li {
85
+ margin: 0.15rem 0;
86
+ }
87
+
88
+ .ns_md_li>.ns_md_ul,
89
+ .ns_md_li>.ns_md_ol {
90
+ margin: 0.25rem 0 0.25rem;
91
+ }
92
+
93
+ .ns_md_code_inline {
94
+ padding: 0.1rem 0.35rem;
95
+ border-radius: 0.25rem;
96
+ background-color: rgba(20, 27, 92, 0.08);
97
+ color: #141b5c;
98
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
99
+ font-size: 0.875em;
100
+ }
101
+
102
+ .ns_md_pre {
103
+ margin: 0.5rem 0 0.75rem;
104
+ padding: 0.85rem 1rem;
105
+ border-radius: 0.5rem;
106
+ background-color: #0f1535;
107
+ color: #e6ecff;
108
+ overflow-x: auto;
109
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
110
+ font-size: 0.85rem;
111
+ line-height: 1.5;
112
+ }
113
+
114
+ .ns_md_pre .ns_md_code,
115
+ .ns_md_pre code {
116
+ padding: 0;
117
+ background: none;
118
+ color: inherit;
119
+ font-size: inherit;
120
+ }
121
+
122
+ .ns_md_link {
123
+ color: #2858e0;
124
+ text-decoration: underline;
125
+ text-underline-offset: 2px;
126
+ }
127
+
128
+ .ns_md_link:hover {
129
+ color: #1a3aa0;
130
+ }
131
+
132
+ .ns_md_blockquote {
133
+ margin: 0.5rem 0 0.75rem;
134
+ padding: 0.25rem 0.9rem;
135
+ border-left: 3px solid rgba(20, 27, 92, 0.25);
136
+ background-color: rgba(20, 27, 92, 0.04);
137
+ color: rgba(20, 27, 92, 0.85);
138
+ border-radius: 0 0.35rem 0.35rem 0;
139
+ }
140
+
141
+ .ns_md_blockquote>*:first-child {
142
+ margin-top: 0;
143
+ }
144
+
145
+ .ns_md_blockquote>*:last-child {
146
+ margin-bottom: 0;
147
+ }
148
+
149
+ .ns_md_hr {
150
+ margin: 1rem 0;
151
+ border: none;
152
+ border-top: 1px solid rgba(20, 27, 92, 0.15);
153
+ }
154
+
155
+ .ns_md_table_wrap {
156
+ margin: 0.5rem 0 0.75rem;
157
+ overflow-x: auto;
158
+ }
159
+
160
+ .ns_md_table {
161
+ width: 100%;
162
+ border-collapse: collapse;
163
+ font-size: 0.9rem;
164
+ }
165
+
166
+ .ns_md_th,
167
+ .ns_md_td {
168
+ padding: 0.5rem 0.75rem;
169
+ border: 1px solid rgba(20, 27, 92, 0.15);
170
+ text-align: left;
171
+ vertical-align: top;
172
+ }
173
+
174
+ .ns_md_th {
175
+ background-color: rgba(20, 27, 92, 0.06);
176
+ font-weight: 600;
177
+ color: #141b5c;
178
+ }
179
+
180
+ .ns_md_table tbody tr:nth-child(even) {
181
+ background-color: rgba(20, 27, 92, 0.02);
182
+ }
@@ -0,0 +1,500 @@
1
+ import { Component, ReactNode } from "react";
2
+ import Styles from "./NSMarkdown.module.css";
3
+
4
+ export interface NSMarkdownProps
5
+ {
6
+ text: string;
7
+ taskDownloadUrl?: (id: string) => string;
8
+ }
9
+
10
+ interface ListItem
11
+ {
12
+ indent: number;
13
+ ordered: boolean;
14
+ content: string;
15
+ children: ListItem[];
16
+ }
17
+
18
+ export class NSMarkdown extends Component<NSMarkdownProps>
19
+ {
20
+ private keyCounter = 0;
21
+
22
+ private nextKey(): string
23
+ {
24
+ this.keyCounter += 1;
25
+ return `md_${this.keyCounter}`;
26
+ }
27
+
28
+ private normalize(text: string): string
29
+ {
30
+ let normalized = text.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
31
+
32
+ if (!normalized.includes("\n"))
33
+ {
34
+ normalized = normalized
35
+ .replace(/\s+(#{1,6}\s)/g, "\n\n$1")
36
+ .replace(/\s+(\d+\.\s)/g, "\n$1")
37
+ .replace(/\s+([-*+]\s)/g, "\n$1");
38
+ if (normalized.startsWith(" "))
39
+ normalized = normalized.trimStart();
40
+ }
41
+
42
+ normalized = normalized
43
+ .split("\n")
44
+ .map((line) =>
45
+ {
46
+ if (/\S.*\|\s*:?-{3,}:?\s*\|/.test(line))
47
+ return line.replace(/\|[ \t]+\|/g, "|\n|");
48
+ return line;
49
+ })
50
+ .join("\n");
51
+
52
+ return normalized;
53
+ }
54
+
55
+ private parseInline(text: string): ReactNode[]
56
+ {
57
+ let nodes: ReactNode[] = [];
58
+ let buffer = "";
59
+ let i = 0;
60
+
61
+ let flush = () =>
62
+ {
63
+ if (buffer.length > 0)
64
+ {
65
+ nodes.push(buffer);
66
+ buffer = "";
67
+ }
68
+ };
69
+
70
+ while (i < text.length)
71
+ {
72
+ let ch = text[i];
73
+
74
+ // Inline code: `code`
75
+ if (ch === "`")
76
+ {
77
+ let end = text.indexOf("`", i + 1);
78
+ if (end !== -1)
79
+ {
80
+ flush();
81
+ nodes.push(
82
+ <code key={this.nextKey()} className={Styles.ns_md_code_inline}>
83
+ {text.slice(i + 1, end)}
84
+ </code>
85
+ );
86
+ i = end + 1;
87
+ continue;
88
+ }
89
+ }
90
+
91
+ // Bold: **text** or __text__
92
+ if ((ch === "*" && text[i + 1] === "*") || (ch === "_" && text[i + 1] === "_"))
93
+ {
94
+ let marker = ch + ch;
95
+ let end = text.indexOf(marker, i + 2);
96
+ if (end !== -1)
97
+ {
98
+ flush();
99
+ nodes.push(
100
+ <strong key={this.nextKey()}>
101
+ {this.parseInline(text.slice(i + 2, end))}
102
+ </strong>
103
+ );
104
+ i = end + 2;
105
+ continue;
106
+ }
107
+ }
108
+
109
+ // Italic: *text* or _text_
110
+ if ((ch === "*" || ch === "_") && text[i + 1] !== undefined && text[i + 1] !== ch)
111
+ {
112
+ let end = -1;
113
+ for (let j = i + 1; j < text.length; j++)
114
+ {
115
+ if (text[j] === ch && text[j - 1] !== " " && text[j + 1] !== ch)
116
+ {
117
+ end = j;
118
+ break;
119
+ }
120
+ }
121
+ if (end !== -1 && end > i + 1 && text[i + 1] !== " ")
122
+ {
123
+ flush();
124
+ nodes.push(
125
+ <em key={this.nextKey()}>
126
+ {this.parseInline(text.slice(i + 1, end))}
127
+ </em>
128
+ );
129
+ i = end + 1;
130
+ continue;
131
+ }
132
+ }
133
+
134
+ // Task reference: @task:{id} → download link (only when taskDownloadUrl is provided)
135
+ if (this.props.taskDownloadUrl && ch === "@" && text.slice(i, i + 6) === "@task:")
136
+ {
137
+ let idStart = i + 6;
138
+ let idEnd = idStart;
139
+ while (idEnd < text.length && /[A-Za-z0-9_-]/.test(text[idEnd]))
140
+ idEnd += 1;
141
+ if (idEnd > idStart)
142
+ {
143
+ flush();
144
+ let rid = text.slice(idStart, idEnd);
145
+ let url = this.props.taskDownloadUrl(rid);
146
+ nodes.push(
147
+ <a
148
+ key={this.nextKey()}
149
+ href={url}
150
+ target="_blank"
151
+ rel="noopener noreferrer"
152
+ className={Styles.ns_md_link}
153
+ >
154
+ {`Download Task Result (${rid})`}
155
+ </a>
156
+ );
157
+ i = idEnd;
158
+ continue;
159
+ }
160
+ }
161
+
162
+ // Link: [text](url)
163
+ if (ch === "[")
164
+ {
165
+ let closeBracket = text.indexOf("]", i + 1);
166
+ if (closeBracket !== -1 && text[closeBracket + 1] === "(")
167
+ {
168
+ let closeParen = text.indexOf(")", closeBracket + 2);
169
+ if (closeParen !== -1)
170
+ {
171
+ flush();
172
+ let label = text.slice(i + 1, closeBracket);
173
+ let url = text.slice(closeBracket + 2, closeParen);
174
+ nodes.push(
175
+ <a
176
+ key={this.nextKey()}
177
+ href={url}
178
+ target="_blank"
179
+ rel="noopener noreferrer"
180
+ className={Styles.ns_md_link}
181
+ >
182
+ {this.parseInline(label)}
183
+ </a>
184
+ );
185
+ i = closeParen + 1;
186
+ continue;
187
+ }
188
+ }
189
+ }
190
+
191
+ buffer += ch;
192
+ i += 1;
193
+ }
194
+
195
+ flush();
196
+ return nodes;
197
+ }
198
+
199
+ private isListLine(line: string): { ordered: boolean; indent: number; content: string } | null
200
+ {
201
+ let leading = line.match(/^(\s*)/);
202
+ let indent = leading ? leading[1].length : 0;
203
+
204
+ let unordered = line.match(/^\s*[-*+]\s+(.*)$/);
205
+ if (unordered)
206
+ return { ordered: false, indent, content: unordered[1] };
207
+
208
+ let ordered = line.match(/^\s*\d+\.\s+(.*)$/);
209
+ if (ordered)
210
+ return { ordered: true, indent, content: ordered[1] };
211
+
212
+ return null;
213
+ }
214
+
215
+ private renderList(items: ListItem[]): ReactNode
216
+ {
217
+ if (items.length === 0)
218
+ return null;
219
+
220
+ let ordered = items[0].ordered;
221
+ let Tag: "ol" | "ul" = ordered ? "ol" : "ul";
222
+ let className = ordered ? Styles.ns_md_ol : Styles.ns_md_ul;
223
+
224
+ return (
225
+ <Tag key={this.nextKey()} className={className}>
226
+ {items.map((item) => (
227
+ <li key={this.nextKey()} className={Styles.ns_md_li}>
228
+ {this.parseInline(item.content)}
229
+ {item.children.length > 0 && this.renderList(item.children)}
230
+ </li>
231
+ ))}
232
+ </Tag>
233
+ );
234
+ }
235
+
236
+ private buildListTree(flat: { ordered: boolean; indent: number; content: string }[]): ListItem[]
237
+ {
238
+ let root: ListItem[] = [];
239
+ let stack: { indent: number; items: ListItem[] }[] = [{ indent: -1, items: root }];
240
+
241
+ for (let entry of flat)
242
+ {
243
+ let item: ListItem = {
244
+ indent: entry.indent,
245
+ ordered: entry.ordered,
246
+ content: entry.content,
247
+ children: [],
248
+ };
249
+
250
+ while (stack.length > 1 && stack[stack.length - 1].indent >= entry.indent)
251
+ stack.pop();
252
+
253
+ stack[stack.length - 1].items.push(item);
254
+ stack.push({ indent: entry.indent, items: item.children });
255
+ }
256
+
257
+ return root;
258
+ }
259
+
260
+ private isTableRow(line: string): boolean
261
+ {
262
+ let trimmed = line.trim();
263
+ if (!trimmed.startsWith("|") || !trimmed.endsWith("|")) return false;
264
+ return trimmed.length >= 2 && trimmed.includes("|", 1);
265
+ }
266
+
267
+ private isTableSeparator(line: string): boolean
268
+ {
269
+ let trimmed = line.trim();
270
+ if (!trimmed.startsWith("|") || !trimmed.endsWith("|")) return false;
271
+ let cells = trimmed.slice(1, -1).split("|");
272
+ if (cells.length === 0) return false;
273
+ return cells.every((cell) => /^\s*:?-{3,}:?\s*$/.test(cell));
274
+ }
275
+
276
+ private parseTableRow(line: string): string[]
277
+ {
278
+ let trimmed = line.trim();
279
+ if (trimmed.startsWith("|")) trimmed = trimmed.slice(1);
280
+ if (trimmed.endsWith("|")) trimmed = trimmed.slice(0, -1);
281
+ return trimmed.split("|").map((s) => s.trim());
282
+ }
283
+
284
+ private parseTableAlignments(line: string): (string | null)[]
285
+ {
286
+ return this.parseTableRow(line).map((cell) =>
287
+ {
288
+ let c = cell.trim();
289
+ let left = c.startsWith(":");
290
+ let right = c.endsWith(":");
291
+ if (left && right) return "center";
292
+ if (right) return "right";
293
+ if (left) return "left";
294
+ return null;
295
+ });
296
+ }
297
+
298
+ private renderTable(headers: string[], alignments: (string | null)[], rows: string[][]): ReactNode
299
+ {
300
+ let colCount = headers.length;
301
+ return (
302
+ <div key={this.nextKey()} className={Styles.ns_md_table_wrap}>
303
+ <table className={Styles.ns_md_table}>
304
+ <thead>
305
+ <tr>
306
+ {headers.map((h, idx) => (
307
+ <th
308
+ key={this.nextKey()}
309
+ className={Styles.ns_md_th}
310
+ style={alignments[idx] ? { textAlign: alignments[idx] as any } : undefined}
311
+ >
312
+ {this.parseInline(h)}
313
+ </th>
314
+ ))}
315
+ </tr>
316
+ </thead>
317
+ <tbody>
318
+ {rows.map((row) => (
319
+ <tr key={this.nextKey()}>
320
+ {Array.from({ length: colCount }).map((_, idx) => (
321
+ <td
322
+ key={this.nextKey()}
323
+ className={Styles.ns_md_td}
324
+ style={alignments[idx] ? { textAlign: alignments[idx] as any } : undefined}
325
+ >
326
+ {this.parseInline(row[idx] ?? "")}
327
+ </td>
328
+ ))}
329
+ </tr>
330
+ ))}
331
+ </tbody>
332
+ </table>
333
+ </div>
334
+ );
335
+ }
336
+
337
+ private render_blocks(text: string): ReactNode[]
338
+ {
339
+ let lines = text.split("\n");
340
+ let blocks: ReactNode[] = [];
341
+ let i = 0;
342
+
343
+ while (i < lines.length)
344
+ {
345
+ let line = lines[i];
346
+
347
+ if (line.trim() === "")
348
+ {
349
+ i += 1;
350
+ continue;
351
+ }
352
+
353
+ // Fenced code block
354
+ let fence = line.match(/^\s*```(\w*)\s*$/);
355
+ if (fence)
356
+ {
357
+ let lang = fence[1];
358
+ let codeLines: string[] = [];
359
+ i += 1;
360
+ while (i < lines.length && !/^\s*```\s*$/.test(lines[i]))
361
+ {
362
+ codeLines.push(lines[i]);
363
+ i += 1;
364
+ }
365
+ if (i < lines.length)
366
+ i += 1;
367
+ blocks.push(
368
+ <pre key={this.nextKey()} className={Styles.ns_md_pre}>
369
+ <code className={lang ? `${Styles.ns_md_code} language-${lang}` : Styles.ns_md_code}>
370
+ {codeLines.join("\n")}
371
+ </code>
372
+ </pre>
373
+ );
374
+ continue;
375
+ }
376
+
377
+ // Heading
378
+ let heading = line.match(/^\s*(#{1,6})\s+(.*)$/);
379
+ if (heading)
380
+ {
381
+ let level = heading[1].length;
382
+ let content = heading[2].replace(/\s*#+\s*$/, "");
383
+ let className =
384
+ level === 1 ? Styles.ns_md_h1 :
385
+ level === 2 ? Styles.ns_md_h2 :
386
+ level === 3 ? Styles.ns_md_h3 :
387
+ level === 4 ? Styles.ns_md_h4 :
388
+ level === 5 ? Styles.ns_md_h5 :
389
+ Styles.ns_md_h6;
390
+ let Tag = `h${level}` as "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
391
+ blocks.push(
392
+ <Tag key={this.nextKey()} className={className}>
393
+ {this.parseInline(content)}
394
+ </Tag>
395
+ );
396
+ i += 1;
397
+ continue;
398
+ }
399
+
400
+ // Horizontal rule
401
+ if (/^\s*(-{3,}|_{3,}|\*{3,})\s*$/.test(line))
402
+ {
403
+ blocks.push(<hr key={this.nextKey()} className={Styles.ns_md_hr} />);
404
+ i += 1;
405
+ continue;
406
+ }
407
+
408
+ // Blockquote
409
+ if (/^\s*>\s?/.test(line))
410
+ {
411
+ let quoteLines: string[] = [];
412
+ while (i < lines.length && /^\s*>\s?/.test(lines[i]))
413
+ {
414
+ quoteLines.push(lines[i].replace(/^\s*>\s?/, ""));
415
+ i += 1;
416
+ }
417
+ blocks.push(
418
+ <blockquote key={this.nextKey()} className={Styles.ns_md_blockquote}>
419
+ {this.render_blocks(quoteLines.join("\n"))}
420
+ </blockquote>
421
+ );
422
+ continue;
423
+ }
424
+
425
+ // List
426
+ let listCheck = this.isListLine(line);
427
+ if (listCheck)
428
+ {
429
+ let flat: { ordered: boolean; indent: number; content: string }[] = [];
430
+ while (i < lines.length)
431
+ {
432
+ let current = lines[i];
433
+ let parsed = this.isListLine(current);
434
+ if (parsed)
435
+ {
436
+ flat.push(parsed);
437
+ i += 1;
438
+ continue;
439
+ }
440
+ if (flat.length > 0 && /^\s+\S/.test(current) && current.trim() !== "")
441
+ {
442
+ flat[flat.length - 1].content += " " + current.trim();
443
+ i += 1;
444
+ continue;
445
+ }
446
+ break;
447
+ }
448
+ let tree = this.buildListTree(flat);
449
+ blocks.push(this.renderList(tree));
450
+ continue;
451
+ }
452
+
453
+ // Table
454
+ if (this.isTableRow(line) && i + 1 < lines.length && this.isTableSeparator(lines[i + 1]))
455
+ {
456
+ let headers = this.parseTableRow(line);
457
+ let alignments = this.parseTableAlignments(lines[i + 1]);
458
+ i += 2;
459
+ let rows: string[][] = [];
460
+ while (i < lines.length && this.isTableRow(lines[i]))
461
+ {
462
+ rows.push(this.parseTableRow(lines[i]));
463
+ i += 1;
464
+ }
465
+ blocks.push(this.renderTable(headers, alignments, rows));
466
+ continue;
467
+ }
468
+
469
+ // Paragraph
470
+ let paraLines: string[] = [line];
471
+ i += 1;
472
+ while (i < lines.length)
473
+ {
474
+ let next = lines[i];
475
+ if (next.trim() === "") break;
476
+ if (/^\s*#{1,6}\s+/.test(next)) break;
477
+ if (/^\s*```/.test(next)) break;
478
+ if (/^\s*>\s?/.test(next)) break;
479
+ if (this.isListLine(next)) break;
480
+ if (/^\s*(-{3,}|_{3,}|\*{3,})\s*$/.test(next)) break;
481
+ paraLines.push(next);
482
+ i += 1;
483
+ }
484
+ blocks.push(
485
+ <p key={this.nextKey()} className={Styles.ns_md_p}>
486
+ {this.parseInline(paraLines.join(" "))}
487
+ </p>
488
+ );
489
+ }
490
+
491
+ return blocks;
492
+ }
493
+
494
+ override render()
495
+ {
496
+ this.keyCounter = 0;
497
+ let text = this.normalize(this.props.text ?? "");
498
+ return <div className={Styles.ns_md}>{this.render_blocks(text)}</div>;
499
+ }
500
+ }
package/src/main.ts CHANGED
@@ -137,6 +137,9 @@ export * from "./components/NSListProduct";
137
137
  // Loading
138
138
  export * from "./components/NSLoading";
139
139
 
140
+ // Markdown
141
+ export * from "./components/NSMarkdown";
142
+
140
143
  // Menu
141
144
  export * from "./components/NSMenuAction";
142
145
  export * from "./components/NSMenuButton";