@relyio/sdk 0.11.0 → 0.12.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/CHANGELOG.md +88 -0
- package/dist/chunk-3DRDHXLY.js +680 -0
- package/dist/{chunk-PO7CUR5U.cjs → chunk-3MSFWXQL.cjs} +37 -65
- package/dist/{chunk-4HTIU5YE.cjs → chunk-DXCVO6M5.cjs} +46 -59
- package/dist/chunk-FI5VIF4M.cjs +686 -0
- package/dist/{chunk-7GLDVHIH.js → chunk-FRJEUAAF.js} +46 -59
- package/dist/{chunk-2TIJLV2X.js → chunk-POEEDYFM.js} +38 -65
- package/dist/client/index.cjs +3 -3
- package/dist/client/index.d.cts +5 -4
- package/dist/client/index.d.ts +5 -4
- package/dist/client/index.js +1 -1
- package/dist/{define-schema-CVi8nwc7.d.ts → define-schema-DgctHlI2.d.cts} +35 -220
- package/dist/{define-schema-DqpipEHv.d.cts → define-schema-mrEZbY1h.d.ts} +35 -220
- package/dist/{define-content-type-ENAod5Ve.d.cts → include-paths-CL4gHv6I.d.cts} +1673 -734
- package/dist/{define-content-type-ENAod5Ve.d.ts → include-paths-CrJNTsMl.d.ts} +1673 -734
- package/dist/{index-C73cK2Tt.d.ts → index-B9RfZVF1.d.ts} +3 -2
- package/dist/{index-MLAFUuco.d.cts → index-BrvEg6-A.d.cts} +107 -46
- package/dist/{index-BKEAYvvz.d.ts → index-Pw0onkJe.d.ts} +107 -46
- package/dist/{index-BM42r4yg.d.cts → index-b-AkfTUv.d.cts} +3 -2
- package/dist/index.cjs +102 -85
- package/dist/index.d.cts +14 -10
- package/dist/index.d.ts +14 -10
- package/dist/index.js +4 -3
- package/dist/rich-text/index.cjs +29 -0
- package/dist/rich-text/index.d.cts +148 -0
- package/dist/rich-text/index.d.ts +148 -0
- package/dist/rich-text/index.js +4 -0
- package/dist/rich-text.d-rKmpgdGd.d.cts +200 -0
- package/dist/rich-text.d-rKmpgdGd.d.ts +200 -0
- package/dist/schema/index.cjs +34 -38
- package/dist/schema/index.d.cts +84 -37
- package/dist/schema/index.d.ts +84 -37
- package/dist/schema/index.js +1 -1
- package/dist/types/index.d.cts +3 -2
- package/dist/types/index.d.ts +3 -2
- package/package.json +8 -2
- package/dist/.tsbuildinfo +0 -1
|
@@ -0,0 +1,686 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkMWMSFIWN_cjs = require('./chunk-MWMSFIWN.cjs');
|
|
4
|
+
|
|
5
|
+
/* RelyIO SDK - Built with ❤️ by the RelyIO Team */
|
|
6
|
+
|
|
7
|
+
// src/rich-text/render.ts
|
|
8
|
+
var RICH_TEXT_VOID_TAGS = /* @__PURE__ */ new Set([
|
|
9
|
+
"hr",
|
|
10
|
+
"br",
|
|
11
|
+
"input"
|
|
12
|
+
]);
|
|
13
|
+
var PLAIN = Object.freeze({ header: false });
|
|
14
|
+
var HEADER = Object.freeze({ header: true });
|
|
15
|
+
function renderRichText(value, target) {
|
|
16
|
+
if (value._type !== "richText") {
|
|
17
|
+
const drawn = block(value, target);
|
|
18
|
+
return drawn === void 0 ? [] : [drawn];
|
|
19
|
+
}
|
|
20
|
+
return Array.isArray(value.children) ? blocks(value.children, target) : [];
|
|
21
|
+
}
|
|
22
|
+
chunkMWMSFIWN_cjs.__name(renderRichText, "renderRichText");
|
|
23
|
+
function blocks(nodes, target) {
|
|
24
|
+
const out = [];
|
|
25
|
+
for (const node of nodes) {
|
|
26
|
+
const drawn = block(node, target);
|
|
27
|
+
if (drawn !== void 0) out.push(drawn);
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
chunkMWMSFIWN_cjs.__name(blocks, "blocks");
|
|
32
|
+
var HEADING_TAGS = {
|
|
33
|
+
1: "h1",
|
|
34
|
+
2: "h2",
|
|
35
|
+
3: "h3",
|
|
36
|
+
4: "h4",
|
|
37
|
+
5: "h5",
|
|
38
|
+
6: "h6"
|
|
39
|
+
};
|
|
40
|
+
function block(node, target) {
|
|
41
|
+
switch (node._type) {
|
|
42
|
+
case "paragraph": {
|
|
43
|
+
return target.node(
|
|
44
|
+
node,
|
|
45
|
+
inline(node.children, target),
|
|
46
|
+
(contents) => target.element("p", void 0, contents, node._key),
|
|
47
|
+
PLAIN
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
case "heading": {
|
|
51
|
+
const tag = HEADING_TAGS[node.level] ?? "p";
|
|
52
|
+
return target.node(
|
|
53
|
+
node,
|
|
54
|
+
inline(node.children, target),
|
|
55
|
+
(contents) => target.element(tag, void 0, contents, node._key),
|
|
56
|
+
PLAIN
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
case "quote": {
|
|
60
|
+
return target.node(
|
|
61
|
+
node,
|
|
62
|
+
blocks(node.children, target),
|
|
63
|
+
(contents) => target.element("blockquote", void 0, contents, node._key),
|
|
64
|
+
PLAIN
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
case "list": {
|
|
68
|
+
return list(node, target);
|
|
69
|
+
}
|
|
70
|
+
case "codeBlock": {
|
|
71
|
+
return code(node, target);
|
|
72
|
+
}
|
|
73
|
+
case "codeGroup": {
|
|
74
|
+
const tabs = [];
|
|
75
|
+
for (const tab of node.children) {
|
|
76
|
+
if (tab._type === "codeBlock") tabs.push(code(tab, target));
|
|
77
|
+
}
|
|
78
|
+
return target.node(
|
|
79
|
+
node,
|
|
80
|
+
tabs,
|
|
81
|
+
(contents) => target.element("div", void 0, contents, node._key),
|
|
82
|
+
PLAIN
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
case "table": {
|
|
86
|
+
return table(node, target);
|
|
87
|
+
}
|
|
88
|
+
case "divider": {
|
|
89
|
+
return target.node(node, [], () => target.element("hr", void 0, [], node._key), PLAIN);
|
|
90
|
+
}
|
|
91
|
+
default: {
|
|
92
|
+
return void 0;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
chunkMWMSFIWN_cjs.__name(block, "block");
|
|
97
|
+
function list(node, target) {
|
|
98
|
+
let tag;
|
|
99
|
+
switch (node.style) {
|
|
100
|
+
case "bullet":
|
|
101
|
+
case "task": {
|
|
102
|
+
tag = "ul";
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case "numbered": {
|
|
106
|
+
tag = "ol";
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
default: {
|
|
110
|
+
node.style;
|
|
111
|
+
tag = "ul";
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const start = node.style === "numbered" && Number.isSafeInteger(node.start) && node.start !== 1 ? node.start : void 0;
|
|
115
|
+
const items = [];
|
|
116
|
+
for (const item of node.children) {
|
|
117
|
+
if (item._type === "listItem") items.push(listItem(item, node.style === "task", target));
|
|
118
|
+
}
|
|
119
|
+
return target.node(
|
|
120
|
+
node,
|
|
121
|
+
items,
|
|
122
|
+
(contents) => target.element(tag, start === void 0 ? void 0 : { start }, contents, node._key),
|
|
123
|
+
PLAIN
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
chunkMWMSFIWN_cjs.__name(list, "list");
|
|
127
|
+
function listItem(item, task, target) {
|
|
128
|
+
return target.node(
|
|
129
|
+
item,
|
|
130
|
+
blocks(item.children, target),
|
|
131
|
+
(contents) => {
|
|
132
|
+
if (!task) return target.element("li", void 0, contents, item._key);
|
|
133
|
+
const box = target.element(
|
|
134
|
+
"input",
|
|
135
|
+
item.checked === true ? { type: "checkbox", disabled: true, checked: true } : { type: "checkbox", disabled: true },
|
|
136
|
+
[],
|
|
137
|
+
void 0
|
|
138
|
+
);
|
|
139
|
+
return target.element("li", void 0, [box, ...contents], item._key);
|
|
140
|
+
},
|
|
141
|
+
PLAIN
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
chunkMWMSFIWN_cjs.__name(listItem, "listItem");
|
|
145
|
+
function code(node, target) {
|
|
146
|
+
const language = typeof node.language === "string" && node.language !== "" ? node.language : void 0;
|
|
147
|
+
const caption = nonEmpty(node.filename) ?? nonEmpty(node.label);
|
|
148
|
+
return target.node(
|
|
149
|
+
node,
|
|
150
|
+
[target.text(node.text)],
|
|
151
|
+
(contents) => {
|
|
152
|
+
const pre = /* @__PURE__ */ chunkMWMSFIWN_cjs.__name((key) => target.element(
|
|
153
|
+
"pre",
|
|
154
|
+
void 0,
|
|
155
|
+
[
|
|
156
|
+
target.element(
|
|
157
|
+
"code",
|
|
158
|
+
language === void 0 ? void 0 : { class: `language-${language}` },
|
|
159
|
+
contents,
|
|
160
|
+
void 0
|
|
161
|
+
)
|
|
162
|
+
],
|
|
163
|
+
key
|
|
164
|
+
), "pre");
|
|
165
|
+
if (caption === void 0) return pre(node._key);
|
|
166
|
+
return target.element(
|
|
167
|
+
"figure",
|
|
168
|
+
void 0,
|
|
169
|
+
[
|
|
170
|
+
target.element("figcaption", void 0, [target.text(caption)], void 0),
|
|
171
|
+
pre(void 0)
|
|
172
|
+
],
|
|
173
|
+
node._key
|
|
174
|
+
);
|
|
175
|
+
},
|
|
176
|
+
PLAIN
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
chunkMWMSFIWN_cjs.__name(code, "code");
|
|
180
|
+
function nonEmpty(value) {
|
|
181
|
+
return typeof value === "string" && value !== "" ? value : void 0;
|
|
182
|
+
}
|
|
183
|
+
chunkMWMSFIWN_cjs.__name(nonEmpty, "nonEmpty");
|
|
184
|
+
function table(node, target) {
|
|
185
|
+
const rows = node.children.filter((row) => row._type === "tableRow");
|
|
186
|
+
const [first, ...rest] = rows;
|
|
187
|
+
const header = node.headerRow === true ? first : void 0;
|
|
188
|
+
const body = header === void 0 ? rows : rest;
|
|
189
|
+
const sections = [];
|
|
190
|
+
if (header !== void 0) {
|
|
191
|
+
sections.push(target.element("thead", void 0, [tableRow(header, true, target)], void 0));
|
|
192
|
+
}
|
|
193
|
+
if (body.length > 0) {
|
|
194
|
+
sections.push(
|
|
195
|
+
target.element(
|
|
196
|
+
"tbody",
|
|
197
|
+
void 0,
|
|
198
|
+
body.map((row) => tableRow(row, false, target)),
|
|
199
|
+
void 0
|
|
200
|
+
)
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
return target.node(
|
|
204
|
+
node,
|
|
205
|
+
sections,
|
|
206
|
+
(contents) => target.element("table", void 0, contents, node._key),
|
|
207
|
+
PLAIN
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
chunkMWMSFIWN_cjs.__name(table, "table");
|
|
211
|
+
function tableRow(row, header, target) {
|
|
212
|
+
const cells = [];
|
|
213
|
+
for (const cell of row.children) {
|
|
214
|
+
if (cell._type === "tableCell") cells.push(tableCell(cell, header, target));
|
|
215
|
+
}
|
|
216
|
+
return target.node(
|
|
217
|
+
row,
|
|
218
|
+
cells,
|
|
219
|
+
(contents) => target.element("tr", void 0, contents, row._key),
|
|
220
|
+
header ? HEADER : PLAIN
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
chunkMWMSFIWN_cjs.__name(tableRow, "tableRow");
|
|
224
|
+
function tableCell(cell, header, target) {
|
|
225
|
+
let attributes;
|
|
226
|
+
switch (cell.align) {
|
|
227
|
+
case "left":
|
|
228
|
+
case "center":
|
|
229
|
+
case "right": {
|
|
230
|
+
attributes = { style: `text-align:${cell.align}` };
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
case void 0: {
|
|
234
|
+
attributes = void 0;
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
default: {
|
|
238
|
+
cell.align;
|
|
239
|
+
attributes = void 0;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return target.node(
|
|
243
|
+
cell,
|
|
244
|
+
blocks(cell.children, target),
|
|
245
|
+
(contents) => target.element(header ? "th" : "td", attributes, contents, cell._key),
|
|
246
|
+
header ? HEADER : PLAIN
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
chunkMWMSFIWN_cjs.__name(tableCell, "tableCell");
|
|
250
|
+
function inline(nodes, target) {
|
|
251
|
+
const out = [];
|
|
252
|
+
let runs = [];
|
|
253
|
+
const flush = /* @__PURE__ */ chunkMWMSFIWN_cjs.__name(() => {
|
|
254
|
+
if (runs.length > 0) out.push(...marked(runs, target));
|
|
255
|
+
runs = [];
|
|
256
|
+
}, "flush");
|
|
257
|
+
for (const node of nodes) {
|
|
258
|
+
switch (node._type) {
|
|
259
|
+
case "text": {
|
|
260
|
+
runs.push({ span: node, drawn: 0 });
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
case "lineBreak": {
|
|
264
|
+
flush();
|
|
265
|
+
out.push(target.node(node, [], () => target.element("br", void 0, [], node._key), PLAIN));
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
default: {
|
|
269
|
+
flush();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
flush();
|
|
274
|
+
return out;
|
|
275
|
+
}
|
|
276
|
+
chunkMWMSFIWN_cjs.__name(inline, "inline");
|
|
277
|
+
function marked(runs, target) {
|
|
278
|
+
const out = [];
|
|
279
|
+
let index = 0;
|
|
280
|
+
while (index < runs.length) {
|
|
281
|
+
const run = runs[index];
|
|
282
|
+
const mark = run.span.marks?.[run.drawn];
|
|
283
|
+
if (mark === void 0) {
|
|
284
|
+
out.push(target.text(run.span.text));
|
|
285
|
+
index += 1;
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
let end = index + 1;
|
|
289
|
+
while (end < runs.length && sameMark(nextMark(runs[end]), mark)) end += 1;
|
|
290
|
+
const inner = marked(
|
|
291
|
+
runs.slice(index, end).map((each) => ({ span: each.span, drawn: each.drawn + 1 })),
|
|
292
|
+
target
|
|
293
|
+
);
|
|
294
|
+
out.push(...applyMark(mark, inner, target));
|
|
295
|
+
index = end;
|
|
296
|
+
}
|
|
297
|
+
return out;
|
|
298
|
+
}
|
|
299
|
+
chunkMWMSFIWN_cjs.__name(marked, "marked");
|
|
300
|
+
function nextMark(run) {
|
|
301
|
+
return run.span.marks?.[run.drawn];
|
|
302
|
+
}
|
|
303
|
+
chunkMWMSFIWN_cjs.__name(nextMark, "nextMark");
|
|
304
|
+
function sameMark(a, b) {
|
|
305
|
+
if (a?._type !== b._type) return false;
|
|
306
|
+
return a._type !== "link" || b._type !== "link" || a.href === b.href;
|
|
307
|
+
}
|
|
308
|
+
chunkMWMSFIWN_cjs.__name(sameMark, "sameMark");
|
|
309
|
+
var MARK_TAGS = {
|
|
310
|
+
bold: "strong",
|
|
311
|
+
italic: "em",
|
|
312
|
+
underline: "u",
|
|
313
|
+
strike: "s",
|
|
314
|
+
code: "code",
|
|
315
|
+
highlight: "mark",
|
|
316
|
+
subscript: "sub",
|
|
317
|
+
superscript: "sup"
|
|
318
|
+
};
|
|
319
|
+
function applyMark(mark, inner, target) {
|
|
320
|
+
switch (mark._type) {
|
|
321
|
+
case "link": {
|
|
322
|
+
const href = safeRichTextHref(mark.href);
|
|
323
|
+
if (href === void 0) return inner;
|
|
324
|
+
return [
|
|
325
|
+
target.mark(mark, inner, (contents) => target.element("a", { href }, contents, void 0))
|
|
326
|
+
];
|
|
327
|
+
}
|
|
328
|
+
case "bold":
|
|
329
|
+
case "italic":
|
|
330
|
+
case "underline":
|
|
331
|
+
case "strike":
|
|
332
|
+
case "code":
|
|
333
|
+
case "highlight":
|
|
334
|
+
case "subscript":
|
|
335
|
+
case "superscript": {
|
|
336
|
+
const tag = MARK_TAGS[mark._type];
|
|
337
|
+
return [
|
|
338
|
+
target.mark(mark, inner, (contents) => target.element(tag, void 0, contents, void 0))
|
|
339
|
+
];
|
|
340
|
+
}
|
|
341
|
+
default: {
|
|
342
|
+
return inner;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
chunkMWMSFIWN_cjs.__name(applyMark, "applyMark");
|
|
347
|
+
var SAFE_SCHEMES = /* @__PURE__ */ new Set(["http", "https", "mailto", "tel"]);
|
|
348
|
+
var SCHEME = /^([a-z][a-z\d+.-]*):/i;
|
|
349
|
+
function safeRichTextHref(href) {
|
|
350
|
+
if (typeof href !== "string") return void 0;
|
|
351
|
+
let read = "";
|
|
352
|
+
for (const character of href) {
|
|
353
|
+
const code3 = character.codePointAt(0);
|
|
354
|
+
if (code3 === 9 || code3 === 10 || code3 === 13) continue;
|
|
355
|
+
read += character;
|
|
356
|
+
}
|
|
357
|
+
read = trimControls(read);
|
|
358
|
+
if (read === "") return void 0;
|
|
359
|
+
const scheme = SCHEME.exec(read);
|
|
360
|
+
if (scheme === null) return href;
|
|
361
|
+
return SAFE_SCHEMES.has(scheme[1].toLowerCase()) ? href : void 0;
|
|
362
|
+
}
|
|
363
|
+
chunkMWMSFIWN_cjs.__name(safeRichTextHref, "safeRichTextHref");
|
|
364
|
+
function trimControls(text) {
|
|
365
|
+
let start = 0;
|
|
366
|
+
let end = text.length;
|
|
367
|
+
while (start < end && text.charCodeAt(start) <= 32) start += 1;
|
|
368
|
+
while (end > start && text.charCodeAt(end - 1) <= 32) end -= 1;
|
|
369
|
+
return text.slice(start, end);
|
|
370
|
+
}
|
|
371
|
+
chunkMWMSFIWN_cjs.__name(trimControls, "trimControls");
|
|
372
|
+
|
|
373
|
+
// src/rich-text/html.ts
|
|
374
|
+
function escapeHtml(text) {
|
|
375
|
+
return String(text).replace(/["&'<>]/g, (character) => HTML_ESCAPES[character] ?? character);
|
|
376
|
+
}
|
|
377
|
+
chunkMWMSFIWN_cjs.__name(escapeHtml, "escapeHtml");
|
|
378
|
+
var HTML_ESCAPES = {
|
|
379
|
+
'"': """,
|
|
380
|
+
"&": "&",
|
|
381
|
+
"'": "'",
|
|
382
|
+
"<": "<",
|
|
383
|
+
">": ">"
|
|
384
|
+
};
|
|
385
|
+
function attributesOf(attributes) {
|
|
386
|
+
if (attributes === void 0) return "";
|
|
387
|
+
let written = "";
|
|
388
|
+
for (const [name, value] of Object.entries(attributes)) {
|
|
389
|
+
written += value === true ? ` ${name}=""` : ` ${name}="${escapeHtml(String(value))}"`;
|
|
390
|
+
}
|
|
391
|
+
return written;
|
|
392
|
+
}
|
|
393
|
+
chunkMWMSFIWN_cjs.__name(attributesOf, "attributesOf");
|
|
394
|
+
var HTML_TARGET = {
|
|
395
|
+
element(tag, attributes, children) {
|
|
396
|
+
return RICH_TEXT_VOID_TAGS.has(tag) ? `<${tag}${attributesOf(attributes)}/>` : `<${tag}${attributesOf(attributes)}>${children.join("")}</${tag}>`;
|
|
397
|
+
},
|
|
398
|
+
text: escapeHtml,
|
|
399
|
+
node: /* @__PURE__ */ chunkMWMSFIWN_cjs.__name((_node, contents, draw) => draw(contents), "node"),
|
|
400
|
+
mark: /* @__PURE__ */ chunkMWMSFIWN_cjs.__name((_mark, contents, draw) => draw(contents), "mark")
|
|
401
|
+
};
|
|
402
|
+
function richTextToHtml(value) {
|
|
403
|
+
if (value === void 0) return "";
|
|
404
|
+
return renderRichText(value, HTML_TARGET).join("");
|
|
405
|
+
}
|
|
406
|
+
chunkMWMSFIWN_cjs.__name(richTextToHtml, "richTextToHtml");
|
|
407
|
+
|
|
408
|
+
// src/rich-text/markdown.ts
|
|
409
|
+
function richTextToMarkdown(value) {
|
|
410
|
+
if (value === void 0) return "";
|
|
411
|
+
const held = value._type === "richText" ? value.children : [value];
|
|
412
|
+
if (!Array.isArray(held)) return "";
|
|
413
|
+
const written = blocks2(held);
|
|
414
|
+
return written.length === 0 ? "" : `${written.join("\n\n")}
|
|
415
|
+
`;
|
|
416
|
+
}
|
|
417
|
+
chunkMWMSFIWN_cjs.__name(richTextToMarkdown, "richTextToMarkdown");
|
|
418
|
+
function blocks2(nodes) {
|
|
419
|
+
const out = [];
|
|
420
|
+
for (const node of nodes) {
|
|
421
|
+
const written = block2(node);
|
|
422
|
+
if (written !== void 0 && written !== "") out.push(written);
|
|
423
|
+
}
|
|
424
|
+
return out;
|
|
425
|
+
}
|
|
426
|
+
chunkMWMSFIWN_cjs.__name(blocks2, "blocks");
|
|
427
|
+
function block2(node) {
|
|
428
|
+
switch (node._type) {
|
|
429
|
+
case "paragraph": {
|
|
430
|
+
return escapeLineStarts(inline2(node.children, "\\\n"));
|
|
431
|
+
}
|
|
432
|
+
case "heading": {
|
|
433
|
+
const text = inline2(node.children, " ").trim();
|
|
434
|
+
if (text === "") return void 0;
|
|
435
|
+
const level = Number.isInteger(node.level) ? Math.min(Math.max(node.level, 1), 6) : 1;
|
|
436
|
+
return `${"#".repeat(level)} ${text.replace(/ (#+)$/, " \\$1")}`;
|
|
437
|
+
}
|
|
438
|
+
case "quote": {
|
|
439
|
+
const inner = blocks2(node.children).join("\n\n");
|
|
440
|
+
if (inner === "") return void 0;
|
|
441
|
+
return inner.split("\n").map((line) => line === "" ? ">" : `> ${line}`).join("\n");
|
|
442
|
+
}
|
|
443
|
+
case "list": {
|
|
444
|
+
return list2(node);
|
|
445
|
+
}
|
|
446
|
+
case "codeBlock": {
|
|
447
|
+
return code2(node);
|
|
448
|
+
}
|
|
449
|
+
case "codeGroup": {
|
|
450
|
+
const tabs = node.children.filter((tab) => tab._type === "codeBlock").map((tab) => code2(tab));
|
|
451
|
+
return tabs.length === 0 ? void 0 : tabs.join("\n\n");
|
|
452
|
+
}
|
|
453
|
+
case "table": {
|
|
454
|
+
return table2(node);
|
|
455
|
+
}
|
|
456
|
+
case "divider": {
|
|
457
|
+
return "---";
|
|
458
|
+
}
|
|
459
|
+
default: {
|
|
460
|
+
return void 0;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
chunkMWMSFIWN_cjs.__name(block2, "block");
|
|
465
|
+
function list2(node) {
|
|
466
|
+
const items = node.children.filter((item) => item._type === "listItem");
|
|
467
|
+
if (items.length === 0) return void 0;
|
|
468
|
+
const first = node.style === "numbered" && Number.isSafeInteger(node.start) ? node.start : 1;
|
|
469
|
+
return items.map((item, index) => {
|
|
470
|
+
let marker;
|
|
471
|
+
switch (node.style) {
|
|
472
|
+
case "numbered": {
|
|
473
|
+
marker = `${first + index}.`;
|
|
474
|
+
break;
|
|
475
|
+
}
|
|
476
|
+
case "task": {
|
|
477
|
+
marker = item.checked === true ? "- [x]" : "- [ ]";
|
|
478
|
+
break;
|
|
479
|
+
}
|
|
480
|
+
case "bullet": {
|
|
481
|
+
marker = "-";
|
|
482
|
+
break;
|
|
483
|
+
}
|
|
484
|
+
default: {
|
|
485
|
+
node.style;
|
|
486
|
+
marker = "-";
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
const indent = " ".repeat(node.style === "task" ? 2 : marker.length + 1);
|
|
490
|
+
let body = "";
|
|
491
|
+
for (const child of item.children) {
|
|
492
|
+
const part = block2(child);
|
|
493
|
+
if (part === void 0 || part === "") continue;
|
|
494
|
+
if (body !== "") body += interruptsParagraph(child) ? "\n" : "\n\n";
|
|
495
|
+
body += part;
|
|
496
|
+
}
|
|
497
|
+
if (body === "") return marker;
|
|
498
|
+
return `${marker} ${body.split("\n").map((line, at) => at === 0 || line === "" ? line : `${indent}${line}`).join("\n")}`;
|
|
499
|
+
}).join("\n");
|
|
500
|
+
}
|
|
501
|
+
chunkMWMSFIWN_cjs.__name(list2, "list");
|
|
502
|
+
function interruptsParagraph(node) {
|
|
503
|
+
if (node._type !== "list") return false;
|
|
504
|
+
return node.style !== "numbered" || node.start === void 0 || node.start === 1;
|
|
505
|
+
}
|
|
506
|
+
chunkMWMSFIWN_cjs.__name(interruptsParagraph, "interruptsParagraph");
|
|
507
|
+
function code2(node) {
|
|
508
|
+
const text = typeof node.text === "string" ? node.text : "";
|
|
509
|
+
const longest = Math.max(0, ...[...text.matchAll(/`+/g)].map((run) => run[0].length));
|
|
510
|
+
const fence = "`".repeat(Math.max(3, longest + 1));
|
|
511
|
+
const language = typeof node.language === "string" ? node.language.split(/\s/)[0] ?? "" : "";
|
|
512
|
+
const info = language.includes("`") ? "" : language;
|
|
513
|
+
return text === "" ? `${fence}${info}
|
|
514
|
+
${fence}` : `${fence}${info}
|
|
515
|
+
${text}
|
|
516
|
+
${fence}`;
|
|
517
|
+
}
|
|
518
|
+
chunkMWMSFIWN_cjs.__name(code2, "code");
|
|
519
|
+
function table2(node) {
|
|
520
|
+
const rows = node.children.filter((row) => row._type === "tableRow").map((row) => row.children.filter((cell) => cell._type === "tableCell"));
|
|
521
|
+
if (rows.length === 0) return void 0;
|
|
522
|
+
const columns = Math.max(...rows.map((cells) => cells.length));
|
|
523
|
+
if (columns === 0) return void 0;
|
|
524
|
+
const text = rows.map(
|
|
525
|
+
(cells) => Array.from({ length: columns }, (_, at) => {
|
|
526
|
+
const cell = cells[at];
|
|
527
|
+
if (cell === void 0) return "";
|
|
528
|
+
const paragraphs = cell.children.filter((paragraph) => paragraph._type === "paragraph").map((paragraph) => inline2(paragraph.children, " ").trim()).filter((paragraph) => paragraph !== "");
|
|
529
|
+
return paragraphs.join(" ").replace(/\|/g, "\\|");
|
|
530
|
+
})
|
|
531
|
+
);
|
|
532
|
+
const alignments = Array.from({ length: columns }, (_, at) => rows[0][at]?.align);
|
|
533
|
+
const header = node.headerRow === true ? text[0] : Array.from({ length: columns }, () => "");
|
|
534
|
+
const body = node.headerRow === true ? text.slice(1) : text;
|
|
535
|
+
const widths = Array.from(
|
|
536
|
+
{ length: columns },
|
|
537
|
+
(_, at) => Math.max(3, ...[header, ...body].map((cells) => cells[at].length))
|
|
538
|
+
);
|
|
539
|
+
const line = /* @__PURE__ */ chunkMWMSFIWN_cjs.__name((cells) => `| ${cells.map((cell, at) => cell.padEnd(widths[at])).join(" | ")} |`, "line");
|
|
540
|
+
const delimiter = `| ${alignments.map((align, at) => {
|
|
541
|
+
const width = widths[at];
|
|
542
|
+
switch (align) {
|
|
543
|
+
case "left": {
|
|
544
|
+
return `:${"-".repeat(width - 1)}`;
|
|
545
|
+
}
|
|
546
|
+
case "center": {
|
|
547
|
+
return `:${"-".repeat(width - 2)}:`;
|
|
548
|
+
}
|
|
549
|
+
case "right": {
|
|
550
|
+
return `${"-".repeat(width - 1)}:`;
|
|
551
|
+
}
|
|
552
|
+
case void 0: {
|
|
553
|
+
return "-".repeat(width);
|
|
554
|
+
}
|
|
555
|
+
default: {
|
|
556
|
+
return "-".repeat(width);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}).join(" | ")} |`;
|
|
560
|
+
return [line(header), delimiter, ...body.map((cells) => line(cells))].join("\n");
|
|
561
|
+
}
|
|
562
|
+
chunkMWMSFIWN_cjs.__name(table2, "table");
|
|
563
|
+
function inline2(nodes, lineBreak) {
|
|
564
|
+
let out = "";
|
|
565
|
+
let runs = [];
|
|
566
|
+
const flush = /* @__PURE__ */ chunkMWMSFIWN_cjs.__name(() => {
|
|
567
|
+
out += marked2(runs);
|
|
568
|
+
runs = [];
|
|
569
|
+
}, "flush");
|
|
570
|
+
for (const node of nodes) {
|
|
571
|
+
switch (node._type) {
|
|
572
|
+
case "text": {
|
|
573
|
+
runs.push({ span: node, drawn: 0 });
|
|
574
|
+
break;
|
|
575
|
+
}
|
|
576
|
+
case "lineBreak": {
|
|
577
|
+
flush();
|
|
578
|
+
out += lineBreak;
|
|
579
|
+
break;
|
|
580
|
+
}
|
|
581
|
+
default: {
|
|
582
|
+
flush();
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
flush();
|
|
587
|
+
return out;
|
|
588
|
+
}
|
|
589
|
+
chunkMWMSFIWN_cjs.__name(inline2, "inline");
|
|
590
|
+
function marked2(runs) {
|
|
591
|
+
let out = "";
|
|
592
|
+
let index = 0;
|
|
593
|
+
while (index < runs.length) {
|
|
594
|
+
const run = runs[index];
|
|
595
|
+
const mark = run.span.marks?.[run.drawn];
|
|
596
|
+
if (mark === void 0) {
|
|
597
|
+
out += escapeText(run.span.text);
|
|
598
|
+
index += 1;
|
|
599
|
+
continue;
|
|
600
|
+
}
|
|
601
|
+
let end = index + 1;
|
|
602
|
+
while (end < runs.length && sameMark(runs[end].span.marks?.[runs[end].drawn], mark)) end += 1;
|
|
603
|
+
if (mark._type === "code") {
|
|
604
|
+
out += codeSpan(
|
|
605
|
+
runs.slice(index, end).map((each) => each.span.text).join("")
|
|
606
|
+
);
|
|
607
|
+
index = end;
|
|
608
|
+
continue;
|
|
609
|
+
}
|
|
610
|
+
const inner = marked2(
|
|
611
|
+
runs.slice(index, end).map((each) => ({ span: each.span, drawn: each.drawn + 1 }))
|
|
612
|
+
);
|
|
613
|
+
out += applyMark2(mark, inner);
|
|
614
|
+
index = end;
|
|
615
|
+
}
|
|
616
|
+
return out;
|
|
617
|
+
}
|
|
618
|
+
chunkMWMSFIWN_cjs.__name(marked2, "marked");
|
|
619
|
+
function applyMark2(mark, inner) {
|
|
620
|
+
switch (mark._type) {
|
|
621
|
+
case "link": {
|
|
622
|
+
const href = safeRichTextHref(mark.href);
|
|
623
|
+
if (href === void 0 || inner === "") return inner;
|
|
624
|
+
return `[${inner}](${destination(href)})`;
|
|
625
|
+
}
|
|
626
|
+
case "bold": {
|
|
627
|
+
return delimit("**", inner);
|
|
628
|
+
}
|
|
629
|
+
case "italic": {
|
|
630
|
+
return delimit("*", inner);
|
|
631
|
+
}
|
|
632
|
+
case "strike": {
|
|
633
|
+
return delimit("~~", inner);
|
|
634
|
+
}
|
|
635
|
+
case "code": {
|
|
636
|
+
return inner;
|
|
637
|
+
}
|
|
638
|
+
case "underline":
|
|
639
|
+
case "highlight":
|
|
640
|
+
case "subscript":
|
|
641
|
+
case "superscript": {
|
|
642
|
+
return inner;
|
|
643
|
+
}
|
|
644
|
+
default: {
|
|
645
|
+
return inner;
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
chunkMWMSFIWN_cjs.__name(applyMark2, "applyMark");
|
|
650
|
+
function delimit(delimiter, inner) {
|
|
651
|
+
const match = /^(\s*)([\s\S]*?)(\s*)$/.exec(inner);
|
|
652
|
+
const [, before = "", core = "", after = ""] = match;
|
|
653
|
+
if (core === "") return inner;
|
|
654
|
+
return `${before}${delimiter}${core}${delimiter}${after}`;
|
|
655
|
+
}
|
|
656
|
+
chunkMWMSFIWN_cjs.__name(delimit, "delimit");
|
|
657
|
+
function codeSpan(text) {
|
|
658
|
+
const longest = Math.max(0, ...[...text.matchAll(/`+/g)].map((run) => run[0].length));
|
|
659
|
+
const fence = "`".repeat(longest + 1);
|
|
660
|
+
const padded = /^`|`$/.test(text) || /^ .*[^ ].* $/.test(text) ? ` ${text} ` : text;
|
|
661
|
+
return `${fence}${padded}${fence}`;
|
|
662
|
+
}
|
|
663
|
+
chunkMWMSFIWN_cjs.__name(codeSpan, "codeSpan");
|
|
664
|
+
function destination(href) {
|
|
665
|
+
if (!/[\s()<>]/.test(href)) return href;
|
|
666
|
+
return `<${href.replace(/</g, "%3C").replace(/>/g, "%3E").replace(/\s/g, "%20")}>`;
|
|
667
|
+
}
|
|
668
|
+
chunkMWMSFIWN_cjs.__name(destination, "destination");
|
|
669
|
+
function escapeText(text) {
|
|
670
|
+
return String(text).replace(/[\\`*_[\]<>~]/g, "\\$&").replace(/&(?=#?[\da-z]+;)/gi, "\\&");
|
|
671
|
+
}
|
|
672
|
+
chunkMWMSFIWN_cjs.__name(escapeText, "escapeText");
|
|
673
|
+
function escapeLineStarts(paragraph) {
|
|
674
|
+
return paragraph.split("\n").map(
|
|
675
|
+
(line) => line.replace(/^(#{1,6})(?=\s|$)/, "\\$1").replace(/^([+=-])/, "\\$1").replace(/^(\d+)([).])/, "$1\\$2")
|
|
676
|
+
).join("\n");
|
|
677
|
+
}
|
|
678
|
+
chunkMWMSFIWN_cjs.__name(escapeLineStarts, "escapeLineStarts");
|
|
679
|
+
|
|
680
|
+
exports.RICH_TEXT_VOID_TAGS = RICH_TEXT_VOID_TAGS;
|
|
681
|
+
exports.renderRichText = renderRichText;
|
|
682
|
+
exports.richTextToHtml = richTextToHtml;
|
|
683
|
+
exports.richTextToMarkdown = richTextToMarkdown;
|
|
684
|
+
exports.safeRichTextHref = safeRichTextHref;
|
|
685
|
+
//# sourceMappingURL=chunk-FI5VIF4M.cjs.map
|
|
686
|
+
//# sourceMappingURL=chunk-FI5VIF4M.cjs.map
|