@flytedan/flytebot-design-system 0.71.0 → 0.71.2
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/dist/chunk-CGCQNBCR.js +42 -0
- package/dist/chunk-CGCQNBCR.js.map +1 -0
- package/dist/index.cjs +25 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +10 -7
- package/dist/index.js.map +1 -1
- package/dist/markdown.cjs +16 -1
- package/dist/markdown.cjs.map +1 -1
- package/dist/markdown.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-476HCG2A.js +0 -27
- package/dist/chunk-476HCG2A.js.map +0 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// src/components/data/markdownEscape.ts
|
|
2
|
+
var ESCAPABLE = /\\([!-/:-@[-`{-~])/g;
|
|
3
|
+
var STAND_IN_BASE = 57344;
|
|
4
|
+
var STAND_IN = /[-]/g;
|
|
5
|
+
var hideEscapes = (s) => s.replace(STAND_IN, "\uFFFD").replace(ESCAPABLE, (_, c) => String.fromCharCode(STAND_IN_BASE + c.charCodeAt(0)));
|
|
6
|
+
var showEscapes = (s) => s.replace(STAND_IN, (c) => String.fromCharCode(c.charCodeAt(0) - STAND_IN_BASE));
|
|
7
|
+
var showEscapesRaw = (s) => s.replace(STAND_IN, (c) => "\\" + String.fromCharCode(c.charCodeAt(0) - STAND_IN_BASE));
|
|
8
|
+
function escapeMarkdown(text) {
|
|
9
|
+
return String(text == null ? "" : text).replace(/\r\n?/g, "\n").replace(/[\\`*_[\]()<>!|~^]/g, "\\$&").replace(/\b(https?|mailto|tel):/gi, "$1\\:").split("\n").map(
|
|
10
|
+
(line) => line.replace(/^(\s*)([#>+-])/, "$1\\$2").replace(/^(\s*\d{1,9})([.)])/, "$1\\$2")
|
|
11
|
+
// task item `[ ]` is already covered by escaping `[`
|
|
12
|
+
).join("\n");
|
|
13
|
+
}
|
|
14
|
+
var TABLE_ROW = /^\s*\|.*\|\s*$/;
|
|
15
|
+
var TABLE_SEPARATOR = /^\s*\|(\s*:?-{3,}:?\s*\|)+\s*$/;
|
|
16
|
+
var LIST_MARKER = /^\s*(?:[-*+]|\d{1,9}[.)])\s+/;
|
|
17
|
+
function stripBlockSyntax(s) {
|
|
18
|
+
let inFence = false;
|
|
19
|
+
return s.split("\n").flatMap((line) => {
|
|
20
|
+
if (/^\s*```/.test(line)) inFence = !inFence;
|
|
21
|
+
if (inFence || /^\s*```/.test(line)) return [line];
|
|
22
|
+
if (TABLE_SEPARATOR.test(line)) return [];
|
|
23
|
+
if (TABLE_ROW.test(line)) {
|
|
24
|
+
return [line.trim().slice(1, -1).split("|").map((c) => c.trim()).filter(Boolean).join(" ")];
|
|
25
|
+
}
|
|
26
|
+
return [line.replace(LIST_MARKER, "")];
|
|
27
|
+
}).join("\n");
|
|
28
|
+
}
|
|
29
|
+
function markdownToText(src) {
|
|
30
|
+
return showEscapes(
|
|
31
|
+
stripBlockSyntax(hideEscapes(String(src == null ? "" : src))).replace(/```[\w+#-]*\n?([\s\S]*?)```/g, (_, c) => showEscapesRaw(c)).replace(/`([^`]+)`/g, (_, c) => showEscapesRaw(c)).replace(/!\[([^\]]*)\]\([^)]*\)/g, "$1").replace(/\[([^\]]+)\]\([^)]*\)/g, "$1").replace(/^\s{0,3}#{1,6}\s+/gm, "").replace(/\*\*\*([^*]+)\*\*\*|\*\*([^*]+)\*\*|__([^_]+)__/g, "$1$2$3").replace(/(^|\W)[*_]([^*_\n]+)[*_](\W|$)/g, "$1$2$3").replace(/~~([^~]+)~~/g, "$1").replace(/^\s*>\s?/gm, "").trim()
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export {
|
|
36
|
+
hideEscapes,
|
|
37
|
+
showEscapes,
|
|
38
|
+
showEscapesRaw,
|
|
39
|
+
escapeMarkdown,
|
|
40
|
+
markdownToText
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=chunk-CGCQNBCR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data/markdownEscape.ts"],"sourcesContent":["/* DS-7: the one definition of the markdown escape rule, shared by the renderer\n (Markdown.tsx) and by `escapeMarkdown` (a React-free entry, so a server can import it). */\n\n/** CommonMark: a backslash before any ASCII punctuation character makes it literal. */\nexport const ESCAPABLE = /\\\\([!-/:-@[-`{-~])/g;\n\n/* An escaped character is swapped for a private-use stand-in (U+E000 + its code) before any\n syntax pattern runs, so no pattern can see it, then swapped back where text is emitted. */\nconst STAND_IN_BASE = 0xe000;\nconst STAND_IN = /[-]/g;\n\n/** Hide every escaped character from the syntax patterns. Stray stand-ins already in the input are neutralised first. */\nexport const hideEscapes = (s: string): string =>\n s.replace(STAND_IN, \"�\").replace(ESCAPABLE, (_, c: string) => String.fromCharCode(STAND_IN_BASE + c.charCodeAt(0)));\n\n/** Put escaped characters back as the literal character. */\nexport const showEscapes = (s: string): string => s.replace(STAND_IN, (c) => String.fromCharCode(c.charCodeAt(0) - STAND_IN_BASE));\n\n/** Put escaped characters back with their backslash (a code span keeps its source verbatim). */\nexport const showEscapesRaw = (s: string): string => s.replace(STAND_IN, (c) => \"\\\\\" + String.fromCharCode(c.charCodeAt(0) - STAND_IN_BASE));\n\n/**\n * Backslash-escape text so `Markdown` / `MarkdownInline` render it as exactly that text:\n * every character the renderer reads as inline syntax, the `:` that starts a bare-URL or\n * mailto autolink, and any block marker (heading, quote, list, rule, table, fence) at the\n * start of a line.\n */\nexport function escapeMarkdown(text: string): string {\n return String(text == null ? \"\" : text)\n .replace(/\\r\\n?/g, \"\\n\")\n .replace(/[\\\\`*_[\\]()<>!|~^]/g, \"\\\\$&\")\n .replace(/\\b(https?|mailto|tel):/gi, \"$1\\\\:\")\n .split(\"\\n\")\n .map((line) =>\n line\n // heading, quote, bullet, rule, fence-like markers: escape the first marker character\n .replace(/^(\\s*)([#>+-])/, \"$1\\\\$2\")\n // ordered list: escape the dot or paren after the number\n .replace(/^(\\s*\\d{1,9})([.)])/, \"$1\\\\$2\")\n // task item `[ ]` is already covered by escaping `[`\n )\n .join(\"\\n\");\n}\n\nconst TABLE_ROW = /^\\s*\\|.*\\|\\s*$/;\nconst TABLE_SEPARATOR = /^\\s*\\|(\\s*:?-{3,}:?\\s*\\|)+\\s*$/;\nconst LIST_MARKER = /^\\s*(?:[-*+]|\\d{1,9}[.)])\\s+/;\n\n/* DS-12: table pipes, the separator row and list markers are layout, not words. Escaped pipes\n and markers are already hidden, so they stay literal. Fenced code is left untouched. */\nfunction stripBlockSyntax(s: string): string {\n let inFence = false;\n return s\n .split(\"\\n\")\n .flatMap((line) => {\n if (/^\\s*```/.test(line)) inFence = !inFence;\n if (inFence || /^\\s*```/.test(line)) return [line];\n if (TABLE_SEPARATOR.test(line)) return [];\n if (TABLE_ROW.test(line)) {\n return [line.trim().slice(1, -1).split(\"|\").map((c) => c.trim()).filter(Boolean).join(\" \")];\n }\n return [line.replace(LIST_MARKER, \"\")];\n })\n .join(\"\\n\");\n}\n\n/**\n * Strip markdown to the plain text the renderer shows — for search, copy actions, titles and\n * previews. Escaped characters become literal text; only real syntax is removed, so\n * `markdownToText(escapeMarkdown(x)) === x`. A code span keeps its source verbatim.\n */\nexport function markdownToText(src: string): string {\n return showEscapes(\n stripBlockSyntax(hideEscapes(String(src == null ? \"\" : src)))\n .replace(/```[\\w+#-]*\\n?([\\s\\S]*?)```/g, (_, c: string) => showEscapesRaw(c))\n .replace(/`([^`]+)`/g, (_, c: string) => showEscapesRaw(c))\n .replace(/!\\[([^\\]]*)\\]\\([^)]*\\)/g, \"$1\")\n .replace(/\\[([^\\]]+)\\]\\([^)]*\\)/g, \"$1\")\n .replace(/^\\s{0,3}#{1,6}\\s+/gm, \"\")\n .replace(/\\*\\*\\*([^*]+)\\*\\*\\*|\\*\\*([^*]+)\\*\\*|__([^_]+)__/g, \"$1$2$3\")\n .replace(/(^|\\W)[*_]([^*_\\n]+)[*_](\\W|$)/g, \"$1$2$3\")\n .replace(/~~([^~]+)~~/g, \"$1\")\n .replace(/^\\s*>\\s?/gm, \"\")\n .trim(),\n );\n}\n"],"mappings":";AAIO,IAAM,YAAY;AAIzB,IAAM,gBAAgB;AACtB,IAAM,WAAW;AAGV,IAAM,cAAc,CAAC,MAC1B,EAAE,QAAQ,UAAU,QAAG,EAAE,QAAQ,WAAW,CAAC,GAAG,MAAc,OAAO,aAAa,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC;AAG7G,IAAM,cAAc,CAAC,MAAsB,EAAE,QAAQ,UAAU,CAAC,MAAM,OAAO,aAAa,EAAE,WAAW,CAAC,IAAI,aAAa,CAAC;AAG1H,IAAM,iBAAiB,CAAC,MAAsB,EAAE,QAAQ,UAAU,CAAC,MAAM,OAAO,OAAO,aAAa,EAAE,WAAW,CAAC,IAAI,aAAa,CAAC;AAQpI,SAAS,eAAe,MAAsB;AACnD,SAAO,OAAO,QAAQ,OAAO,KAAK,IAAI,EACnC,QAAQ,UAAU,IAAI,EACtB,QAAQ,uBAAuB,MAAM,EACrC,QAAQ,4BAA4B,OAAO,EAC3C,MAAM,IAAI,EACV;AAAA,IAAI,CAAC,SACJ,KAEG,QAAQ,kBAAkB,QAAQ,EAElC,QAAQ,uBAAuB,QAAQ;AAAA;AAAA,EAE5C,EACC,KAAK,IAAI;AACd;AAEA,IAAM,YAAY;AAClB,IAAM,kBAAkB;AACxB,IAAM,cAAc;AAIpB,SAAS,iBAAiB,GAAmB;AAC3C,MAAI,UAAU;AACd,SAAO,EACJ,MAAM,IAAI,EACV,QAAQ,CAAC,SAAS;AACjB,QAAI,UAAU,KAAK,IAAI,EAAG,WAAU,CAAC;AACrC,QAAI,WAAW,UAAU,KAAK,IAAI,EAAG,QAAO,CAAC,IAAI;AACjD,QAAI,gBAAgB,KAAK,IAAI,EAAG,QAAO,CAAC;AACxC,QAAI,UAAU,KAAK,IAAI,GAAG;AACxB,aAAO,CAAC,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,CAAC;AAAA,IAC5F;AACA,WAAO,CAAC,KAAK,QAAQ,aAAa,EAAE,CAAC;AAAA,EACvC,CAAC,EACA,KAAK,IAAI;AACd;AAOO,SAAS,eAAe,KAAqB;AAClD,SAAO;AAAA,IACL,iBAAiB,YAAY,OAAO,OAAO,OAAO,KAAK,GAAG,CAAC,CAAC,EACzD,QAAQ,gCAAgC,CAAC,GAAG,MAAc,eAAe,CAAC,CAAC,EAC3E,QAAQ,cAAc,CAAC,GAAG,MAAc,eAAe,CAAC,CAAC,EACzD,QAAQ,2BAA2B,IAAI,EACvC,QAAQ,0BAA0B,IAAI,EACtC,QAAQ,uBAAuB,EAAE,EACjC,QAAQ,oDAAoD,QAAQ,EACpE,QAAQ,mCAAmC,QAAQ,EACnD,QAAQ,gBAAgB,IAAI,EAC5B,QAAQ,cAAc,EAAE,EACxB,KAAK;AAAA,EACV;AACF;","names":[]}
|
package/dist/index.cjs
CHANGED
|
@@ -6363,9 +6363,24 @@ var STAND_IN = /[-]/g;
|
|
|
6363
6363
|
var hideEscapes = (s) => s.replace(STAND_IN, "\uFFFD").replace(ESCAPABLE, (_, c) => String.fromCharCode(STAND_IN_BASE + c.charCodeAt(0)));
|
|
6364
6364
|
var showEscapes = (s) => s.replace(STAND_IN, (c) => String.fromCharCode(c.charCodeAt(0) - STAND_IN_BASE));
|
|
6365
6365
|
var showEscapesRaw = (s) => s.replace(STAND_IN, (c) => "\\" + String.fromCharCode(c.charCodeAt(0) - STAND_IN_BASE));
|
|
6366
|
+
var TABLE_ROW = /^\s*\|.*\|\s*$/;
|
|
6367
|
+
var TABLE_SEPARATOR = /^\s*\|(\s*:?-{3,}:?\s*\|)+\s*$/;
|
|
6368
|
+
var LIST_MARKER = /^\s*(?:[-*+]|\d{1,9}[.)])\s+/;
|
|
6369
|
+
function stripBlockSyntax(s) {
|
|
6370
|
+
let inFence = false;
|
|
6371
|
+
return s.split("\n").flatMap((line) => {
|
|
6372
|
+
if (/^\s*```/.test(line)) inFence = !inFence;
|
|
6373
|
+
if (inFence || /^\s*```/.test(line)) return [line];
|
|
6374
|
+
if (TABLE_SEPARATOR.test(line)) return [];
|
|
6375
|
+
if (TABLE_ROW.test(line)) {
|
|
6376
|
+
return [line.trim().slice(1, -1).split("|").map((c) => c.trim()).filter(Boolean).join(" ")];
|
|
6377
|
+
}
|
|
6378
|
+
return [line.replace(LIST_MARKER, "")];
|
|
6379
|
+
}).join("\n");
|
|
6380
|
+
}
|
|
6366
6381
|
function markdownToText(src) {
|
|
6367
6382
|
return showEscapes(
|
|
6368
|
-
hideEscapes(String(src == null ? "" : src)).replace(/```[\w+#-]*\n?([\s\S]*?)```/g, (_, c) => showEscapesRaw(c)).replace(/`([^`]+)`/g, (_, c) => showEscapesRaw(c)).replace(/!\[([^\]]*)\]\([^)]*\)/g, "$1").replace(/\[([^\]]+)\]\([^)]*\)/g, "$1").replace(/^\s{0,3}#{1,6}\s+/gm, "").replace(/\*\*\*([^*]+)\*\*\*|\*\*([^*]+)\*\*|__([^_]+)__/g, "$1$2$3").replace(/(^|\W)[*_]([^*_\n]+)[*_](\W|$)/g, "$1$2$3").replace(/~~([^~]+)~~/g, "$1").replace(/^\s*>\s?/gm, "").trim()
|
|
6383
|
+
stripBlockSyntax(hideEscapes(String(src == null ? "" : src))).replace(/```[\w+#-]*\n?([\s\S]*?)```/g, (_, c) => showEscapesRaw(c)).replace(/`([^`]+)`/g, (_, c) => showEscapesRaw(c)).replace(/!\[([^\]]*)\]\([^)]*\)/g, "$1").replace(/\[([^\]]+)\]\([^)]*\)/g, "$1").replace(/^\s{0,3}#{1,6}\s+/gm, "").replace(/\*\*\*([^*]+)\*\*\*|\*\*([^*]+)\*\*|__([^_]+)__/g, "$1$2$3").replace(/(^|\W)[*_]([^*_\n]+)[*_](\W|$)/g, "$1$2$3").replace(/~~([^~]+)~~/g, "$1").replace(/^\s*>\s?/gm, "").trim()
|
|
6369
6384
|
);
|
|
6370
6385
|
}
|
|
6371
6386
|
|
|
@@ -6386,8 +6401,11 @@ var INLINE = [
|
|
|
6386
6401
|
["bare", /(?<![\w@/])(https?:\/\/[^\s<>()]+[^\s<>().,;:!?])/]
|
|
6387
6402
|
];
|
|
6388
6403
|
function inlineNodes(src, ctx, keyBase) {
|
|
6404
|
+
return hiddenInlineNodes(hideEscapes(String(src == null ? "" : src)), ctx, keyBase);
|
|
6405
|
+
}
|
|
6406
|
+
function hiddenInlineNodes(hidden, ctx, keyBase) {
|
|
6389
6407
|
const out = [];
|
|
6390
|
-
let rest =
|
|
6408
|
+
let rest = hidden, guard = 0;
|
|
6391
6409
|
const d = showEscapes;
|
|
6392
6410
|
const key = () => keyBase + "-" + out.length;
|
|
6393
6411
|
while (rest && guard++ < 800) {
|
|
@@ -6407,13 +6425,13 @@ function inlineNodes(src, ctx, keyBase) {
|
|
|
6407
6425
|
out.push(ctx.allowImages && src2 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("img", { className: "fd-md-img", src: src2, alt: d(g(1) || ""), title: g(3) ? d(g(3)) : void 0, loading: "lazy" }, key()) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "fd-md-imgalt", children: d(g(1) || "image") }, key()));
|
|
6408
6426
|
} else if (kind === "link") {
|
|
6409
6427
|
const href = safeHref(d(g(2)));
|
|
6410
|
-
out.push(href ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("a", { href, title: g(3) ? d(g(3)) : void 0, target: /^https?:/i.test(href) ? "_blank" : void 0, rel: "noopener noreferrer", onClick: ctx.onLinkClick, children:
|
|
6428
|
+
out.push(href ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("a", { href, title: g(3) ? d(g(3)) : void 0, target: /^https?:/i.test(href) ? "_blank" : void 0, rel: "noopener noreferrer", onClick: ctx.onLinkClick, children: hiddenInlineNodes(g(1), ctx, key()) }, key()) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: d(g(1)) }, key()));
|
|
6411
6429
|
} else if (kind === "cite") {
|
|
6412
6430
|
out.push(ctx.renderCitation ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(React35.Fragment, { children: ctx.renderCitation(d(g(1))) }, key()) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("sup", { className: "fd-md-cite", children: d(g(1)) }, key()));
|
|
6413
|
-
} else if (kind === "strongem") out.push(/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("strong", { children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("em", { children:
|
|
6414
|
-
else if (kind === "strong") out.push(/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("strong", { children:
|
|
6415
|
-
else if (kind === "em") out.push(/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("em", { children:
|
|
6416
|
-
else if (kind === "del") out.push(/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("del", { children:
|
|
6431
|
+
} else if (kind === "strongem") out.push(/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("strong", { children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("em", { children: hiddenInlineNodes(g(1), ctx, key()) }) }, key()));
|
|
6432
|
+
else if (kind === "strong") out.push(/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("strong", { children: hiddenInlineNodes(g(1) || g(2), ctx, key()) }, key()));
|
|
6433
|
+
else if (kind === "em") out.push(/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("em", { children: hiddenInlineNodes(g(1) || g(2), ctx, key()) }, key()));
|
|
6434
|
+
else if (kind === "del") out.push(/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("del", { children: hiddenInlineNodes(g(1), ctx, key()) }, key()));
|
|
6417
6435
|
else if (kind === "autolink" || kind === "bare") {
|
|
6418
6436
|
const href = safeHref(d(g(1)));
|
|
6419
6437
|
out.push(href ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("a", { href, target: "_blank", rel: "noopener noreferrer", onClick: ctx.onLinkClick, children: d(g(1)).replace(/^mailto:/, "") }, key()) : d(g(1)));
|