markstream-angular 0.0.6 → 0.0.8

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.
@@ -3,8 +3,8 @@ import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Input, ChangeDetectionStrategy, Component, forwardRef, inject, ChangeDetectorRef, ViewChild, ViewContainerRef, ElementRef, Renderer2, Directive, HostListener, Injectable, InjectionToken, EventEmitter, Output } from '@angular/core';
5
5
  import { normalizeCustomHtmlTags, normalizeCustomHtmlTagName, parseMarkdownToStructure, mergeCustomHtmlTags, getMarkdown, sanitizeHtmlAttrs, VOID_HTML_TAGS, BLOCKED_HTML_TAGS, isHtmlTagHardBlocked, isHtmlTagBlocked, isUnsafeHtmlUrl, shouldOpenLinkInNewTab, sanitizeImageSrc, NON_STRUCTURING_HTML_TAGS, toSafeMermaidSvgMarkup, getHtmlTagFromContent, stripCustomHtmlWrapper, STANDARD_HTML_TAGS, hasCompleteHtmlTagContent } from 'stream-markdown-parser';
6
- import { resolveStreamingTextState, createSmoothMarkdownStream } from 'markstream-core';
7
6
  import { computePosition, offset, flip, shift, autoUpdate } from '@floating-ui/dom';
7
+ import { createSmoothMarkdownStream } from 'markstream-core';
8
8
 
9
9
  const TAG_TOKEN_RE = /<\/?([A-Z][\w:-]*)(?:\s[^<>]*)?>/gi;
10
10
  function hydrateCustomTagContent(nodes, source, customHtmlTags) {
@@ -494,8 +494,8 @@ class BlockquoteNodeComponent {
494
494
  get nestedPrefix() {
495
495
  return `${this.indexKey || 'blockquote'}-quote`;
496
496
  }
497
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: BlockquoteNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
498
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: BlockquoteNodeComponent, isStandalone: true, selector: "markstream-angular-blockquote-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
497
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: BlockquoteNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
498
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: BlockquoteNodeComponent, isStandalone: true, selector: "markstream-angular-blockquote-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
499
499
  <blockquote class="blockquote-node" dir="auto" [attr.cite]="cite">
500
500
  <markstream-angular-nested-renderer
501
501
  [nodes]="children"
@@ -505,7 +505,7 @@ class BlockquoteNodeComponent {
505
505
  </blockquote>
506
506
  `, isInline: true, styles: [".blockquote-node :where(.markstream-angular){content-visibility:visible;contain:content;contain-intrinsic-size:0 0}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
507
507
  }
508
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: BlockquoteNodeComponent, decorators: [{
508
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: BlockquoteNodeComponent, decorators: [{
509
509
  type: Component,
510
510
  args: [{ selector: 'markstream-angular-blockquote-node', standalone: true, imports: [CommonModule, forwardRef(() => NestedRendererComponent)], template: `
511
511
  <blockquote class="blockquote-node" dir="auto" [attr.cite]="cite">
@@ -529,10 +529,10 @@ class CheckboxNodeComponent {
529
529
  get checked() {
530
530
  return !!this.node?.checked;
531
531
  }
532
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CheckboxNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
533
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: CheckboxNodeComponent, isStandalone: true, selector: "markstream-angular-checkbox-node", inputs: { node: "node" }, ngImport: i0, template: '<input type="checkbox" disabled [checked]="checked">', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
532
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CheckboxNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
533
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: CheckboxNodeComponent, isStandalone: true, selector: "markstream-angular-checkbox-node", inputs: { node: "node" }, ngImport: i0, template: '<input type="checkbox" disabled [checked]="checked">', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
534
534
  }
535
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CheckboxNodeComponent, decorators: [{
535
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CheckboxNodeComponent, decorators: [{
536
536
  type: Component,
537
537
  args: [{
538
538
  selector: 'markstream-angular-checkbox-node',
@@ -795,10 +795,10 @@ class PreCodeNodeComponent {
795
795
  get loading() {
796
796
  return this.node?.loading === true;
797
797
  }
798
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PreCodeNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
799
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: PreCodeNodeComponent, isStandalone: true, selector: "markstream-angular-pre-code-node", inputs: { node: "node" }, ngImport: i0, template: `<pre [class]="languageClass" [attr.aria-busy]="loading" [attr.aria-label]="ariaLabel" [attr.data-language]="language" tabindex="0"><code translate="no" [textContent]="code"></code></pre>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
798
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: PreCodeNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
799
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: PreCodeNodeComponent, isStandalone: true, selector: "markstream-angular-pre-code-node", inputs: { node: "node" }, ngImport: i0, template: `<pre [class]="languageClass" [attr.aria-busy]="loading" [attr.aria-label]="ariaLabel" [attr.data-language]="language" tabindex="0"><code translate="no" [textContent]="code"></code></pre>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
800
800
  }
801
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PreCodeNodeComponent, decorators: [{
801
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: PreCodeNodeComponent, decorators: [{
802
802
  type: Component,
803
803
  args: [{
804
804
  selector: 'markstream-angular-pre-code-node',
@@ -881,8 +881,8 @@ class HtmlPreviewFrameComponent {
881
881
  </body>
882
882
  </html>`;
883
883
  }
884
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlPreviewFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
885
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: HtmlPreviewFrameComponent, isStandalone: true, selector: "markstream-angular-html-preview-frame", inputs: { code: "code", isDark: "isDark", htmlPreviewAllowScripts: "htmlPreviewAllowScripts", htmlPreviewSandbox: "htmlPreviewSandbox", title: "title", onClose: "onClose" }, ngImport: i0, template: `
884
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HtmlPreviewFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
885
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: HtmlPreviewFrameComponent, isStandalone: true, selector: "markstream-angular-html-preview-frame", inputs: { code: "code", isDark: "isDark", htmlPreviewAllowScripts: "htmlPreviewAllowScripts", htmlPreviewSandbox: "htmlPreviewSandbox", title: "title", onClose: "onClose" }, ngImport: i0, template: `
886
886
  <div
887
887
  class="html-preview-frame__backdrop"
888
888
  [class.html-preview-frame__backdrop--dark]="isDark"
@@ -918,7 +918,7 @@ class HtmlPreviewFrameComponent {
918
918
  </div>
919
919
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
920
920
  }
921
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlPreviewFrameComponent, decorators: [{
921
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HtmlPreviewFrameComponent, decorators: [{
922
922
  type: Component,
923
923
  args: [{
924
924
  selector: 'markstream-angular-html-preview-frame',
@@ -1483,8 +1483,8 @@ class CodeBlockNodeComponent {
1483
1483
  textarea.remove();
1484
1484
  }
1485
1485
  }
1486
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CodeBlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1487
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: CodeBlockNodeComponent, isStandalone: true, selector: "markstream-angular-code-block-node", inputs: { node: "node", context: "context", props: "props" }, viewQueries: [{ propertyName: "editorHost", first: true, predicate: ["editorHost"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
1486
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CodeBlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1487
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: CodeBlockNodeComponent, isStandalone: true, selector: "markstream-angular-code-block-node", inputs: { node: "node", context: "context", props: "props" }, viewQueries: [{ propertyName: "editorHost", first: true, predicate: ["editorHost"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
1488
1488
  <div
1489
1489
  class="code-block-container"
1490
1490
  [class.is-dark]="resolvedIsDark"
@@ -1661,7 +1661,7 @@ class CodeBlockNodeComponent {
1661
1661
  </ng-template>
1662
1662
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PreCodeNodeComponent, selector: "markstream-angular-pre-code-node", inputs: ["node"] }, { kind: "component", type: HtmlPreviewFrameComponent, selector: "markstream-angular-html-preview-frame", inputs: ["code", "isDark", "htmlPreviewAllowScripts", "htmlPreviewSandbox", "title", "onClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1663
1663
  }
1664
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CodeBlockNodeComponent, decorators: [{
1664
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: CodeBlockNodeComponent, decorators: [{
1665
1665
  type: Component,
1666
1666
  args: [{
1667
1667
  selector: 'markstream-angular-code-block-node',
@@ -2292,8 +2292,8 @@ class D2BlockNodeComponent {
2292
2292
  }
2293
2293
  queueMicrotask(() => this.syncSvgHost());
2294
2294
  }
2295
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: D2BlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2296
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: D2BlockNodeComponent, isStandalone: true, selector: "markstream-angular-d2-block-node", inputs: { node: "node", context: "context", props: "props" }, viewQueries: [{ propertyName: "previewHost", first: true, predicate: ["previewHost"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
2295
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: D2BlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2296
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: D2BlockNodeComponent, isStandalone: true, selector: "markstream-angular-d2-block-node", inputs: { node: "node", context: "context", props: "props" }, viewQueries: [{ propertyName: "previewHost", first: true, predicate: ["previewHost"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
2297
2297
  <div
2298
2298
  class="markstream-angular-enhanced-block markstream-angular-enhanced-block--d2"
2299
2299
  [attr.data-markstream-d2]="'1'"
@@ -2376,7 +2376,7 @@ class D2BlockNodeComponent {
2376
2376
  </div>
2377
2377
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2378
2378
  }
2379
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: D2BlockNodeComponent, decorators: [{
2379
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: D2BlockNodeComponent, decorators: [{
2380
2380
  type: Component,
2381
2381
  args: [{
2382
2382
  selector: 'markstream-angular-d2-block-node',
@@ -2510,8 +2510,8 @@ class DefinitionListNodeComponent {
2510
2510
  itemPrefix(index, part) {
2511
2511
  return `${this.indexKey || 'definition-list'}-${index}-${part}`;
2512
2512
  }
2513
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DefinitionListNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2514
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: DefinitionListNodeComponent, isStandalone: true, selector: "markstream-angular-definition-list-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
2513
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: DefinitionListNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2514
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: DefinitionListNodeComponent, isStandalone: true, selector: "markstream-angular-definition-list-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
2515
2515
  <dl>
2516
2516
  <ng-container *ngFor="let item of items; let idx = index; trackBy: trackByIndex">
2517
2517
  <dt>
@@ -2532,7 +2532,7 @@ class DefinitionListNodeComponent {
2532
2532
  </dl>
2533
2533
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2534
2534
  }
2535
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DefinitionListNodeComponent, decorators: [{
2535
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: DefinitionListNodeComponent, decorators: [{
2536
2536
  type: Component,
2537
2537
  args: [{
2538
2538
  selector: 'markstream-angular-definition-list-node',
@@ -2644,10 +2644,10 @@ class DynamicNodeHostComponent {
2644
2644
  return true;
2645
2645
  return Object.values(inputMap).includes(key);
2646
2646
  }
2647
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DynamicNodeHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2648
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: DynamicNodeHostComponent, isStandalone: true, selector: "markstream-angular-dynamic-node-host", inputs: { component: "component", node: "node", context: "context", indexKey: "indexKey", inputs: "inputs" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<ng-template #container></ng-template>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2647
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: DynamicNodeHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2648
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: DynamicNodeHostComponent, isStandalone: true, selector: "markstream-angular-dynamic-node-host", inputs: { component: "component", node: "node", context: "context", indexKey: "indexKey", inputs: "inputs" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<ng-template #container></ng-template>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2649
2649
  }
2650
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DynamicNodeHostComponent, decorators: [{
2650
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: DynamicNodeHostComponent, decorators: [{
2651
2651
  type: Component,
2652
2652
  args: [{
2653
2653
  selector: 'markstream-angular-dynamic-node-host',
@@ -2675,10 +2675,10 @@ class EmojiNodeComponent {
2675
2675
  get text() {
2676
2676
  return getString$1(this.node?.raw || this.node?.markup || this.node?.content || this.node?.name);
2677
2677
  }
2678
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EmojiNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2679
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: EmojiNodeComponent, isStandalone: true, selector: "markstream-angular-emoji-node", inputs: { node: "node" }, ngImport: i0, template: '<span class="markstream-angular-emoji">{{ text }}</span>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2678
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: EmojiNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2679
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: EmojiNodeComponent, isStandalone: true, selector: "markstream-angular-emoji-node", inputs: { node: "node" }, ngImport: i0, template: '<span class="markstream-angular-emoji">{{ text }}</span>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2680
2680
  }
2681
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EmojiNodeComponent, decorators: [{
2681
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: EmojiNodeComponent, decorators: [{
2682
2682
  type: Component,
2683
2683
  args: [{
2684
2684
  selector: 'markstream-angular-emoji-node',
@@ -2698,8 +2698,8 @@ class EmphasisNodeComponent {
2698
2698
  get nestedPrefix() {
2699
2699
  return `${this.indexKey || 'emphasis'}-em`;
2700
2700
  }
2701
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EmphasisNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2702
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: EmphasisNodeComponent, isStandalone: true, selector: "markstream-angular-emphasis-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
2701
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: EmphasisNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2702
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: EmphasisNodeComponent, isStandalone: true, selector: "markstream-angular-emphasis-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
2703
2703
  <em>
2704
2704
  <markstream-angular-nested-renderer
2705
2705
  [nodes]="children"
@@ -2709,7 +2709,7 @@ class EmphasisNodeComponent {
2709
2709
  </em>
2710
2710
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2711
2711
  }
2712
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EmphasisNodeComponent, decorators: [{
2712
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: EmphasisNodeComponent, decorators: [{
2713
2713
  type: Component,
2714
2714
  args: [{
2715
2715
  selector: 'markstream-angular-emphasis-node',
@@ -2763,8 +2763,8 @@ class FallbackComponent {
2763
2763
  return !this.node.loading;
2764
2764
  return this.context?.final;
2765
2765
  }
2766
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FallbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2767
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: FallbackComponent, isStandalone: true, selector: "markstream-angular-fallback-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
2766
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FallbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2767
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: FallbackComponent, isStandalone: true, selector: "markstream-angular-fallback-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
2768
2768
  <div
2769
2769
  class="markstream-nested-custom"
2770
2770
  [class]="customClassName"
@@ -2787,7 +2787,7 @@ class FallbackComponent {
2787
2787
  </div>
2788
2788
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2789
2789
  }
2790
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FallbackComponent, decorators: [{
2790
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FallbackComponent, decorators: [{
2791
2791
  type: Component,
2792
2792
  args: [{
2793
2793
  selector: 'markstream-angular-fallback-node',
@@ -2836,8 +2836,8 @@ class FootnoteAnchorNodeComponent {
2836
2836
  get title() {
2837
2837
  return `Back to reference ${this.id}`;
2838
2838
  }
2839
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FootnoteAnchorNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2840
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: FootnoteAnchorNodeComponent, isStandalone: true, selector: "markstream-angular-footnote-anchor-node", inputs: { node: "node" }, ngImport: i0, template: `
2839
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FootnoteAnchorNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2840
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: FootnoteAnchorNodeComponent, isStandalone: true, selector: "markstream-angular-footnote-anchor-node", inputs: { node: "node" }, ngImport: i0, template: `
2841
2841
  <a
2842
2842
  class="footnote-anchor text-sm text-[#0366d6] hover:underline cursor-pointer"
2843
2843
  [attr.href]="href"
@@ -2847,7 +2847,7 @@ class FootnoteAnchorNodeComponent {
2847
2847
  </a>
2848
2848
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2849
2849
  }
2850
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FootnoteAnchorNodeComponent, decorators: [{
2850
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FootnoteAnchorNodeComponent, decorators: [{
2851
2851
  type: Component,
2852
2852
  args: [{
2853
2853
  selector: 'markstream-angular-footnote-anchor-node',
@@ -2878,8 +2878,8 @@ class FootnoteNodeComponent {
2878
2878
  get nestedPrefix() {
2879
2879
  return `${this.indexKey || 'footnote'}-children`;
2880
2880
  }
2881
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FootnoteNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2882
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: FootnoteNodeComponent, isStandalone: true, selector: "markstream-angular-footnote-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
2881
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FootnoteNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2882
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: FootnoteNodeComponent, isStandalone: true, selector: "markstream-angular-footnote-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
2883
2883
  <div [attr.id]="footnoteId" class="markstream-nested-footnote">
2884
2884
  <markstream-angular-nested-renderer
2885
2885
  [nodes]="children"
@@ -2889,7 +2889,7 @@ class FootnoteNodeComponent {
2889
2889
  </div>
2890
2890
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2891
2891
  }
2892
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FootnoteNodeComponent, decorators: [{
2892
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FootnoteNodeComponent, decorators: [{
2893
2893
  type: Component,
2894
2894
  args: [{
2895
2895
  selector: 'markstream-angular-footnote-node',
@@ -2925,14 +2925,14 @@ class FootnoteReferenceNodeComponent {
2925
2925
  get referenceId() {
2926
2926
  return `fnref-${this.id}`;
2927
2927
  }
2928
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FootnoteReferenceNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2929
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: FootnoteReferenceNodeComponent, isStandalone: true, selector: "markstream-angular-footnote-reference-node", inputs: { node: "node" }, ngImport: i0, template: `
2928
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FootnoteReferenceNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2929
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: FootnoteReferenceNodeComponent, isStandalone: true, selector: "markstream-angular-footnote-reference-node", inputs: { node: "node" }, ngImport: i0, template: `
2930
2930
  <sup [attr.id]="referenceId" class="markstream-nested-footnote-ref">
2931
2931
  <a [attr.href]="href">[{{ id }}]</a>
2932
2932
  </sup>
2933
2933
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2934
2934
  }
2935
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FootnoteReferenceNodeComponent, decorators: [{
2935
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: FootnoteReferenceNodeComponent, decorators: [{
2936
2936
  type: Component,
2937
2937
  args: [{
2938
2938
  selector: 'markstream-angular-footnote-reference-node',
@@ -2950,10 +2950,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2950
2950
  }] } });
2951
2951
 
2952
2952
  class HardBreakNodeComponent {
2953
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HardBreakNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2954
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: HardBreakNodeComponent, isStandalone: true, selector: "markstream-angular-hardbreak-node", ngImport: i0, template: '<br>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2953
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HardBreakNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2954
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: HardBreakNodeComponent, isStandalone: true, selector: "markstream-angular-hardbreak-node", ngImport: i0, template: '<br>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2955
2955
  }
2956
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HardBreakNodeComponent, decorators: [{
2956
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HardBreakNodeComponent, decorators: [{
2957
2957
  type: Component,
2958
2958
  args: [{
2959
2959
  selector: 'markstream-angular-hardbreak-node',
@@ -3010,10 +3010,10 @@ class SafeAttrsDirective {
3010
3010
  this.appliedClasses.clear();
3011
3011
  this.appliedStyles.clear();
3012
3012
  }
3013
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SafeAttrsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3014
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: SafeAttrsDirective, isStandalone: true, selector: "[markstreamSafeAttrs]", inputs: { markstreamSafeAttrs: "markstreamSafeAttrs" }, usesOnChanges: true, ngImport: i0 }); }
3013
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SafeAttrsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3014
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: SafeAttrsDirective, isStandalone: true, selector: "[markstreamSafeAttrs]", inputs: { markstreamSafeAttrs: "markstreamSafeAttrs" }, usesOnChanges: true, ngImport: i0 }); }
3015
3015
  }
3016
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SafeAttrsDirective, decorators: [{
3016
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SafeAttrsDirective, decorators: [{
3017
3017
  type: Directive,
3018
3018
  args: [{
3019
3019
  selector: '[markstreamSafeAttrs]',
@@ -3037,8 +3037,8 @@ class HeadingNodeComponent {
3037
3037
  get nestedPrefix() {
3038
3038
  return `${this.indexKey || 'heading'}-${this.level}`;
3039
3039
  }
3040
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HeadingNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3041
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: HeadingNodeComponent, isStandalone: true, selector: "markstream-angular-heading-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
3040
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HeadingNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3041
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: HeadingNodeComponent, isStandalone: true, selector: "markstream-angular-heading-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
3042
3042
  <h1 *ngIf="level === 1" dir="auto" class="heading-node heading-1" [markstreamSafeAttrs]="attrs">
3043
3043
  <markstream-angular-nested-renderer [nodes]="children" [context]="context" [indexPrefix]="nestedPrefix" />
3044
3044
  </h1>
@@ -3059,7 +3059,7 @@ class HeadingNodeComponent {
3059
3059
  </h6>
3060
3060
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => SafeAttrsDirective), selector: "[markstreamSafeAttrs]", inputs: ["markstreamSafeAttrs"] }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3061
3061
  }
3062
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HeadingNodeComponent, decorators: [{
3062
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HeadingNodeComponent, decorators: [{
3063
3063
  type: Component,
3064
3064
  args: [{
3065
3065
  selector: 'markstream-angular-heading-node',
@@ -3103,8 +3103,8 @@ class HighlightNodeComponent {
3103
3103
  get nestedPrefix() {
3104
3104
  return `${this.indexKey || 'highlight'}-highlight`;
3105
3105
  }
3106
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HighlightNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3107
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: HighlightNodeComponent, isStandalone: true, selector: "markstream-angular-highlight-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
3106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HighlightNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: HighlightNodeComponent, isStandalone: true, selector: "markstream-angular-highlight-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
3108
3108
  <mark>
3109
3109
  <markstream-angular-nested-renderer
3110
3110
  [nodes]="children"
@@ -3114,7 +3114,7 @@ class HighlightNodeComponent {
3114
3114
  </mark>
3115
3115
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3116
3116
  }
3117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HighlightNodeComponent, decorators: [{
3117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HighlightNodeComponent, decorators: [{
3118
3118
  type: Component,
3119
3119
  args: [{
3120
3120
  selector: 'markstream-angular-highlight-node',
@@ -3795,10 +3795,10 @@ class HtmlBlockNodeComponent {
3795
3795
  }
3796
3796
  container.innerHTML = sanitizeHtmlContent(content, htmlPolicy);
3797
3797
  }
3798
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlBlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3799
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: HtmlBlockNodeComponent, isStandalone: true, selector: "markstream-angular-html-block-node", inputs: { node: "node", context: "context" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #containerRef class="html-block-node"></div>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3798
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HtmlBlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3799
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: HtmlBlockNodeComponent, isStandalone: true, selector: "markstream-angular-html-block-node", inputs: { node: "node", context: "context" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #containerRef class="html-block-node"></div>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3800
3800
  }
3801
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlBlockNodeComponent, decorators: [{
3801
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HtmlBlockNodeComponent, decorators: [{
3802
3802
  type: Component,
3803
3803
  args: [{
3804
3804
  selector: 'markstream-angular-html-block-node',
@@ -3844,10 +3844,10 @@ class HtmlInlineNodeComponent {
3844
3844
  }
3845
3845
  container.innerHTML = sanitizeHtmlContent(content, htmlPolicy);
3846
3846
  }
3847
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlInlineNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3848
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: HtmlInlineNodeComponent, isStandalone: true, selector: "markstream-angular-html-inline-node", inputs: { node: "node", context: "context" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<span #containerRef class="html-inline-node"></span>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3847
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HtmlInlineNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3848
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: HtmlInlineNodeComponent, isStandalone: true, selector: "markstream-angular-html-inline-node", inputs: { node: "node", context: "context" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<span #containerRef class="html-inline-node"></span>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3849
3849
  }
3850
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlInlineNodeComponent, decorators: [{
3850
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: HtmlInlineNodeComponent, decorators: [{
3851
3851
  type: Component,
3852
3852
  args: [{
3853
3853
  selector: 'markstream-angular-html-inline-node',
@@ -3875,8 +3875,8 @@ class ImageNodeComponent {
3875
3875
  get title() {
3876
3876
  return getString$1(this.node?.title);
3877
3877
  }
3878
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ImageNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3879
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ImageNodeComponent, isStandalone: true, selector: "markstream-angular-image-node", inputs: { node: "node" }, ngImport: i0, template: `
3878
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ImageNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3879
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: ImageNodeComponent, isStandalone: true, selector: "markstream-angular-image-node", inputs: { node: "node" }, ngImport: i0, template: `
3880
3880
  @if (src) {
3881
3881
  <img
3882
3882
  class="image-node__img"
@@ -3889,7 +3889,7 @@ class ImageNodeComponent {
3889
3889
  }
3890
3890
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3891
3891
  }
3892
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ImageNodeComponent, decorators: [{
3892
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ImageNodeComponent, decorators: [{
3893
3893
  type: Component,
3894
3894
  args: [{
3895
3895
  selector: 'markstream-angular-image-node',
@@ -4267,8 +4267,8 @@ class InfographicBlockNodeComponent {
4267
4267
  this.syncModalPreview();
4268
4268
  });
4269
4269
  }
4270
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: InfographicBlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4271
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: InfographicBlockNodeComponent, isStandalone: true, selector: "markstream-angular-infographic-block-node", inputs: { node: "node", context: "context", props: "props" }, host: { listeners: { "window:keydown": "handleWindowKeydown($event)" } }, viewQueries: [{ propertyName: "previewHost", first: true, predicate: ["previewHost"], descendants: true }, { propertyName: "modalHost", first: true, predicate: ["modalHost"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
4270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: InfographicBlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: InfographicBlockNodeComponent, isStandalone: true, selector: "markstream-angular-infographic-block-node", inputs: { node: "node", context: "context", props: "props" }, host: { listeners: { "window:keydown": "handleWindowKeydown($event)" } }, viewQueries: [{ propertyName: "previewHost", first: true, predicate: ["previewHost"], descendants: true }, { propertyName: "modalHost", first: true, predicate: ["modalHost"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
4272
4272
  <div
4273
4273
  class="markstream-angular-enhanced-block markstream-angular-enhanced-block--infographic"
4274
4274
  [attr.data-markstream-infographic]="'1'"
@@ -4395,7 +4395,7 @@ class InfographicBlockNodeComponent {
4395
4395
  </div>
4396
4396
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4397
4397
  }
4398
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: InfographicBlockNodeComponent, decorators: [{
4398
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: InfographicBlockNodeComponent, decorators: [{
4399
4399
  type: Component,
4400
4400
  args: [{
4401
4401
  selector: 'markstream-angular-infographic-block-node',
@@ -4547,35 +4547,82 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
4547
4547
  args: ['window:keydown', ['$event']]
4548
4548
  }] } });
4549
4549
 
4550
+ function settleAndMergeSegments$1(segments, segmentId) {
4551
+ return segments.reduce((result, segment) => {
4552
+ const nextSegment = segment.id === segmentId
4553
+ ? { ...segment, fading: false }
4554
+ : segment;
4555
+ const previousSegment = result[result.length - 1];
4556
+ if (previousSegment && !previousSegment.fading && !nextSegment.fading) {
4557
+ result[result.length - 1] = {
4558
+ ...previousSegment,
4559
+ content: previousSegment.content + nextSegment.content,
4560
+ };
4561
+ }
4562
+ else {
4563
+ result.push(nextSegment);
4564
+ }
4565
+ return result;
4566
+ }, []);
4567
+ }
4550
4568
  class InlineCodeNodeComponent {
4551
4569
  constructor() {
4552
- this.settledCode = '';
4553
- this.streamedDelta = '';
4554
- this.streamFadeVersion = 0;
4570
+ this.segments = [];
4571
+ this.renderedCode = '';
4572
+ this.nextSegmentId = 0;
4555
4573
  }
4556
4574
  ngOnChanges() {
4557
4575
  const nextCode = getString$1(this.node?.code);
4558
4576
  const streamStateKey = getString$1(this.indexKey).trim();
4559
4577
  const textStreamState = this.context?.textStreamState;
4560
- const rendered = `${this.settledCode}${this.streamedDelta}`;
4561
4578
  const previousPersisted = streamStateKey
4562
4579
  ? textStreamState?.get(streamStateKey)
4563
4580
  : undefined;
4564
- const previousCode = previousPersisted ?? rendered;
4565
- const nextState = resolveStreamingTextState({
4566
- nextContent: nextCode,
4567
- previousContent: previousCode,
4568
- typewriterEnabled: this.fadeEnabled,
4569
- });
4570
- this.settledCode = nextState.settledContent;
4571
- this.streamedDelta = nextState.streamedDelta;
4572
- if (nextState.appended)
4573
- this.streamFadeVersion += 1;
4581
+ const previousCode = previousPersisted ?? this.renderedCode;
4582
+ const resumeFromPersistedCode = previousPersisted !== undefined
4583
+ && previousPersisted !== this.renderedCode;
4584
+ if (!this.fadeEnabled) {
4585
+ this.setFullCode(nextCode);
4586
+ }
4587
+ else if (nextCode !== previousCode) {
4588
+ if (previousCode && nextCode.startsWith(previousCode)) {
4589
+ const appendedCode = nextCode.slice(previousCode.length);
4590
+ const lastSegment = this.segments[this.segments.length - 1];
4591
+ if (resumeFromPersistedCode) {
4592
+ this.segments = [
4593
+ { id: this.nextSegmentId++, content: previousCode, fading: false },
4594
+ { id: this.nextSegmentId++, content: appendedCode, fading: true },
4595
+ ];
4596
+ }
4597
+ else if (lastSegment?.fading) {
4598
+ this.segments = [
4599
+ ...this.segments.slice(0, -1),
4600
+ { ...lastSegment, content: lastSegment.content + appendedCode },
4601
+ ];
4602
+ }
4603
+ else {
4604
+ this.segments = [
4605
+ ...this.segments,
4606
+ { id: this.nextSegmentId++, content: appendedCode, fading: true },
4607
+ ];
4608
+ }
4609
+ }
4610
+ else {
4611
+ this.setFullCode(nextCode);
4612
+ }
4613
+ }
4614
+ this.renderedCode = nextCode;
4574
4615
  if (streamStateKey)
4575
4616
  textStreamState?.set(streamStateKey, nextCode);
4576
4617
  }
4577
- get streamedDeltaClass() {
4578
- return this.streamFadeVersion % 2 === 0
4618
+ get settledCode() {
4619
+ return this.segments.filter(segment => !segment.fading).map(segment => segment.content).join('');
4620
+ }
4621
+ get streamedDelta() {
4622
+ return this.segments.filter(segment => segment.fading).map(segment => segment.content).join('');
4623
+ }
4624
+ streamedDeltaClass(segment) {
4625
+ return segment.id % 2 === 0
4579
4626
  ? 'markstream-angular-text__stream-delta--a'
4580
4627
  : 'markstream-angular-text__stream-delta--b';
4581
4628
  }
@@ -4593,25 +4640,33 @@ class InlineCodeNodeComponent {
4593
4640
  return this.context.typewriter;
4594
4641
  return false;
4595
4642
  }
4596
- settleStreamedDelta() {
4597
- if (!this.streamedDelta)
4643
+ trackSegment(_index, segment) {
4644
+ return segment.id;
4645
+ }
4646
+ settleSegment(segmentId) {
4647
+ if (!this.segments.some(segment => segment.id === segmentId && segment.fading))
4598
4648
  return;
4599
- this.settledCode = `${this.settledCode}${this.streamedDelta}`;
4600
- this.streamedDelta = '';
4649
+ this.segments = settleAndMergeSegments$1(this.segments, segmentId);
4601
4650
  }
4602
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: InlineCodeNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4603
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: InlineCodeNodeComponent, isStandalone: true, selector: "markstream-angular-inline-code-node", inputs: { node: "node", context: "context", indexKey: "indexKey", typewriter: "typewriter", fade: "fade" }, usesOnChanges: true, ngImport: i0, template: `
4651
+ setFullCode(content) {
4652
+ if (this.segments.length === 1 && !this.segments[0]?.fading && this.segments[0].content === content)
4653
+ return;
4654
+ this.segments = content
4655
+ ? [{ id: this.nextSegmentId++, content, fading: false }]
4656
+ : [];
4657
+ }
4658
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: InlineCodeNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4659
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: InlineCodeNodeComponent, isStandalone: true, selector: "markstream-angular-inline-code-node", inputs: { node: "node", context: "context", indexKey: "indexKey", typewriter: "typewriter", fade: "fade" }, usesOnChanges: true, ngImport: i0, template: `
4604
4660
  <code>
4605
- <span *ngIf="settledCode">{{ settledCode }}</span>
4606
4661
  <span
4607
- *ngIf="streamedDelta"
4608
- [class]="'markstream-angular-text__stream-delta ' + streamedDeltaClass"
4609
- (animationend)="settleStreamedDelta()"
4610
- >{{ streamedDelta }}</span>
4662
+ *ngFor="let segment of segments; trackBy: trackSegment"
4663
+ [class]="segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''"
4664
+ (animationend)="segment.fading && settleSegment(segment.id)"
4665
+ >{{ segment.content }}</span>
4611
4666
  </code>
4612
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4667
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4613
4668
  }
4614
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: InlineCodeNodeComponent, decorators: [{
4669
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: InlineCodeNodeComponent, decorators: [{
4615
4670
  type: Component,
4616
4671
  args: [{
4617
4672
  selector: 'markstream-angular-inline-code-node',
@@ -4619,12 +4674,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
4619
4674
  imports: [CommonModule],
4620
4675
  template: `
4621
4676
  <code>
4622
- <span *ngIf="settledCode">{{ settledCode }}</span>
4623
4677
  <span
4624
- *ngIf="streamedDelta"
4625
- [class]="'markstream-angular-text__stream-delta ' + streamedDeltaClass"
4626
- (animationend)="settleStreamedDelta()"
4627
- >{{ streamedDelta }}</span>
4678
+ *ngFor="let segment of segments; trackBy: trackSegment"
4679
+ [class]="segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''"
4680
+ (animationend)="segment.fading && settleSegment(segment.id)"
4681
+ >{{ segment.content }}</span>
4628
4682
  </code>
4629
4683
  `,
4630
4684
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -4649,8 +4703,8 @@ class InsertNodeComponent {
4649
4703
  get nestedPrefix() {
4650
4704
  return `${this.indexKey || 'insert'}-insert`;
4651
4705
  }
4652
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: InsertNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4653
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: InsertNodeComponent, isStandalone: true, selector: "markstream-angular-insert-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
4706
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: InsertNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4707
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: InsertNodeComponent, isStandalone: true, selector: "markstream-angular-insert-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
4654
4708
  <ins>
4655
4709
  <markstream-angular-nested-renderer
4656
4710
  [nodes]="children"
@@ -4660,7 +4714,7 @@ class InsertNodeComponent {
4660
4714
  </ins>
4661
4715
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4662
4716
  }
4663
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: InsertNodeComponent, decorators: [{
4717
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: InsertNodeComponent, decorators: [{
4664
4718
  type: Component,
4665
4719
  args: [{
4666
4720
  selector: 'markstream-angular-insert-node',
@@ -4810,11 +4864,29 @@ function hideTooltip(immediate = false) {
4810
4864
  hideTimer = setTimeout(doHide, 120);
4811
4865
  }
4812
4866
 
4867
+ function settleAndMergeSegments(segments, segmentId) {
4868
+ return segments.reduce((result, segment) => {
4869
+ const nextSegment = segmentId == null || segment.id === segmentId
4870
+ ? { ...segment, fading: false }
4871
+ : segment;
4872
+ const previousSegment = result[result.length - 1];
4873
+ if (previousSegment && !previousSegment.fading && !nextSegment.fading) {
4874
+ result[result.length - 1] = {
4875
+ ...previousSegment,
4876
+ content: previousSegment.content + nextSegment.content,
4877
+ };
4878
+ }
4879
+ else {
4880
+ result.push(nextSegment);
4881
+ }
4882
+ return result;
4883
+ }, []);
4884
+ }
4813
4885
  class TextNodeComponent {
4814
4886
  constructor() {
4815
- this.settledText = '';
4816
- this.streamedDelta = '';
4817
- this.streamFadeVersion = 0;
4887
+ this.segments = [];
4888
+ this.renderedText = '';
4889
+ this.nextSegmentId = 0;
4818
4890
  }
4819
4891
  ngOnChanges() {
4820
4892
  const nextText = getString$1(this.node?.content);
@@ -4822,41 +4894,59 @@ class TextNodeComponent {
4822
4894
  const textStreamState = this.context?.textStreamState;
4823
4895
  const streamRenderVersion = this.context?.streamRenderVersion;
4824
4896
  const streamRenderVersionChanged = streamRenderVersion !== this.lastStreamRenderVersion;
4825
- const rendered = `${this.settledText}${this.streamedDelta}`;
4826
4897
  const previousPersisted = streamStateKey
4827
4898
  ? textStreamState?.get(streamStateKey)
4828
4899
  : undefined;
4829
- const previousText = previousPersisted ?? rendered;
4900
+ const previousText = previousPersisted ?? this.renderedText;
4901
+ const resumeFromPersistedText = previousPersisted !== undefined
4902
+ && previousPersisted !== this.renderedText;
4830
4903
  if (!this.fadeEnabled) {
4831
- this.settledText = nextText;
4832
- this.streamedDelta = '';
4904
+ this.setFullText(nextText);
4905
+ this.renderedText = nextText;
4833
4906
  if (streamStateKey)
4834
4907
  textStreamState?.set(streamStateKey, nextText);
4835
4908
  this.lastStreamRenderVersion = streamRenderVersion;
4836
4909
  return;
4837
4910
  }
4838
4911
  if (nextText === previousText) {
4839
- if (this.streamedDelta && streamRenderVersionChanged) {
4840
- this.settleStreamedDelta();
4912
+ if (this.segments.some(segment => segment.fading) && streamRenderVersionChanged) {
4913
+ this.settleFadingSegments();
4841
4914
  }
4842
- else if (rendered !== nextText) {
4843
- this.settledText = nextText;
4844
- this.streamedDelta = '';
4915
+ else if (this.renderedText !== nextText) {
4916
+ this.setFullText(nextText);
4845
4917
  }
4918
+ this.renderedText = nextText;
4846
4919
  if (streamStateKey)
4847
4920
  textStreamState?.set(streamStateKey, nextText);
4848
4921
  this.lastStreamRenderVersion = streamRenderVersion;
4849
4922
  return;
4850
4923
  }
4851
- const nextState = resolveStreamingTextState({
4852
- nextContent: nextText,
4853
- previousContent: previousText,
4854
- typewriterEnabled: this.fadeEnabled,
4855
- });
4856
- this.settledText = nextState.settledContent;
4857
- this.streamedDelta = nextState.streamedDelta;
4858
- if (nextState.appended)
4859
- this.streamFadeVersion += 1;
4924
+ if (previousText && nextText.startsWith(previousText)) {
4925
+ const appendedText = nextText.slice(previousText.length);
4926
+ const lastSegment = this.segments[this.segments.length - 1];
4927
+ if (resumeFromPersistedText) {
4928
+ this.segments = [
4929
+ { id: this.nextSegmentId++, content: previousText, fading: false },
4930
+ { id: this.nextSegmentId++, content: appendedText, fading: true },
4931
+ ];
4932
+ }
4933
+ else if (lastSegment?.fading) {
4934
+ this.segments = [
4935
+ ...this.segments.slice(0, -1),
4936
+ { ...lastSegment, content: lastSegment.content + appendedText },
4937
+ ];
4938
+ }
4939
+ else {
4940
+ this.segments = [
4941
+ ...this.segments,
4942
+ { id: this.nextSegmentId++, content: appendedText, fading: true },
4943
+ ];
4944
+ }
4945
+ }
4946
+ else {
4947
+ this.setFullText(nextText);
4948
+ }
4949
+ this.renderedText = nextText;
4860
4950
  if (streamStateKey)
4861
4951
  textStreamState?.set(streamStateKey, nextText);
4862
4952
  this.lastStreamRenderVersion = streamRenderVersion;
@@ -4864,8 +4954,14 @@ class TextNodeComponent {
4864
4954
  get centered() {
4865
4955
  return !!this.node?.center;
4866
4956
  }
4867
- get streamedDeltaClass() {
4868
- return this.streamFadeVersion % 2 === 0
4957
+ get settledText() {
4958
+ return this.segments.filter(segment => !segment.fading).map(segment => segment.content).join('');
4959
+ }
4960
+ get streamedDelta() {
4961
+ return this.segments.filter(segment => segment.fading).map(segment => segment.content).join('');
4962
+ }
4963
+ streamedDeltaClass(segment) {
4964
+ return segment.id % 2 === 0
4869
4965
  ? 'markstream-angular-text__stream-delta--a'
4870
4966
  : 'markstream-angular-text__stream-delta--b';
4871
4967
  }
@@ -4883,37 +4979,47 @@ class TextNodeComponent {
4883
4979
  return this.context.typewriter;
4884
4980
  return false;
4885
4981
  }
4886
- settleStreamedDelta() {
4887
- if (!this.streamedDelta)
4982
+ trackSegment(_index, segment) {
4983
+ return segment.id;
4984
+ }
4985
+ settleSegment(segmentId) {
4986
+ if (!this.segments.some(segment => segment.id === segmentId && segment.fading))
4987
+ return;
4988
+ this.segments = settleAndMergeSegments(this.segments, segmentId);
4989
+ }
4990
+ setFullText(content) {
4991
+ if (this.segments.length === 1 && !this.segments[0]?.fading && this.segments[0].content === content)
4888
4992
  return;
4889
- this.settledText = `${this.settledText}${this.streamedDelta}`;
4890
- this.streamedDelta = '';
4993
+ this.segments = content
4994
+ ? [{ id: this.nextSegmentId++, content, fading: false }]
4995
+ : [];
4891
4996
  }
4892
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TextNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4893
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: TextNodeComponent, isStandalone: true, selector: "markstream-angular-text-node", inputs: { node: "node", context: "context", indexKey: "indexKey", typewriter: "typewriter", fade: "fade" }, usesOnChanges: true, ngImport: i0, template: `
4997
+ settleFadingSegments() {
4998
+ this.segments = settleAndMergeSegments(this.segments);
4999
+ }
5000
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: TextNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5001
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: TextNodeComponent, isStandalone: true, selector: "markstream-angular-text-node", inputs: { node: "node", context: "context", indexKey: "indexKey", typewriter: "typewriter", fade: "fade" }, usesOnChanges: true, ngImport: i0, template: `
4894
5002
  <ng-container *ngIf="!centered; else centeredText">
4895
5003
  <span class="markstream-angular-text-node">
4896
- <span *ngIf="settledText">{{ settledText }}</span>
4897
5004
  <span
4898
- *ngIf="streamedDelta"
4899
- [class]="'markstream-angular-text__stream-delta ' + streamedDeltaClass"
4900
- (animationend)="settleStreamedDelta()"
4901
- >{{ streamedDelta }}</span>
5005
+ *ngFor="let segment of segments; trackBy: trackSegment"
5006
+ [class]="segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''"
5007
+ (animationend)="segment.fading && settleSegment(segment.id)"
5008
+ >{{ segment.content }}</span>
4902
5009
  </span>
4903
5010
  </ng-container>
4904
5011
  <ng-template #centeredText>
4905
5012
  <span class="markstream-angular-text-node markstream-angular-text--centered">
4906
- <span *ngIf="settledText">{{ settledText }}</span>
4907
5013
  <span
4908
- *ngIf="streamedDelta"
4909
- [class]="'markstream-angular-text__stream-delta ' + streamedDeltaClass"
4910
- (animationend)="settleStreamedDelta()"
4911
- >{{ streamedDelta }}</span>
5014
+ *ngFor="let segment of segments; trackBy: trackSegment"
5015
+ [class]="segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''"
5016
+ (animationend)="segment.fading && settleSegment(segment.id)"
5017
+ >{{ segment.content }}</span>
4912
5018
  </span>
4913
5019
  </ng-template>
4914
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5020
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4915
5021
  }
4916
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TextNodeComponent, decorators: [{
5022
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: TextNodeComponent, decorators: [{
4917
5023
  type: Component,
4918
5024
  args: [{
4919
5025
  selector: 'markstream-angular-text-node',
@@ -4922,22 +5028,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
4922
5028
  template: `
4923
5029
  <ng-container *ngIf="!centered; else centeredText">
4924
5030
  <span class="markstream-angular-text-node">
4925
- <span *ngIf="settledText">{{ settledText }}</span>
4926
5031
  <span
4927
- *ngIf="streamedDelta"
4928
- [class]="'markstream-angular-text__stream-delta ' + streamedDeltaClass"
4929
- (animationend)="settleStreamedDelta()"
4930
- >{{ streamedDelta }}</span>
5032
+ *ngFor="let segment of segments; trackBy: trackSegment"
5033
+ [class]="segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''"
5034
+ (animationend)="segment.fading && settleSegment(segment.id)"
5035
+ >{{ segment.content }}</span>
4931
5036
  </span>
4932
5037
  </ng-container>
4933
5038
  <ng-template #centeredText>
4934
5039
  <span class="markstream-angular-text-node markstream-angular-text--centered">
4935
- <span *ngIf="settledText">{{ settledText }}</span>
4936
5040
  <span
4937
- *ngIf="streamedDelta"
4938
- [class]="'markstream-angular-text__stream-delta ' + streamedDeltaClass"
4939
- (animationend)="settleStreamedDelta()"
4940
- >{{ streamedDelta }}</span>
5041
+ *ngFor="let segment of segments; trackBy: trackSegment"
5042
+ [class]="segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''"
5043
+ (animationend)="segment.fading && settleSegment(segment.id)"
5044
+ >{{ segment.content }}</span>
4941
5045
  </span>
4942
5046
  </ng-template>
4943
5047
  `,
@@ -5028,8 +5132,8 @@ class LinkNodeComponent {
5028
5132
  return;
5029
5133
  showTooltipForAnchor(this.anchorRef?.nativeElement || null, this.title, 'top', true, this.context?.isDark);
5030
5134
  }
5031
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LinkNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5032
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: LinkNodeComponent, isStandalone: true, selector: "markstream-angular-link-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, viewQueries: [{ propertyName: "anchorRef", first: true, predicate: ["anchorEl"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
5135
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: LinkNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5136
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: LinkNodeComponent, isStandalone: true, selector: "markstream-angular-link-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, viewQueries: [{ propertyName: "anchorRef", first: true, predicate: ["anchorEl"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
5033
5137
  <a
5034
5138
  *ngIf="!loading; else loadingTpl"
5035
5139
  #anchorEl
@@ -5074,7 +5178,7 @@ class LinkNodeComponent {
5074
5178
  </ng-template>
5075
5179
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }, { kind: "component", type: i0.forwardRef(() => TextNodeComponent), selector: "markstream-angular-text-node", inputs: ["node", "context", "indexKey", "typewriter", "fade"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5076
5180
  }
5077
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LinkNodeComponent, decorators: [{
5181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: LinkNodeComponent, decorators: [{
5078
5182
  type: Component,
5079
5183
  args: [{
5080
5184
  selector: 'markstream-angular-link-node',
@@ -5145,8 +5249,8 @@ class ListItemNodeComponent {
5145
5249
  get nestedPrefix() {
5146
5250
  return `${this.indexKey || 'list-item'}-item`;
5147
5251
  }
5148
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ListItemNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5149
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: ListItemNodeComponent, isStandalone: true, selector: "markstream-angular-list-item-node", inputs: { node: "node", context: "context", indexKey: "indexKey", value: "value" }, ngImport: i0, template: `
5252
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ListItemNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5253
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: ListItemNodeComponent, isStandalone: true, selector: "markstream-angular-list-item-node", inputs: { node: "node", context: "context", indexKey: "indexKey", value: "value" }, ngImport: i0, template: `
5150
5254
  <li [attr.value]="value ?? null">
5151
5255
  <markstream-angular-nested-renderer
5152
5256
  [nodes]="children"
@@ -5156,7 +5260,7 @@ class ListItemNodeComponent {
5156
5260
  </li>
5157
5261
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5158
5262
  }
5159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ListItemNodeComponent, decorators: [{
5263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ListItemNodeComponent, decorators: [{
5160
5264
  type: Component,
5161
5265
  args: [{
5162
5266
  selector: 'markstream-angular-list-item-node',
@@ -5202,8 +5306,8 @@ class ListNodeComponent {
5202
5306
  itemPrefix(index) {
5203
5307
  return `${this.indexKey || 'list'}-${index}`;
5204
5308
  }
5205
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ListNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5206
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: ListNodeComponent, isStandalone: true, selector: "markstream-angular-list-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
5309
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ListNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5310
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: ListNodeComponent, isStandalone: true, selector: "markstream-angular-list-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
5207
5311
  <ol *ngIf="ordered; else unorderedList" class="list-node my-5 pl-[calc(13/8*1em)]" [attr.start]="startValue || null">
5208
5312
  <markstream-angular-list-item-node
5209
5313
  *ngFor="let item of items; let idx = index; trackBy: trackByIndex"
@@ -5226,7 +5330,7 @@ class ListNodeComponent {
5226
5330
  </ng-template>
5227
5331
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => ListItemNodeComponent), selector: "markstream-angular-list-item-node", inputs: ["node", "context", "indexKey", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5228
5332
  }
5229
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ListNodeComponent, decorators: [{
5333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ListNodeComponent, decorators: [{
5230
5334
  type: Component,
5231
5335
  args: [{
5232
5336
  selector: 'markstream-angular-list-node',
@@ -5713,14 +5817,14 @@ class MathBlockNodeComponent {
5713
5817
  return null;
5714
5818
  }
5715
5819
  }
5716
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MathBlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5717
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: MathBlockNodeComponent, isStandalone: true, selector: "markstream-angular-math-block-node", inputs: { node: "node" }, viewQueries: [{ propertyName: "mathRef", first: true, predicate: ["mathRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
5820
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: MathBlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5821
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: MathBlockNodeComponent, isStandalone: true, selector: "markstream-angular-math-block-node", inputs: { node: "node" }, viewQueries: [{ propertyName: "mathRef", first: true, predicate: ["mathRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
5718
5822
  <div class="math-block markstream-nested-math-block" data-markstream-katex-managed="1">
5719
5823
  <div #mathRef class="markstream-nested-math-block__render" [class.math-rendering]="rendering"></div>
5720
5824
  </div>
5721
5825
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5722
5826
  }
5723
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MathBlockNodeComponent, decorators: [{
5827
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: MathBlockNodeComponent, decorators: [{
5724
5828
  type: Component,
5725
5829
  args: [{
5726
5830
  selector: 'markstream-angular-math-block-node',
@@ -5825,8 +5929,8 @@ class MathInlineNodeComponent {
5825
5929
  return null;
5826
5930
  }
5827
5931
  }
5828
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MathInlineNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5829
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: MathInlineNodeComponent, isStandalone: true, selector: "markstream-angular-math-inline-node", inputs: { node: "node" }, viewQueries: [{ propertyName: "mathRef", first: true, predicate: ["mathRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
5932
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: MathInlineNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5933
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: MathInlineNodeComponent, isStandalone: true, selector: "markstream-angular-math-inline-node", inputs: { node: "node" }, viewQueries: [{ propertyName: "mathRef", first: true, predicate: ["mathRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
5830
5934
  <span class="math-inline-wrapper markstream-nested-math" data-display="inline" data-markstream-katex-managed="1">
5831
5935
  <span #mathRef class="math-inline" [class.math-inline--hidden]="loading"></span>
5832
5936
  <span *ngIf="loading" class="math-inline__loading" role="status" aria-live="polite">
@@ -5836,7 +5940,7 @@ class MathInlineNodeComponent {
5836
5940
  </span>
5837
5941
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5838
5942
  }
5839
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MathInlineNodeComponent, decorators: [{
5943
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: MathInlineNodeComponent, decorators: [{
5840
5944
  type: Component,
5841
5945
  args: [{
5842
5946
  selector: 'markstream-angular-math-inline-node',
@@ -6680,8 +6784,8 @@ class MermaidBlockNodeComponent {
6680
6784
  });
6681
6785
  });
6682
6786
  }
6683
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MermaidBlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6684
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: MermaidBlockNodeComponent, isStandalone: true, selector: "markstream-angular-mermaid-block-node", inputs: { node: "node", context: "context", props: "props" }, host: { listeners: { "window:keydown": "handleWindowKeydown($event)" } }, viewQueries: [{ propertyName: "previewHost", first: true, predicate: ["previewHost"], descendants: true }, { propertyName: "modalHost", first: true, predicate: ["modalHost"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
6787
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: MermaidBlockNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6788
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: MermaidBlockNodeComponent, isStandalone: true, selector: "markstream-angular-mermaid-block-node", inputs: { node: "node", context: "context", props: "props" }, host: { listeners: { "window:keydown": "handleWindowKeydown($event)" } }, viewQueries: [{ propertyName: "previewHost", first: true, predicate: ["previewHost"], descendants: true }, { propertyName: "modalHost", first: true, predicate: ["modalHost"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
6685
6789
  <div
6686
6790
  class="mermaid-block"
6687
6791
  [class.dark]="resolvedIsDark"
@@ -6820,7 +6924,7 @@ class MermaidBlockNodeComponent {
6820
6924
  </div>
6821
6925
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6822
6926
  }
6823
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MermaidBlockNodeComponent, decorators: [{
6927
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: MermaidBlockNodeComponent, decorators: [{
6824
6928
  type: Component,
6825
6929
  args: [{
6826
6930
  selector: 'markstream-angular-mermaid-block-node',
@@ -7021,8 +7125,8 @@ class ParagraphNodeComponent {
7021
7125
  getTextContent(node) {
7022
7126
  return getString$1(node?.content);
7023
7127
  }
7024
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ParagraphNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7025
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: ParagraphNodeComponent, isStandalone: true, selector: "markstream-angular-paragraph-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, usesOnChanges: true, ngImport: i0, template: `
7128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ParagraphNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7129
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: ParagraphNodeComponent, isStandalone: true, selector: "markstream-angular-paragraph-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, usesOnChanges: true, ngImport: i0, template: `
7026
7130
  <ng-container *ngIf="segments.length > 0; else simpleParagraph">
7027
7131
  <ng-container *ngFor="let segment of segments; let idx = index; trackBy: trackByIndex">
7028
7132
  <p *ngIf="segment.kind === 'inline'; else blockSegment" dir="auto" class="paragraph-node">
@@ -7070,7 +7174,7 @@ class ParagraphNodeComponent {
7070
7174
  </ng-template>
7071
7175
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }, { kind: "component", type: i0.forwardRef(() => NodeOutletComponent), selector: "markstream-angular-node-outlet", inputs: ["node", "context", "indexKey"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7072
7176
  }
7073
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ParagraphNodeComponent, decorators: [{
7177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ParagraphNodeComponent, decorators: [{
7074
7178
  type: Component,
7075
7179
  args: [{
7076
7180
  selector: 'markstream-angular-paragraph-node',
@@ -7142,10 +7246,10 @@ class ReferenceNodeComponent {
7142
7246
  get id() {
7143
7247
  return getString$1(this.node?.id);
7144
7248
  }
7145
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ReferenceNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7146
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: ReferenceNodeComponent, isStandalone: true, selector: "markstream-angular-reference-node", inputs: { node: "node" }, ngImport: i0, template: '<span class="markstream-nested-reference">{{ id }}</span>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7249
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ReferenceNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7250
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: ReferenceNodeComponent, isStandalone: true, selector: "markstream-angular-reference-node", inputs: { node: "node" }, ngImport: i0, template: '<span class="markstream-nested-reference">{{ id }}</span>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7147
7251
  }
7148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ReferenceNodeComponent, decorators: [{
7252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ReferenceNodeComponent, decorators: [{
7149
7253
  type: Component,
7150
7254
  args: [{
7151
7255
  selector: 'markstream-angular-reference-node',
@@ -7252,8 +7356,8 @@ class StrikethroughNodeComponent {
7252
7356
  get nestedPrefix() {
7253
7357
  return `${this.indexKey || 'strikethrough'}-strike`;
7254
7358
  }
7255
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: StrikethroughNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7256
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: StrikethroughNodeComponent, isStandalone: true, selector: "markstream-angular-strikethrough-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7359
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: StrikethroughNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7360
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: StrikethroughNodeComponent, isStandalone: true, selector: "markstream-angular-strikethrough-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7257
7361
  <del>
7258
7362
  <markstream-angular-nested-renderer
7259
7363
  [nodes]="children"
@@ -7263,7 +7367,7 @@ class StrikethroughNodeComponent {
7263
7367
  </del>
7264
7368
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7265
7369
  }
7266
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: StrikethroughNodeComponent, decorators: [{
7370
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: StrikethroughNodeComponent, decorators: [{
7267
7371
  type: Component,
7268
7372
  args: [{
7269
7373
  selector: 'markstream-angular-strikethrough-node',
@@ -7296,8 +7400,8 @@ class StrongNodeComponent {
7296
7400
  get nestedPrefix() {
7297
7401
  return `${this.indexKey || 'strong'}-strong`;
7298
7402
  }
7299
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: StrongNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7300
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: StrongNodeComponent, isStandalone: true, selector: "markstream-angular-strong-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7403
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: StrongNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7404
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: StrongNodeComponent, isStandalone: true, selector: "markstream-angular-strong-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7301
7405
  <strong>
7302
7406
  <markstream-angular-nested-renderer
7303
7407
  [nodes]="children"
@@ -7307,7 +7411,7 @@ class StrongNodeComponent {
7307
7411
  </strong>
7308
7412
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7309
7413
  }
7310
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: StrongNodeComponent, decorators: [{
7414
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: StrongNodeComponent, decorators: [{
7311
7415
  type: Component,
7312
7416
  args: [{
7313
7417
  selector: 'markstream-angular-strong-node',
@@ -7340,8 +7444,8 @@ class SubscriptNodeComponent {
7340
7444
  get nestedPrefix() {
7341
7445
  return `${this.indexKey || 'subscript'}-sub`;
7342
7446
  }
7343
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SubscriptNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7344
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: SubscriptNodeComponent, isStandalone: true, selector: "markstream-angular-subscript-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7447
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SubscriptNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7448
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: SubscriptNodeComponent, isStandalone: true, selector: "markstream-angular-subscript-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7345
7449
  <sub>
7346
7450
  <markstream-angular-nested-renderer
7347
7451
  [nodes]="children"
@@ -7351,7 +7455,7 @@ class SubscriptNodeComponent {
7351
7455
  </sub>
7352
7456
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7353
7457
  }
7354
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SubscriptNodeComponent, decorators: [{
7458
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SubscriptNodeComponent, decorators: [{
7355
7459
  type: Component,
7356
7460
  args: [{
7357
7461
  selector: 'markstream-angular-subscript-node',
@@ -7384,8 +7488,8 @@ class SuperscriptNodeComponent {
7384
7488
  get nestedPrefix() {
7385
7489
  return `${this.indexKey || 'superscript'}-sup`;
7386
7490
  }
7387
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SuperscriptNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7388
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: SuperscriptNodeComponent, isStandalone: true, selector: "markstream-angular-superscript-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7491
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SuperscriptNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7492
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: SuperscriptNodeComponent, isStandalone: true, selector: "markstream-angular-superscript-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7389
7493
  <sup>
7390
7494
  <markstream-angular-nested-renderer
7391
7495
  [nodes]="children"
@@ -7395,7 +7499,7 @@ class SuperscriptNodeComponent {
7395
7499
  </sup>
7396
7500
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7397
7501
  }
7398
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SuperscriptNodeComponent, decorators: [{
7502
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SuperscriptNodeComponent, decorators: [{
7399
7503
  type: Component,
7400
7504
  args: [{
7401
7505
  selector: 'markstream-angular-superscript-node',
@@ -7520,8 +7624,8 @@ class TableNodeComponent {
7520
7624
  const cells = this.tableElement?.nativeElement.querySelectorAll('thead th');
7521
7625
  return Array.from(cells ?? [], cell => Math.round(cell.getBoundingClientRect().width));
7522
7626
  }
7523
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TableNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7524
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: TableNodeComponent, isStandalone: true, selector: "markstream-angular-table-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, viewQueries: [{ propertyName: "tableElement", first: true, predicate: ["tableElement"], descendants: true }], ngImport: i0, template: `
7627
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: TableNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7628
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: TableNodeComponent, isStandalone: true, selector: "markstream-angular-table-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, viewQueries: [{ propertyName: "tableElement", first: true, predicate: ["tableElement"], descendants: true }], ngImport: i0, template: `
7525
7629
  <table #tableElement>
7526
7630
  <colgroup *ngIf="columnWidths.length > 0">
7527
7631
  <col
@@ -7565,7 +7669,7 @@ class TableNodeComponent {
7565
7669
  </table>
7566
7670
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7567
7671
  }
7568
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TableNodeComponent, decorators: [{
7672
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: TableNodeComponent, decorators: [{
7569
7673
  type: Component,
7570
7674
  args: [{
7571
7675
  selector: 'markstream-angular-table-node',
@@ -7629,10 +7733,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
7629
7733
  }] } });
7630
7734
 
7631
7735
  class ThematicBreakNodeComponent {
7632
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ThematicBreakNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7633
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: ThematicBreakNodeComponent, isStandalone: true, selector: "markstream-angular-thematic-break-node", ngImport: i0, template: '<hr>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7736
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ThematicBreakNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7737
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: ThematicBreakNodeComponent, isStandalone: true, selector: "markstream-angular-thematic-break-node", ngImport: i0, template: '<hr>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7634
7738
  }
7635
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ThematicBreakNodeComponent, decorators: [{
7739
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ThematicBreakNodeComponent, decorators: [{
7636
7740
  type: Component,
7637
7741
  args: [{
7638
7742
  selector: 'markstream-angular-thematic-break-node',
@@ -7649,8 +7753,8 @@ class VmrContainerNodeComponent {
7649
7753
  get nestedPrefix() {
7650
7754
  return `${this.indexKey || 'vmr'}-container`;
7651
7755
  }
7652
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VmrContainerNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7653
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: VmrContainerNodeComponent, isStandalone: true, selector: "markstream-angular-vmr-container-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7756
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: VmrContainerNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7757
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: VmrContainerNodeComponent, isStandalone: true, selector: "markstream-angular-vmr-container-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7654
7758
  <div class="markstream-angular-vmr-container">
7655
7759
  <markstream-angular-nested-renderer
7656
7760
  [nodes]="children"
@@ -7660,7 +7764,7 @@ class VmrContainerNodeComponent {
7660
7764
  </div>
7661
7765
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7662
7766
  }
7663
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VmrContainerNodeComponent, decorators: [{
7767
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: VmrContainerNodeComponent, decorators: [{
7664
7768
  type: Component,
7665
7769
  args: [{
7666
7770
  selector: 'markstream-angular-vmr-container-node',
@@ -7755,8 +7859,8 @@ class NodeOutletComponent {
7755
7859
  get resolvedComponentInputs() {
7756
7860
  return resolveNodeOutletCustomInputs(this.node, this.context);
7757
7861
  }
7758
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NodeOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7759
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: NodeOutletComponent, isStandalone: true, selector: "markstream-angular-node-outlet", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7862
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: NodeOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7863
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: NodeOutletComponent, isStandalone: true, selector: "markstream-angular-node-outlet", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
7760
7864
  <ng-container *ngIf="resolvedCustomComponent as customComponent; else builtinTemplate">
7761
7865
  <markstream-angular-dynamic-node-host
7762
7866
  [component]="customComponent"
@@ -7850,7 +7954,7 @@ class NodeOutletComponent {
7850
7954
  </ng-template>
7851
7955
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitch), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitchCase), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitchDefault), selector: "[ngSwitchDefault]" }, { kind: "component", type: i0.forwardRef(() => AdmonitionNodeComponent), selector: "markstream-angular-admonition-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => BlockquoteNodeComponent), selector: "markstream-angular-blockquote-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => CheckboxNodeComponent), selector: "markstream-angular-checkbox-node", inputs: ["node"] }, { kind: "component", type: i0.forwardRef(() => CodeBlockNodeComponent), selector: "markstream-angular-code-block-node", inputs: ["node", "context", "props"] }, { kind: "component", type: i0.forwardRef(() => D2BlockNodeComponent), selector: "markstream-angular-d2-block-node", inputs: ["node", "context", "props"] }, { kind: "component", type: i0.forwardRef(() => DefinitionListNodeComponent), selector: "markstream-angular-definition-list-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => DynamicNodeHostComponent), selector: "markstream-angular-dynamic-node-host", inputs: ["component", "node", "context", "indexKey", "inputs"] }, { kind: "component", type: i0.forwardRef(() => EmojiNodeComponent), selector: "markstream-angular-emoji-node", inputs: ["node"] }, { kind: "component", type: i0.forwardRef(() => EmphasisNodeComponent), selector: "markstream-angular-emphasis-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => FallbackComponent), selector: "markstream-angular-fallback-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => FootnoteAnchorNodeComponent), selector: "markstream-angular-footnote-anchor-node", inputs: ["node"] }, { kind: "component", type: i0.forwardRef(() => FootnoteNodeComponent), selector: "markstream-angular-footnote-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => FootnoteReferenceNodeComponent), selector: "markstream-angular-footnote-reference-node", inputs: ["node"] }, { kind: "component", type: i0.forwardRef(() => HardBreakNodeComponent), selector: "markstream-angular-hardbreak-node" }, { kind: "component", type: i0.forwardRef(() => HeadingNodeComponent), selector: "markstream-angular-heading-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => HighlightNodeComponent), selector: "markstream-angular-highlight-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => HtmlBlockNodeComponent), selector: "markstream-angular-html-block-node", inputs: ["node", "context"] }, { kind: "component", type: i0.forwardRef(() => HtmlInlineNodeComponent), selector: "markstream-angular-html-inline-node", inputs: ["node", "context"] }, { kind: "component", type: i0.forwardRef(() => ImageNodeComponent), selector: "markstream-angular-image-node", inputs: ["node"] }, { kind: "component", type: i0.forwardRef(() => InfographicBlockNodeComponent), selector: "markstream-angular-infographic-block-node", inputs: ["node", "context", "props"] }, { kind: "component", type: i0.forwardRef(() => InlineCodeNodeComponent), selector: "markstream-angular-inline-code-node", inputs: ["node", "context", "indexKey", "typewriter", "fade"] }, { kind: "component", type: i0.forwardRef(() => InsertNodeComponent), selector: "markstream-angular-insert-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => LinkNodeComponent), selector: "markstream-angular-link-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => ListItemNodeComponent), selector: "markstream-angular-list-item-node", inputs: ["node", "context", "indexKey", "value"] }, { kind: "component", type: i0.forwardRef(() => ListNodeComponent), selector: "markstream-angular-list-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => MathBlockNodeComponent), selector: "markstream-angular-math-block-node", inputs: ["node"] }, { kind: "component", type: i0.forwardRef(() => MathInlineNodeComponent), selector: "markstream-angular-math-inline-node", inputs: ["node"] }, { kind: "component", type: i0.forwardRef(() => MermaidBlockNodeComponent), selector: "markstream-angular-mermaid-block-node", inputs: ["node", "context", "props"] }, { kind: "component", type: i0.forwardRef(() => ParagraphNodeComponent), selector: "markstream-angular-paragraph-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => PreCodeNodeComponent), selector: "markstream-angular-pre-code-node", inputs: ["node"] }, { kind: "component", type: i0.forwardRef(() => ReferenceNodeComponent), selector: "markstream-angular-reference-node", inputs: ["node"] }, { kind: "component", type: i0.forwardRef(() => StrikethroughNodeComponent), selector: "markstream-angular-strikethrough-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => StrongNodeComponent), selector: "markstream-angular-strong-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => SubscriptNodeComponent), selector: "markstream-angular-subscript-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => SuperscriptNodeComponent), selector: "markstream-angular-superscript-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => TableNodeComponent), selector: "markstream-angular-table-node", inputs: ["node", "context", "indexKey"] }, { kind: "component", type: i0.forwardRef(() => TextNodeComponent), selector: "markstream-angular-text-node", inputs: ["node", "context", "indexKey", "typewriter", "fade"] }, { kind: "component", type: i0.forwardRef(() => ThematicBreakNodeComponent), selector: "markstream-angular-thematic-break-node" }, { kind: "component", type: i0.forwardRef(() => VmrContainerNodeComponent), selector: "markstream-angular-vmr-container-node", inputs: ["node", "context", "indexKey"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7852
7956
  }
7853
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NodeOutletComponent, decorators: [{
7957
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: NodeOutletComponent, decorators: [{
7854
7958
  type: Component,
7855
7959
  args: [{
7856
7960
  selector: 'markstream-angular-node-outlet',
@@ -8071,8 +8175,8 @@ class NestedRendererComponent {
8071
8175
  resolveCustomHtmlTags() {
8072
8176
  return mergeCustomHtmlTags(this.context?.customHtmlTags, this.customHtmlTags);
8073
8177
  }
8074
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NestedRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8075
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: NestedRendererComponent, isStandalone: true, selector: "markstream-angular-nested-renderer", inputs: { node: "node", nodes: "nodes", content: "content", loading: "loading", final: "final", cacheKey: "cacheKey", parseOptions: "parseOptions", customHtmlTags: "customHtmlTags", customMarkdownIt: "customMarkdownIt", context: "context", indexPrefix: "indexPrefix" }, usesOnChanges: true, ngImport: i0, template: `
8178
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: NestedRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8179
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: NestedRendererComponent, isStandalone: true, selector: "markstream-angular-nested-renderer", inputs: { node: "node", nodes: "nodes", content: "content", loading: "loading", final: "final", cacheKey: "cacheKey", parseOptions: "parseOptions", customHtmlTags: "customHtmlTags", customMarkdownIt: "customMarkdownIt", context: "context", indexPrefix: "indexPrefix" }, usesOnChanges: true, ngImport: i0, template: `
8076
8180
  <ng-container *ngFor="let item of items; let idx = index; trackBy: trackByIndex">
8077
8181
  <label *ngIf="item.kind === 'label'; else nodeTemplate" [markstreamSafeAttrs]="item.attrs">
8078
8182
  <markstream-angular-nested-renderer
@@ -8092,7 +8196,7 @@ class NestedRendererComponent {
8092
8196
  </ng-container>
8093
8197
  `, isInline: true, dependencies: [{ kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }, { kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => SafeAttrsDirective), selector: "[markstreamSafeAttrs]", inputs: ["markstreamSafeAttrs"] }, { kind: "component", type: i0.forwardRef(() => NodeOutletComponent), selector: "markstream-angular-node-outlet", inputs: ["node", "context", "indexKey"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8094
8198
  }
8095
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NestedRendererComponent, decorators: [{
8199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: NestedRendererComponent, decorators: [{
8096
8200
  type: Component,
8097
8201
  args: [{
8098
8202
  selector: 'markstream-angular-nested-renderer',
@@ -8164,8 +8268,8 @@ class AdmonitionNodeComponent {
8164
8268
  get nestedPrefix() {
8165
8269
  return `${this.indexKey || 'admonition'}-children`;
8166
8270
  }
8167
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdmonitionNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8168
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: AdmonitionNodeComponent, isStandalone: true, selector: "markstream-angular-admonition-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
8271
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AdmonitionNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8272
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: AdmonitionNodeComponent, isStandalone: true, selector: "markstream-angular-admonition-node", inputs: { node: "node", context: "context", indexKey: "indexKey" }, ngImport: i0, template: `
8169
8273
  <div class="markstream-nested-admonition" [class]="kindClass">
8170
8274
  <div class="markstream-nested-admonition__title">{{ resolvedTitle }}</div>
8171
8275
  <div class="markstream-nested-admonition__content">
@@ -8178,7 +8282,7 @@ class AdmonitionNodeComponent {
8178
8282
  </div>
8179
8283
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => NestedRendererComponent), selector: "markstream-angular-nested-renderer", inputs: ["node", "nodes", "content", "loading", "final", "cacheKey", "parseOptions", "customHtmlTags", "customMarkdownIt", "context", "indexPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8180
8284
  }
8181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdmonitionNodeComponent, decorators: [{
8285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: AdmonitionNodeComponent, decorators: [{
8182
8286
  type: Component,
8183
8287
  args: [{
8184
8288
  selector: 'markstream-angular-admonition-node',
@@ -8940,10 +9044,10 @@ class SmoothMarkdownStreamService {
8940
9044
  for (const listener of this.listeners)
8941
9045
  listener();
8942
9046
  }
8943
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SmoothMarkdownStreamService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8944
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SmoothMarkdownStreamService }); }
9047
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SmoothMarkdownStreamService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9048
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SmoothMarkdownStreamService }); }
8945
9049
  }
8946
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SmoothMarkdownStreamService, decorators: [{
9050
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SmoothMarkdownStreamService, decorators: [{
8947
9051
  type: Injectable
8948
9052
  }] });
8949
9053
 
@@ -9823,8 +9927,8 @@ class NodeRendererComponent {
9823
9927
  this.cdr.markForCheck();
9824
9928
  }, 3000);
9825
9929
  }
9826
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NodeRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9827
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: NodeRendererComponent, isStandalone: true, selector: "markstream-angular", inputs: { content: "content", nodes: "nodes", final: "final", parseOptions: "parseOptions", customMarkdownIt: "customMarkdownIt", debugPerformance: "debugPerformance", customHtmlTags: "customHtmlTags", htmlPolicy: "htmlPolicy", viewportPriority: "viewportPriority", codeBlockStream: "codeBlockStream", codeBlockDarkTheme: "codeBlockDarkTheme", codeBlockLightTheme: "codeBlockLightTheme", codeBlockMonacoOptions: "codeBlockMonacoOptions", renderCodeBlocksAsPre: "renderCodeBlocksAsPre", codeBlockMinWidth: "codeBlockMinWidth", codeBlockMaxWidth: "codeBlockMaxWidth", codeBlockProps: "codeBlockProps", mermaidProps: "mermaidProps", d2Props: "d2Props", infographicProps: "infographicProps", customComponents: "customComponents", showTooltips: "showTooltips", themes: "themes", isDark: "isDark", customId: "customId", indexKey: "indexKey", typewriter: "typewriter", fade: "fade", batchRendering: "batchRendering", initialRenderBatchSize: "initialRenderBatchSize", renderBatchSize: "renderBatchSize", renderBatchDelay: "renderBatchDelay", renderBatchBudgetMs: "renderBatchBudgetMs", renderBatchIdleTimeoutMs: "renderBatchIdleTimeoutMs", deferNodesUntilVisible: "deferNodesUntilVisible", maxLiveNodes: "maxLiveNodes", liveNodeBuffer: "liveNodeBuffer", allowHtml: "allowHtml", smoothStreaming: "smoothStreaming", smoothStreamingOptions: "smoothStreamingOptions" }, outputs: { copy: "copy", handleArtifactClick: "handleArtifactClick", click: "click", mouseover: "mouseover", mouseout: "mouseout" }, providers: [
9930
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: NodeRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9931
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: NodeRendererComponent, isStandalone: true, selector: "markstream-angular", inputs: { content: "content", nodes: "nodes", final: "final", parseOptions: "parseOptions", customMarkdownIt: "customMarkdownIt", debugPerformance: "debugPerformance", customHtmlTags: "customHtmlTags", htmlPolicy: "htmlPolicy", viewportPriority: "viewportPriority", codeBlockStream: "codeBlockStream", codeBlockDarkTheme: "codeBlockDarkTheme", codeBlockLightTheme: "codeBlockLightTheme", codeBlockMonacoOptions: "codeBlockMonacoOptions", renderCodeBlocksAsPre: "renderCodeBlocksAsPre", codeBlockMinWidth: "codeBlockMinWidth", codeBlockMaxWidth: "codeBlockMaxWidth", codeBlockProps: "codeBlockProps", mermaidProps: "mermaidProps", d2Props: "d2Props", infographicProps: "infographicProps", customComponents: "customComponents", showTooltips: "showTooltips", themes: "themes", isDark: "isDark", customId: "customId", indexKey: "indexKey", typewriter: "typewriter", fade: "fade", batchRendering: "batchRendering", initialRenderBatchSize: "initialRenderBatchSize", renderBatchSize: "renderBatchSize", renderBatchDelay: "renderBatchDelay", renderBatchBudgetMs: "renderBatchBudgetMs", renderBatchIdleTimeoutMs: "renderBatchIdleTimeoutMs", deferNodesUntilVisible: "deferNodesUntilVisible", maxLiveNodes: "maxLiveNodes", liveNodeBuffer: "liveNodeBuffer", allowHtml: "allowHtml", smoothStreaming: "smoothStreaming", smoothStreamingOptions: "smoothStreamingOptions" }, outputs: { copy: "copy", handleArtifactClick: "handleArtifactClick", click: "click", mouseover: "mouseover", mouseout: "mouseout" }, providers: [
9828
9932
  {
9829
9933
  provide: MARKSTREAM_SMOOTH_STREAMING_SCOPE,
9830
9934
  useExisting: forwardRef(() => NodeRendererComponent),
@@ -9887,7 +9991,7 @@ class NodeRendererComponent {
9887
9991
  </div>
9888
9992
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NodeOutletComponent, selector: "markstream-angular-node-outlet", inputs: ["node", "context", "indexKey"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9889
9993
  }
9890
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NodeRendererComponent, decorators: [{
9994
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: NodeRendererComponent, decorators: [{
9891
9995
  type: Component,
9892
9996
  args: [{
9893
9997
  selector: 'markstream-angular',