@siemens/element-ng 51.1.0 → 51.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/fesm2022/siemens-element-ng-about.mjs.map +1 -1
  2. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
  3. package/fesm2022/siemens-element-ng-action-modal.mjs.map +1 -1
  4. package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
  5. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  6. package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs.map +1 -1
  7. package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -1
  8. package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
  9. package/fesm2022/siemens-element-ng-badge.mjs.map +1 -1
  10. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
  12. package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -1
  14. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
  16. package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-column-selection-dialog.mjs.map +1 -1
  18. package/fesm2022/siemens-element-ng-common.mjs +13 -17
  19. package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
  20. package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -1
  21. package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
  22. package/fesm2022/siemens-element-ng-copyright-notice.mjs.map +1 -1
  23. package/fesm2022/siemens-element-ng-dashboard.mjs +15 -1
  24. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
  26. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  27. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  28. package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
  29. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
  30. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
  31. package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
  32. package/fesm2022/siemens-element-ng-filtered-search.mjs +1 -2
  33. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  34. package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
  35. package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
  36. package/fesm2022/siemens-element-ng-formly-legacy.mjs.map +1 -1
  37. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
  38. package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
  39. package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -1
  40. package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
  41. package/fesm2022/siemens-element-ng-info-page.mjs.map +1 -1
  42. package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
  43. package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
  44. package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
  45. package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
  46. package/fesm2022/siemens-element-ng-link.mjs.map +1 -1
  47. package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
  48. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
  49. package/fesm2022/siemens-element-ng-localization.mjs.map +1 -1
  50. package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -1
  51. package/fesm2022/siemens-element-ng-maplibre.mjs +2 -2
  52. package/fesm2022/siemens-element-ng-maplibre.mjs.map +1 -1
  53. package/fesm2022/siemens-element-ng-markdown-directives-tabs.mjs.map +1 -1
  54. package/fesm2022/siemens-element-ng-markdown-extensions-citations.mjs.map +1 -1
  55. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs +2 -2
  56. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs.map +1 -1
  57. package/fesm2022/siemens-element-ng-markdown-extensions-mermaid.mjs.map +1 -1
  58. package/fesm2022/siemens-element-ng-markdown-hightlighter-highlightjs.mjs.map +1 -1
  59. package/fesm2022/siemens-element-ng-markdown.mjs.map +1 -1
  60. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
  61. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
  62. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  63. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  64. package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
  65. package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
  66. package/fesm2022/siemens-element-ng-number-input.mjs +0 -1
  67. package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
  68. package/fesm2022/siemens-element-ng-pagination.mjs +2 -2
  69. package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
  70. package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
  71. package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
  72. package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
  73. package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
  74. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  75. package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
  76. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  77. package/fesm2022/siemens-element-ng-progressbar.mjs.map +1 -1
  78. package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
  79. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
  80. package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
  81. package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
  82. package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -1
  83. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  84. package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
  85. package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
  86. package/fesm2022/siemens-element-ng-source-chip.mjs.map +1 -1
  87. package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
  88. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
  89. package/fesm2022/siemens-element-ng-status-counter.mjs.map +1 -1
  90. package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
  91. package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
  92. package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -1
  93. package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -1
  94. package/fesm2022/siemens-element-ng-tabs-legacy.mjs.map +1 -1
  95. package/fesm2022/siemens-element-ng-tabs.mjs +7 -5
  96. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  97. package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
  98. package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
  99. package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
  100. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
  101. package/fesm2022/siemens-element-ng-tour.mjs.map +1 -1
  102. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  103. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  104. package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
  105. package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
  106. package/fesm2022/siemens-element-ng.mjs.map +1 -1
  107. package/maplibre/styles/maplibre-gl.scss +8 -2
  108. package/package.json +4 -4
  109. package/template-i18n.json +2 -2
  110. package/types/siemens-element-ng-dashboard.d.ts +2 -0
  111. package/types/siemens-element-ng-tabs.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-markdown-extensions-katex.mjs","sources":["../../../../projects/element-ng/markdown/extensions/katex/si-markdown-katex.component.ts","../../../../projects/element-ng/markdown/extensions/katex/si-markdown-katex.extension.ts","../../../../projects/element-ng/markdown/extensions/katex/index.ts","../../../../projects/element-ng/markdown/extensions/katex/siemens-element-ng-markdown-extensions-katex.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { type SiMarkdownExtensionComponent } from '@siemens/element-ng/markdown';\nimport { type KatexOptions, render } from 'katex';\nimport { Literal, type Node, type Parent } from 'mdast';\n\n@Component({\n selector: 'si-markdown-katex',\n template: '',\n styleUrl: 'si-markdown-katex.component.scss',\n // this is necessary for the styles to work correctly\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'katex-container',\n '[attr.data-line]': 'node().position?.start?.line',\n '[class.d-block]': 'displayMode()'\n }\n})\nexport class SiMarkdownKatexComponent implements SiMarkdownExtensionComponent {\n private readonly elementRef = inject(ElementRef);\n\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<KatexOptions>();\n\n protected readonly displayMode = computed(() => this.node().type === 'math');\n private readonly expr = computed(() => (this.node() as Literal).value);\n\n constructor() {\n effect(() => this.render());\n }\n\n private render(): void {\n const expr = this.expr();\n const options = this.options() ?? {};\n render(expr, this.elementRef.nativeElement, {\n ...options,\n displayMode: this.displayMode(),\n throwOnError: false\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '@siemens/element-ng/markdown';\n/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type KatexOptions } from 'katex';\nimport remarkMath, { type Options } from 'remark-math';\n\nimport { SiMarkdownKatexComponent } from './si-markdown-katex.component';\n\n/**\n * An extension to render LaTeX math expressions using KaTeX. Uses `remark-math` to parse\n * the expressions inside the markdown document.\n * @param parseOptions - options passed to `remark-math`\n * @param katexOptions - options passed to `katex`\n * @returns extension for `SiMarkdownOption.installExtension()`\n */\nexport const siMarkdownMathKaTeX = (\n parseOptions?: Options,\n katexOptions?: KatexOptions\n): SiMarkdownExtension => {\n katexOptions ??= {\n output: 'html'\n };\n\n return {\n plugins: [{ plugin: remarkMath, options: parseOptions }],\n types: [\n { type: 'math', component: SiMarkdownKatexComponent, options: katexOptions },\n { type: 'inlineMath', component: SiMarkdownKatexComponent, options: katexOptions }\n ]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-katex.extension';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;;AAGG;MA2BU,wBAAwB,CAAA;AAClB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEvC,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAgB;AAErB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;oFAAC;IAC3D,IAAI,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,IAAI,EAAc,CAAC,KAAK;6EAAC;AAEtE,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7B;IAEQ,MAAM,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;QACpC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;AAC1C,YAAA,GAAG,OAAO;AACV,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;IACJ;uGAtBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,slBAXzB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4mj5CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAWD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,YACnB,EAAE,EAAA,aAAA,EAIG,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,kBAAkB,EAAE,8BAA8B;AAClD,wBAAA,iBAAiB,EAAE;AACpB,qBAAA,EAAA,MAAA,EAAA,CAAA,4mj5CAAA,CAAA,EAAA;;;ACdH;;;;;;AAMG;MACU,mBAAmB,GAAG,CACjC,YAAsB,EACtB,YAA2B,KACJ;AACvB,IAAA,YAAY,KAAK;AACf,QAAA,MAAM,EAAE;KACT;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACxD,QAAA,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY,EAAE;YAC5E,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY;AACjF;KACF;AACH;;ACpCA;;;AAGG;;ACHH;;AAEG;;;;"}
1
+ {"version":3,"file":"siemens-element-ng-markdown-extensions-katex.mjs","sources":["../../../../projects/element-ng/markdown/extensions/katex/si-markdown-katex.component.ts","../../../../projects/element-ng/markdown/extensions/katex/si-markdown-katex.extension.ts","../../../../projects/element-ng/markdown/extensions/katex/index.ts","../../../../projects/element-ng/markdown/extensions/katex/siemens-element-ng-markdown-extensions-katex.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { type SiMarkdownExtensionComponent } from '@siemens/element-ng/markdown';\nimport { type KatexOptions, render } from 'katex';\nimport { Literal, type Node, type Parent } from 'mdast';\n\n@Component({\n selector: 'si-markdown-katex',\n template: '',\n styleUrl: 'si-markdown-katex.component.scss',\n // this is necessary for the styles to work correctly\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'katex-container',\n '[attr.data-line]': 'node().position?.start?.line',\n '[class.d-block]': 'displayMode()'\n }\n})\nexport class SiMarkdownKatexComponent implements SiMarkdownExtensionComponent {\n private readonly elementRef = inject(ElementRef);\n\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<KatexOptions>();\n\n protected readonly displayMode = computed(() => this.node().type === 'math');\n private readonly expr = computed(() => (this.node() as Literal).value);\n\n constructor() {\n effect(() => this.render());\n }\n\n private render(): void {\n const expr = this.expr();\n const options = this.options() ?? {};\n render(expr, this.elementRef.nativeElement, {\n ...options,\n displayMode: this.displayMode(),\n throwOnError: false\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '@siemens/element-ng/markdown';\n/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type KatexOptions } from 'katex';\nimport remarkMath, { type Options } from 'remark-math';\n\nimport { SiMarkdownKatexComponent } from './si-markdown-katex.component';\n\n/**\n * An extension to render LaTeX math expressions using KaTeX. Uses `remark-math` to parse\n * the expressions inside the markdown document.\n * @param parseOptions - options passed to `remark-math`\n * @param katexOptions - options passed to `katex`\n * @returns extension for `SiMarkdownOption.installExtension()`\n */\nexport const siMarkdownMathKaTeX = (\n parseOptions?: Options,\n katexOptions?: KatexOptions\n): SiMarkdownExtension => {\n katexOptions ??= {\n output: 'html'\n };\n\n return {\n plugins: [{ plugin: remarkMath, options: parseOptions }],\n types: [\n { type: 'math', component: SiMarkdownKatexComponent, options: katexOptions },\n { type: 'inlineMath', component: SiMarkdownKatexComponent, options: katexOptions }\n ]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-katex.extension';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;;AAGG;MA2BU,wBAAwB,CAAA;AAClB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEvC,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAgB;AAErB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;oFAAC;IAC3D,IAAI,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,IAAI,EAAc,CAAC,KAAK;6EAAC;AAEtE,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7B;IAEQ,MAAM,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;QACpC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;AAC1C,YAAA,GAAG,OAAO;AACV,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;IACJ;uGAtBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,slBAXzB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yqj5CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAWD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,YACnB,EAAE,EAAA,aAAA,EAIG,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,kBAAkB,EAAE,8BAA8B;AAClD,wBAAA,iBAAiB,EAAE;AACpB,qBAAA,EAAA,MAAA,EAAA,CAAA,yqj5CAAA,CAAA,EAAA;;;ACdH;;;;;;AAMG;MACU,mBAAmB,GAAG,CACjC,YAAsB,EACtB,YAA2B,KACJ;AACvB,IAAA,YAAY,KAAK;AACf,QAAA,MAAM,EAAE;KACT;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACxD,QAAA,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY,EAAE;YAC5E,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY;AACjF;KACF;AACH;;ACpCA;;;AAGG;;ACHH;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-markdown-extensions-mermaid.mjs","sources":["../../../../projects/element-ng/markdown/extensions/mermaid/si-markdown-mermaid.component.ts","../../../../projects/element-ng/markdown/extensions/mermaid/si-markdown-mermaid.extension.ts","../../../../projects/element-ng/markdown/extensions/mermaid/index.ts","../../../../projects/element-ng/markdown/extensions/mermaid/siemens-element-ng-markdown-extensions-mermaid.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { afterNextRender, Component, computed, inject, Injector, input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { computedAsync, type SiMarkdownExtensionComponent } from '@siemens/element-ng/markdown';\nimport { Literal, type Node, type Parent } from 'mdast';\nimport mermaid, { MermaidConfig } from 'mermaid';\n\n@Component({\n selector: 'si-markdown-mermaid',\n template: '<div [id]=\"id\"></div><div [innerHTML]=\"svg()\"></div>',\n host: {\n '[attr.data-line]': 'node().position?.start?.line'\n }\n})\nexport class SiMarkdownMermaidComponent implements SiMarkdownExtensionComponent {\n private static idCounter = 1;\n protected id = `__si-markdown-mermaid-${SiMarkdownMermaidComponent.idCounter++}`;\n\n private readonly sanitizer = inject(DomSanitizer);\n private readonly injector = inject(Injector);\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<MermaidConfig>();\n\n protected readonly code = computed(() => (this.node() as Literal).value);\n\n protected readonly svg = computedAsync({\n params: () => ({ options: this.options(), code: this.code() }),\n computation: params => this.render(params.code, params.options),\n initial: undefined\n });\n\n private async render(code: string, options: MermaidConfig = {}): Promise<SafeHtml> {\n if (!code) {\n return '';\n }\n try {\n mermaid.initialize({ ...options, startOnLoad: false, suppressErrorRendering: true });\n } catch (err) {\n return '';\n }\n return await new Promise(resolve => {\n // this is necessary for mermaid to init\n afterNextRender(\n async () => {\n try {\n const ret = await mermaid.render(this.id, code);\n resolve(this.sanitizer.bypassSecurityTrustHtml(ret.svg));\n } catch {\n resolve('');\n }\n },\n { injector: this.injector }\n );\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { type SiMarkdownExtension } from '@siemens/element-ng/markdown';\nimport { MermaidConfig } from 'mermaid';\n\nimport { SiMarkdownMermaidComponent } from './si-markdown-mermaid.component';\n\nexport const siMarkdownMermaid = (options?: MermaidConfig): SiMarkdownExtension => {\n return {\n codeTypes: [{ type: 'mermaid', component: SiMarkdownMermaidComponent, options }]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-mermaid.extension';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;;AAGG;MAcU,0BAA0B,CAAA;AAC7B,IAAA,OAAO,SAAS,GAAG,CAAC;AAClB,IAAA,EAAE,GAAG,CAAA,sBAAA,EAAyB,0BAA0B,CAAC,SAAS,EAAE,EAAE;AAE/D,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACnC,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAiB;IAEtB,IAAI,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,IAAI,EAAc,CAAC,KAAK;6EAAC;IAErD,GAAG,GAAG,aAAa,CAAC;QACrC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AAC9D,QAAA,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;AAC/D,QAAA,OAAO,EAAE;AACV,KAAA,CAAC;AAEM,IAAA,MAAM,MAAM,CAAC,IAAY,EAAE,UAAyB,EAAE,EAAA;QAC5D,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE;QACX;AACA,QAAA,IAAI;AACF,YAAA,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC;QACtF;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,MAAM,IAAI,OAAO,CAAC,OAAO,IAAG;;YAEjC,eAAe,CACb,YAAW;AACT,gBAAA,IAAI;AACF,oBAAA,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AAC/C,oBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1D;AAAE,gBAAA,MAAM;oBACN,OAAO,CAAC,EAAE,CAAC;gBACb;YACF,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;AACH,QAAA,CAAC,CAAC;IACJ;uGAzCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,mhBAL3B,sDAAsD,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKrD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,sDAAsD;AAChE,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE;AACrB;AACF,iBAAA;;;AChBD;;;AAGG;AAOI,MAAM,iBAAiB,GAAG,CAAC,OAAuB,KAAyB;IAChF,OAAO;AACL,QAAA,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,0BAA0B,EAAE,OAAO,EAAE;KAChF;AACH;;ACdA;;;AAGG;;ACHH;;AAEG;;;;"}
1
+ {"version":3,"file":"siemens-element-ng-markdown-extensions-mermaid.mjs","sources":["../../../../projects/element-ng/markdown/extensions/mermaid/si-markdown-mermaid.component.ts","../../../../projects/element-ng/markdown/extensions/mermaid/si-markdown-mermaid.extension.ts","../../../../projects/element-ng/markdown/extensions/mermaid/index.ts","../../../../projects/element-ng/markdown/extensions/mermaid/siemens-element-ng-markdown-extensions-mermaid.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { afterNextRender, Component, computed, inject, Injector, input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { computedAsync, type SiMarkdownExtensionComponent } from '@siemens/element-ng/markdown';\nimport { Literal, type Node, type Parent } from 'mdast';\nimport mermaid, { MermaidConfig } from 'mermaid';\n\n@Component({\n selector: 'si-markdown-mermaid',\n template: '<div [id]=\"id\"></div><div [innerHTML]=\"svg()\"></div>',\n host: {\n '[attr.data-line]': 'node().position?.start?.line'\n }\n})\nexport class SiMarkdownMermaidComponent implements SiMarkdownExtensionComponent {\n private static idCounter = 1;\n protected id = `__si-markdown-mermaid-${SiMarkdownMermaidComponent.idCounter++}`;\n\n private readonly sanitizer = inject(DomSanitizer);\n private readonly injector = inject(Injector);\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<MermaidConfig>();\n\n protected readonly code = computed(() => (this.node() as Literal).value);\n\n protected readonly svg = computedAsync({\n params: () => ({ options: this.options(), code: this.code() }),\n computation: params => this.render(params.code, params.options),\n initial: undefined\n });\n\n private async render(code: string, options: MermaidConfig = {}): Promise<SafeHtml> {\n if (!code) {\n return '';\n }\n try {\n mermaid.initialize({ ...options, startOnLoad: false, suppressErrorRendering: true });\n } catch (err) {\n return '';\n }\n return await new Promise(resolve => {\n // this is necessary for mermaid to init\n afterNextRender(\n async () => {\n try {\n const ret = await mermaid.render(this.id, code);\n resolve(this.sanitizer.bypassSecurityTrustHtml(ret.svg));\n } catch {\n resolve('');\n }\n },\n { injector: this.injector }\n );\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { type SiMarkdownExtension } from '@siemens/element-ng/markdown';\nimport { MermaidConfig } from 'mermaid';\n\nimport { SiMarkdownMermaidComponent } from './si-markdown-mermaid.component';\n\nexport const siMarkdownMermaid = (options?: MermaidConfig): SiMarkdownExtension => {\n return {\n codeTypes: [{ type: 'mermaid', component: SiMarkdownMermaidComponent, options }]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-mermaid.extension';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;;AAGG;MAcU,0BAA0B,CAAA;AAC7B,IAAA,OAAO,SAAS,GAAG,CAAC;AAClB,IAAA,EAAE,GAAG,CAAA,sBAAA,EAAyB,0BAA0B,CAAC,SAAS,EAAE,EAAE;AAE/D,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACnC,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAiB;IAEtB,IAAI,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,IAAI,EAAc,CAAC,KAAK;6EAAC;IAErD,GAAG,GAAG,aAAa,CAAC;QACrC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AAC9D,QAAA,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;AAC/D,QAAA,OAAO,EAAE;AACV,KAAA,CAAC;AAEM,IAAA,MAAM,MAAM,CAAC,IAAY,EAAE,UAAyB,EAAE,EAAA;QAC5D,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE;QACX;AACA,QAAA,IAAI;AACF,YAAA,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC;QACtF;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,MAAM,IAAI,OAAO,CAAC,OAAO,IAAG;;YAEjC,eAAe,CACb,YAAW;AACT,gBAAA,IAAI;AACF,oBAAA,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AAC/C,oBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1D;AAAE,gBAAA,MAAM;oBACN,OAAO,CAAC,EAAE,CAAC;gBACb;YACF,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;AACH,QAAA,CAAC,CAAC;IACJ;uGAzCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,mhBAL3B,sDAAsD,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKrD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,sDAAsD;AAChE,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE;AACrB;AACF,iBAAA;;;AChBD;;;AAGG;AAOI,MAAM,iBAAiB,GAAG,CAAC,OAAuB,KAAyB;IAChF,OAAO;AACL,QAAA,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,0BAA0B,EAAE,OAAO,EAAE;KAChF;AACH;;ACdA;;;AAGG;;ACHH;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-markdown-hightlighter-highlightjs.mjs","sources":["../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.component.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.component.html","../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.highlighter.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/index.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/siemens-element-ng-markdown-hightlighter-highlightjs.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, inject, input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { computedAsync, type SiMarkdownHighlighterComponent } from '@siemens/element-ng/markdown';\nimport { type Language } from 'highlight.js';\nimport hljs from 'highlight.js/lib/core';\nimport langBash from 'highlight.js/lib/languages/bash';\nimport langCss from 'highlight.js/lib/languages/css';\nimport langJs from 'highlight.js/lib/languages/javascript';\nimport langJson from 'highlight.js/lib/languages/json';\nimport langMarkdown from 'highlight.js/lib/languages/markdown';\nimport langPython from 'highlight.js/lib/languages/python';\nimport langScss from 'highlight.js/lib/languages/scss';\nimport langTs from 'highlight.js/lib/languages/typescript';\nimport langXml from 'highlight.js/lib/languages/xml';\n\nimport {\n HighlightJSLanguageLoader,\n SiMarkdownHighlightJsOptions\n} from './si-markdown-highlightjs.types';\n\n// some common languages are built-in for initial loading speed\nhljs.registerLanguage('javascript', langJs);\nhljs.registerLanguage('typescript', langTs);\nhljs.registerLanguage('json', langJson);\nhljs.registerLanguage('css', langCss);\nhljs.registerLanguage('scss', langScss);\nhljs.registerLanguage('bash', langBash);\nhljs.registerLanguage('python', langPython);\nhljs.registerLanguage('xml', langXml);\nhljs.registerLanguage('markdown', langMarkdown);\n\nconst getHljsLang = async (\n lang: string,\n loader?: HighlightJSLanguageLoader\n): Promise<Language | undefined> => {\n const loadedLang = hljs.getLanguage(lang);\n if (loadedLang) {\n return loadedLang;\n }\n\n if (loader) {\n const importLang = await loader(lang);\n if (importLang) {\n hljs.registerLanguage(lang, importLang.default);\n return hljs.getLanguage(lang);\n }\n }\n return undefined;\n};\n\n@Component({\n selector: 'si-markdown-highlightjs',\n templateUrl: './si-markdown-highlightjs.component.html',\n styleUrl: './si-markdown-highlightjs.component.scss',\n host: {\n class: 'd-block'\n }\n})\nexport class SiMarkdownHightlightJsComponent implements SiMarkdownHighlighterComponent {\n private readonly sanitizer = inject(DomSanitizer);\n readonly code = input.required<string>();\n readonly language = input.required<string>();\n readonly updateLanguage = input.required<(lang?: string) => void>();\n readonly options = input<SiMarkdownHighlightJsOptions>();\n\n protected readonly highlighted = computedAsync({\n params: () => ({ code: this.code(), language: this.language(), options: this.options() }),\n computation: params => this.highlight(params.code, params.language, params.options),\n initial: undefined\n });\n\n private async highlight(\n code: string,\n language: string,\n options: SiMarkdownHighlightJsOptions = {}\n ): Promise<SafeHtml> {\n let highlighted = '';\n if (!language && options?.autoDetectLanguage) {\n try {\n const res = hljs.highlightAuto(code, undefined);\n highlighted = res.value;\n if (res.language) {\n const lang = hljs.getLanguage(res.language);\n this.updateLanguage()(lang?.name);\n } else {\n this.updateLanguage()(language);\n }\n } catch {\n // ignored\n }\n } else {\n const hljsLang = await getHljsLang(language, options.languageLoader);\n if (hljsLang) {\n this.updateLanguage()(hljsLang.name);\n try {\n highlighted = hljs.highlight(code, { ...options, language }).value;\n } catch {\n // ignored\n }\n } else {\n this.updateLanguage()(language);\n }\n }\n return highlighted ? this.sanitizer.bypassSecurityTrustHtml(highlighted) : '';\n }\n}\n","@let html = highlighted();\n@if (html) {\n <pre class=\"border-0 m-0 p-0\"><code [innerHTML]=\"html\"></code></pre>\n} @else {\n <pre class=\"border-0 m-0 p-0\"><code>{{ code() }} </code></pre>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { type SiMarkdownHighlighter } from '@siemens/element-ng/markdown';\n\nimport { SiMarkdownHightlightJsComponent } from './si-markdown-highlightjs.component';\nimport { SiMarkdownHighlightJsOptions } from './si-markdown-highlightjs.types';\n\n/**\n * Code highlighter using Highlight.js\n * @param options - Options passed to highlight.js\n * @returns highlighter configuration for `SiMarkdownOptions.setCodeHighlighter()`\n */\nexport const siMarkdownHighlightJs = (\n options?: SiMarkdownHighlightJsOptions\n): SiMarkdownHighlighter => {\n return {\n component: SiMarkdownHightlightJsComponent,\n options\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-highlightjs.types';\nexport * from './si-markdown-highlightjs.highlighter';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-markdown-hightlighter-highlightjs.mjs","sources":["../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.component.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.component.html","../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.highlighter.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/index.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/siemens-element-ng-markdown-hightlighter-highlightjs.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, inject, input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { computedAsync, type SiMarkdownHighlighterComponent } from '@siemens/element-ng/markdown';\nimport { type Language } from 'highlight.js';\nimport hljs from 'highlight.js/lib/core';\nimport langBash from 'highlight.js/lib/languages/bash';\nimport langCss from 'highlight.js/lib/languages/css';\nimport langJs from 'highlight.js/lib/languages/javascript';\nimport langJson from 'highlight.js/lib/languages/json';\nimport langMarkdown from 'highlight.js/lib/languages/markdown';\nimport langPython from 'highlight.js/lib/languages/python';\nimport langScss from 'highlight.js/lib/languages/scss';\nimport langTs from 'highlight.js/lib/languages/typescript';\nimport langXml from 'highlight.js/lib/languages/xml';\n\nimport {\n HighlightJSLanguageLoader,\n SiMarkdownHighlightJsOptions\n} from './si-markdown-highlightjs.types';\n\n// some common languages are built-in for initial loading speed\nhljs.registerLanguage('javascript', langJs);\nhljs.registerLanguage('typescript', langTs);\nhljs.registerLanguage('json', langJson);\nhljs.registerLanguage('css', langCss);\nhljs.registerLanguage('scss', langScss);\nhljs.registerLanguage('bash', langBash);\nhljs.registerLanguage('python', langPython);\nhljs.registerLanguage('xml', langXml);\nhljs.registerLanguage('markdown', langMarkdown);\n\nconst getHljsLang = async (\n lang: string,\n loader?: HighlightJSLanguageLoader\n): Promise<Language | undefined> => {\n const loadedLang = hljs.getLanguage(lang);\n if (loadedLang) {\n return loadedLang;\n }\n\n if (loader) {\n const importLang = await loader(lang);\n if (importLang) {\n hljs.registerLanguage(lang, importLang.default);\n return hljs.getLanguage(lang);\n }\n }\n return undefined;\n};\n\n@Component({\n selector: 'si-markdown-highlightjs',\n templateUrl: './si-markdown-highlightjs.component.html',\n styleUrl: './si-markdown-highlightjs.component.scss',\n host: {\n class: 'd-block'\n }\n})\nexport class SiMarkdownHightlightJsComponent implements SiMarkdownHighlighterComponent {\n private readonly sanitizer = inject(DomSanitizer);\n readonly code = input.required<string>();\n readonly language = input.required<string>();\n readonly updateLanguage = input.required<(lang?: string) => void>();\n readonly options = input<SiMarkdownHighlightJsOptions>();\n\n protected readonly highlighted = computedAsync({\n params: () => ({ code: this.code(), language: this.language(), options: this.options() }),\n computation: params => this.highlight(params.code, params.language, params.options),\n initial: undefined\n });\n\n private async highlight(\n code: string,\n language: string,\n options: SiMarkdownHighlightJsOptions = {}\n ): Promise<SafeHtml> {\n let highlighted = '';\n if (!language && options?.autoDetectLanguage) {\n try {\n const res = hljs.highlightAuto(code, undefined);\n highlighted = res.value;\n if (res.language) {\n const lang = hljs.getLanguage(res.language);\n this.updateLanguage()(lang?.name);\n } else {\n this.updateLanguage()(language);\n }\n } catch {\n // ignored\n }\n } else {\n const hljsLang = await getHljsLang(language, options.languageLoader);\n if (hljsLang) {\n this.updateLanguage()(hljsLang.name);\n try {\n highlighted = hljs.highlight(code, { ...options, language }).value;\n } catch {\n // ignored\n }\n } else {\n this.updateLanguage()(language);\n }\n }\n return highlighted ? this.sanitizer.bypassSecurityTrustHtml(highlighted) : '';\n }\n}\n","@let html = highlighted();\n@if (html) {\n <pre class=\"border-0 m-0 p-0\"><code [innerHTML]=\"html\"></code></pre>\n} @else {\n <pre class=\"border-0 m-0 p-0\"><code>{{ code() }} </code></pre>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { type SiMarkdownHighlighter } from '@siemens/element-ng/markdown';\n\nimport { SiMarkdownHightlightJsComponent } from './si-markdown-highlightjs.component';\nimport { SiMarkdownHighlightJsOptions } from './si-markdown-highlightjs.types';\n\n/**\n * Code highlighter using Highlight.js\n * @param options - Options passed to highlight.js\n * @returns highlighter configuration for `SiMarkdownOptions.setCodeHighlighter()`\n */\nexport const siMarkdownHighlightJs = (\n options?: SiMarkdownHighlightJsOptions\n): SiMarkdownHighlighter => {\n return {\n component: SiMarkdownHightlightJsComponent,\n options\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-highlightjs.types';\nexport * from './si-markdown-highlightjs.highlighter';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-markdown.mjs","sources":["../../../../projects/element-ng/markdown/si-markdown-token.ts","../../../../projects/element-ng/markdown/si-markdown-fragment.component.ts","../../../../projects/element-ng/markdown/si-markdown-fragment.component.html","../../../../projects/element-ng/markdown/directives/callout/si-markdown-callout.component.ts","../../../../projects/element-ng/markdown/directives/callout/si-markdown-callout.component.html","../../../../projects/element-ng/markdown/directives/callout/si-markdown-callout.register.ts","../../../../projects/element-ng/markdown/directives/callout/index.ts","../../../../projects/element-ng/markdown/extensions/code/si-markdown-code.component.ts","../../../../projects/element-ng/markdown/extensions/code/si-markdown-code.component.html","../../../../projects/element-ng/markdown/extensions/code/si-markdown-code.extension.ts","../../../../projects/element-ng/markdown/extensions/code/index.ts","../../../../projects/element-ng/markdown/extensions/directive/si-markdown-directive.component.ts","../../../../projects/element-ng/markdown/extensions/directive/si-markdown-directive.extension.ts","../../../../projects/element-ng/markdown/extensions/inline-html/si-markdown-inline-html.component.ts","../../../../projects/element-ng/markdown/extensions/inline-html/si-markdown-inline-html.extension.ts","../../../../projects/element-ng/markdown/extensions/inline-html/index.ts","../../../../projects/element-ng/markdown/extensions/link/si-markdown-link.component.ts","../../../../projects/element-ng/markdown/extensions/link/si-markdown-link.component.html","../../../../projects/element-ng/markdown/extensions/link/si-markdown-link.extension.ts","../../../../projects/element-ng/markdown/extensions/link/index.ts","../../../../projects/element-ng/markdown/extensions/table/si-markdown-table.component.ts","../../../../projects/element-ng/markdown/extensions/table/si-markdown-table.component.html","../../../../projects/element-ng/markdown/extensions/table/si-markdown-table.extension.ts","../../../../projects/element-ng/markdown/extensions/table/index.ts","../../../../projects/element-ng/markdown/internal/si-markdown-postprocess.ts","../../../../projects/element-ng/markdown/si-markdown-options.ts","../../../../projects/element-ng/markdown/si-markdown-template.directive.ts","../../../../projects/element-ng/markdown/utils/signal-utils.ts","../../../../projects/element-ng/markdown/si-markdown.component.ts","../../../../projects/element-ng/markdown/si-markdown.component.html","../../../../projects/element-ng/markdown/extensions/directive/index.ts","../../../../projects/element-ng/markdown/index.ts","../../../../projects/element-ng/markdown/siemens-element-ng-markdown.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { InjectionToken, OutputEmitterRef, Signal, TemplateRef } from '@angular/core';\n\nimport { SiMarkdownMetadata } from './si-markdown.types';\n\n/**\n * Token to pass the si-markdown component w/o circular dependencies.\n */\nexport const SI_MARKDOWN_CONTROL = new InjectionToken<SiMarkdownControl>('si.markdown.control');\n\n/**\n * Interface of si-markdown exposed to children.\n */\nexport interface SiMarkdownControl {\n templates: Signal<Map<string, TemplateRef<any>>>;\n meta: Signal<SiMarkdownMetadata>;\n debug: Signal<boolean>;\n extensionEvent: OutputEmitterRef<{ name: string; data: any }>;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { type Node, type Parent } from 'mdast';\n\nimport { SI_MARKDOWN_CONTROL } from './si-markdown-token';\n\n/**\n * Renders a fragment of markdown based on the children of a single node in the AST.\n */\n@Component({\n selector: 'si-markdown-fragment, [siMarkdownFragment]',\n imports: [NgTemplateOutlet],\n templateUrl: './si-markdown-fragment.component.html',\n host: {\n class: 'markdown-content'\n }\n})\nexport class SiMarkdownFragmentComponent {\n protected readonly control = inject(SI_MARKDOWN_CONTROL);\n /** The node for which to render all children */\n readonly node = input.required<Node>({ alias: 'siMarkdownFragment' });\n /** all the children of the node */\n readonly children = computed(() => (this.node() as Parent).children ?? []);\n}\n","<ng-content />\n\n@let templates = control.templates();\n@for (child of children(); track $index) {\n <ng-container\n [ngTemplateOutlet]=\"templates.get(child.type) ?? templates.get('__default-template')\"\n [ngTemplateOutletContext]=\"{ $implicit: child, parent: node() }\"\n />\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, inject, input } from '@angular/core';\nimport { elementLightOn } from '@siemens/element-icons';\nimport { StatusType } from '@siemens/element-ng/common';\nimport {\n addIcons,\n SiIconComponent,\n SiStatusIconComponent,\n STATUS_ICON_CONFIG\n} from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate-types';\nimport { type Node, type Parent } from 'mdast';\n\nimport { SiMarkdownFragmentComponent } from '../../si-markdown-fragment.component';\nimport { type DirectiveNode, type SiMarkdownExtensionComponent } from '../../si-markdown.types';\n\ntype CalloutType =\n 'success' | 'info' | 'warning' | 'danger' | 'caution' | 'critical' | 'note' | 'tip';\n\ninterface Callout {\n label?: TranslatableString;\n severity: StatusType;\n icon?: string;\n color?: string;\n}\n\n@Component({\n selector: 'si-markdown-callout',\n imports: [SiIconComponent, SiStatusIconComponent, SiMarkdownFragmentComponent, SiTranslatePipe],\n templateUrl: './si-markdown-callout.component.html',\n host: {\n class: 'd-block mb-4'\n }\n})\nexport class SiMarkdownCalloutComponent implements SiMarkdownExtensionComponent {\n private readonly statusIcons = inject(STATUS_ICON_CONFIG);\n\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<unknown>();\n\n readonly icons = addIcons({ elementLightOn });\n\n readonly callouts: Record<CalloutType, Callout> = {\n info: { label: this.statusIcons.info.ariaLabel, severity: 'info' },\n success: { label: this.statusIcons.success.ariaLabel, severity: 'success' },\n warning: { label: this.statusIcons.warning.ariaLabel, severity: 'warning' },\n danger: { label: this.statusIcons.danger.ariaLabel, severity: 'danger' },\n caution: { label: this.statusIcons.caution.ariaLabel, severity: 'caution' },\n critical: { label: this.statusIcons.critical.ariaLabel, severity: 'critical' },\n note: {\n label: t(() => $localize`:@@SI_MARKDOWN_CALLOUT.NOTE:Note`),\n severity: 'info'\n },\n tip: {\n label: t(() => $localize`:@@SI_MARKDOWN_CALLOUT.TIP:Tip`),\n severity: 'success',\n icon: this.icons.elementLightOn,\n color: this.statusIcons.success.color\n }\n };\n\n protected readonly config = computed(() => {\n const directive = this.node() as DirectiveNode;\n const type = directive.attributes.type?.toLocaleLowerCase() as CalloutType;\n return {\n callout: this.callouts[type] ?? this.callouts.note,\n heading: directive.attributes.heading\n };\n });\n}\n","@let conf = config();\n<div class=\"card card-outline\" [class]=\"`accent-${conf.callout.severity}`\">\n <div class=\"card-header d-flex aling-items-center\">\n @if (conf.callout.icon) {\n <si-icon\n class=\"icon me-4 flex-shrink-0\"\n [icon]=\"conf.callout.icon\"\n [class]=\"conf.callout.color\"\n />\n } @else {\n <si-status-icon\n class=\"icon me-4 flex-shrink-0\"\n aria-hidden=\"true\"\n [status]=\"conf.callout.severity\"\n />\n }\n <span [class]=\"`text-${conf.callout.severity}`\">\n {{ conf.callout.label | translate }}\n @if (conf.heading) {\n - {{ conf.heading }}\n }\n </span>\n </div>\n <div class=\"card-body pb-4\">\n <div [siMarkdownFragment]=\"node()\"></div>\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { TypeHandler } from '../../si-markdown.types';\nimport { SiMarkdownCalloutComponent } from './si-markdown-callout.component';\n\nexport const siMarkdownCalloutDirective = (): TypeHandler => ({\n type: 'callout',\n component: SiMarkdownCalloutComponent\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-callout.register';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgComponentOutlet } from '@angular/common';\nimport { Component, computed, input, linkedSignal, OnDestroy, signal } from '@angular/core';\nimport { elementCopy, elementDocument, elementOk } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\nimport { Code, type Node, type Parent } from 'mdast';\n\nimport { SiMarkdownHighlighter, SiMarkdownExtensionComponent } from '../../si-markdown.types';\n\nexport interface MarkdownCodeOptions {\n getHighlighter: () => SiMarkdownHighlighter | undefined;\n}\n\n@Component({\n selector: 'si-markdown-code',\n imports: [NgComponentOutlet, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-markdown-code.component.html',\n host: {\n class: 'd-flex flex-column px-6 py-5 mb-6 border rounded',\n '[attr.data-line]': 'node().position?.start?.line'\n }\n})\nexport class SiMarkdownCodeComponent implements SiMarkdownExtensionComponent, OnDestroy {\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<MarkdownCodeOptions>();\n\n protected readonly icons = addIcons({ elementCopy, elementOk, elementDocument });\n protected labelCopy = t(() => $localize`:@@SI_MARKDOWN.COPY_CODE:Copy code`);\n protected labelCopied = t(() => $localize`:@@SI_MARKDOWN.COPIED_CODE:Copied`);\n protected readonly code = computed(() => (this.node() as Code).value);\n protected readonly language = computed(() => (this.node() as Code).lang);\n protected readonly highlighter = computed(() => this.options()?.getHighlighter());\n protected readonly filename = computed(() => {\n const meta = (this.node() as Code).meta ?? '';\n const match = meta.match('\\\\[([^\\\\]]+)\\\\]');\n return match ? match[1] : '';\n });\n protected readonly languageToDisplay = linkedSignal(() => this.language());\n protected readonly copied = signal(false);\n private copyTimeout?: ReturnType<typeof setTimeout>;\n\n protected readonly updateLanguage = (lang?: string): void => this.languageToDisplay.set(lang);\n\n ngOnDestroy(): void {\n clearTimeout(this.copyTimeout);\n }\n\n protected async copy(): Promise<void> {\n await navigator.clipboard.writeText(this.code());\n this.copied.set(true);\n this.copyTimeout = setTimeout(() => this.copied.set(false), 1500);\n }\n}\n","<div class=\"d-flex align-items-center mb-6\">\n @let file = filename();\n @if (file) {\n <span class=\"filename border rounded-1 px-1 me-4\">\n <si-icon class=\"icon-sm\" [icon]=\"icons.elementDocument\" />\n {{ file }}\n </span>\n }\n <span class=\"code-language\" [class.text-secondary]=\"file\">\n {{ languageToDisplay() }}\n </span>\n <div class=\"ms-auto\">\n @if (copied()) {\n <div class=\"btn text-secondary btn-sm copied\">\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n {{ labelCopied | translate }}\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"btn btn-tertiary btn-icon btn-sm\"\n [aria-label]=\"labelCopy | translate\"\n (click)=\"copy()\"\n >\n <si-icon class=\"icon\" [icon]=\"icons.elementCopy\" />\n </button>\n }\n </div>\n</div>\n\n@let hl = highlighter();\n@if (hl) {\n <ng-container\n [ngComponentOutlet]=\"hl.component\"\n [ngComponentOutletInputs]=\"{\n code: code(),\n language: language(),\n options: hl.options,\n updateLanguage\n }\"\n />\n} @else {\n <pre class=\"border-0 m-0 p-0\"><code>{{ code() }}</code></pre>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '../../si-markdown.types';\nimport { type MarkdownCodeOptions, SiMarkdownCodeComponent } from './si-markdown-code.component';\n\n/** Extension to render code blocks. This is always installed automatically. */\nexport const siMarkdownCode = (options: MarkdownCodeOptions): SiMarkdownExtension => {\n return {\n types: [{ type: 'code', component: SiMarkdownCodeComponent, options }]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-code.extension';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgComponentOutlet } from '@angular/common';\nimport { Component, computed, input } from '@angular/core';\nimport { type Node, type Parent } from 'mdast';\n\nimport { SiMarkdownFragmentComponent } from '../../si-markdown-fragment.component';\nimport {\n type TypeHandler,\n type DirectiveNode,\n type SiMarkdownExtensionComponent\n} from '../../si-markdown.types';\n\n@Component({\n selector: 'si-markdown-directive',\n imports: [NgComponentOutlet, SiMarkdownFragmentComponent],\n template: `\n @let component = directiveComponent();\n @if (component) {\n <ng-container\n [ngComponentOutlet]=\"component\"\n [ngComponentOutletInputs]=\"{ node: node(), parent: parent() }\"\n />\n } @else {\n <div [siMarkdownFragment]=\"node()\"></div>\n }\n `\n})\nexport class SiMarkdownDirectiveComponent implements SiMarkdownExtensionComponent {\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<ReadonlyMap<string, TypeHandler>>();\n\n protected readonly directiveComponent = computed(() => {\n const directive = this.node() as DirectiveNode;\n return this.options()?.get(directive.name)?.component;\n });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type TypeHandler, type SiMarkdownExtension } from '../../si-markdown.types';\nimport { SiMarkdownDirectiveComponent } from './si-markdown-directive.component';\n\nconst directiveNodeTypes = ['containerDirective', 'leafDirective', 'textDirective'] as const;\n\n/** Installs component rendering for directives parsed by `remark-directive`. */\nexport const siMarkdownDirective = (\n directives: ReadonlyMap<string, TypeHandler>\n): SiMarkdownExtension => ({\n types: directiveNodeTypes.map(type => ({\n type,\n component: SiMarkdownDirectiveComponent,\n options: directives\n }))\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, inject, input, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { type Parent, type Literal, type Node } from 'mdast';\n\nimport { SiMarkdownExtensionComponent } from '../../si-markdown.types';\n\n@Component({\n selector: 'si-markdown-inline-html',\n template: '',\n host: {\n '[innerHTML]': 'sanitized()'\n }\n})\nexport class SiMarkdownInlineHtmlComponent implements SiMarkdownExtensionComponent {\n private readonly sanitizer = inject(DomSanitizer);\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<any>();\n private readonly html = computed(() => (this.node() as Literal).value);\n\n protected readonly sanitized = computed(() => {\n const html = this.html();\n // because those are very common\n if (html === '<br>' || html === '<hr>') {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n return this.sanitizer.sanitize(SecurityContext.HTML, html);\n });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '../../si-markdown.types';\nimport { SiMarkdownInlineHtmlComponent } from './si-markdown-inline-html.component';\n\n/** Extension to render sanitized inline HTML. This is always installed automatically. */\nexport const siMarkdownInlineHtml = (): SiMarkdownExtension => {\n return {\n types: [{ type: 'html', component: SiMarkdownInlineHtmlComponent }]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-inline-html.extension';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input } from '@angular/core';\nimport { elementDocument } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { type Link, type Node, type Parent } from 'mdast';\n\nimport { SiMarkdownFragmentComponent } from '../../si-markdown-fragment.component';\nimport { SiMarkdownExtensionComponent } from '../../si-markdown.types';\n\n@Component({\n selector: 'si-markdown-link',\n imports: [SiIconComponent, SiMarkdownFragmentComponent],\n templateUrl: './si-markdown-link.component.html',\n styles: `\n :host {\n vertical-align: middle;\n }\n `\n})\nexport class SiMarkdownLinkComponent implements SiMarkdownExtensionComponent {\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<any>();\n\n protected readonly icons = addIcons({ elementDocument });\n protected readonly link = computed(() => this.node() as Link);\n protected readonly fileUrl = computed(() => {\n try {\n const url = new URL(this.link().url);\n return url.protocol === 'file:' ? url : undefined;\n } catch {\n return undefined;\n }\n });\n protected readonly isFileLink = computed(() => this.fileUrl() !== undefined);\n protected readonly filename = computed(() => {\n const path = this.fileUrl()?.pathname ?? '';\n return decodeURIComponent(path).split('/').at(-1) ?? '';\n });\n protected readonly hasLabel = computed(() => this.link().children.length > 0);\n}\n","@let directLink = link();\n@if (isFileLink()) {\n <a\n class=\"filename border rounded-1 px-1 d-inline-flex align-items-center\"\n [href]=\"directLink.url\"\n [title]=\"directLink.title ?? ''\"\n >\n <si-icon class=\"icon-sm me-1\" [icon]=\"icons.elementDocument\" />\n @if (hasLabel()) {\n <span [siMarkdownFragment]=\"directLink\"></span>\n } @else {\n {{ filename() }}\n }\n </a>\n} @else {\n <a [href]=\"directLink.url\" [title]=\"directLink.title ?? ''\" [siMarkdownFragment]=\"directLink\"></a>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '../../si-markdown.types';\nimport { SiMarkdownLinkComponent } from './si-markdown-link.component';\n\n/** Extension to render markdown links. This is always installed automatically. */\nexport const siMarkdownLink = (): SiMarkdownExtension => {\n return {\n types: [{ type: 'link', component: SiMarkdownLinkComponent }]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-link.extension';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n Component,\n computed,\n ElementRef,\n input,\n OnDestroy,\n signal,\n viewChild\n} from '@angular/core';\nimport { elementCopy, elementDownload, elementOk } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\nimport { type Node, type Parent, type Table } from 'mdast';\n\nimport { SiMarkdownFragmentComponent } from '../../si-markdown-fragment.component';\nimport { SiMarkdownExtensionComponent } from '../../si-markdown.types';\n\n@Component({\n selector: 'si-markdown-table',\n imports: [SiIconComponent, SiMarkdownFragmentComponent, SiTranslatePipe],\n templateUrl: './si-markdown-table.component.html',\n styleUrl: './si-markdown-table.component.scss'\n})\nexport class SiMarkdownTableComponent implements SiMarkdownExtensionComponent, OnDestroy {\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<any>();\n\n protected readonly icons = addIcons({ elementCopy, elementDownload, elementOk });\n protected labelCopy = t(() => $localize`:@@SI_MARKDOWN.COPY_TABLE_AS_CSV:Copy table as CSV`);\n protected labelCopied = t(() => $localize`:@@SI_MARKDOWN.COPIED_CODE:Copied`);\n protected labelDownload = t(\n () => $localize`:@@SI_MARKDOWN.DOWNLOAD_TABLE_AS_CSV:Download table as CSV`\n );\n protected readonly table = computed(() => this.node() as Table);\n protected readonly copied = signal(false);\n private readonly tableElement = viewChild.required<ElementRef<HTMLTableElement>>('renderedTable');\n private copyTimeout?: ReturnType<typeof setTimeout>;\n\n ngOnDestroy(): void {\n clearTimeout(this.copyTimeout);\n }\n\n protected async copy(): Promise<void> {\n await navigator.clipboard.writeText(this.csv());\n this.copied.set(true);\n this.copyTimeout = setTimeout(() => this.copied.set(false), 1500);\n }\n\n protected download(): void {\n const blob = new Blob([this.csv()], { type: 'text/csv;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = 'table.csv';\n link.click();\n URL.revokeObjectURL(url);\n }\n\n private csv(): string {\n return Array.from(this.tableElement().nativeElement.rows, row =>\n Array.from(row.cells, cell => this.escapeCsvField(cell.innerText.trim())).join(',')\n ).join('\\r\\n');\n }\n\n private escapeCsvField(value: string): string {\n return /[\",\\r\\n]/.test(value) ? `\"${value.replaceAll('\"', '\"\"')}\"` : value;\n }\n}\n","<div class=\"markdown-table-container mb-6\">\n <div class=\"markdown-table-wrapper\">\n <table\n #renderedTable\n class=\"markdown-table table mb-0\"\n [attr.data-line]=\"table().position?.start?.line\"\n >\n <thead>\n <tr>\n @for (cell of table().children[0].children; track $index) {\n <th [siMarkdownFragment]=\"cell\" [style.text-align]=\"table().align?.[$index]\"></th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of table().children.slice(1); track $index) {\n <tr [attr.data-line]=\"row.position?.start?.line\">\n @for (cell of row.children; track $index; let cellIndex = $index) {\n <td [siMarkdownFragment]=\"cell\" [style.text-align]=\"table().align?.[cellIndex]\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n <div class=\"markdown-table-actions d-flex justify-content-end gap-2 mt-2\">\n @if (copied()) {\n <div class=\"btn text-secondary btn-sm copied\">\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n {{ labelCopied | translate }}\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"btn btn-tertiary btn-icon btn-sm\"\n [aria-label]=\"labelCopy | translate\"\n (click)=\"copy()\"\n >\n <si-icon class=\"icon\" [icon]=\"icons.elementCopy\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"btn btn-tertiary btn-icon btn-sm\"\n [aria-label]=\"labelDownload | translate\"\n (click)=\"download()\"\n >\n <si-icon class=\"icon\" [icon]=\"icons.elementDownload\" />\n </button>\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '../../si-markdown.types';\nimport { SiMarkdownTableComponent } from './si-markdown-table.component';\n\n/** Extension to render markdown tables. This is always installed automatically. */\nexport const siMarkdownTable = (): SiMarkdownExtension => {\n return {\n types: [{ type: 'table', component: SiMarkdownTableComponent }]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-table.extension';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n type Blockquote,\n type Definition,\n type FootnoteReference,\n type FootnoteDefinition,\n type Parent,\n type Root\n} from 'mdast';\nimport { type Transformer } from 'unified';\n\nimport { type SiMarkdownRoot } from '../si-markdown.types';\n\nconst githubAdmonitionPattern = /^\\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\\][ \\t]*(?:\\r?\\n|$)/;\n\n/** Turns GitHub style admonitions into a callout directive */\nconst toCalloutDirective = (node: Blockquote): void => {\n const firstChild = node.children[0];\n if (firstChild?.type !== 'paragraph') {\n return;\n }\n\n const firstText = firstChild.children[0];\n if (firstText?.type !== 'text') {\n return;\n }\n\n const match = githubAdmonitionPattern.exec(firstText.value);\n if (!match) {\n return;\n }\n\n firstText.value = firstText.value.slice(match[0].length);\n if (!firstText.value) {\n firstChild.children.shift();\n }\n if (!firstChild.children.length) {\n node.children.shift();\n }\n\n Object.assign(node, {\n type: 'containerDirective',\n name: 'callout',\n attributes: { type: match[1].toLowerCase() }\n });\n};\n\n/** Moves footnote definitions into a single root-level container. */\nexport const siMarkdownPostprocess = (): Transformer<Root, SiMarkdownRoot> => tree => {\n const footnoteReferences: FootnoteReference[] = [];\n const footnoteDefinitions: FootnoteDefinition[] = [];\n const footnoteDefinitionsMap = new Map<string, FootnoteDefinition>();\n const definitionsMap = new Map<string, Definition>();\n\n const collect = (parent: Parent): void => {\n for (let index = 0; index < parent.children.length; index++) {\n const child = parent.children[index];\n if (child.type === 'blockquote') {\n toCalloutDirective(child);\n }\n\n if (child.type === 'footnoteReference') {\n footnoteReferences.push(child);\n } else if (child.type === 'footnoteDefinition') {\n footnoteDefinitions.push(child);\n footnoteDefinitionsMap.set(child.identifier, child);\n\n parent.children.splice(index, 1);\n index--;\n continue;\n } else if (child.type === 'definition') {\n definitionsMap.set(child.identifier, child);\n\n parent.children.splice(index, 1);\n index--;\n }\n\n if ('children' in child) {\n collect(child as Parent);\n }\n }\n };\n\n collect(tree);\n\n // Footnotes are always numbered\n for (let index = 0; index < footnoteDefinitions.length; index++) {\n const footnoteDefinition = footnoteDefinitions[index];\n footnoteDefinition.label = `${index + 1}`;\n }\n\n // updated all references\n for (const reference of footnoteReferences) {\n const footnoteDefinition = footnoteDefinitionsMap.get(reference.identifier);\n if (footnoteDefinition) {\n reference.label = footnoteDefinition.label;\n }\n }\n\n const root: SiMarkdownRoot = {\n ...tree,\n references: {\n footnoteDefinitions: footnoteDefinitionsMap,\n definitions: definitionsMap\n }\n };\n\n if (footnoteDefinitions.length) {\n root.children.push({ type: 'footnotes', children: footnoteDefinitions });\n }\n return root;\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type Root } from 'mdast';\nimport remarkDirective from 'remark-directive';\nimport remarkGfm from 'remark-gfm';\nimport remarkParse from 'remark-parse';\nimport { Processor, unified, type Plugin } from 'unified';\n\nimport { siMarkdownCalloutDirective } from './directives/callout';\nimport { siMarkdownCode } from './extensions/code';\nimport { siMarkdownDirective } from './extensions/directive/si-markdown-directive.extension';\nimport { siMarkdownInlineHtml } from './extensions/inline-html';\nimport { siMarkdownLink } from './extensions/link';\nimport { siMarkdownTable } from './extensions/table';\nimport { siMarkdownPostprocess } from './internal/si-markdown-postprocess';\nimport {\n PluginWithOptions,\n SiMarkdownExtension,\n SiMarkdownHighlighter,\n SiMarkdownMetadata,\n SiMarkdownRoot,\n TypeHandler,\n UnifiedPlugin,\n UnifiedPluginOptions\n} from './si-markdown.types';\n\n/**\n * Options for the markdown renderer. This holds all configuration and allows installing\n * extensions. A number of extensions are already ready to use and shipped with Element.\n *\n * @example\n * ```ts\n * import { siMarkdownMathKaTeX } from '@siemens/element-ng/markdown/extensions/math';\n * import remarkGemoji from 'remark-gemoji';\n *\n * protected markdownOptions = new SiMarkdownOptions()\n * .installExtension(siMarkdownMathKaTeX())\n * .installUnifiedPlugin(remarkGemoji);\n * ```\n *\n * ```html\n * <si-markdown [markdown]=\"markdownText()\" [options]=\"markdownOptions\" />\n * ```\n */\nexport class SiMarkdownOptions {\n private readonly plugins: PluginWithOptions[] = [];\n private types: TypeHandler[] = [];\n private codeTypes = new Map<string, TypeHandler>();\n private directives = new Map<string, TypeHandler>();\n private highlighter?: SiMarkdownHighlighter;\n\n constructor() {\n this.installExtension(siMarkdownInlineHtml())\n .installExtension(siMarkdownLink())\n .installExtension(siMarkdownTable())\n .installExtension(siMarkdownCode({ getHighlighter: () => this.getHighlighter() }))\n .installExtension(siMarkdownDirective(this.directives))\n .registerDirective(siMarkdownCalloutDirective());\n }\n\n /**\n * Installs a plugin into the `unified` chain\n * @param plugin - The `unified` plugin\n * @param options - Options for the plugin\n * @returns self for chaining\n */\n installUnifiedPlugin(plugin: UnifiedPlugin, options?: UnifiedPluginOptions): SiMarkdownOptions {\n this.plugins.push({ plugin, options });\n return this;\n }\n\n /**\n * Registers a component used to render a named Markdown directive.\n * @param directive - The directive with name and handling component\n * @returns self for chaining\n */\n registerDirective(directives: TypeHandler | TypeHandler[]): SiMarkdownOptions {\n if (!Array.isArray(directives)) {\n directives = [directives];\n }\n for (const directive of directives) {\n this.directives.set(directive.type, directive);\n }\n return this;\n }\n\n /**\n * Installs a extension which can contain plugins, type handlers\n * @param extension - The extension definition\n * @returns self for chaining\n */\n installExtension(extension: SiMarkdownExtension): SiMarkdownOptions {\n if (extension.plugins) {\n this.plugins.push(...extension.plugins);\n }\n if (extension.types) {\n this.types.push(...extension.types);\n }\n if (extension.codeTypes) {\n for (const ct of extension.codeTypes) {\n this.codeTypes.set(ct.type, ct);\n }\n }\n if (extension.directives) {\n this.registerDirective(extension.directives);\n }\n return this;\n }\n\n /**\n * Sets the code highlighter\n * @param highlighter - The highlighter\n */\n setCodeHighlighter(highlighter?: SiMarkdownHighlighter): SiMarkdownOptions {\n this.highlighter = highlighter;\n return this;\n }\n\n /**\n * Creates the `unified` processor with all plugins and options\n * @returns `unified` processor\n */\n makeProcessor(\n meta: SiMarkdownMetadata\n ): Processor<Root, Root, SiMarkdownRoot, undefined, undefined> {\n const processor = unified().use(remarkParse).use(remarkGfm).use(remarkDirective);\n\n for (const p of this.plugins) {\n const options = typeof p.options === 'function' ? p.options(meta) : p.options;\n processor.use(p.plugin as Plugin, options);\n }\n\n return processor.use(siMarkdownPostprocess);\n }\n\n /**\n * @returns All type handlers\n */\n getTypeHandlers(): TypeHandler[] {\n return this.types;\n }\n\n /**\n * @returns All code type handlers\n */\n getCodeTypeHandlers(): Map<string, TypeHandler> {\n return this.codeTypes;\n }\n\n /**\n * @returns The highlighter\n */\n getHighlighter(): SiMarkdownHighlighter | undefined {\n return this.highlighter;\n }\n}\n\nexport const makeSiMarkdownOptions = (): SiMarkdownOptions => new SiMarkdownOptions();\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, TemplateRef, inject, input } from '@angular/core';\n\n/** Directive used to mark a template as a node type for rendering. */\n@Directive({\n selector: '[siMarkdownTemplate]'\n})\nexport class SiMarkdownTemplateDirective {\n readonly template = inject<TemplateRef<any>>(TemplateRef);\n // this should be required, but in some transitional state in the templates computed, this fails\n /** @defaultValue '#dummy' */\n readonly nodeType = input<string>('#dummy', { alias: 'siMarkdownTemplate' });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { effect, signal, Signal, untracked } from '@angular/core';\n\n/** Options for `computedAsync()` */\nexport interface ComputedAsyncOptions<T, R> {\n /** Params function, params will be passed to the `computation` function. This is tracked. */\n params: () => R;\n /** Computation function. This is `untracked()`, params from the `params` function are passed */\n computation: (params: R) => Promise<T>;\n /** Initial value of the `computedAsync` signal. */\n initial: T;\n}\n\n/**\n * Computed value, but async. This exists because the `resource()` API is not suitable. During\n * loading, the value changes to `undefined`. The proposed solution of resource snapshots and\n * a `withPreviousValue()` function that uses `resourceFromSnapshots()` isn't suitable either\n * because it's experimental.\n *\n * @param options - the options\n * @returns readonly signal\n */\nexport const computedAsync = <T, R>(options: ComputedAsyncOptions<T, R>): Signal<T> => {\n const resultSignal = signal<T>(options.initial);\n\n effect(async onCleanup => {\n const params = options.params();\n\n let destroyed = false;\n untracked(async () => {\n const result = await options.computation(params);\n if (!destroyed) {\n resultSignal.set(result);\n }\n });\n\n onCleanup(() => (destroyed = true));\n });\n\n return resultSignal.asReadonly();\n};\n\n/**\n * A readonly throttled version of a signal. Emits at most every `interval` milliseconds\n * @param source - the source signal\n * @param interval - the interval\n * @param immediatelyEmitFirstChange - immediately emit the first change\n * @returns A readonly signal\n */\nexport const throttledSignal = <T>(\n source: Signal<T>,\n interval: number,\n immediatelyEmitFirstChange = true\n): Signal<T> => {\n const resultSignal = signal(source());\n let lastEmitted = 0;\n let timer: ReturnType<typeof setTimeout> | null = null;\n let firstChangeSeen = false;\n\n effect(onCleanup => {\n const value = source();\n const now = Date.now();\n\n if (!firstChangeSeen && immediatelyEmitFirstChange) {\n firstChangeSeen = true;\n resultSignal.set(value);\n return;\n }\n\n if (now - lastEmitted >= interval) {\n resultSignal.set(value);\n lastEmitted = now;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n } else {\n timer ??= setTimeout(\n () => {\n resultSignal.set(source());\n lastEmitted = Date.now();\n timer = null;\n },\n interval - (now - lastEmitted)\n );\n }\n\n onCleanup(() => {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n });\n });\n\n return resultSignal.asReadonly();\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { JsonPipe, NgComponentOutlet } from '@angular/common';\nimport {\n Component,\n input,\n viewChildren,\n contentChildren,\n computed,\n TemplateRef,\n output,\n booleanAttribute\n} from '@angular/core';\nimport { type Root } from 'mdast';\nimport { Processor } from 'unified';\n\nimport { SiMarkdownFragmentComponent } from './si-markdown-fragment.component';\nimport { SiMarkdownOptions } from './si-markdown-options';\nimport { SiMarkdownTemplateDirective } from './si-markdown-template.directive';\nimport { SI_MARKDOWN_CONTROL, SiMarkdownControl } from './si-markdown-token';\nimport { SiMarkdownCitation, SiMarkdownMetadata, SiMarkdownRoot } from './si-markdown.types';\nimport { computedAsync, throttledSignal } from './utils/signal-utils';\n\n/**\n * Component to display markdown text\n *\n * This component is built using concepts from [ngx-remark](https://github.com/ericleib/ngx-remark),\n * namely using Angular templates to render the AST produced by `remark`.\n *\n * Unlike `ngx-remark`, it features a configuration based approach of extensibility so that multiple\n * instances of the component can be used with the same configuration, e.g. inside a chat component\n * w/o repeating templates.\n *\n * @experimental\n */\n@Component({\n selector: 'si-markdown',\n imports: [NgComponentOutlet, SiMarkdownTemplateDirective, SiMarkdownFragmentComponent, JsonPipe],\n templateUrl: './si-markdown.component.html',\n styles: `\n :host {\n display: block;\n max-inline-size: 100%;\n min-inline-size: 0;\n }\n `,\n providers: [{ provide: SI_MARKDOWN_CONTROL, useExisting: SiMarkdownComponent }]\n})\nexport class SiMarkdownComponent implements SiMarkdownControl {\n private static idCounter = 1;\n\n /**\n * The markdown text to transform and display\n * @defaultValue ''\n */\n readonly markdown = input('');\n /**\n * Options to control rendering. Can be shared across multiple instances.\n */\n readonly options = input<SiMarkdownOptions>();\n /** Citation metadata used to create citations. */\n readonly citations = input<SiMarkdownCitation[]>();\n /**\n * Debug mode. When true, unknown node types will be displayed along with the node\n * as JSON.\n * @defaultValue false\n */\n readonly debug = input(false, { transform: booleanAttribute });\n\n /** Emitted by extension components. */\n readonly extensionEvent = output<{ name: string; data: any }>();\n\n protected baseId = `__si-markdown-${SiMarkdownComponent.idCounter++}`;\n\n protected readonly parsed = throttledSignal(\n computedAsync({\n params: () => ({ markdown: this.markdown(), processor: this.config().processor }),\n computation: params => this.parseMarkdown(params.markdown, params.processor),\n initial: undefined\n }),\n 50\n );\n\n protected readonly templateQuery = viewChildren(SiMarkdownTemplateDirective);\n protected readonly customTemplateQuery = contentChildren(SiMarkdownTemplateDirective);\n\n /** @internal */\n readonly templates = computed(() => {\n const map = new Map<string, TemplateRef<any>>();\n for (const template of this.templateQuery()) {\n map.set(template.nodeType(), template.template);\n }\n for (const template of this.customTemplateQuery()) {\n map.set(template.nodeType(), template.template);\n }\n return map;\n });\n\n /** Gives access to metadata in extension components */\n readonly meta = computed<SiMarkdownMetadata>(() => ({ citations: this.citations() }));\n\n private readonly actualOptions = computed(() => this.options() ?? new SiMarkdownOptions());\n protected readonly config = computed(() => {\n const options = this.actualOptions();\n return {\n processor: options.makeProcessor(this.meta()),\n typeHandlers: options.getTypeHandlers(),\n codeTypeHandlers: options.getCodeTypeHandlers()\n };\n });\n\n private async parseMarkdown(\n md: string,\n processor: Processor<Root, Root, SiMarkdownRoot>\n ): Promise<SiMarkdownRoot | undefined> {\n if (!md) {\n return undefined;\n }\n const parsed = processor.parse(md);\n return await processor.run(parsed);\n }\n}\n","<!-- eslint-disable @angular-eslint/template/attributes-order -->\n\n@let ast = parsed();\n@if (ast) {\n <si-markdown-fragment [siMarkdownFragment]=\"ast\" />\n}\n\n<ng-template siMarkdownTemplate=\"heading\" let-node>\n <div\n role=\"heading\"\n [aria-level]=\"node.depth\"\n [class]=\"`h${node.depth}`\"\n [attr.data-line]=\"node?.position?.start.line\"\n [siMarkdownFragment]=\"node\"\n ></div>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"paragraph\" let-node>\n <p [attr.data-line]=\"node?.position?.start.line\" [siMarkdownFragment]=\"node\"></p>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"blockquote\" let-node>\n <blockquote\n [attr.data-line]=\"node?.position?.start.line\"\n [siMarkdownFragment]=\"node\"\n ></blockquote>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"list\" let-node>\n @if (node.ordered) {\n <ol\n [attr.data-line]=\"node?.position?.start.line\"\n [siMarkdownFragment]=\"node\"\n [start]=\"node.start\"\n ></ol>\n } @else {\n <ul [attr.data-line]=\"node?.position?.start.line\" [siMarkdownFragment]=\"node\"></ul>\n }\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"listItem\" let-node let-parent=\"parent\">\n @if (node.checked !== null) {\n <li class=\"task-list-item\" [attr.data-line]=\"node?.position?.start.line\">\n <label\n [siMarkdownFragment]=\"\n !parent.loose && node.children.length === 1 && node.children[0].children\n ? node.children[0]\n : node\n \"\n >\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n tabindex=\"-1\"\n aria-disabled=\"true\"\n [checked]=\"node.checked\"\n />\n </label>\n </li>\n } @else {\n <li\n [attr.data-line]=\"node?.position?.start.line\"\n [siMarkdownFragment]=\"\n !parent.loose && node.children.length === 1 && node.children[0].children\n ? node.children[0]\n : node\n \"\n ></li>\n }\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"linkReference\" let-node>\n @let def = ast?.references?.definitions?.get(node.identifier);\n @if (def) {\n <a [href]=\"def.url\" [title]=\"def.title ?? ''\">{{ def.label }}</a>\n }\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"emphasis\" let-node>\n <em [siMarkdownFragment]=\"node\"></em>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"strong\" let-node>\n <strong [siMarkdownFragment]=\"node\"></strong>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"delete\" let-node>\n <del [siMarkdownFragment]=\"node\"></del>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"text\" let-node>\n <span>{{ node.value }}</span>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"image\" let-node>\n <img [src]=\"node.url\" [alt]=\"node.alt ?? ''\" [title]=\"node.title ?? ''\" />\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"imageReference\" let-node>\n @let def = ast?.references?.definitions?.get(node.identifier);\n @if (def) {\n <img [src]=\"def.url\" [alt]=\"node.alt ?? ''\" [title]=\"def.title ?? ''\" />\n }\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"thematicBreak\" let-node>\n <hr [attr.data-line]=\"node?.position?.start.line\" />\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"break\">\n <br />\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"footnotes\" let-node>\n <hr />\n <ol\n class=\"footnotes\"\n [attr.data-line]=\"node?.position?.start.line\"\n [siMarkdownFragment]=\"node\"\n ></ol>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"footnoteReference\" let-node>\n <sup class=\"footnote-ref\">\n <a [href]=\"`#${baseId}:fn:${node.identifier}`\">{{ node.label }}</a>\n </sup>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"footnoteDefinition\" let-node>\n <li\n class=\"footnote-def\"\n [attr.data-line]=\"node?.position?.start.line\"\n [id]=\"`${baseId}:fn:${node.identifier}`\"\n [siMarkdownFragment]=\"node\"\n ></li>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"inlineCode\" let-node>\n <code [class]=\"`language-${node.lang || 'plain'}`\">{{ node.value }}</code>\n</ng-template>\n\n@let conf = config();\n@let codeTypes = conf.codeTypeHandlers;\n@for (handler of conf.typeHandlers; track handler.type) {\n <ng-template [siMarkdownTemplate]=\"handler.type\" let-node let-parent=\"parent\">\n @if (handler.type === 'code' && codeTypes.has(node.lang)) {\n @let specialHandler = codeTypes.get(node.lang)!;\n <ng-container\n [ngComponentOutlet]=\"specialHandler.component\"\n [ngComponentOutletInputs]=\"{ node, parent, options: specialHandler.options }\"\n />\n } @else {\n <ng-container\n [ngComponentOutlet]=\"handler.component\"\n [ngComponentOutletInputs]=\"{ node, parent, options: handler.options }\"\n />\n }\n </ng-template>\n}\n\n<ng-template siMarkdownTemplate=\"__default-template\" let-node>\n @if (debug()) {\n <div class=\"markdown-unkown-node-type text-danger\">\n Node type not implemented: <b>{{ node.type }}</b>\n <pre class=\"mt-1\">{{ node | json }}</pre>\n </div>\n }\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from '../../directives/callout/si-markdown-callout.component';\nexport * from './si-markdown-directive.extension';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown.types';\nexport * from './si-markdown.component';\nexport * from './si-markdown-fragment.component';\nexport * from './extensions/directive';\nexport * from './extensions/inline-html/si-markdown-inline-html.component';\nexport * from './si-markdown-template.directive';\nexport * from './si-markdown-options';\nexport * from './si-markdown-token';\nexport * from './utils/signal-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-markdown.mjs","sources":["../../../../projects/element-ng/markdown/si-markdown-token.ts","../../../../projects/element-ng/markdown/si-markdown-fragment.component.ts","../../../../projects/element-ng/markdown/si-markdown-fragment.component.html","../../../../projects/element-ng/markdown/directives/callout/si-markdown-callout.component.ts","../../../../projects/element-ng/markdown/directives/callout/si-markdown-callout.component.html","../../../../projects/element-ng/markdown/directives/callout/si-markdown-callout.register.ts","../../../../projects/element-ng/markdown/directives/callout/index.ts","../../../../projects/element-ng/markdown/extensions/code/si-markdown-code.component.ts","../../../../projects/element-ng/markdown/extensions/code/si-markdown-code.component.html","../../../../projects/element-ng/markdown/extensions/code/si-markdown-code.extension.ts","../../../../projects/element-ng/markdown/extensions/code/index.ts","../../../../projects/element-ng/markdown/extensions/directive/si-markdown-directive.component.ts","../../../../projects/element-ng/markdown/extensions/directive/si-markdown-directive.extension.ts","../../../../projects/element-ng/markdown/extensions/inline-html/si-markdown-inline-html.component.ts","../../../../projects/element-ng/markdown/extensions/inline-html/si-markdown-inline-html.extension.ts","../../../../projects/element-ng/markdown/extensions/inline-html/index.ts","../../../../projects/element-ng/markdown/extensions/link/si-markdown-link.component.ts","../../../../projects/element-ng/markdown/extensions/link/si-markdown-link.component.html","../../../../projects/element-ng/markdown/extensions/link/si-markdown-link.extension.ts","../../../../projects/element-ng/markdown/extensions/link/index.ts","../../../../projects/element-ng/markdown/extensions/table/si-markdown-table.component.ts","../../../../projects/element-ng/markdown/extensions/table/si-markdown-table.component.html","../../../../projects/element-ng/markdown/extensions/table/si-markdown-table.extension.ts","../../../../projects/element-ng/markdown/extensions/table/index.ts","../../../../projects/element-ng/markdown/internal/si-markdown-postprocess.ts","../../../../projects/element-ng/markdown/si-markdown-options.ts","../../../../projects/element-ng/markdown/si-markdown-template.directive.ts","../../../../projects/element-ng/markdown/utils/signal-utils.ts","../../../../projects/element-ng/markdown/si-markdown.component.ts","../../../../projects/element-ng/markdown/si-markdown.component.html","../../../../projects/element-ng/markdown/extensions/directive/index.ts","../../../../projects/element-ng/markdown/index.ts","../../../../projects/element-ng/markdown/siemens-element-ng-markdown.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { InjectionToken, OutputEmitterRef, Signal, TemplateRef } from '@angular/core';\n\nimport { SiMarkdownMetadata } from './si-markdown.types';\n\n/**\n * Token to pass the si-markdown component w/o circular dependencies.\n */\nexport const SI_MARKDOWN_CONTROL = new InjectionToken<SiMarkdownControl>('si.markdown.control');\n\n/**\n * Interface of si-markdown exposed to children.\n */\nexport interface SiMarkdownControl {\n templates: Signal<Map<string, TemplateRef<any>>>;\n meta: Signal<SiMarkdownMetadata>;\n debug: Signal<boolean>;\n extensionEvent: OutputEmitterRef<{ name: string; data: any }>;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { type Node, type Parent } from 'mdast';\n\nimport { SI_MARKDOWN_CONTROL } from './si-markdown-token';\n\n/**\n * Renders a fragment of markdown based on the children of a single node in the AST.\n */\n@Component({\n selector: 'si-markdown-fragment, [siMarkdownFragment]',\n imports: [NgTemplateOutlet],\n templateUrl: './si-markdown-fragment.component.html',\n host: {\n class: 'markdown-content'\n }\n})\nexport class SiMarkdownFragmentComponent {\n protected readonly control = inject(SI_MARKDOWN_CONTROL);\n /** The node for which to render all children */\n readonly node = input.required<Node>({ alias: 'siMarkdownFragment' });\n /** all the children of the node */\n readonly children = computed(() => (this.node() as Parent).children ?? []);\n}\n","<ng-content />\n\n@let templates = control.templates();\n@for (child of children(); track $index) {\n <ng-container\n [ngTemplateOutlet]=\"templates.get(child.type) ?? templates.get('__default-template')\"\n [ngTemplateOutletContext]=\"{ $implicit: child, parent: node() }\"\n />\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, inject, input } from '@angular/core';\nimport { elementLightOn } from '@siemens/element-icons';\nimport { StatusType } from '@siemens/element-ng/common';\nimport {\n addIcons,\n SiIconComponent,\n SiStatusIconComponent,\n STATUS_ICON_CONFIG\n} from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate-types';\nimport { type Node, type Parent } from 'mdast';\n\nimport { SiMarkdownFragmentComponent } from '../../si-markdown-fragment.component';\nimport { type DirectiveNode, type SiMarkdownExtensionComponent } from '../../si-markdown.types';\n\ntype CalloutType =\n 'success' | 'info' | 'warning' | 'danger' | 'caution' | 'critical' | 'note' | 'tip';\n\ninterface Callout {\n label?: TranslatableString;\n severity: StatusType;\n icon?: string;\n color?: string;\n}\n\n@Component({\n selector: 'si-markdown-callout',\n imports: [SiIconComponent, SiStatusIconComponent, SiMarkdownFragmentComponent, SiTranslatePipe],\n templateUrl: './si-markdown-callout.component.html',\n host: {\n class: 'd-block mb-4'\n }\n})\nexport class SiMarkdownCalloutComponent implements SiMarkdownExtensionComponent {\n private readonly statusIcons = inject(STATUS_ICON_CONFIG);\n\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<unknown>();\n\n readonly icons = addIcons({ elementLightOn });\n\n readonly callouts: Record<CalloutType, Callout> = {\n info: { label: this.statusIcons.info.ariaLabel, severity: 'info' },\n success: { label: this.statusIcons.success.ariaLabel, severity: 'success' },\n warning: { label: this.statusIcons.warning.ariaLabel, severity: 'warning' },\n danger: { label: this.statusIcons.danger.ariaLabel, severity: 'danger' },\n caution: { label: this.statusIcons.caution.ariaLabel, severity: 'caution' },\n critical: { label: this.statusIcons.critical.ariaLabel, severity: 'critical' },\n note: {\n label: t(() => $localize`:@@SI_MARKDOWN_CALLOUT.NOTE:Note`),\n severity: 'info'\n },\n tip: {\n label: t(() => $localize`:@@SI_MARKDOWN_CALLOUT.TIP:Tip`),\n severity: 'success',\n icon: this.icons.elementLightOn,\n color: this.statusIcons.success.color\n }\n };\n\n protected readonly config = computed(() => {\n const directive = this.node() as DirectiveNode;\n const type = directive.attributes.type?.toLocaleLowerCase() as CalloutType;\n return {\n callout: this.callouts[type] ?? this.callouts.note,\n heading: directive.attributes.heading\n };\n });\n}\n","@let conf = config();\n<div class=\"card card-outline\" [class]=\"`accent-${conf.callout.severity}`\">\n <div class=\"card-header d-flex aling-items-center\">\n @if (conf.callout.icon) {\n <si-icon\n class=\"icon me-4 flex-shrink-0\"\n [icon]=\"conf.callout.icon\"\n [class]=\"conf.callout.color\"\n />\n } @else {\n <si-status-icon\n class=\"icon me-4 flex-shrink-0\"\n aria-hidden=\"true\"\n [status]=\"conf.callout.severity\"\n />\n }\n <span [class]=\"`text-${conf.callout.severity}`\">\n {{ conf.callout.label | translate }}\n @if (conf.heading) {\n - {{ conf.heading }}\n }\n </span>\n </div>\n <div class=\"card-body pb-4\">\n <div [siMarkdownFragment]=\"node()\"></div>\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { TypeHandler } from '../../si-markdown.types';\nimport { SiMarkdownCalloutComponent } from './si-markdown-callout.component';\n\nexport const siMarkdownCalloutDirective = (): TypeHandler => ({\n type: 'callout',\n component: SiMarkdownCalloutComponent\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-callout.register';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgComponentOutlet } from '@angular/common';\nimport { Component, computed, input, linkedSignal, OnDestroy, signal } from '@angular/core';\nimport { elementCopy, elementDocument, elementOk } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\nimport { Code, type Node, type Parent } from 'mdast';\n\nimport { SiMarkdownHighlighter, SiMarkdownExtensionComponent } from '../../si-markdown.types';\n\nexport interface MarkdownCodeOptions {\n getHighlighter: () => SiMarkdownHighlighter | undefined;\n}\n\n@Component({\n selector: 'si-markdown-code',\n imports: [NgComponentOutlet, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-markdown-code.component.html',\n host: {\n class: 'd-flex flex-column px-6 py-5 mb-6 border rounded',\n '[attr.data-line]': 'node().position?.start?.line'\n }\n})\nexport class SiMarkdownCodeComponent implements SiMarkdownExtensionComponent, OnDestroy {\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<MarkdownCodeOptions>();\n\n protected readonly icons = addIcons({ elementCopy, elementOk, elementDocument });\n protected labelCopy = t(() => $localize`:@@SI_MARKDOWN.COPY_CODE:Copy code`);\n protected labelCopied = t(() => $localize`:@@SI_MARKDOWN.COPIED_CODE:Copied`);\n protected readonly code = computed(() => (this.node() as Code).value);\n protected readonly language = computed(() => (this.node() as Code).lang);\n protected readonly highlighter = computed(() => this.options()?.getHighlighter());\n protected readonly filename = computed(() => {\n const meta = (this.node() as Code).meta ?? '';\n const match = meta.match('\\\\[([^\\\\]]+)\\\\]');\n return match ? match[1] : '';\n });\n protected readonly languageToDisplay = linkedSignal(() => this.language());\n protected readonly copied = signal(false);\n private copyTimeout?: ReturnType<typeof setTimeout>;\n\n protected readonly updateLanguage = (lang?: string): void => this.languageToDisplay.set(lang);\n\n ngOnDestroy(): void {\n clearTimeout(this.copyTimeout);\n }\n\n protected async copy(): Promise<void> {\n await navigator.clipboard.writeText(this.code());\n this.copied.set(true);\n this.copyTimeout = setTimeout(() => this.copied.set(false), 1500);\n }\n}\n","<div class=\"d-flex align-items-center mb-6\">\n @let file = filename();\n @if (file) {\n <span class=\"filename border rounded-1 px-1 me-4\">\n <si-icon class=\"icon-sm\" [icon]=\"icons.elementDocument\" />\n {{ file }}\n </span>\n }\n <span class=\"code-language\" [class.text-secondary]=\"file\">\n {{ languageToDisplay() }}\n </span>\n <div class=\"ms-auto\">\n @if (copied()) {\n <div class=\"btn text-secondary btn-sm copied\">\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n {{ labelCopied | translate }}\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"btn btn-tertiary btn-icon btn-sm\"\n [aria-label]=\"labelCopy | translate\"\n (click)=\"copy()\"\n >\n <si-icon class=\"icon\" [icon]=\"icons.elementCopy\" />\n </button>\n }\n </div>\n</div>\n\n@let hl = highlighter();\n@if (hl) {\n <ng-container\n [ngComponentOutlet]=\"hl.component\"\n [ngComponentOutletInputs]=\"{\n code: code(),\n language: language(),\n options: hl.options,\n updateLanguage\n }\"\n />\n} @else {\n <pre class=\"border-0 m-0 p-0\"><code>{{ code() }}</code></pre>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '../../si-markdown.types';\nimport { type MarkdownCodeOptions, SiMarkdownCodeComponent } from './si-markdown-code.component';\n\n/** Extension to render code blocks. This is always installed automatically. */\nexport const siMarkdownCode = (options: MarkdownCodeOptions): SiMarkdownExtension => {\n return {\n types: [{ type: 'code', component: SiMarkdownCodeComponent, options }]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-code.extension';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgComponentOutlet } from '@angular/common';\nimport { Component, computed, input } from '@angular/core';\nimport { type Node, type Parent } from 'mdast';\n\nimport { SiMarkdownFragmentComponent } from '../../si-markdown-fragment.component';\nimport {\n type TypeHandler,\n type DirectiveNode,\n type SiMarkdownExtensionComponent\n} from '../../si-markdown.types';\n\n@Component({\n selector: 'si-markdown-directive',\n imports: [NgComponentOutlet, SiMarkdownFragmentComponent],\n template: `\n @let component = directiveComponent();\n @if (component) {\n <ng-container\n [ngComponentOutlet]=\"component\"\n [ngComponentOutletInputs]=\"{ node: node(), parent: parent() }\"\n />\n } @else {\n <div [siMarkdownFragment]=\"node()\"></div>\n }\n `\n})\nexport class SiMarkdownDirectiveComponent implements SiMarkdownExtensionComponent {\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<ReadonlyMap<string, TypeHandler>>();\n\n protected readonly directiveComponent = computed(() => {\n const directive = this.node() as DirectiveNode;\n return this.options()?.get(directive.name)?.component;\n });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type TypeHandler, type SiMarkdownExtension } from '../../si-markdown.types';\nimport { SiMarkdownDirectiveComponent } from './si-markdown-directive.component';\n\nconst directiveNodeTypes = ['containerDirective', 'leafDirective', 'textDirective'] as const;\n\n/** Installs component rendering for directives parsed by `remark-directive`. */\nexport const siMarkdownDirective = (\n directives: ReadonlyMap<string, TypeHandler>\n): SiMarkdownExtension => ({\n types: directiveNodeTypes.map(type => ({\n type,\n component: SiMarkdownDirectiveComponent,\n options: directives\n }))\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, inject, input, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { type Parent, type Literal, type Node } from 'mdast';\n\nimport { SiMarkdownExtensionComponent } from '../../si-markdown.types';\n\n@Component({\n selector: 'si-markdown-inline-html',\n template: '',\n host: {\n '[innerHTML]': 'sanitized()'\n }\n})\nexport class SiMarkdownInlineHtmlComponent implements SiMarkdownExtensionComponent {\n private readonly sanitizer = inject(DomSanitizer);\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<any>();\n private readonly html = computed(() => (this.node() as Literal).value);\n\n protected readonly sanitized = computed(() => {\n const html = this.html();\n // because those are very common\n if (html === '<br>' || html === '<hr>') {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n return this.sanitizer.sanitize(SecurityContext.HTML, html);\n });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '../../si-markdown.types';\nimport { SiMarkdownInlineHtmlComponent } from './si-markdown-inline-html.component';\n\n/** Extension to render sanitized inline HTML. This is always installed automatically. */\nexport const siMarkdownInlineHtml = (): SiMarkdownExtension => {\n return {\n types: [{ type: 'html', component: SiMarkdownInlineHtmlComponent }]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-inline-html.extension';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input } from '@angular/core';\nimport { elementDocument } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { type Link, type Node, type Parent } from 'mdast';\n\nimport { SiMarkdownFragmentComponent } from '../../si-markdown-fragment.component';\nimport { SiMarkdownExtensionComponent } from '../../si-markdown.types';\n\n@Component({\n selector: 'si-markdown-link',\n imports: [SiIconComponent, SiMarkdownFragmentComponent],\n templateUrl: './si-markdown-link.component.html',\n styles: `\n :host {\n vertical-align: middle;\n }\n `\n})\nexport class SiMarkdownLinkComponent implements SiMarkdownExtensionComponent {\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<any>();\n\n protected readonly icons = addIcons({ elementDocument });\n protected readonly link = computed(() => this.node() as Link);\n protected readonly fileUrl = computed(() => {\n try {\n const url = new URL(this.link().url);\n return url.protocol === 'file:' ? url : undefined;\n } catch {\n return undefined;\n }\n });\n protected readonly isFileLink = computed(() => this.fileUrl() !== undefined);\n protected readonly filename = computed(() => {\n const path = this.fileUrl()?.pathname ?? '';\n return decodeURIComponent(path).split('/').at(-1) ?? '';\n });\n protected readonly hasLabel = computed(() => this.link().children.length > 0);\n}\n","@let directLink = link();\n@if (isFileLink()) {\n <a\n class=\"filename border rounded-1 px-1 d-inline-flex align-items-center\"\n [href]=\"directLink.url\"\n [title]=\"directLink.title ?? ''\"\n >\n <si-icon class=\"icon-sm me-1\" [icon]=\"icons.elementDocument\" />\n @if (hasLabel()) {\n <span [siMarkdownFragment]=\"directLink\"></span>\n } @else {\n {{ filename() }}\n }\n </a>\n} @else {\n <a [href]=\"directLink.url\" [title]=\"directLink.title ?? ''\" [siMarkdownFragment]=\"directLink\"></a>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '../../si-markdown.types';\nimport { SiMarkdownLinkComponent } from './si-markdown-link.component';\n\n/** Extension to render markdown links. This is always installed automatically. */\nexport const siMarkdownLink = (): SiMarkdownExtension => {\n return {\n types: [{ type: 'link', component: SiMarkdownLinkComponent }]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-link.extension';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n Component,\n computed,\n ElementRef,\n input,\n OnDestroy,\n signal,\n viewChild\n} from '@angular/core';\nimport { elementCopy, elementDownload, elementOk } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\nimport { type Node, type Parent, type Table } from 'mdast';\n\nimport { SiMarkdownFragmentComponent } from '../../si-markdown-fragment.component';\nimport { SiMarkdownExtensionComponent } from '../../si-markdown.types';\n\n@Component({\n selector: 'si-markdown-table',\n imports: [SiIconComponent, SiMarkdownFragmentComponent, SiTranslatePipe],\n templateUrl: './si-markdown-table.component.html',\n styleUrl: './si-markdown-table.component.scss'\n})\nexport class SiMarkdownTableComponent implements SiMarkdownExtensionComponent, OnDestroy {\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<any>();\n\n protected readonly icons = addIcons({ elementCopy, elementDownload, elementOk });\n protected labelCopy = t(() => $localize`:@@SI_MARKDOWN.COPY_TABLE_AS_CSV:Copy table as CSV`);\n protected labelCopied = t(() => $localize`:@@SI_MARKDOWN.COPIED_CODE:Copied`);\n protected labelDownload = t(\n () => $localize`:@@SI_MARKDOWN.DOWNLOAD_TABLE_AS_CSV:Download table as CSV`\n );\n protected readonly table = computed(() => this.node() as Table);\n protected readonly copied = signal(false);\n private readonly tableElement = viewChild.required<ElementRef<HTMLTableElement>>('renderedTable');\n private copyTimeout?: ReturnType<typeof setTimeout>;\n\n ngOnDestroy(): void {\n clearTimeout(this.copyTimeout);\n }\n\n protected async copy(): Promise<void> {\n await navigator.clipboard.writeText(this.csv());\n this.copied.set(true);\n this.copyTimeout = setTimeout(() => this.copied.set(false), 1500);\n }\n\n protected download(): void {\n const blob = new Blob([this.csv()], { type: 'text/csv;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = 'table.csv';\n link.click();\n URL.revokeObjectURL(url);\n }\n\n private csv(): string {\n return Array.from(this.tableElement().nativeElement.rows, row =>\n Array.from(row.cells, cell => this.escapeCsvField(cell.innerText.trim())).join(',')\n ).join('\\r\\n');\n }\n\n private escapeCsvField(value: string): string {\n return /[\",\\r\\n]/.test(value) ? `\"${value.replaceAll('\"', '\"\"')}\"` : value;\n }\n}\n","<div class=\"markdown-table-container mb-6\">\n <div class=\"markdown-table-wrapper\">\n <table\n #renderedTable\n class=\"markdown-table table mb-0\"\n [attr.data-line]=\"table().position?.start?.line\"\n >\n <thead>\n <tr>\n @for (cell of table().children[0].children; track $index) {\n <th [siMarkdownFragment]=\"cell\" [style.text-align]=\"table().align?.[$index]\"></th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of table().children.slice(1); track $index) {\n <tr [attr.data-line]=\"row.position?.start?.line\">\n @for (cell of row.children; track $index; let cellIndex = $index) {\n <td [siMarkdownFragment]=\"cell\" [style.text-align]=\"table().align?.[cellIndex]\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n <div class=\"markdown-table-actions d-flex justify-content-end gap-2 mt-2\">\n @if (copied()) {\n <div class=\"btn text-secondary btn-sm copied\">\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n {{ labelCopied | translate }}\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"btn btn-tertiary btn-icon btn-sm\"\n [aria-label]=\"labelCopy | translate\"\n (click)=\"copy()\"\n >\n <si-icon class=\"icon\" [icon]=\"icons.elementCopy\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"btn btn-tertiary btn-icon btn-sm\"\n [aria-label]=\"labelDownload | translate\"\n (click)=\"download()\"\n >\n <si-icon class=\"icon\" [icon]=\"icons.elementDownload\" />\n </button>\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '../../si-markdown.types';\nimport { SiMarkdownTableComponent } from './si-markdown-table.component';\n\n/** Extension to render markdown tables. This is always installed automatically. */\nexport const siMarkdownTable = (): SiMarkdownExtension => {\n return {\n types: [{ type: 'table', component: SiMarkdownTableComponent }]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-table.extension';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n type Blockquote,\n type Definition,\n type FootnoteReference,\n type FootnoteDefinition,\n type Parent,\n type Root\n} from 'mdast';\nimport { type Transformer } from 'unified';\n\nimport { type SiMarkdownRoot } from '../si-markdown.types';\n\nconst githubAdmonitionPattern = /^\\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\\][ \\t]*(?:\\r?\\n|$)/;\n\n/** Turns GitHub style admonitions into a callout directive */\nconst toCalloutDirective = (node: Blockquote): void => {\n const firstChild = node.children[0];\n if (firstChild?.type !== 'paragraph') {\n return;\n }\n\n const firstText = firstChild.children[0];\n if (firstText?.type !== 'text') {\n return;\n }\n\n const match = githubAdmonitionPattern.exec(firstText.value);\n if (!match) {\n return;\n }\n\n firstText.value = firstText.value.slice(match[0].length);\n if (!firstText.value) {\n firstChild.children.shift();\n }\n if (!firstChild.children.length) {\n node.children.shift();\n }\n\n Object.assign(node, {\n type: 'containerDirective',\n name: 'callout',\n attributes: { type: match[1].toLowerCase() }\n });\n};\n\n/** Moves footnote definitions into a single root-level container. */\nexport const siMarkdownPostprocess = (): Transformer<Root, SiMarkdownRoot> => tree => {\n const footnoteReferences: FootnoteReference[] = [];\n const footnoteDefinitions: FootnoteDefinition[] = [];\n const footnoteDefinitionsMap = new Map<string, FootnoteDefinition>();\n const definitionsMap = new Map<string, Definition>();\n\n const collect = (parent: Parent): void => {\n for (let index = 0; index < parent.children.length; index++) {\n const child = parent.children[index];\n if (child.type === 'blockquote') {\n toCalloutDirective(child);\n }\n\n if (child.type === 'footnoteReference') {\n footnoteReferences.push(child);\n } else if (child.type === 'footnoteDefinition') {\n footnoteDefinitions.push(child);\n footnoteDefinitionsMap.set(child.identifier, child);\n\n parent.children.splice(index, 1);\n index--;\n continue;\n } else if (child.type === 'definition') {\n definitionsMap.set(child.identifier, child);\n\n parent.children.splice(index, 1);\n index--;\n }\n\n if ('children' in child) {\n collect(child as Parent);\n }\n }\n };\n\n collect(tree);\n\n // Footnotes are always numbered\n for (let index = 0; index < footnoteDefinitions.length; index++) {\n const footnoteDefinition = footnoteDefinitions[index];\n footnoteDefinition.label = `${index + 1}`;\n }\n\n // updated all references\n for (const reference of footnoteReferences) {\n const footnoteDefinition = footnoteDefinitionsMap.get(reference.identifier);\n if (footnoteDefinition) {\n reference.label = footnoteDefinition.label;\n }\n }\n\n const root: SiMarkdownRoot = {\n ...tree,\n references: {\n footnoteDefinitions: footnoteDefinitionsMap,\n definitions: definitionsMap\n }\n };\n\n if (footnoteDefinitions.length) {\n root.children.push({ type: 'footnotes', children: footnoteDefinitions });\n }\n return root;\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type Root } from 'mdast';\nimport remarkDirective from 'remark-directive';\nimport remarkGfm from 'remark-gfm';\nimport remarkParse from 'remark-parse';\nimport { Processor, unified, type Plugin } from 'unified';\n\nimport { siMarkdownCalloutDirective } from './directives/callout';\nimport { siMarkdownCode } from './extensions/code';\nimport { siMarkdownDirective } from './extensions/directive/si-markdown-directive.extension';\nimport { siMarkdownInlineHtml } from './extensions/inline-html';\nimport { siMarkdownLink } from './extensions/link';\nimport { siMarkdownTable } from './extensions/table';\nimport { siMarkdownPostprocess } from './internal/si-markdown-postprocess';\nimport {\n PluginWithOptions,\n SiMarkdownExtension,\n SiMarkdownHighlighter,\n SiMarkdownMetadata,\n SiMarkdownRoot,\n TypeHandler,\n UnifiedPlugin,\n UnifiedPluginOptions\n} from './si-markdown.types';\n\n/**\n * Options for the markdown renderer. This holds all configuration and allows installing\n * extensions. A number of extensions are already ready to use and shipped with Element.\n *\n * @example\n * ```ts\n * import { siMarkdownMathKaTeX } from '@siemens/element-ng/markdown/extensions/math';\n * import remarkGemoji from 'remark-gemoji';\n *\n * protected markdownOptions = new SiMarkdownOptions()\n * .installExtension(siMarkdownMathKaTeX())\n * .installUnifiedPlugin(remarkGemoji);\n * ```\n *\n * ```html\n * <si-markdown [markdown]=\"markdownText()\" [options]=\"markdownOptions\" />\n * ```\n */\nexport class SiMarkdownOptions {\n private readonly plugins: PluginWithOptions[] = [];\n private types: TypeHandler[] = [];\n private codeTypes = new Map<string, TypeHandler>();\n private directives = new Map<string, TypeHandler>();\n private highlighter?: SiMarkdownHighlighter;\n\n constructor() {\n this.installExtension(siMarkdownInlineHtml())\n .installExtension(siMarkdownLink())\n .installExtension(siMarkdownTable())\n .installExtension(siMarkdownCode({ getHighlighter: () => this.getHighlighter() }))\n .installExtension(siMarkdownDirective(this.directives))\n .registerDirective(siMarkdownCalloutDirective());\n }\n\n /**\n * Installs a plugin into the `unified` chain\n * @param plugin - The `unified` plugin\n * @param options - Options for the plugin\n * @returns self for chaining\n */\n installUnifiedPlugin(plugin: UnifiedPlugin, options?: UnifiedPluginOptions): SiMarkdownOptions {\n this.plugins.push({ plugin, options });\n return this;\n }\n\n /**\n * Registers a component used to render a named Markdown directive.\n * @param directive - The directive with name and handling component\n * @returns self for chaining\n */\n registerDirective(directives: TypeHandler | TypeHandler[]): SiMarkdownOptions {\n if (!Array.isArray(directives)) {\n directives = [directives];\n }\n for (const directive of directives) {\n this.directives.set(directive.type, directive);\n }\n return this;\n }\n\n /**\n * Installs a extension which can contain plugins, type handlers\n * @param extension - The extension definition\n * @returns self for chaining\n */\n installExtension(extension: SiMarkdownExtension): SiMarkdownOptions {\n if (extension.plugins) {\n this.plugins.push(...extension.plugins);\n }\n if (extension.types) {\n this.types.push(...extension.types);\n }\n if (extension.codeTypes) {\n for (const ct of extension.codeTypes) {\n this.codeTypes.set(ct.type, ct);\n }\n }\n if (extension.directives) {\n this.registerDirective(extension.directives);\n }\n return this;\n }\n\n /**\n * Sets the code highlighter\n * @param highlighter - The highlighter\n */\n setCodeHighlighter(highlighter?: SiMarkdownHighlighter): SiMarkdownOptions {\n this.highlighter = highlighter;\n return this;\n }\n\n /**\n * Creates the `unified` processor with all plugins and options\n * @returns `unified` processor\n */\n makeProcessor(\n meta: SiMarkdownMetadata\n ): Processor<Root, Root, SiMarkdownRoot, undefined, undefined> {\n const processor = unified().use(remarkParse).use(remarkGfm).use(remarkDirective);\n\n for (const p of this.plugins) {\n const options = typeof p.options === 'function' ? p.options(meta) : p.options;\n processor.use(p.plugin as Plugin, options);\n }\n\n return processor.use(siMarkdownPostprocess);\n }\n\n /**\n * @returns All type handlers\n */\n getTypeHandlers(): TypeHandler[] {\n return this.types;\n }\n\n /**\n * @returns All code type handlers\n */\n getCodeTypeHandlers(): Map<string, TypeHandler> {\n return this.codeTypes;\n }\n\n /**\n * @returns The highlighter\n */\n getHighlighter(): SiMarkdownHighlighter | undefined {\n return this.highlighter;\n }\n}\n\nexport const makeSiMarkdownOptions = (): SiMarkdownOptions => new SiMarkdownOptions();\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, TemplateRef, inject, input } from '@angular/core';\n\n/** Directive used to mark a template as a node type for rendering. */\n@Directive({\n selector: '[siMarkdownTemplate]'\n})\nexport class SiMarkdownTemplateDirective {\n readonly template = inject<TemplateRef<any>>(TemplateRef);\n // this should be required, but in some transitional state in the templates computed, this fails\n /** @defaultValue '#dummy' */\n readonly nodeType = input<string>('#dummy', { alias: 'siMarkdownTemplate' });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { effect, signal, Signal, untracked } from '@angular/core';\n\n/** Options for `computedAsync()` */\nexport interface ComputedAsyncOptions<T, R> {\n /** Params function, params will be passed to the `computation` function. This is tracked. */\n params: () => R;\n /** Computation function. This is `untracked()`, params from the `params` function are passed */\n computation: (params: R) => Promise<T>;\n /** Initial value of the `computedAsync` signal. */\n initial: T;\n}\n\n/**\n * Computed value, but async. This exists because the `resource()` API is not suitable. During\n * loading, the value changes to `undefined`. The proposed solution of resource snapshots and\n * a `withPreviousValue()` function that uses `resourceFromSnapshots()` isn't suitable either\n * because it's experimental.\n *\n * @param options - the options\n * @returns readonly signal\n */\nexport const computedAsync = <T, R>(options: ComputedAsyncOptions<T, R>): Signal<T> => {\n const resultSignal = signal<T>(options.initial);\n\n effect(async onCleanup => {\n const params = options.params();\n\n let destroyed = false;\n untracked(async () => {\n const result = await options.computation(params);\n if (!destroyed) {\n resultSignal.set(result);\n }\n });\n\n onCleanup(() => (destroyed = true));\n });\n\n return resultSignal.asReadonly();\n};\n\n/**\n * A readonly throttled version of a signal. Emits at most every `interval` milliseconds\n * @param source - the source signal\n * @param interval - the interval\n * @param immediatelyEmitFirstChange - immediately emit the first change\n * @returns A readonly signal\n */\nexport const throttledSignal = <T>(\n source: Signal<T>,\n interval: number,\n immediatelyEmitFirstChange = true\n): Signal<T> => {\n const resultSignal = signal(source());\n let lastEmitted = 0;\n let timer: ReturnType<typeof setTimeout> | null = null;\n let firstChangeSeen = false;\n\n effect(onCleanup => {\n const value = source();\n const now = Date.now();\n\n if (!firstChangeSeen && immediatelyEmitFirstChange) {\n firstChangeSeen = true;\n resultSignal.set(value);\n return;\n }\n\n if (now - lastEmitted >= interval) {\n resultSignal.set(value);\n lastEmitted = now;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n } else {\n timer ??= setTimeout(\n () => {\n resultSignal.set(source());\n lastEmitted = Date.now();\n timer = null;\n },\n interval - (now - lastEmitted)\n );\n }\n\n onCleanup(() => {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n });\n });\n\n return resultSignal.asReadonly();\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { JsonPipe, NgComponentOutlet } from '@angular/common';\nimport {\n Component,\n input,\n viewChildren,\n contentChildren,\n computed,\n TemplateRef,\n output,\n booleanAttribute\n} from '@angular/core';\nimport { type Root } from 'mdast';\nimport { Processor } from 'unified';\n\nimport { SiMarkdownFragmentComponent } from './si-markdown-fragment.component';\nimport { SiMarkdownOptions } from './si-markdown-options';\nimport { SiMarkdownTemplateDirective } from './si-markdown-template.directive';\nimport { SI_MARKDOWN_CONTROL, SiMarkdownControl } from './si-markdown-token';\nimport { SiMarkdownCitation, SiMarkdownMetadata, SiMarkdownRoot } from './si-markdown.types';\nimport { computedAsync, throttledSignal } from './utils/signal-utils';\n\n/**\n * Component to display markdown text\n *\n * This component is built using concepts from [ngx-remark](https://github.com/ericleib/ngx-remark),\n * namely using Angular templates to render the AST produced by `remark`.\n *\n * Unlike `ngx-remark`, it features a configuration based approach of extensibility so that multiple\n * instances of the component can be used with the same configuration, e.g. inside a chat component\n * w/o repeating templates.\n *\n * @experimental\n */\n@Component({\n selector: 'si-markdown',\n imports: [NgComponentOutlet, SiMarkdownTemplateDirective, SiMarkdownFragmentComponent, JsonPipe],\n templateUrl: './si-markdown.component.html',\n styles: `\n :host {\n display: block;\n max-inline-size: 100%;\n min-inline-size: 0;\n }\n `,\n providers: [{ provide: SI_MARKDOWN_CONTROL, useExisting: SiMarkdownComponent }]\n})\nexport class SiMarkdownComponent implements SiMarkdownControl {\n private static idCounter = 1;\n\n /**\n * The markdown text to transform and display\n * @defaultValue ''\n */\n readonly markdown = input('');\n /**\n * Options to control rendering. Can be shared across multiple instances.\n */\n readonly options = input<SiMarkdownOptions>();\n /** Citation metadata used to create citations. */\n readonly citations = input<SiMarkdownCitation[]>();\n /**\n * Debug mode. When true, unknown node types will be displayed along with the node\n * as JSON.\n * @defaultValue false\n */\n readonly debug = input(false, { transform: booleanAttribute });\n\n /** Emitted by extension components. */\n readonly extensionEvent = output<{ name: string; data: any }>();\n\n protected baseId = `__si-markdown-${SiMarkdownComponent.idCounter++}`;\n\n protected readonly parsed = throttledSignal(\n computedAsync({\n params: () => ({ markdown: this.markdown(), processor: this.config().processor }),\n computation: params => this.parseMarkdown(params.markdown, params.processor),\n initial: undefined\n }),\n 50\n );\n\n protected readonly templateQuery = viewChildren(SiMarkdownTemplateDirective);\n protected readonly customTemplateQuery = contentChildren(SiMarkdownTemplateDirective);\n\n /** @internal */\n readonly templates = computed(() => {\n const map = new Map<string, TemplateRef<any>>();\n for (const template of this.templateQuery()) {\n map.set(template.nodeType(), template.template);\n }\n for (const template of this.customTemplateQuery()) {\n map.set(template.nodeType(), template.template);\n }\n return map;\n });\n\n /** Gives access to metadata in extension components */\n readonly meta = computed<SiMarkdownMetadata>(() => ({ citations: this.citations() }));\n\n private readonly actualOptions = computed(() => this.options() ?? new SiMarkdownOptions());\n protected readonly config = computed(() => {\n const options = this.actualOptions();\n return {\n processor: options.makeProcessor(this.meta()),\n typeHandlers: options.getTypeHandlers(),\n codeTypeHandlers: options.getCodeTypeHandlers()\n };\n });\n\n private async parseMarkdown(\n md: string,\n processor: Processor<Root, Root, SiMarkdownRoot>\n ): Promise<SiMarkdownRoot | undefined> {\n if (!md) {\n return undefined;\n }\n const parsed = processor.parse(md);\n return await processor.run(parsed);\n }\n}\n","<!-- eslint-disable @angular-eslint/template/attributes-order -->\n\n@let ast = parsed();\n@if (ast) {\n <si-markdown-fragment [siMarkdownFragment]=\"ast\" />\n}\n\n<ng-template siMarkdownTemplate=\"heading\" let-node>\n <div\n role=\"heading\"\n [aria-level]=\"node.depth\"\n [class]=\"`h${node.depth}`\"\n [attr.data-line]=\"node?.position?.start.line\"\n [siMarkdownFragment]=\"node\"\n ></div>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"paragraph\" let-node>\n <p [attr.data-line]=\"node?.position?.start.line\" [siMarkdownFragment]=\"node\"></p>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"blockquote\" let-node>\n <blockquote\n [attr.data-line]=\"node?.position?.start.line\"\n [siMarkdownFragment]=\"node\"\n ></blockquote>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"list\" let-node>\n @if (node.ordered) {\n <ol\n [attr.data-line]=\"node?.position?.start.line\"\n [siMarkdownFragment]=\"node\"\n [start]=\"node.start\"\n ></ol>\n } @else {\n <ul [attr.data-line]=\"node?.position?.start.line\" [siMarkdownFragment]=\"node\"></ul>\n }\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"listItem\" let-node let-parent=\"parent\">\n @if (node.checked !== null) {\n <li class=\"task-list-item\" [attr.data-line]=\"node?.position?.start.line\">\n <label\n [siMarkdownFragment]=\"\n !parent.loose && node.children.length === 1 && node.children[0].children\n ? node.children[0]\n : node\n \"\n >\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n tabindex=\"-1\"\n aria-disabled=\"true\"\n [checked]=\"node.checked\"\n />\n </label>\n </li>\n } @else {\n <li\n [attr.data-line]=\"node?.position?.start.line\"\n [siMarkdownFragment]=\"\n !parent.loose && node.children.length === 1 && node.children[0].children\n ? node.children[0]\n : node\n \"\n ></li>\n }\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"linkReference\" let-node>\n @let def = ast?.references?.definitions?.get(node.identifier);\n @if (def) {\n <a [href]=\"def.url\" [title]=\"def.title ?? ''\">{{ def.label }}</a>\n }\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"emphasis\" let-node>\n <em [siMarkdownFragment]=\"node\"></em>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"strong\" let-node>\n <strong [siMarkdownFragment]=\"node\"></strong>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"delete\" let-node>\n <del [siMarkdownFragment]=\"node\"></del>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"text\" let-node>\n <span>{{ node.value }}</span>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"image\" let-node>\n <img [src]=\"node.url\" [alt]=\"node.alt ?? ''\" [title]=\"node.title ?? ''\" />\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"imageReference\" let-node>\n @let def = ast?.references?.definitions?.get(node.identifier);\n @if (def) {\n <img [src]=\"def.url\" [alt]=\"node.alt ?? ''\" [title]=\"def.title ?? ''\" />\n }\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"thematicBreak\" let-node>\n <hr [attr.data-line]=\"node?.position?.start.line\" />\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"break\">\n <br />\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"footnotes\" let-node>\n <hr />\n <ol\n class=\"footnotes\"\n [attr.data-line]=\"node?.position?.start.line\"\n [siMarkdownFragment]=\"node\"\n ></ol>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"footnoteReference\" let-node>\n <sup class=\"footnote-ref\">\n <a [href]=\"`#${baseId}:fn:${node.identifier}`\">{{ node.label }}</a>\n </sup>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"footnoteDefinition\" let-node>\n <li\n class=\"footnote-def\"\n [attr.data-line]=\"node?.position?.start.line\"\n [id]=\"`${baseId}:fn:${node.identifier}`\"\n [siMarkdownFragment]=\"node\"\n ></li>\n</ng-template>\n\n<ng-template siMarkdownTemplate=\"inlineCode\" let-node>\n <code [class]=\"`language-${node.lang || 'plain'}`\">{{ node.value }}</code>\n</ng-template>\n\n@let conf = config();\n@let codeTypes = conf.codeTypeHandlers;\n@for (handler of conf.typeHandlers; track handler.type) {\n <ng-template [siMarkdownTemplate]=\"handler.type\" let-node let-parent=\"parent\">\n @if (handler.type === 'code' && codeTypes.has(node.lang)) {\n @let specialHandler = codeTypes.get(node.lang)!;\n <ng-container\n [ngComponentOutlet]=\"specialHandler.component\"\n [ngComponentOutletInputs]=\"{ node, parent, options: specialHandler.options }\"\n />\n } @else {\n <ng-container\n [ngComponentOutlet]=\"handler.component\"\n [ngComponentOutletInputs]=\"{ node, parent, options: handler.options }\"\n />\n }\n </ng-template>\n}\n\n<ng-template siMarkdownTemplate=\"__default-template\" let-node>\n @if (debug()) {\n <div class=\"markdown-unkown-node-type text-danger\">\n Node type not implemented: <b>{{ node.type }}</b>\n <pre class=\"mt-1\">{{ node | json }}</pre>\n </div>\n }\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from '../../directives/callout/si-markdown-callout.component';\nexport * from './si-markdown-directive.extension';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown.types';\nexport * from './si-markdown.component';\nexport * from './si-markdown-fragment.component';\nexport * from './extensions/directive';\nexport * from './extensions/inline-html/si-markdown-inline-html.component';\nexport * from './si-markdown-template.directive';\nexport * from './si-markdown-options';\nexport * from './si-markdown-token';\nexport * from './utils/signal-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;AAGG;AAKH;;AAEG;MACU,mBAAmB,GAAG,IAAI,cAAc,CAAoB,qBAAqB;;ACX9F;;;AAGG;AAOH;;AAEG;MASU,2BAA2B,CAAA;AACnB,IAAA,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;;IAE/C,IAAI,GAAG,KAAK,CAAC,QAAQ,2EAAS,KAAK,EAAE,oBAAoB,EAAA,CAAG;;AAE5D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,IAAI,EAAa,CAAC,QAAQ,IAAI,EAAE;iFAAC;uGAL/D,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBxC,sSASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDMY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAMf,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4CAA4C,EAAA,OAAA,EAC7C,CAAC,gBAAgB,CAAC,EAAA,IAAA,EAErB;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,QAAA,EAAA,sSAAA,EAAA;;;AEnBH;;;AAGG;MAmCU,0BAA0B,CAAA;AACpB,IAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAEhD,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAW;AAE1B,IAAA,KAAK,GAAG,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;AAEpC,IAAA,QAAQ,GAAiC;AAChD,QAAA,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE;AAClE,QAAA,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;AAC3E,QAAA,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;AAC3E,QAAA,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACxE,QAAA,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;AAC3E,QAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC9E,QAAA,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,gCAAA,CAAkC,CAAC;AAC3D,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,GAAG,EAAE;YACH,KAAK,EAAE,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,8BAAA,CAAgC,CAAC;AACzD,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC;KACF;AAEkB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAmB;QAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB,EAAiB;QAC1E,OAAO;AACL,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;AAClD,YAAA,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC;SAC/B;IACH,CAAC;+EAAC;uGAnCS,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCvC,oyBA2BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDKY,eAAe,sEAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,2BAA2B,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAMnF,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;+BACE,qBAAqB,EAAA,OAAA,EACtB,CAAC,eAAe,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,eAAe,CAAC,EAAA,IAAA,EAEzF;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,QAAA,EAAA,oyBAAA,EAAA;;;AE7BI,MAAM,0BAA0B,GAAG,OAAoB;AAC5D,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,SAAS,EAAE;AACZ,CAAA,CAAC;;ACVF;;;AAGG;;ACHH;;;AAGG;MAuBU,uBAAuB,CAAA;IACzB,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAuB;IAE5B,KAAK,GAAG,QAAQ,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;IACtE,SAAS,GAAG,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,kCAAA,CAAoC,CAAC;IAClE,WAAW,GAAG,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,iCAAA,CAAmC,CAAC;IAC1D,IAAI,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,IAAI,EAAW,CAAC,KAAK;6EAAC;IAClD,QAAQ,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,IAAI,EAAW,CAAC,IAAI;iFAAC;AACrD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE;oFAAC;AAC9D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAC1C,MAAM,IAAI,GAAI,IAAI,CAAC,IAAI,EAAW,CAAC,IAAI,IAAI,EAAE;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;AAC3C,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;IAC9B,CAAC;iFAAC;IACiB,iBAAiB,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE;0FAAC;IACvD,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;AACjC,IAAA,WAAW;AAEA,IAAA,cAAc,GAAG,CAAC,IAAa,KAAW,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;IAE7F,WAAW,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;IAChC;AAEU,IAAA,MAAM,IAAI,GAAA;QAClB,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACnE;uGA9BW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,olBC1BpC,+rCA4CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzBY,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,iEAAE,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAOlD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;+BACE,kBAAkB,EAAA,OAAA,EACnB,CAAC,iBAAiB,EAAE,eAAe,EAAE,eAAe,CAAC,EAAA,IAAA,EAExD;AACJ,wBAAA,KAAK,EAAE,kDAAkD;AACzD,wBAAA,kBAAkB,EAAE;AACrB,qBAAA,EAAA,QAAA,EAAA,+rCAAA,EAAA;;;AEjBH;AACO,MAAM,cAAc,GAAG,CAAC,OAA4B,KAAyB;IAClF,OAAO;AACL,QAAA,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE,OAAO,EAAE;KACtE;AACH,CAAC;;ACZD;;;AAGG;;ACHH;;;AAGG;MA2BU,4BAA4B,CAAA;IAC9B,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAoC;AAEzC,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACpD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAmB;AAC9C,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS;IACvD,CAAC;2FAAC;uGARS,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZ7B;;;;;;;;;;GAUT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAXS,iBAAiB,yRAAE,2BAA2B,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAa7C,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAfxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;AACzD,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA;AACF,iBAAA;;;ACtBD,MAAM,kBAAkB,GAAG,CAAC,oBAAoB,EAAE,eAAe,EAAE,eAAe,CAAU;AAE5F;MACa,mBAAmB,GAAG,CACjC,UAA4C,MACnB;IACzB,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,KAAK;QACrC,IAAI;AACJ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,OAAO,EAAE;AACV,KAAA,CAAC;AACH,CAAA;;AClBD;;;AAGG;MAcU,6BAA6B,CAAA;AACvB,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;IACxC,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAO;IACd,IAAI,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,IAAI,EAAc,CAAC,KAAK;6EAAC;AAEnD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;;QAExB,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YACtC,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC;QACrD;AACA,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;IAC5D,CAAC;kFAAC;uGAdS,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,igBAL9B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKD,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE;AAChB;AACF,iBAAA;;;ACTD;AACO,MAAM,oBAAoB,GAAG,MAA0B;IAC5D,OAAO;QACL,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B,EAAE;KACnE;AACH,CAAC;;ACZD;;;AAGG;;ACHH;;;AAGG;MAmBU,uBAAuB,CAAA;IACzB,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAO;AAEZ,IAAA,KAAK,GAAG,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAU;6EAAC;AAC1C,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;AACpC,YAAA,OAAO,GAAG,CAAC,QAAQ,KAAK,OAAO,GAAG,GAAG,GAAG,SAAS;QACnD;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,SAAS;QAClB;IACF,CAAC;gFAAC;IACiB,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,SAAS;mFAAC;AACzD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,IAAI,EAAE;AAC3C,QAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;IACzD,CAAC;iFAAC;AACiB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;iFAAC;uGApBlE,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBpC,8hBAiBA,EAAA,MAAA,EAAA,CAAA,gCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHY,eAAe,sEAAE,2BAA2B,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAQ3C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EACnB,CAAC,eAAe,EAAE,2BAA2B,CAAC,EAAA,QAAA,EAAA,8hBAAA,EAAA,MAAA,EAAA,CAAA,gCAAA,CAAA,EAAA;;;AEPzD;AACO,MAAM,cAAc,GAAG,MAA0B;IACtD,OAAO;QACL,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE;KAC7D;AACH,CAAC;;ACZD;;;AAGG;;ACHH;;;AAGG;MAwBU,wBAAwB,CAAA;IAC1B,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAO;IAEZ,KAAK,GAAG,QAAQ,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;IACtE,SAAS,GAAG,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,kDAAA,CAAoD,CAAC;IAClF,WAAW,GAAG,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,iCAAA,CAAmC,CAAC;IACnE,aAAa,GAAG,CAAC,CACzB,MAAM,SAAS,CAAA,CAAA,0DAAA,CAA4D,CAC5E;IACkB,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAW;8EAAC;IAC5C,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;AACxB,IAAA,YAAY,GAAG,SAAS,CAAC,QAAQ,CAA+B,eAAe;qFAAC;AACzF,IAAA,WAAW;IAEnB,WAAW,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;IAChC;AAEU,IAAA,MAAM,IAAI,GAAA;QAClB,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACnE;IAEU,QAAQ,GAAA;AAChB,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;QACvE,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACxC,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW;QAC3B,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;IAC1B;IAEQ,GAAG,GAAA;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,IAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACpF,CAAC,IAAI,CAAC,MAAM,CAAC;IAChB;AAEQ,IAAA,cAAc,CAAC,KAAa,EAAA;QAClC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA,CAAA,EAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK;IAC5E;uGA5CW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,okBC3BrC,qrDAmDA,EAAA,MAAA,EAAA,CAAA,mMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5BY,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,2BAA2B,kHAAE,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAI5D,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,WACpB,CAAC,eAAe,EAAE,2BAA2B,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,qrDAAA,EAAA,MAAA,EAAA,CAAA,mMAAA,CAAA,EAAA;0VAiBS,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEjClG;AACO,MAAM,eAAe,GAAG,MAA0B;IACvD,OAAO;QACL,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE;KAC/D;AACH,CAAC;;ACZD;;;AAGG;;ACaH,MAAM,uBAAuB,GAAG,6DAA6D;AAE7F;AACA,MAAM,kBAAkB,GAAG,CAAC,IAAgB,KAAU;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnC,IAAA,IAAI,UAAU,EAAE,IAAI,KAAK,WAAW,EAAE;QACpC;IACF;IAEA,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,SAAS,EAAE,IAAI,KAAK,MAAM,EAAE;QAC9B;IACF;IAEA,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAC3D,IAAI,CAAC,KAAK,EAAE;QACV;IACF;AAEA,IAAA,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACxD,IAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACpB,QAAA,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE;IAC7B;AACA,IAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;AAEA,IAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAClB,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AAC3C,KAAA,CAAC;AACJ,CAAC;AAED;AACO,MAAM,qBAAqB,GAAG,MAAyC,IAAI,IAAG;IACnF,MAAM,kBAAkB,GAAwB,EAAE;IAClD,MAAM,mBAAmB,GAAyB,EAAE;AACpD,IAAA,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAA8B;AACpE,IAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAsB;AAEpD,IAAA,MAAM,OAAO,GAAG,CAAC,MAAc,KAAU;AACvC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpC,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;gBAC/B,kBAAkB,CAAC,KAAK,CAAC;YAC3B;AAEA,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACtC,gBAAA,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YAChC;AAAO,iBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE;AAC9C,gBAAA,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC/B,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;gBAEnD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAChC,gBAAA,KAAK,EAAE;gBACP;YACF;AAAO,iBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;gBACtC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;gBAE3C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAChC,gBAAA,KAAK,EAAE;YACT;AAEA,YAAA,IAAI,UAAU,IAAI,KAAK,EAAE;gBACvB,OAAO,CAAC,KAAe,CAAC;YAC1B;QACF;AACF,IAAA,CAAC;IAED,OAAO,CAAC,IAAI,CAAC;;AAGb,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAC/D,QAAA,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACrD,kBAAkB,CAAC,KAAK,GAAG,CAAA,EAAG,KAAK,GAAG,CAAC,EAAE;IAC3C;;AAGA,IAAA,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE;QAC1C,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;QAC3E,IAAI,kBAAkB,EAAE;AACtB,YAAA,SAAS,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK;QAC5C;IACF;AAEA,IAAA,MAAM,IAAI,GAAmB;AAC3B,QAAA,GAAG,IAAI;AACP,QAAA,UAAU,EAAE;AACV,YAAA,mBAAmB,EAAE,sBAAsB;AAC3C,YAAA,WAAW,EAAE;AACd;KACF;AAED,IAAA,IAAI,mBAAmB,CAAC,MAAM,EAAE;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAC1E;AACA,IAAA,OAAO,IAAI;AACb,CAAC;;ACtFD;;;;;;;;;;;;;;;;;AAiBG;MACU,iBAAiB,CAAA;IACX,OAAO,GAAwB,EAAE;IAC1C,KAAK,GAAkB,EAAE;AACzB,IAAA,SAAS,GAAG,IAAI,GAAG,EAAuB;AAC1C,IAAA,UAAU,GAAG,IAAI,GAAG,EAAuB;AAC3C,IAAA,WAAW;AAEnB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;aACzC,gBAAgB,CAAC,cAAc,EAAE;aACjC,gBAAgB,CAAC,eAAe,EAAE;AAClC,aAAA,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;AAChF,aAAA,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;AACrD,aAAA,iBAAiB,CAAC,0BAA0B,EAAE,CAAC;IACpD;AAEA;;;;;AAKG;IACH,oBAAoB,CAAC,MAAqB,EAAE,OAA8B,EAAA;QACxE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;AACH,IAAA,iBAAiB,CAAC,UAAuC,EAAA;QACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC9B,YAAA,UAAU,GAAG,CAAC,UAAU,CAAC;QAC3B;AACA,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;QAChD;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,SAA8B,EAAA;AAC7C,QAAA,IAAI,SAAS,CAAC,OAAO,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;QACzC;AACA,QAAA,IAAI,SAAS,CAAC,KAAK,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;QACrC;AACA,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE;AACvB,YAAA,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE;gBACpC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACjC;QACF;AACA,QAAA,IAAI,SAAS,CAAC,UAAU,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC;QAC9C;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACH,IAAA,kBAAkB,CAAC,WAAmC,EAAA;AACpD,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACH,IAAA,aAAa,CACX,IAAwB,EAAA;AAExB,QAAA,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;AAEhF,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO;YAC7E,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAgB,EAAE,OAAO,CAAC;QAC5C;AAEA,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC7C;AAEA;;AAEG;IACH,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;IACnB;AAEA;;AAEG;IACH,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA;;AAEG;IACH,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;IACzB;AACD;AAEM,MAAM,qBAAqB,GAAG,MAAyB,IAAI,iBAAiB;;AC/JnF;;;AAGG;AAGH;MAIa,2BAA2B,CAAA;AAC7B,IAAA,QAAQ,GAAG,MAAM,CAAmB,WAAW,CAAC;;;IAGhD,QAAQ,GAAG,KAAK,CAAS,QAAQ,gFAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;uGAJjE,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACTD;;;AAGG;AAcH;;;;;;;;AAQG;AACI,MAAM,aAAa,GAAG,CAAO,OAAmC,KAAe;AACpF,IAAA,MAAM,YAAY,GAAG,MAAM,CAAI,OAAO,CAAC,OAAO;qFAAC;AAE/C,IAAA,MAAM,CAAC,OAAM,SAAS,KAAG;AACvB,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE;QAE/B,IAAI,SAAS,GAAG,KAAK;QACrB,SAAS,CAAC,YAAW;YACnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAC1B;AACF,QAAA,CAAC,CAAC;QAEF,SAAS,CAAC,OAAO,SAAS,GAAG,IAAI,CAAC,CAAC;AACrC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,YAAY,CAAC,UAAU,EAAE;AAClC;AAEA;;;;;;AAMG;AACI,MAAM,eAAe,GAAG,CAC7B,MAAiB,EACjB,QAAgB,EAChB,0BAA0B,GAAG,IAAI,KACpB;AACb,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE;qFAAC;IACrC,IAAI,WAAW,GAAG,CAAC;IACnB,IAAI,KAAK,GAAyC,IAAI;IACtD,IAAI,eAAe,GAAG,KAAK;IAE3B,MAAM,CAAC,SAAS,IAAG;AACjB,QAAA,MAAM,KAAK,GAAG,MAAM,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAEtB,QAAA,IAAI,CAAC,eAAe,IAAI,0BAA0B,EAAE;YAClD,eAAe,GAAG,IAAI;AACtB,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YACvB;QACF;AAEA,QAAA,IAAI,GAAG,GAAG,WAAW,IAAI,QAAQ,EAAE;AACjC,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YACvB,WAAW,GAAG,GAAG;YACjB,IAAI,KAAK,EAAE;gBACT,YAAY,CAAC,KAAK,CAAC;gBACnB,KAAK,GAAG,IAAI;YACd;QACF;aAAO;AACL,YAAA,KAAK,KAAK,UAAU,CAClB,MAAK;AACH,gBAAA,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AAC1B,gBAAA,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;gBACxB,KAAK,GAAG,IAAI;YACd,CAAC,EACD,QAAQ,IAAI,GAAG,GAAG,WAAW,CAAC,CAC/B;QACH;QAEA,SAAS,CAAC,MAAK;YACb,IAAI,KAAK,EAAE;gBACT,YAAY,CAAC,KAAK,CAAC;gBACnB,KAAK,GAAG,IAAI;YACd;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,YAAY,CAAC,UAAU,EAAE;AAClC;;ACpGA;;;AAGG;AAsBH;;;;;;;;;;;AAWG;MAcU,mBAAmB,CAAA;AACtB,IAAA,OAAO,SAAS,GAAG,CAAC;AAE5B;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAAC,EAAE;iFAAC;AAC7B;;AAEG;AACM,IAAA,OAAO,GAAG,KAAK;2FAAqB;;AAEpC,IAAA,SAAS,GAAG,KAAK;6FAAwB;AAClD;;;;AAIG;IACM,KAAK,GAAG,KAAK,CAAC,KAAK,6EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;IAGrD,cAAc,GAAG,MAAM,EAA+B;AAErD,IAAA,MAAM,GAAG,CAAA,cAAA,EAAiB,mBAAmB,CAAC,SAAS,EAAE,EAAE;AAElD,IAAA,MAAM,GAAG,eAAe,CACzC,aAAa,CAAC;QACZ,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC;AACjF,QAAA,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC;AAC5E,QAAA,OAAO,EAAE;KACV,CAAC,EACF,EAAE,CACH;IAEkB,aAAa,GAAG,YAAY,CAAC,2BAA2B;sFAAC;IACzD,mBAAmB,GAAG,eAAe,CAAC,2BAA2B;4FAAC;;AAG5E,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAA4B;QAC/C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AAC3C,YAAA,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACjD;QACA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AACjD,YAAA,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACjD;AACA,QAAA,OAAO,GAAG;IACZ,CAAC;kFAAC;;AAGO,IAAA,IAAI,GAAG,QAAQ,CAAqB,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;6EAAC;AAEpE,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,iBAAiB,EAAE;sFAAC;AACvE,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;QACpC,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7C,YAAA,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE;AACvC,YAAA,gBAAgB,EAAE,OAAO,CAAC,mBAAmB;SAC9C;IACH,CAAC;+EAAC;AAEM,IAAA,MAAM,aAAa,CACzB,EAAU,EACV,SAAgD,EAAA;QAEhD,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,OAAO,SAAS;QAClB;QACA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;AAClC,QAAA,OAAO,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;IACpC;uGAxEW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAFnB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,8DAsCtB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EADpC,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrF7E,glKAwKA,EAAA,MAAA,EAAA,CAAA,+DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjIY,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,2BAA2B,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;2FAWpF,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,QAAQ,CAAC,aASrF,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,mBAAqB,EAAE,CAAC,EAAA,QAAA,EAAA,glKAAA,EAAA,MAAA,EAAA,CAAA,+DAAA,CAAA,EAAA;AAqC/B,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,2BAA2B,wGAClB,2BAA2B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEtFtF;;;AAGG;;ACHH;;;AAGG;;ACHH;;AAEG;;"}