@carbon/ai-chat-components 1.4.0 → 1.5.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/custom-elements.json +1262 -709
  2. package/es/components/chat-history/src/chat-history.scss.js +1 -1
  3. package/es/components/chat-history/src/history-panel-item.d.ts +14 -0
  4. package/es/components/chat-history/src/history-panel-item.js +30 -0
  5. package/es/components/chat-history/src/history-panel-item.js.map +1 -1
  6. package/es/components/code-snippet/src/code-snippet.d.ts +5 -0
  7. package/es/components/code-snippet/src/code-snippet.js +17 -5
  8. package/es/components/code-snippet/src/code-snippet.js.map +1 -1
  9. package/es/components/feedback/src/feedback.d.ts +4 -0
  10. package/es/components/feedback/src/feedback.js +6 -4
  11. package/es/components/feedback/src/feedback.js.map +1 -1
  12. package/es/components/markdown/index.d.ts +3 -1
  13. package/es/components/markdown/index.js +1 -1
  14. package/es/components/markdown/src/markdown-renderer-types.d.ts +100 -0
  15. package/es/components/markdown/src/markdown-renderer-types.js +8 -0
  16. package/es/components/markdown/src/markdown-renderer-types.js.map +1 -0
  17. package/es/components/markdown/src/markdown-renderer.d.ts +14 -64
  18. package/es/components/markdown/src/markdown-renderer.js +110 -131
  19. package/es/components/markdown/src/markdown-renderer.js.map +1 -1
  20. package/es/components/markdown/src/markdown-token-tree.d.ts +50 -5
  21. package/es/components/markdown/src/markdown-token-tree.js +182 -47
  22. package/es/components/markdown/src/markdown-token-tree.js.map +1 -1
  23. package/es/components/markdown/src/markdown.d.ts +49 -1
  24. package/es/components/markdown/src/markdown.js +317 -106
  25. package/es/components/markdown/src/markdown.js.map +1 -1
  26. package/es/components/markdown/src/plugins/markdown-it-task-lists.js +2 -5
  27. package/es/components/markdown/src/plugins/markdown-it-task-lists.js.map +1 -1
  28. package/es/components/markdown/src/utils/lit-directives.d.ts +17 -0
  29. package/es/components/markdown/src/utils/lit-directives.js +84 -0
  30. package/es/components/markdown/src/utils/lit-directives.js.map +1 -0
  31. package/es/components/markdown/src/utils/plugin-fallback.d.ts +33 -0
  32. package/es/components/markdown/src/utils/plugin-fallback.js +216 -0
  33. package/es/components/markdown/src/utils/plugin-fallback.js.map +1 -0
  34. package/es/components/markdown/src/utils/streaming-table.d.ts +28 -0
  35. package/es/components/markdown/src/utils/streaming-table.js +86 -0
  36. package/es/components/markdown/src/utils/streaming-table.js.map +1 -0
  37. package/es/components/markdown/src/utils/table-helpers.d.ts +17 -0
  38. package/es/components/markdown/src/utils/table-helpers.js +104 -2
  39. package/es/components/markdown/src/utils/table-helpers.js.map +1 -1
  40. package/es/components/table/src/table.js +4 -1
  41. package/es/components/table/src/table.js.map +1 -1
  42. package/es/components/workspace-shell/src/workspace-shell.scss.js +1 -1
  43. package/es/react/markdown.d.ts +46 -2
  44. package/es/react/markdown.js +177 -20
  45. package/es/react/markdown.js.map +1 -1
  46. package/es-custom/components/chat-history/src/chat-history.scss.js +1 -1
  47. package/es-custom/components/chat-history/src/history-panel-item.d.ts +14 -0
  48. package/es-custom/components/chat-history/src/history-panel-item.js +30 -0
  49. package/es-custom/components/chat-history/src/history-panel-item.js.map +1 -1
  50. package/es-custom/components/code-snippet/src/code-snippet.d.ts +5 -0
  51. package/es-custom/components/code-snippet/src/code-snippet.js +17 -5
  52. package/es-custom/components/code-snippet/src/code-snippet.js.map +1 -1
  53. package/es-custom/components/feedback/src/feedback.d.ts +4 -0
  54. package/es-custom/components/feedback/src/feedback.js +6 -4
  55. package/es-custom/components/feedback/src/feedback.js.map +1 -1
  56. package/es-custom/components/markdown/index.d.ts +3 -1
  57. package/es-custom/components/markdown/index.js +1 -1
  58. package/es-custom/components/markdown/src/markdown-renderer-types.d.ts +100 -0
  59. package/es-custom/components/markdown/src/markdown-renderer-types.js +8 -0
  60. package/es-custom/components/markdown/src/markdown-renderer-types.js.map +1 -0
  61. package/es-custom/components/markdown/src/markdown-renderer.d.ts +14 -64
  62. package/es-custom/components/markdown/src/markdown-renderer.js +110 -131
  63. package/es-custom/components/markdown/src/markdown-renderer.js.map +1 -1
  64. package/es-custom/components/markdown/src/markdown-token-tree.d.ts +50 -5
  65. package/es-custom/components/markdown/src/markdown-token-tree.js +182 -47
  66. package/es-custom/components/markdown/src/markdown-token-tree.js.map +1 -1
  67. package/es-custom/components/markdown/src/markdown.d.ts +49 -1
  68. package/es-custom/components/markdown/src/markdown.js +317 -106
  69. package/es-custom/components/markdown/src/markdown.js.map +1 -1
  70. package/es-custom/components/markdown/src/plugins/markdown-it-task-lists.js +2 -5
  71. package/es-custom/components/markdown/src/plugins/markdown-it-task-lists.js.map +1 -1
  72. package/es-custom/components/markdown/src/utils/lit-directives.d.ts +17 -0
  73. package/es-custom/components/markdown/src/utils/lit-directives.js +84 -0
  74. package/es-custom/components/markdown/src/utils/lit-directives.js.map +1 -0
  75. package/es-custom/components/markdown/src/utils/plugin-fallback.d.ts +33 -0
  76. package/es-custom/components/markdown/src/utils/plugin-fallback.js +216 -0
  77. package/es-custom/components/markdown/src/utils/plugin-fallback.js.map +1 -0
  78. package/es-custom/components/markdown/src/utils/streaming-table.d.ts +28 -0
  79. package/es-custom/components/markdown/src/utils/streaming-table.js +86 -0
  80. package/es-custom/components/markdown/src/utils/streaming-table.js.map +1 -0
  81. package/es-custom/components/markdown/src/utils/table-helpers.d.ts +17 -0
  82. package/es-custom/components/markdown/src/utils/table-helpers.js +104 -2
  83. package/es-custom/components/markdown/src/utils/table-helpers.js.map +1 -1
  84. package/es-custom/components/table/src/table.js +4 -1
  85. package/es-custom/components/table/src/table.js.map +1 -1
  86. package/es-custom/components/workspace-shell/src/workspace-shell.scss.js +1 -1
  87. package/es-custom/react/markdown.d.ts +46 -2
  88. package/es-custom/react/markdown.js +177 -20
  89. package/es-custom/react/markdown.js.map +1 -1
  90. package/package.json +5 -4
  91. package/es/components/markdown/src/utils.d.ts +0 -4
  92. package/es/components/markdown/src/utils.js +0 -25
  93. package/es/components/markdown/src/utils.js.map +0 -1
  94. package/es-custom/components/markdown/src/utils.d.ts +0 -4
  95. package/es-custom/components/markdown/src/utils.js +0 -25
  96. package/es-custom/components/markdown/src/utils.js.map +0 -1
@@ -0,0 +1,100 @@
1
+ import type { Token } from "markdown-it";
2
+ import type { TableCellData } from "./utils/table-helpers.js";
3
+ import type { TokenTree } from "./markdown-token-tree.js";
4
+ /**
5
+ * Data payload describing a markdown table the consumer can render in place
6
+ * of the default `cds-aichat-table`.
7
+ *
8
+ * @category Messaging
9
+ */
10
+ export interface MarkdownRendererTableData {
11
+ /** Cells extracted from the table's `<thead>`, in column order. */
12
+ headers: TableCellData[];
13
+ /** Body rows, each an array of cells in column order. */
14
+ rows: TableCellData[][];
15
+ /**
16
+ * True while the chat is still receiving chunks of the message this table
17
+ * belongs to.
18
+ */
19
+ isStreaming: boolean;
20
+ /**
21
+ * True when the table should render its skeleton/loading state instead of
22
+ * cell data — set by the component while a streaming table sits at the tail
23
+ * of the message and the next chunk may still add rows.
24
+ */
25
+ isLoading: boolean;
26
+ }
27
+ /**
28
+ * Data payload describing a markdown fenced code block the consumer can
29
+ * render in place of the default `cds-aichat-code-snippet`.
30
+ *
31
+ * @category Messaging
32
+ */
33
+ export interface MarkdownRendererCodeBlockData {
34
+ /** Language identifier from the fence info string (empty when unset). */
35
+ language: string;
36
+ /** The raw code text inside the fence. May be incomplete while streaming. */
37
+ code: string;
38
+ /**
39
+ * True while the chat is still receiving chunks of the message this code
40
+ * block belongs to.
41
+ */
42
+ isStreaming: boolean;
43
+ }
44
+ /**
45
+ * Argument passed to a markdown table custom renderer callback.
46
+ *
47
+ * @category Messaging
48
+ */
49
+ export interface MarkdownRendererTableArgs extends MarkdownRendererTableData {
50
+ /**
51
+ * The markdown-it `Token` (a `table_open`) for the matched element — see
52
+ * the `markdown-it` `Token` documentation for the field shape.
53
+ */
54
+ token: Readonly<Token>;
55
+ /** The full token-tree node, including descendants. */
56
+ node: Readonly<TokenTree>;
57
+ /**
58
+ * Stable slot identifier for this rendered element. The same name is
59
+ * reused across renders while the underlying source line stays put — useful
60
+ * as a React key.
61
+ */
62
+ slotName: string;
63
+ }
64
+ /**
65
+ * Argument passed to a markdown fenced code block custom renderer callback.
66
+ *
67
+ * @category Messaging
68
+ */
69
+ export interface MarkdownRendererCodeBlockArgs extends MarkdownRendererCodeBlockData {
70
+ /**
71
+ * The markdown-it `Token` (a `fence`) for the matched element — see the
72
+ * `markdown-it` `Token` documentation for the field shape.
73
+ */
74
+ token: Readonly<Token>;
75
+ /** The full token-tree node. */
76
+ node: Readonly<TokenTree>;
77
+ /**
78
+ * Stable slot identifier for this rendered element. The same name is
79
+ * reused across renders while the underlying source line stays put — useful
80
+ * as a React key.
81
+ */
82
+ slotName: string;
83
+ }
84
+ /**
85
+ * Per-element custom renderer callbacks accepted by the markdown element.
86
+ * Each callback returns an `HTMLElement` to use in place of the default
87
+ * Carbon rendering, or `null` to fall back to the default. Returned elements
88
+ * are adopted as light-DOM children of the markdown element (wrapped in a
89
+ * `<div slot="…">` host so the consumer's element is not mutated) and
90
+ * projected through a named shadow-DOM `<slot>`. External CSS continues to
91
+ * apply normally.
92
+ *
93
+ * @category Messaging
94
+ */
95
+ export interface MarkdownCustomRenderers {
96
+ /** Override the default `cds-aichat-table` rendering. */
97
+ table?: (args: MarkdownRendererTableArgs) => HTMLElement | null;
98
+ /** Override the default `cds-aichat-code-snippet` rendering. */
99
+ codeBlock?: (args: MarkdownRendererCodeBlockArgs) => HTMLElement | null;
100
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright IBM Corp. 2025
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ //# sourceMappingURL=markdown-renderer-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-renderer-types.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -4,73 +4,23 @@ import "@carbon/web-components/es/components/checkbox/index.js";
4
4
  import "../../code-snippet/index.js";
5
5
  import "../../card/index.js";
6
6
  import "../../table/index.js";
7
- import type { TokenTree } from "./markdown-token-tree.js";
7
+ import { type TokenTree } from "./markdown-token-tree.js";
8
+ import type { MarkdownRendererSlotDescriptor, RenderTokenTreeOptions } from "./markdown-renderer-types.js";
9
+ export type { MarkdownCustomRenderers, MarkdownRendererCodeBlockArgs, MarkdownRendererCodeBlockData, MarkdownRendererSlotDescriptor, MarkdownRendererTableArgs, MarkdownRendererTableData, RenderTokenTreeOptions, } from "./markdown-renderer-types.js";
8
10
  /**
9
- * Configuration options for rendering TokenTrees into HTML.
11
+ * Top-level entry: renders a markdown token tree to a Lit `TemplateResult`
12
+ * and returns the batch of custom-renderer slot descriptors collected along
13
+ * the way. Callers receive both pieces in one call so the batch can't be
14
+ * accidentally dropped.
10
15
  */
11
- export interface RenderTokenTreeOptions {
12
- /** Whether to sanitize HTML content using DOMPurify */
13
- sanitize: boolean;
14
- /** Whether content is being streamed (affects loading states) */
15
- streaming?: boolean;
16
- /** Context information for nested rendering */
17
- context?: {
18
- /** Whether we're currently inside a table header */
19
- isInThead?: boolean;
20
- /** All children of the parent node */
21
- parentChildren?: TokenTree[];
22
- /** Current index in parent's children array */
23
- currentIndex?: number;
24
- };
25
- /** Whether to enable syntax highlighting in code blocks */
26
- codeSnippetHighlight?: boolean;
27
- /** Feedback text shown after copying */
28
- codeSnippetFeedback?: string;
29
- /** Text for show less button */
30
- codeSnippetShowLessText?: string;
31
- /** Text for show more button */
32
- codeSnippetShowMoreText?: string;
33
- /** Tooltip text for copy button */
34
- codeSnippetCopyButtonTooltipContent?: string;
35
- /** Function to get formatted line count text */
36
- codeSnippetGetLineCountText?: ({ count }: {
37
- count: number;
38
- }) => string;
39
- /** Aria-label for code snippets when in read-only mode */
40
- codeSnippetAriaLabelReadOnly?: string;
41
- /** Aria-label for code snippets when in editable mode */
42
- codeSnippetAriaLabelEditable?: string;
43
- /** Placeholder text for table filter input */
44
- tableFilterPlaceholderText?: string;
45
- /** Text for previous page button tooltip */
46
- tablePreviousPageText?: string;
47
- /** Text for next page button tooltip */
48
- tableNextPageText?: string;
49
- /** Text for items per page label */
50
- tableItemsPerPageText?: string;
51
- /**
52
- * The text used for the download button's accessible label.
53
- */
54
- tableDownloadLabelText?: string;
55
- /** Locale for table sorting and formatting */
56
- tableLocale?: string;
57
- /** Function to get supplemental pagination text */
58
- tableGetPaginationSupplementalText?: ({ count }: {
59
- count: number;
60
- }) => string;
61
- /** Function to get pagination status text */
62
- tableGetPaginationStatusText?: ({ start, end, count, }: {
63
- start: number;
64
- end: number;
65
- count: number;
66
- }) => string;
67
- /**
68
- * Force markdown tables to render in loading mode.
69
- * Useful for freezing streaming table visuals until stream completion.
70
- */
71
- forceTableLoading?: boolean;
72
- }
16
+ export declare function renderMarkdownTree(node: TokenTree, options: RenderTokenTreeOptions): {
17
+ template: TemplateResult;
18
+ batch: MarkdownRendererSlotDescriptor[];
19
+ };
73
20
  /**
74
21
  * Converts TokenTree to Lit TemplateResult.
22
+ *
23
+ * Recursive renderer; external callers should use {@link renderMarkdownTree}
24
+ * which collects the slot-descriptor batch.
75
25
  */
76
26
  export declare function renderTokenTree(node: TokenTree, options: RenderTokenTreeOptions): TemplateResult;
@@ -6,10 +6,9 @@
6
6
  */
7
7
 
8
8
  import DOMPurify from 'dompurify';
9
- import { nothing, render, html } from 'lit';
9
+ import { html } from 'lit';
10
10
  import { repeat } from 'lit/directives/repeat.js';
11
11
  import { unsafeHTML } from 'lit/directives/unsafe-html.js';
12
- import { directive, Directive, PartType } from 'lit/directive.js';
13
12
  import '@carbon/web-components/es/components/list/index.js';
14
13
  import '@carbon/web-components/es/components/checkbox/index.js';
15
14
  import '../../code-snippet/src/code-snippet.js';
@@ -19,8 +18,10 @@ import '../../card/src/card-footer.js';
19
18
  import '../../card/src/card-steps.js';
20
19
  import '../../table/src/table.js';
21
20
  import { defaultLineCountText } from '../../code-snippet/src/formatters.js';
22
- import { extractTableData } from './utils/table-helpers.js';
23
- import { HTML_CONTAINER_SLOT, combineConsecutiveHtmlInline, combineSplitHtmlBlocks } from './utils/html-helpers.js';
21
+ import { renderTable } from './utils/table-helpers.js';
22
+ import { combineConsecutiveHtmlInline, combineSplitHtmlBlocks } from './utils/html-helpers.js';
23
+ import { sanitizeHtmlContent, htmlContainer, spread } from './utils/lit-directives.js';
24
+ import { shouldDelegateToPluginRule, renderFallback, isNativelyHandled } from './utils/plugin-fallback.js';
24
25
 
25
26
  /*
26
27
  * Copyright IBM Corp. 2025, 2026
@@ -30,67 +31,33 @@ import { HTML_CONTAINER_SLOT, combineConsecutiveHtmlInline, combineSplitHtmlBloc
30
31
  *
31
32
  * @license
32
33
  */
33
- // Generic attribute spread for Lit templates
34
- class SpreadAttrs extends Directive {
35
- render(_attrs) {
36
- return nothing;
37
- }
38
- update(part, [attrs]) {
39
- const el = part.element;
40
- for (const [k, v] of Object.entries(attrs ?? {})) {
41
- if (v === false || v === null || v === undefined) {
42
- el.removeAttribute(k);
43
- }
44
- else if (v === true) {
45
- el.setAttribute(k, "");
46
- }
47
- else {
48
- el.setAttribute(k, String(v));
49
- }
50
- }
51
- return nothing;
52
- }
53
- }
54
- const spread = directive(SpreadAttrs);
55
- const sanitizeHtmlContent = (content) => DOMPurify.sanitize(content, {
56
- ADD_ATTR: ["data-aichat-markdown"],
57
- CUSTOM_ELEMENT_HANDLING: {
58
- tagNameCheck: () => true, // Allow custom elements
59
- attributeNameCheck: () => true,
60
- allowCustomizedBuiltInElements: true,
61
- },
62
- });
63
- class HtmlContainer extends Directive {
64
- constructor(partInfo) {
65
- super(partInfo);
66
- this.slotElement = null;
67
- this.lastOpeningHtml = "";
68
- if (partInfo.type !== PartType.ELEMENT) {
69
- throw new Error("HtmlContainer must be used on an element");
70
- }
71
- }
72
- render(_openingHtml, _childTemplate, _sanitize) {
73
- return nothing;
74
- }
75
- update(part, [openingHtml, childTemplate, sanitize]) {
76
- const host = part.element;
77
- if (!this.slotElement || this.lastOpeningHtml !== openingHtml) {
78
- this.lastOpeningHtml = openingHtml;
79
- let content = `${openingHtml}${HTML_CONTAINER_SLOT}`;
80
- if (sanitize && content) {
81
- content = sanitizeHtmlContent(content);
82
- }
83
- const fragment = document.createRange().createContextualFragment(content);
84
- host.replaceChildren(...Array.from(fragment.childNodes));
85
- this.slotElement = host.querySelector("[data-aichat-markdown]");
86
- }
87
- if (this.slotElement) {
88
- render(childTemplate, this.slotElement);
89
- }
90
- return nothing;
91
- }
34
+ /**
35
+ * Walks a `TokenTree` and emits a Lit `TemplateResult` plus a batch of {@link MarkdownRendererSlotDescriptor} records the markdown element consumes during its `updated()` reconcile. External callers should go through {@link renderMarkdownTree} so the batch isn't accidentally dropped.
36
+ *
37
+ * ### Dispatch precedence
38
+ *
39
+ * Per token, in order:
40
+ *
41
+ * 1. **Consumer override** — `options.customRenderers?.[kind]` for `kind` in `{ table, codeBlock }`. The renderer emits a named `<slot>` placeholder and records a descriptor; the markdown element's `updated()` invokes the consumer callback later.
42
+ * 2. **Plugin-overridden rule** — `shouldDelegateToPluginRule(token, md)` is true when a user-supplied markdown-it plugin overrode the renderer rule for one of the curated leaf tokens in `PLUGIN_DELEGABLE_TOKEN_TYPES` (`fence`, `image`, `code_inline`, `html_block`). The token routes through `renderFallback` and surfaces as a `pluginFallback` descriptor.
43
+ * 3. **Native Lit dispatch** — the hand-written `renderWithStaticTag` switch. Kept flat (rather than a tag-to-renderer map) so the per-tag exceptions — task-list passthrough, Carbon `cds-unordered-list` / `cds-ordered-list` wrappers, automatic `target="_blank"` on `<a>`, image plugin delegation — stay easy to grep.
44
+ * 4. **Unknown plugin-introduced token** — anything not natively handled falls through to `renderFallback`, so plugins that register `md.renderer.rules[type]` (footnote, deflist, custom containers, emoji) just work.
45
+ *
46
+ * ### Slot contract
47
+ *
48
+ * {@link MarkdownRendererSlotDescriptor} (defined in `./markdown-renderer-types.ts`) is the bridge between this module and `./markdown.ts`. This module appends descriptors via `recordCustomRender`; the markdown element's `reconcileCustomRendererHosts` consumes them, invokes consumer callbacks (or adopts plugin-fallback HTML) and attaches the result as a light-DOM `<div slot="…">` host (or `<span>` for inline plugin output).
49
+ */
50
+ /**
51
+ * Stable, parent-scoped slot name for an overridable token. Uses `startLine`
52
+ * (not the full `token.map`) so the name doesn't change when the token's
53
+ * `endLine` advances during streaming. The `currentIndex` from the parent
54
+ * context disambiguates siblings on the same start line (rare but possible).
55
+ */
56
+ function slotNameFor(kind, token, options) {
57
+ const startLine = token.map?.[0] ?? 0;
58
+ const index = options.context?.currentIndex ?? 0;
59
+ return `cds-aichat-markdown-renderer-${kind}-${startLine}-${index}`;
92
60
  }
93
- const htmlContainer = directive(HtmlContainer);
94
61
  function renderChildTokenTrees(children, options, childContext) {
95
62
  const normalizedChildren = combineConsecutiveHtmlInline(combineSplitHtmlBlocks(children));
96
63
  // Multiple or complex children: use repeat for stable keying
@@ -115,14 +82,40 @@ function renderChildTokenTrees(children, options, childContext) {
115
82
  return result ?? html ``;
116
83
  })}`;
117
84
  }
85
+ /**
86
+ * Top-level entry: renders a markdown token tree to a Lit `TemplateResult`
87
+ * and returns the batch of custom-renderer slot descriptors collected along
88
+ * the way. Callers receive both pieces in one call so the batch can't be
89
+ * accidentally dropped.
90
+ */
91
+ function renderMarkdownTree(node, options) {
92
+ const batch = [];
93
+ let pluginSlotIndex = 0;
94
+ const template = renderTokenTree(node, {
95
+ ...options,
96
+ recordCustomRender: (descriptor) => batch.push(descriptor),
97
+ pluginSlotCounter: { next: () => pluginSlotIndex++ },
98
+ });
99
+ return { template, batch };
100
+ }
118
101
  /**
119
102
  * Converts TokenTree to Lit TemplateResult.
103
+ *
104
+ * Recursive renderer; external callers should use {@link renderMarkdownTree}
105
+ * which collects the slot-descriptor batch.
120
106
  */
121
107
  function renderTokenTree(node, options) {
122
108
  const { token, children } = node;
123
109
  const { context, sanitize } = options;
124
110
  // Handle raw HTML blocks and inline HTML
125
111
  if (token.type === "html_block" || token.type === "html_inline") {
112
+ // Plugin-overridden html_block rules (rare but supported) — route through
113
+ // the plugin's renderer before our default unsafeHTML pass-through.
114
+ if (token.type === "html_block" &&
115
+ shouldDelegateToPluginRule(token, options.md) &&
116
+ options.md) {
117
+ return renderFallback(token, node, options.md, sanitize, options);
118
+ }
126
119
  let content = token.content || "";
127
120
  // Apply HTML sanitization if requested
128
121
  if (sanitize && content) {
@@ -145,18 +138,22 @@ function renderTokenTree(node, options) {
145
138
  }
146
139
  // Handle inline code spans
147
140
  if (token.type === "code_inline") {
141
+ if (shouldDelegateToPluginRule(token, options.md) && options.md) {
142
+ return renderFallback(token, node, options.md, sanitize, options);
143
+ }
148
144
  return html `<code>${token.content}</code>`;
149
145
  }
150
146
  // Handle fenced code blocks
151
147
  if (token.type === "fence") {
152
148
  const language = token.info?.trim() ?? "";
153
149
  const { codeSnippetHighlight = true, codeSnippetShowLessText, codeSnippetShowMoreText, codeSnippetCopyButtonTooltipContent, codeSnippetGetLineCountText = defaultLineCountText, codeSnippetAriaLabelReadOnly, codeSnippetAriaLabelEditable, } = options;
154
- return html `<cds-aichat-card is-flush>
150
+ const defaultTemplate = html `<cds-aichat-card is-flush>
155
151
  <div slot="body">
156
152
  <cds-aichat-code-snippet
157
153
  data-rounded
158
154
  .language=${language}
159
155
  .highlight=${codeSnippetHighlight}
156
+ .detectLanguage=${true}
160
157
  .showLessText=${codeSnippetShowLessText}
161
158
  .showMoreText=${codeSnippetShowMoreText}
162
159
  .copyButtonTooltipContent=${codeSnippetCopyButtonTooltipContent}
@@ -167,6 +164,27 @@ function renderTokenTree(node, options) {
167
164
  ></cds-aichat-code-snippet>
168
165
  </div>
169
166
  </cds-aichat-card>`;
167
+ if (options.customRenderers?.codeBlock) {
168
+ const slotName = slotNameFor("codeBlock", token, options);
169
+ options.recordCustomRender?.({
170
+ slotName,
171
+ kind: "codeBlock",
172
+ token: token,
173
+ node,
174
+ data: {
175
+ language,
176
+ code: token.content ?? "",
177
+ isStreaming: !!options.streaming,
178
+ },
179
+ });
180
+ return html `<slot name=${slotName}>${defaultTemplate}</slot>`;
181
+ }
182
+ // Honor user-plugin `fence` overrides (markdown-it-mermaid, syntax
183
+ // highlighters, etc.). customRenderer slot above wins when set.
184
+ if (shouldDelegateToPluginRule(token, options.md) && options.md) {
185
+ return renderFallback(token, node, options.md, sanitize, options);
186
+ }
187
+ return defaultTemplate;
170
188
  }
171
189
  // Handle structural elements (paragraphs, headings, lists, etc.)
172
190
  const tag = token.tag;
@@ -202,6 +220,12 @@ function renderTokenTree(node, options) {
202
220
  else {
203
221
  content = renderChildTokenTrees(children, options, childContext);
204
222
  }
223
+ // Unknown plugin-introduced tokens (no tag we recognize) — defer to
224
+ // markdown-it's renderer so plugins that register md.renderer.rules[type]
225
+ // (footnote, emoji, deflist, container, etc.) just work.
226
+ if (!tag && options.md && !isNativelyHandled(token)) {
227
+ return renderFallback(token, node, options.md, sanitize, options);
228
+ }
205
229
  // Handle tokens without HTML tags (just return content)
206
230
  if (!tag) {
207
231
  return content;
@@ -282,7 +306,7 @@ function renderWithStaticTag(tag, token, content, attrs, options, _context, node
282
306
  case "cds-checkbox": {
283
307
  const { checked, disabled, ...otherAttrs } = attrs;
284
308
  const isChecked = checked === "true";
285
- const isDisabled = disabled === undefined ? true : disabled === "" || disabled === "true";
309
+ const isDisabled = disabled === undefined ? false : disabled === "" || disabled === "true";
286
310
  return html `<cds-checkbox
287
311
  ?checked=${isChecked}
288
312
  ?disabled=${isDisabled}
@@ -339,80 +363,35 @@ function renderWithStaticTag(tag, token, content, attrs, options, _context, node
339
363
  attrs.target = "_blank";
340
364
  }
341
365
  return html `<a ${spread(attrs)}>${content}</a>`;
366
+ // Self-closing image. Plugin-introduced wrappers (e.g. image-figures)
367
+ // route through `shouldDelegateToPluginRule` before falling back to a
368
+ // plain `<img>` element.
369
+ case "img":
370
+ if (node && options.md && shouldDelegateToPluginRule(token, options.md)) {
371
+ return renderFallback(token, node, options.md, options.sanitize, options);
372
+ }
373
+ return html `<img ${spread(attrs)} />`;
342
374
  // Tables with Carbon component and streaming support
343
375
  case "table": {
344
376
  if (!node) {
345
377
  return html `<div>Error: Missing table data</div>`;
346
378
  }
347
- const { streaming, forceTableLoading, context: parentContext, tableFilterPlaceholderText, tablePreviousPageText, tableNextPageText, tableItemsPerPageText, tableDownloadLabelText, tableLocale, tableGetPaginationSupplementalText, tableGetPaginationStatusText, } = options;
348
- // Determine if we should show loading state during streaming
349
- let isLoading = Boolean(forceTableLoading);
350
- if (!isLoading &&
351
- streaming &&
352
- parentContext?.parentChildren &&
353
- parentContext?.currentIndex !== undefined) {
354
- const { parentChildren, currentIndex } = parentContext;
355
- const hasNodesAfterTable = currentIndex < parentChildren.length - 1;
356
- isLoading = !hasNodesAfterTable;
357
- }
358
- const renderCellTokens = (tokens, contextOverrides = {}) => {
359
- // Same as block/inline rendering: merge split raw HTML (e.g. `<a>…</a>`)
360
- // so each cell is not rendered as separate unsafeHTML + text chunks.
361
- const normalizedTokens = combineConsecutiveHtmlInline(tokens);
362
- return html `${repeat(normalizedTokens, (child, index) => `cell-${index}:${child.token.type}:${child.token.tag}`, (child, index) => renderTokenTree(child, {
363
- ...options,
364
- context: {
365
- ...options.context,
366
- ...contextOverrides,
367
- parentChildren: normalizedTokens,
368
- currentIndex: index,
369
- },
370
- }))}`;
371
- };
372
- const createCellContent = (cell, contextOverrides) => ({
373
- text: cell.text,
374
- template: cell.tokens
375
- ? renderCellTokens(cell.tokens, contextOverrides)
376
- : null,
377
- });
378
- // Only extract and process table data when not loading to avoid unnecessary work.
379
- // During loading, the table shows a skeleton and doesn't need the actual data.
380
- let headers = [];
381
- let tableRows = [];
382
- if (!isLoading) {
383
- const extractedData = extractTableData(node);
384
- headers = extractedData.headers.map((cell) => createCellContent(cell, { isInThead: true }));
385
- tableRows = extractedData.rows.map((row) => ({
386
- cells: row.map((cell) => createCellContent(cell)),
387
- }));
388
- }
389
- // Always return the same structure to allow Lit to reuse the table element.
390
- // When isLoading is true, the table component will show a skeleton state.
391
- // When isLoading is false, it will show the actual data.
392
- // This prevents recreating the table element and preserves its internal state.
393
- return html `<div class="cds-aichat-table--square">
394
- <cds-aichat-table
395
- data-rounded
396
- .headers=${headers}
397
- .rows=${tableRows}
398
- .loading=${isLoading}
399
- .filterPlaceholderText=${tableFilterPlaceholderText}
400
- .previousPageText=${tablePreviousPageText}
401
- .nextPageText=${tableNextPageText}
402
- .itemsPerPageText=${tableItemsPerPageText}
403
- .downloadLabelText=${tableDownloadLabelText}
404
- .locale=${tableLocale}
405
- .getPaginationSupplementalText=${tableGetPaginationSupplementalText}
406
- .getPaginationStatusText=${tableGetPaginationStatusText}
407
- ...=${attrs}
408
- ></cds-aichat-table>
409
- </div>`;
379
+ const slotName = options.customRenderers?.table
380
+ ? slotNameFor("table", token, options)
381
+ : undefined;
382
+ return renderTable(token, node, attrs, options, renderTokenTree, slotName);
410
383
  }
411
- // Fallback for unknown tags
384
+ // Fallback for unknown tags. If we have the markdown-it instance available,
385
+ // defer to its renderer for plugin-introduced container tags (footnote_block,
386
+ // dl/dt/dd from deflist, custom containers, etc.). Otherwise fall back to
387
+ // a generic <div>.
412
388
  default:
389
+ if (options.md && node && !isNativelyHandled(token)) {
390
+ return renderFallback(token, node, options.md, options.sanitize, options);
391
+ }
413
392
  return html `<div ${spread(attrs)}>${content}</div>`;
414
393
  }
415
394
  }
416
395
 
417
- export { renderTokenTree };
396
+ export { renderMarkdownTree, renderTokenTree };
418
397
  //# sourceMappingURL=markdown-renderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-renderer.js","sources":["../../../../src/components/markdown/src/markdown-renderer.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;AAOG;AAmCH;AACA,MAAM,WAAY,SAAQ,SAAS,CAAA;AACjC,IAAA,MAAM,CAAC,MAA+B,EAAA;AACpC,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,MAAM,CAAC,IAAS,EAAE,CAAC,KAAK,CAA4B,EAAA;AAClD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAkB;AAClC,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE;AAChD,gBAAA,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;YACvB;AAAO,iBAAA,IAAI,CAAC,KAAK,IAAI,EAAE;AACrB,gBAAA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC;YACxB;iBAAO;gBACL,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B;QACF;AACA,QAAA,OAAO,OAAO;IAChB;AACD;AACD,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC;AAErC,MAAM,mBAAmB,GAAG,CAAC,OAAe,KAC1C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE;IAC1B,QAAQ,EAAE,CAAC,sBAAsB,CAAC;AAClC,IAAA,uBAAuB,EAAE;AACvB,QAAA,YAAY,EAAE,MAAM,IAAI;AACxB,QAAA,kBAAkB,EAAE,MAAM,IAAI;AAC9B,QAAA,8BAA8B,EAAE,IAAI;AACrC,KAAA;AACF,CAAA,CAAC;AAEJ,MAAM,aAAc,SAAQ,SAAS,CAAA;AAInC,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC5B,KAAK,CAAC,QAAQ,CAAC;QAJT,IAAA,CAAA,WAAW,GAAuB,IAAI;QACtC,IAAA,CAAA,eAAe,GAAG,EAAE;QAI1B,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,EAAE;AACtC,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;QAC7D;IACF;AAEA,IAAA,MAAM,CACJ,YAAoB,EACpB,cAA8B,EAC9B,SAAkB,EAAA;AAElB,QAAA,OAAO,OAAO;IAChB;IAEA,MAAM,CACJ,IAAU,EACV,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,CAAoC,EAAA;AAEzE,QAAA,MAAM,IAAI,GAAI,IAAoB,CAAC,OAAsB;QAEzD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,EAAE;AAC7D,YAAA,IAAI,CAAC,eAAe,GAAG,WAAW;AAClC,YAAA,IAAI,OAAO,GAAG,CAAA,EAAG,WAAW,CAAA,EAAG,mBAAmB,EAAE;AACpD,YAAA,IAAI,QAAQ,IAAI,OAAO,EAAE;AACvB,gBAAA,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;YACxC;YAEA,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC;AACzE,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC;QACjE;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;QACzC;AAEA,QAAA,OAAO,OAAO;IAChB;AACD;AAED,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;AAE9C,SAAS,qBAAqB,CAC5B,QAAqB,EACrB,OAA+B,EAC/B,YAAgD,EAAA;IAEhD,MAAM,kBAAkB,GAAG,4BAA4B,CACrD,sBAAsB,CAAC,QAAQ,CAAC,CACjC;;AAGD,IAAA,OAAO,IAAI,CAAA,CAAA,EAAG,MAAM,CAClB,kBAAkB,EAClB,CAAC,KAAK,EAAE,KAAK,KAAI;;;AAGf,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;QAEnE,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE;YACvC,OAAO,CAAA,MAAA,EAAS,SAAS,CAAA,CAAE;QAC7B;QAEA,OAAO,CAAA,OAAA,EAAU,SAAS,CAAA,CAAE;AAC9B,IAAA,CAAC,EACD,CAAC,KAAK,EAAE,KAAK,KAAI;AACf,QAAA,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE;AACpC,YAAA,GAAG,OAAO;AACV,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,YAAY;AACf,gBAAA,cAAc,EAAE,kBAAkB;AAClC,gBAAA,YAAY,EAAE,KAAK;AACpB,aAAA;AACF,SAAA,CAAC;;AAEF,QAAA,OAAO,MAAM,IAAI,IAAI,CAAA,EAAE;IACzB,CAAC,CACF,EAAE;AACL;AA2EA;;AAEG;AACG,SAAU,eAAe,CAC7B,IAAe,EACf,OAA+B,EAAA;AAE/B,IAAA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;AAChC,IAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO;;AAGrC,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;AAC/D,QAAA,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE;;AAGjC,QAAA,IAAI,QAAQ,IAAI,OAAO,EAAE;AACvB,YAAA,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;QACxC;QAEA,OAAO,IAAI,CAAA,CAAA,EAAG,UAAU,CAAC,OAAO,CAAC,EAAE;IACrC;;AAGA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE;AACnC,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE;QACvC,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;AAEtE,QAAA,OAAO,IAAI,CAAA,CAAA;;AAEP,MAAA,EAAA,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC;YAC9C;IACV;;AAGA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACzB,QAAA,OAAO,IAAI,CAAA,CAAA,EAAG,KAAK,CAAC,OAAO,EAAE;IAC/B;;AAGA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;AAChC,QAAA,OAAO,IAAI,CAAA,CAAA,MAAA,EAAS,KAAK,CAAC,OAAO,SAAS;IAC5C;;AAGA,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QACzC,MAAM,EACJ,oBAAoB,GAAG,IAAI,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,mCAAmC,EACnC,2BAA2B,GAAG,oBAAoB,EAClD,4BAA4B,EAC5B,4BAA4B,GAC7B,GAAG,OAAO;AAEX,QAAA,OAAO,IAAI,CAAA,CAAA;;;;sBAIO,QAAQ;uBACP,oBAAoB;0BACjB,uBAAuB;0BACvB,uBAAuB;sCACX,mCAAmC;8BAC3C,2BAA2B;+BAC1B,4BAA4B;+BAC5B,4BAA4B;AACzC,gBAAA,EAAA,KAAK,CAAC,OAAO;;;uBAGR;IACrB;;AAGA,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;;IAGrB,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CACzC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACpB,QAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAChB,QAAA,OAAO,GAAG;IACZ,CAAC,EACD,EAA4B,CAC7B;;IAGD,IAAI,KAAK,GAAG,QAAQ;AACpB,IAAA,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC9D,IAAA,IAAI,QAAQ,IAAI,CAAC,eAAe,EAAE;QAChC,KAAK,GAAG,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;;YAE/C,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA,GAAA,EAAM,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,EAAA,CAAI,EAAE;AAC3D,gBAAA,UAAU,EAAE,IAAI;AACjB,aAAA,CAAC;AACF,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,UAA4B;YACrD,OAAO,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI;QAC5C,CAAC,CAAC,CACH;IACH;;IAGA,IAAI,YAAY,GAAG,OAAO;AAC1B,IAAA,IAAI,GAAG,KAAK,OAAO,EAAE;QACnB,YAAY,GAAG,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IAChD;;AAGA,IAAA,IAAI,OAAuB;AAE3B,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;;AAE9D,QAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE;IAC9C;SAAO;QACL,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC;IAClE;;IAGA,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,OAAO;IAChB;;AAGA,IAAA,OAAO,mBAAmB,CACxB,GAAG,EACH,KAAc,EACd,OAAO,EACP,KAAK,EACL,OAAO,EACP,YAAY,EACZ,IAAI,CACL;AACH;AAEA;;AAEG;AACH,SAAS,mBAAmB,CAC1B,GAAW,EACX,KAAY,EACZ,OAAuB,EACvB,KAA6B,EAC7B,OAA+B,EAC/B,QAAkC,EAClC,IAAgB,EAAA;;AAGhB,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACzB,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,MAAM,gBAAgB,GAAG,CAAC,QAAoB,KAC5C,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,KAAI;QACnC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE;AACzC,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,OAAO,CAAC;AACrE,QAAA,OAAO,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AAChE,IAAA,CAAC,CAAC;IAEJ,QAAQ,GAAG;;AAET,QAAA,KAAK,GAAG;YACN,OAAO,IAAI,CAAA,CAAA,GAAA,EAAM,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,IAAA,CAAM;AAEjD,QAAA,KAAK,YAAY;YACf,OAAO,IAAI,CAAA,CAAA,YAAA,EAAe,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,aAAA,CAAe;AAEnE,QAAA,KAAK,KAAK;YACR,OAAO,IAAI,CAAA,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,MAAA,CAAQ;;AAGrD,QAAA,KAAK,IAAI;YACP,OAAO,IAAI,CAAA,CAAA,IAAA,EAAO,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,KAAA,CAAO;AACnD,QAAA,KAAK,IAAI;YACP,OAAO,IAAI,CAAA,CAAA,IAAA,EAAO,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,KAAA,CAAO;AACnD,QAAA,KAAK,IAAI;YACP,OAAO,IAAI,CAAA,CAAA,IAAA,EAAO,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,KAAA,CAAO;AACnD,QAAA,KAAK,IAAI;YACP,OAAO,IAAI,CAAA,CAAA,IAAA,EAAO,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,KAAA,CAAO;AACnD,QAAA,KAAK,IAAI;YACP,OAAO,IAAI,CAAA,CAAA,IAAA,EAAO,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,KAAA,CAAO;AACnD,QAAA,KAAK,IAAI;YACP,OAAO,IAAI,CAAA,CAAA,IAAA,EAAO,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,KAAA,CAAO;;QAGnD,KAAK,IAAI,EAAE;AACT,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC;AAC9B,YAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAA,CAAA,IAAA,EAAO,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3B,OAAO;cACL;YACR;AACA,YAAA,OAAO,IAAI,CAAA,CAAA;AACqB,oCAAA,EAAA,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,CAAC,CAAA;YACjD,OAAO;;WAER;QACP;QAEA,KAAK,IAAI,EAAE;AACT,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC;AAC9B,YAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAA,CAAA,IAAA,EAAO,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3B,OAAO;cACL;YACR;AACA,YAAA,OAAO,IAAI,CAAA,CAAA;AAC0B,yCAAA,EAAA,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,CAAC,CAAA;YACtD,OAAO;;WAER;QACP;QAEA,KAAK,IAAI,EAAE;AACT,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;AACjD,YAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;gBACxC,OAAO,IAAI,CAAA,CAAA,IAAA,EAAO,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,KAAA,CAAO;YACnD;YACA,OAAO,IAAI,CAAA,CAAA,eAAA,EAAkB,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,gBAAA,CAAkB;QACzE;QAEA,KAAK,cAAc,EAAE;YACnB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK;AAClD,YAAA,MAAM,SAAS,GAAG,OAAO,KAAK,MAAM;AACpC,YAAA,MAAM,UAAU,GACd,QAAQ,KAAK,SAAS,GAAG,IAAI,GAAG,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,MAAM;AAExE,YAAA,OAAO,IAAI,CAAA,CAAA;mBACE,SAAS;oBACR,UAAU;UACpB,MAAM,CAAC,UAAU,CAAC;WACjB,OAAO,CAAA;QACV;QACJ;;AAGA,QAAA,KAAK,QAAQ;YACX,OAAO,IAAI,CAAA,CAAA,QAAA,EAAW,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,SAAA,CAAW;AAC3D,QAAA,KAAK,IAAI;YACP,OAAO,IAAI,CAAA,CAAA,IAAA,EAAO,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,KAAA,CAAO;AACnD,QAAA,KAAK,MAAM;YACT,OAAO,IAAI,CAAA,CAAA,MAAA,EAAS,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,OAAA,CAAS;AACvD,QAAA,KAAK,KAAK;YACR,OAAO,IAAI,CAAA,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,MAAA,CAAQ;AACrD,QAAA,KAAK,KAAK;YACR,OAAO,IAAI,CAAA,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,MAAA,CAAQ;AACrD,QAAA,KAAK,KAAK;YACR,OAAO,IAAI,CAAA,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,MAAA,CAAQ;AACrD,QAAA,KAAK,MAAM;YACT,OAAO,IAAI,CAAA,CAAA,MAAA,EAAS,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,OAAA,CAAS;AACvD,QAAA,KAAK,GAAG;YACN,OAAO,IAAI,CAAA,CAAA,GAAA,EAAM,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,IAAA,CAAM;AACjD,QAAA,KAAK,GAAG;YACN,OAAO,IAAI,CAAA,CAAA,GAAA,EAAM,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,IAAA,CAAM;AACjD,QAAA,KAAK,OAAO;YACV,OAAO,IAAI,CAAA,CAAA,OAAA,EAAU,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,QAAA,CAAU;AACzD,QAAA,KAAK,MAAM;YACT,OAAO,IAAI,CAAA,CAAA,MAAA,EAAS,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,OAAA,CAAS;AACvD,QAAA,KAAK,KAAK;YACR,OAAO,IAAI,CAAA,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,MAAA,CAAQ;AACrD,QAAA,KAAK,GAAG;YACN,OAAO,IAAI,CAAA,CAAA,GAAA,EAAM,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,IAAA,CAAM;AACjD,QAAA,KAAK,KAAK;YACR,OAAO,IAAI,CAAA,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,MAAA,CAAQ;AACrD,QAAA,KAAK,KAAK;YACR,OAAO,IAAI,CAAA,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,MAAA,CAAQ;AACrD,QAAA,KAAK,MAAM;YACT,OAAO,IAAI,CAAA,CAAA,MAAA,EAAS,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,OAAA,CAAS;AACvD,QAAA,KAAK,MAAM;YACT,OAAO,IAAI,CAAA,CAAA,MAAA,EAAS,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,OAAA,CAAS;AACvD,QAAA,KAAK,MAAM;YACT,OAAO,IAAI,CAAA,CAAA,MAAA,EAAS,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,OAAA,CAAS;AACvD,QAAA,KAAK,KAAK;YACR,OAAO,IAAI,CAAA,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,MAAA,CAAQ;AACrD,QAAA,KAAK,MAAM;YACT,OAAO,IAAI,CAAA,CAAA,MAAA,EAAS,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,OAAA,CAAS;AACvD,QAAA,KAAK,GAAG;YACN,OAAO,IAAI,CAAA,CAAA,GAAA,EAAM,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,IAAA,CAAM;;AAGjD,QAAA,KAAK,GAAG;AACN,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,gBAAA,KAAK,CAAC,MAAM,GAAG,QAAQ;YACzB;YACA,OAAO,IAAI,CAAA,CAAA,GAAA,EAAM,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,IAAA,CAAM;;QAGjD,KAAK,OAAO,EAAE;YACZ,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,IAAI,CAAA,CAAA,oCAAA,CAAsC;YACnD;YAEA,MAAM,EACJ,SAAS,EACT,iBAAiB,EACjB,OAAO,EAAE,aAAa,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,kCAAkC,EAClC,4BAA4B,GAC7B,GAAG,OAAO;;AAGX,YAAA,IAAI,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAC1C,YAAA,IACE,CAAC,SAAS;gBACV,SAAS;AACT,gBAAA,aAAa,EAAE,cAAc;AAC7B,gBAAA,aAAa,EAAE,YAAY,KAAK,SAAS,EACzC;AACA,gBAAA,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,aAAa;gBACtD,MAAM,kBAAkB,GAAG,YAAY,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC;gBACnE,SAAS,GAAG,CAAC,kBAAkB;YACjC;YAEA,MAAM,gBAAgB,GAAG,CAAC,MAAmB,EAAE,gBAAgB,GAAG,EAAE,KAAI;;;AAGtE,gBAAA,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,MAAM,CAAC;AAC7D,gBAAA,OAAO,IAAI,CAAA,CAAA,EAAG,MAAM,CAClB,gBAAgB,EAChB,CAAC,KAAK,EAAE,KAAK,KACX,QAAQ,KAAK,CAAA,CAAA,EAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,EACxD,CAAC,KAAK,EAAE,KAAK,KACX,eAAe,CAAC,KAAK,EAAE;AACrB,oBAAA,GAAG,OAAO;AACV,oBAAA,OAAO,EAAE;wBACP,GAAG,OAAO,CAAC,OAAO;AAClB,wBAAA,GAAG,gBAAgB;AACnB,wBAAA,cAAc,EAAE,gBAAgB;AAChC,wBAAA,YAAY,EAAE,KAAK;AACpB,qBAAA;iBACF,CAAC,CACL,EAAE;AACL,YAAA,CAAC;YAED,MAAM,iBAAiB,GAAG,CACxB,IAAmB,EACnB,gBAA0C,MACpB;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC;sBACX,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB;AAChD,sBAAE,IAAI;AACT,aAAA,CAAC;;;YAIF,IAAI,OAAO,GAAuB,EAAE;YACpC,IAAI,SAAS,GAAsB,EAAE;YAErC,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC;gBAC5C,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KACvC,iBAAiB,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAC7C;AACD,gBAAA,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC3C,oBAAA,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAClD,iBAAA,CAAC,CAAC;YACL;;;;;AAMA,YAAA,OAAO,IAAI,CAAA,CAAA;;;qBAGI,OAAO;kBACV,SAAS;qBACN,SAAS;mCACK,0BAA0B;8BAC/B,qBAAqB;0BACzB,iBAAiB;8BACb,qBAAqB;+BACpB,sBAAsB;oBACjC,WAAW;2CACY,kCAAkC;qCACxC,4BAA4B;gBACjD,KAAK;;aAER;QACT;;AAGA,QAAA;YACE,OAAO,IAAI,CAAA,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,MAAA,CAAQ;;AAEzD;;;;"}
1
+ {"version":3,"file":"markdown-renderer.js","sources":["../../../../src/components/markdown/src/markdown-renderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}