@lifecorner/angular-ui-kit 3.4.1 → 3.5.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 (340) hide show
  1. package/README.md +12 -2
  2. package/fesm2022/lifecorner-angular-ui-kit-accordion.mjs +454 -0
  3. package/fesm2022/lifecorner-angular-ui-kit-accordion.mjs.map +1 -0
  4. package/fesm2022/lifecorner-angular-ui-kit-alert.mjs +297 -0
  5. package/fesm2022/lifecorner-angular-ui-kit-alert.mjs.map +1 -0
  6. package/fesm2022/lifecorner-angular-ui-kit-app-shell.mjs +190 -0
  7. package/fesm2022/lifecorner-angular-ui-kit-app-shell.mjs.map +1 -0
  8. package/fesm2022/lifecorner-angular-ui-kit-area-chart.mjs +446 -0
  9. package/fesm2022/lifecorner-angular-ui-kit-area-chart.mjs.map +1 -0
  10. package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs +158 -0
  11. package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs.map +1 -0
  12. package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs +216 -0
  13. package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs.map +1 -0
  14. package/fesm2022/lifecorner-angular-ui-kit-badge.mjs +121 -0
  15. package/fesm2022/lifecorner-angular-ui-kit-badge.mjs.map +1 -0
  16. package/fesm2022/lifecorner-angular-ui-kit-bar-chart.mjs +360 -0
  17. package/fesm2022/lifecorner-angular-ui-kit-bar-chart.mjs.map +1 -0
  18. package/fesm2022/lifecorner-angular-ui-kit-bottom-nav.mjs +344 -0
  19. package/fesm2022/lifecorner-angular-ui-kit-bottom-nav.mjs.map +1 -0
  20. package/fesm2022/lifecorner-angular-ui-kit-breadcrumbs.mjs +191 -0
  21. package/fesm2022/lifecorner-angular-ui-kit-breadcrumbs.mjs.map +1 -0
  22. package/fesm2022/lifecorner-angular-ui-kit-button.mjs +423 -0
  23. package/fesm2022/lifecorner-angular-ui-kit-button.mjs.map +1 -0
  24. package/fesm2022/lifecorner-angular-ui-kit-calendar.mjs +368 -0
  25. package/fesm2022/lifecorner-angular-ui-kit-calendar.mjs.map +1 -0
  26. package/fesm2022/lifecorner-angular-ui-kit-callout.mjs +203 -0
  27. package/fesm2022/lifecorner-angular-ui-kit-callout.mjs.map +1 -0
  28. package/fesm2022/lifecorner-angular-ui-kit-card.mjs +323 -0
  29. package/fesm2022/lifecorner-angular-ui-kit-card.mjs.map +1 -0
  30. package/fesm2022/lifecorner-angular-ui-kit-chat.mjs +790 -0
  31. package/fesm2022/lifecorner-angular-ui-kit-chat.mjs.map +1 -0
  32. package/fesm2022/lifecorner-angular-ui-kit-checkbox.mjs +325 -0
  33. package/fesm2022/lifecorner-angular-ui-kit-checkbox.mjs.map +1 -0
  34. package/fesm2022/lifecorner-angular-ui-kit-chip.mjs +214 -0
  35. package/fesm2022/lifecorner-angular-ui-kit-chip.mjs.map +1 -0
  36. package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs +375 -0
  37. package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs.map +1 -0
  38. package/fesm2022/lifecorner-angular-ui-kit-code-block.mjs +518 -0
  39. package/fesm2022/lifecorner-angular-ui-kit-code-block.mjs.map +1 -0
  40. package/fesm2022/lifecorner-angular-ui-kit-color-picker.mjs +278 -0
  41. package/fesm2022/lifecorner-angular-ui-kit-color-picker.mjs.map +1 -0
  42. package/fesm2022/lifecorner-angular-ui-kit-combobox.mjs +688 -0
  43. package/fesm2022/lifecorner-angular-ui-kit-combobox.mjs.map +1 -0
  44. package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs +494 -0
  45. package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs.map +1 -0
  46. package/fesm2022/lifecorner-angular-ui-kit-container.mjs +103 -0
  47. package/fesm2022/lifecorner-angular-ui-kit-container.mjs.map +1 -0
  48. package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs +308 -0
  49. package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs.map +1 -0
  50. package/fesm2022/lifecorner-angular-ui-kit-date-range-picker.mjs +466 -0
  51. package/fesm2022/lifecorner-angular-ui-kit-date-range-picker.mjs.map +1 -0
  52. package/fesm2022/lifecorner-angular-ui-kit-datepicker.mjs +810 -0
  53. package/fesm2022/lifecorner-angular-ui-kit-datepicker.mjs.map +1 -0
  54. package/fesm2022/lifecorner-angular-ui-kit-dependency-viewer.mjs +1761 -0
  55. package/fesm2022/lifecorner-angular-ui-kit-dependency-viewer.mjs.map +1 -0
  56. package/fesm2022/lifecorner-angular-ui-kit-description-list.mjs +165 -0
  57. package/fesm2022/lifecorner-angular-ui-kit-description-list.mjs.map +1 -0
  58. package/fesm2022/lifecorner-angular-ui-kit-diff-viewer.mjs +356 -0
  59. package/fesm2022/lifecorner-angular-ui-kit-diff-viewer.mjs.map +1 -0
  60. package/fesm2022/lifecorner-angular-ui-kit-divider.mjs +119 -0
  61. package/fesm2022/lifecorner-angular-ui-kit-divider.mjs.map +1 -0
  62. package/fesm2022/lifecorner-angular-ui-kit-document-viewer.mjs +762 -0
  63. package/fesm2022/lifecorner-angular-ui-kit-document-viewer.mjs.map +1 -0
  64. package/fesm2022/lifecorner-angular-ui-kit-donut-chart.mjs +255 -0
  65. package/fesm2022/lifecorner-angular-ui-kit-donut-chart.mjs.map +1 -0
  66. package/fesm2022/lifecorner-angular-ui-kit-drawer.mjs +308 -0
  67. package/fesm2022/lifecorner-angular-ui-kit-drawer.mjs.map +1 -0
  68. package/fesm2022/lifecorner-angular-ui-kit-email-input.mjs +519 -0
  69. package/fesm2022/lifecorner-angular-ui-kit-email-input.mjs.map +1 -0
  70. package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs +143 -0
  71. package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs.map +1 -0
  72. package/fesm2022/lifecorner-angular-ui-kit-error-display.mjs +306 -0
  73. package/fesm2022/lifecorner-angular-ui-kit-error-display.mjs.map +1 -0
  74. package/fesm2022/lifecorner-angular-ui-kit-field-group.mjs +154 -0
  75. package/fesm2022/lifecorner-angular-ui-kit-field-group.mjs.map +1 -0
  76. package/fesm2022/lifecorner-angular-ui-kit-file-upload.mjs +281 -0
  77. package/fesm2022/lifecorner-angular-ui-kit-file-upload.mjs.map +1 -0
  78. package/fesm2022/lifecorner-angular-ui-kit-filter-bar.mjs +258 -0
  79. package/fesm2022/lifecorner-angular-ui-kit-filter-bar.mjs.map +1 -0
  80. package/fesm2022/lifecorner-angular-ui-kit-footer.mjs +200 -0
  81. package/fesm2022/lifecorner-angular-ui-kit-footer.mjs.map +1 -0
  82. package/fesm2022/lifecorner-angular-ui-kit-funnel-chart.mjs +292 -0
  83. package/fesm2022/lifecorner-angular-ui-kit-funnel-chart.mjs.map +1 -0
  84. package/fesm2022/lifecorner-angular-ui-kit-gallery.mjs +563 -0
  85. package/fesm2022/lifecorner-angular-ui-kit-gallery.mjs.map +1 -0
  86. package/fesm2022/lifecorner-angular-ui-kit-gantt-chart.mjs +314 -0
  87. package/fesm2022/lifecorner-angular-ui-kit-gantt-chart.mjs.map +1 -0
  88. package/fesm2022/lifecorner-angular-ui-kit-gauge.mjs +265 -0
  89. package/fesm2022/lifecorner-angular-ui-kit-gauge.mjs.map +1 -0
  90. package/fesm2022/lifecorner-angular-ui-kit-header.mjs +955 -0
  91. package/fesm2022/lifecorner-angular-ui-kit-header.mjs.map +1 -0
  92. package/fesm2022/lifecorner-angular-ui-kit-heatmap.mjs +305 -0
  93. package/fesm2022/lifecorner-angular-ui-kit-heatmap.mjs.map +1 -0
  94. package/fesm2022/lifecorner-angular-ui-kit-hero.mjs +168 -0
  95. package/fesm2022/lifecorner-angular-ui-kit-hero.mjs.map +1 -0
  96. package/fesm2022/lifecorner-angular-ui-kit-icon-names.mjs +9 -0
  97. package/fesm2022/lifecorner-angular-ui-kit-icon-names.mjs.map +1 -0
  98. package/fesm2022/lifecorner-angular-ui-kit-icon.mjs +1026 -0
  99. package/fesm2022/lifecorner-angular-ui-kit-icon.mjs.map +1 -0
  100. package/fesm2022/lifecorner-angular-ui-kit-input.mjs +595 -0
  101. package/fesm2022/lifecorner-angular-ui-kit-input.mjs.map +1 -0
  102. package/fesm2022/lifecorner-angular-ui-kit-internal-chart.mjs +105 -0
  103. package/fesm2022/lifecorner-angular-ui-kit-internal-chart.mjs.map +1 -0
  104. package/fesm2022/lifecorner-angular-ui-kit-internal-overlay.mjs +50 -0
  105. package/fesm2022/lifecorner-angular-ui-kit-internal-overlay.mjs.map +1 -0
  106. package/fesm2022/lifecorner-angular-ui-kit-internal-url.mjs +22 -0
  107. package/fesm2022/lifecorner-angular-ui-kit-internal-url.mjs.map +1 -0
  108. package/fesm2022/lifecorner-angular-ui-kit-kanban-board.mjs +319 -0
  109. package/fesm2022/lifecorner-angular-ui-kit-kanban-board.mjs.map +1 -0
  110. package/fesm2022/lifecorner-angular-ui-kit-line-chart.mjs +413 -0
  111. package/fesm2022/lifecorner-angular-ui-kit-line-chart.mjs.map +1 -0
  112. package/fesm2022/lifecorner-angular-ui-kit-list.mjs +338 -0
  113. package/fesm2022/lifecorner-angular-ui-kit-list.mjs.map +1 -0
  114. package/fesm2022/lifecorner-angular-ui-kit-log-viewer.mjs +813 -0
  115. package/fesm2022/lifecorner-angular-ui-kit-log-viewer.mjs.map +1 -0
  116. package/fesm2022/lifecorner-angular-ui-kit-logo.mjs +226 -0
  117. package/fesm2022/lifecorner-angular-ui-kit-logo.mjs.map +1 -0
  118. package/fesm2022/lifecorner-angular-ui-kit-markdown.mjs +756 -0
  119. package/fesm2022/lifecorner-angular-ui-kit-markdown.mjs.map +1 -0
  120. package/fesm2022/lifecorner-angular-ui-kit-menu.mjs +321 -0
  121. package/fesm2022/lifecorner-angular-ui-kit-menu.mjs.map +1 -0
  122. package/fesm2022/lifecorner-angular-ui-kit-modal.mjs +329 -0
  123. package/fesm2022/lifecorner-angular-ui-kit-modal.mjs.map +1 -0
  124. package/fesm2022/lifecorner-angular-ui-kit-models.mjs +0 -0
  125. package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs +419 -0
  126. package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs.map +1 -0
  127. package/fesm2022/lifecorner-angular-ui-kit-notification-center.mjs +644 -0
  128. package/fesm2022/lifecorner-angular-ui-kit-notification-center.mjs.map +1 -0
  129. package/fesm2022/lifecorner-angular-ui-kit-number-input.mjs +401 -0
  130. package/fesm2022/lifecorner-angular-ui-kit-number-input.mjs.map +1 -0
  131. package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs +266 -0
  132. package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs.map +1 -0
  133. package/fesm2022/lifecorner-angular-ui-kit-page-layout.mjs +127 -0
  134. package/fesm2022/lifecorner-angular-ui-kit-page-layout.mjs.map +1 -0
  135. package/fesm2022/lifecorner-angular-ui-kit-pagination.mjs +343 -0
  136. package/fesm2022/lifecorner-angular-ui-kit-pagination.mjs.map +1 -0
  137. package/fesm2022/lifecorner-angular-ui-kit-password-input.mjs +696 -0
  138. package/fesm2022/lifecorner-angular-ui-kit-password-input.mjs.map +1 -0
  139. package/fesm2022/lifecorner-angular-ui-kit-pie-chart.mjs +162 -0
  140. package/fesm2022/lifecorner-angular-ui-kit-pie-chart.mjs.map +1 -0
  141. package/fesm2022/lifecorner-angular-ui-kit-pipeline.mjs +159 -0
  142. package/fesm2022/lifecorner-angular-ui-kit-pipeline.mjs.map +1 -0
  143. package/fesm2022/lifecorner-angular-ui-kit-popover.mjs +190 -0
  144. package/fesm2022/lifecorner-angular-ui-kit-popover.mjs.map +1 -0
  145. package/fesm2022/lifecorner-angular-ui-kit-progress-bar.mjs +190 -0
  146. package/fesm2022/lifecorner-angular-ui-kit-progress-bar.mjs.map +1 -0
  147. package/fesm2022/lifecorner-angular-ui-kit-progress-ring.mjs +175 -0
  148. package/fesm2022/lifecorner-angular-ui-kit-progress-ring.mjs.map +1 -0
  149. package/fesm2022/lifecorner-angular-ui-kit-provider-button.mjs +255 -0
  150. package/fesm2022/lifecorner-angular-ui-kit-provider-button.mjs.map +1 -0
  151. package/fesm2022/lifecorner-angular-ui-kit-radar-chart.mjs +309 -0
  152. package/fesm2022/lifecorner-angular-ui-kit-radar-chart.mjs.map +1 -0
  153. package/fesm2022/lifecorner-angular-ui-kit-radio.mjs +708 -0
  154. package/fesm2022/lifecorner-angular-ui-kit-radio.mjs.map +1 -0
  155. package/fesm2022/lifecorner-angular-ui-kit-rating.mjs +327 -0
  156. package/fesm2022/lifecorner-angular-ui-kit-rating.mjs.map +1 -0
  157. package/fesm2022/lifecorner-angular-ui-kit-rich-text-editor.mjs +718 -0
  158. package/fesm2022/lifecorner-angular-ui-kit-rich-text-editor.mjs.map +1 -0
  159. package/fesm2022/lifecorner-angular-ui-kit-scatter-plot.mjs +415 -0
  160. package/fesm2022/lifecorner-angular-ui-kit-scatter-plot.mjs.map +1 -0
  161. package/fesm2022/lifecorner-angular-ui-kit-search-input.mjs +290 -0
  162. package/fesm2022/lifecorner-angular-ui-kit-search-input.mjs.map +1 -0
  163. package/fesm2022/lifecorner-angular-ui-kit-section.mjs +127 -0
  164. package/fesm2022/lifecorner-angular-ui-kit-section.mjs.map +1 -0
  165. package/fesm2022/lifecorner-angular-ui-kit-select.mjs +650 -0
  166. package/fesm2022/lifecorner-angular-ui-kit-select.mjs.map +1 -0
  167. package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs +691 -0
  168. package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs.map +1 -0
  169. package/fesm2022/lifecorner-angular-ui-kit-skeleton.mjs +144 -0
  170. package/fesm2022/lifecorner-angular-ui-kit-skeleton.mjs.map +1 -0
  171. package/fesm2022/lifecorner-angular-ui-kit-slider.mjs +204 -0
  172. package/fesm2022/lifecorner-angular-ui-kit-slider.mjs.map +1 -0
  173. package/fesm2022/lifecorner-angular-ui-kit-spacer.mjs +73 -0
  174. package/fesm2022/lifecorner-angular-ui-kit-spacer.mjs.map +1 -0
  175. package/fesm2022/lifecorner-angular-ui-kit-sparkline.mjs +318 -0
  176. package/fesm2022/lifecorner-angular-ui-kit-sparkline.mjs.map +1 -0
  177. package/fesm2022/lifecorner-angular-ui-kit-spinner.mjs +95 -0
  178. package/fesm2022/lifecorner-angular-ui-kit-spinner.mjs.map +1 -0
  179. package/fesm2022/lifecorner-angular-ui-kit-split-pane.mjs +298 -0
  180. package/fesm2022/lifecorner-angular-ui-kit-split-pane.mjs.map +1 -0
  181. package/fesm2022/lifecorner-angular-ui-kit-stack.mjs +162 -0
  182. package/fesm2022/lifecorner-angular-ui-kit-stack.mjs.map +1 -0
  183. package/fesm2022/lifecorner-angular-ui-kit-stacked-bar-chart.mjs +412 -0
  184. package/fesm2022/lifecorner-angular-ui-kit-stacked-bar-chart.mjs.map +1 -0
  185. package/fesm2022/lifecorner-angular-ui-kit-stage-list.mjs +186 -0
  186. package/fesm2022/lifecorner-angular-ui-kit-stage-list.mjs.map +1 -0
  187. package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs +224 -0
  188. package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs.map +1 -0
  189. package/fesm2022/lifecorner-angular-ui-kit-status-dot.mjs +122 -0
  190. package/fesm2022/lifecorner-angular-ui-kit-status-dot.mjs.map +1 -0
  191. package/fesm2022/lifecorner-angular-ui-kit-stepper.mjs +209 -0
  192. package/fesm2022/lifecorner-angular-ui-kit-stepper.mjs.map +1 -0
  193. package/fesm2022/lifecorner-angular-ui-kit-switch.mjs +249 -0
  194. package/fesm2022/lifecorner-angular-ui-kit-switch.mjs.map +1 -0
  195. package/fesm2022/lifecorner-angular-ui-kit-table.mjs +1434 -0
  196. package/fesm2022/lifecorner-angular-ui-kit-table.mjs.map +1 -0
  197. package/fesm2022/lifecorner-angular-ui-kit-tabs.mjs +407 -0
  198. package/fesm2022/lifecorner-angular-ui-kit-tabs.mjs.map +1 -0
  199. package/fesm2022/lifecorner-angular-ui-kit-tag-input.mjs +380 -0
  200. package/fesm2022/lifecorner-angular-ui-kit-tag-input.mjs.map +1 -0
  201. package/fesm2022/lifecorner-angular-ui-kit-textarea.mjs +440 -0
  202. package/fesm2022/lifecorner-angular-ui-kit-textarea.mjs.map +1 -0
  203. package/fesm2022/lifecorner-angular-ui-kit-theme.mjs +145 -0
  204. package/fesm2022/lifecorner-angular-ui-kit-theme.mjs.map +1 -0
  205. package/fesm2022/lifecorner-angular-ui-kit-timeline.mjs +262 -0
  206. package/fesm2022/lifecorner-angular-ui-kit-timeline.mjs.map +1 -0
  207. package/fesm2022/lifecorner-angular-ui-kit-toast.mjs +352 -0
  208. package/fesm2022/lifecorner-angular-ui-kit-toast.mjs.map +1 -0
  209. package/fesm2022/lifecorner-angular-ui-kit-toggle-group.mjs +215 -0
  210. package/fesm2022/lifecorner-angular-ui-kit-toggle-group.mjs.map +1 -0
  211. package/fesm2022/lifecorner-angular-ui-kit-tokens.mjs +134 -0
  212. package/fesm2022/lifecorner-angular-ui-kit-tokens.mjs.map +1 -0
  213. package/fesm2022/lifecorner-angular-ui-kit-toolbar.mjs +225 -0
  214. package/fesm2022/lifecorner-angular-ui-kit-toolbar.mjs.map +1 -0
  215. package/fesm2022/lifecorner-angular-ui-kit-tooltip.mjs +386 -0
  216. package/fesm2022/lifecorner-angular-ui-kit-tooltip.mjs.map +1 -0
  217. package/fesm2022/lifecorner-angular-ui-kit-tree-view.mjs +509 -0
  218. package/fesm2022/lifecorner-angular-ui-kit-tree-view.mjs.map +1 -0
  219. package/fesm2022/lifecorner-angular-ui-kit-typography.mjs +209 -0
  220. package/fesm2022/lifecorner-angular-ui-kit-typography.mjs.map +1 -0
  221. package/fesm2022/lifecorner-angular-ui-kit-verification-code-input.mjs +365 -0
  222. package/fesm2022/lifecorner-angular-ui-kit-verification-code-input.mjs.map +1 -0
  223. package/fesm2022/lifecorner-angular-ui-kit-waterfall-chart.mjs +371 -0
  224. package/fesm2022/lifecorner-angular-ui-kit-waterfall-chart.mjs.map +1 -0
  225. package/fesm2022/lifecorner-angular-ui-kit.mjs +109 -38925
  226. package/package.json +449 -1
  227. package/types/lifecorner-angular-ui-kit-accordion.d.ts +239 -0
  228. package/types/lifecorner-angular-ui-kit-alert.d.ts +189 -0
  229. package/types/lifecorner-angular-ui-kit-app-shell.d.ts +148 -0
  230. package/types/lifecorner-angular-ui-kit-area-chart.d.ts +180 -0
  231. package/types/lifecorner-angular-ui-kit-avatar-group.d.ts +62 -0
  232. package/types/lifecorner-angular-ui-kit-avatar.d.ts +131 -0
  233. package/types/lifecorner-angular-ui-kit-badge.d.ts +59 -0
  234. package/types/lifecorner-angular-ui-kit-bar-chart.d.ts +157 -0
  235. package/types/lifecorner-angular-ui-kit-bottom-nav.d.ts +184 -0
  236. package/types/lifecorner-angular-ui-kit-breadcrumbs.d.ts +55 -0
  237. package/types/lifecorner-angular-ui-kit-button.d.ts +181 -0
  238. package/types/lifecorner-angular-ui-kit-calendar.d.ts +136 -0
  239. package/types/lifecorner-angular-ui-kit-callout.d.ts +77 -0
  240. package/types/lifecorner-angular-ui-kit-card.d.ts +213 -0
  241. package/types/lifecorner-angular-ui-kit-chat.d.ts +379 -0
  242. package/types/lifecorner-angular-ui-kit-checkbox.d.ts +116 -0
  243. package/types/lifecorner-angular-ui-kit-chip.d.ts +104 -0
  244. package/types/lifecorner-angular-ui-kit-choice-prompt.d.ts +186 -0
  245. package/types/lifecorner-angular-ui-kit-code-block.d.ts +85 -0
  246. package/types/lifecorner-angular-ui-kit-color-picker.d.ts +88 -0
  247. package/types/lifecorner-angular-ui-kit-combobox.d.ts +222 -0
  248. package/types/lifecorner-angular-ui-kit-confirm-dialog.d.ts +211 -0
  249. package/types/lifecorner-angular-ui-kit-container.d.ts +47 -0
  250. package/types/lifecorner-angular-ui-kit-copy-field.d.ts +89 -0
  251. package/types/lifecorner-angular-ui-kit-date-range-picker.d.ts +126 -0
  252. package/types/lifecorner-angular-ui-kit-datepicker.d.ts +363 -0
  253. package/types/lifecorner-angular-ui-kit-dependency-viewer.d.ts +568 -0
  254. package/types/lifecorner-angular-ui-kit-description-list.d.ts +137 -0
  255. package/types/lifecorner-angular-ui-kit-diff-viewer.d.ts +93 -0
  256. package/types/lifecorner-angular-ui-kit-divider.d.ts +66 -0
  257. package/types/lifecorner-angular-ui-kit-document-viewer.d.ts +256 -0
  258. package/types/lifecorner-angular-ui-kit-donut-chart.d.ts +92 -0
  259. package/types/lifecorner-angular-ui-kit-drawer.d.ts +124 -0
  260. package/types/lifecorner-angular-ui-kit-email-input.d.ts +292 -0
  261. package/types/lifecorner-angular-ui-kit-empty-state.d.ts +81 -0
  262. package/types/lifecorner-angular-ui-kit-error-display.d.ts +157 -0
  263. package/types/lifecorner-angular-ui-kit-field-group.d.ts +69 -0
  264. package/types/lifecorner-angular-ui-kit-file-upload.d.ts +122 -0
  265. package/types/lifecorner-angular-ui-kit-filter-bar.d.ts +116 -0
  266. package/types/lifecorner-angular-ui-kit-footer.d.ts +97 -0
  267. package/types/lifecorner-angular-ui-kit-funnel-chart.d.ts +97 -0
  268. package/types/lifecorner-angular-ui-kit-gallery.d.ts +240 -0
  269. package/types/lifecorner-angular-ui-kit-gantt-chart.d.ts +133 -0
  270. package/types/lifecorner-angular-ui-kit-gauge.d.ts +94 -0
  271. package/types/lifecorner-angular-ui-kit-header.d.ts +496 -0
  272. package/types/lifecorner-angular-ui-kit-heatmap.d.ts +126 -0
  273. package/types/lifecorner-angular-ui-kit-hero.d.ts +121 -0
  274. package/types/lifecorner-angular-ui-kit-icon-names.d.ts +21 -0
  275. package/types/lifecorner-angular-ui-kit-icon.d.ts +260 -0
  276. package/types/lifecorner-angular-ui-kit-input.d.ts +346 -0
  277. package/types/lifecorner-angular-ui-kit-internal-chart.d.ts +86 -0
  278. package/types/lifecorner-angular-ui-kit-internal-overlay.d.ts +31 -0
  279. package/types/lifecorner-angular-ui-kit-internal-url.d.ts +22 -0
  280. package/types/lifecorner-angular-ui-kit-kanban-board.d.ts +111 -0
  281. package/types/lifecorner-angular-ui-kit-line-chart.d.ts +186 -0
  282. package/types/lifecorner-angular-ui-kit-list.d.ts +215 -0
  283. package/types/lifecorner-angular-ui-kit-log-viewer.d.ts +355 -0
  284. package/types/lifecorner-angular-ui-kit-logo.d.ts +182 -0
  285. package/types/lifecorner-angular-ui-kit-markdown.d.ts +278 -0
  286. package/types/lifecorner-angular-ui-kit-menu.d.ts +152 -0
  287. package/types/lifecorner-angular-ui-kit-modal.d.ts +207 -0
  288. package/types/lifecorner-angular-ui-kit-models.d.ts +62 -0
  289. package/types/lifecorner-angular-ui-kit-next-step-card.d.ts +262 -0
  290. package/types/lifecorner-angular-ui-kit-notification-center.d.ts +237 -0
  291. package/types/lifecorner-angular-ui-kit-number-input.d.ts +126 -0
  292. package/types/lifecorner-angular-ui-kit-page-header.d.ts +178 -0
  293. package/types/lifecorner-angular-ui-kit-page-layout.d.ts +61 -0
  294. package/types/lifecorner-angular-ui-kit-pagination.d.ts +141 -0
  295. package/types/lifecorner-angular-ui-kit-password-input.d.ts +361 -0
  296. package/types/lifecorner-angular-ui-kit-pie-chart.d.ts +58 -0
  297. package/types/lifecorner-angular-ui-kit-pipeline.d.ts +89 -0
  298. package/types/lifecorner-angular-ui-kit-popover.d.ts +104 -0
  299. package/types/lifecorner-angular-ui-kit-progress-bar.d.ts +116 -0
  300. package/types/lifecorner-angular-ui-kit-progress-ring.d.ts +67 -0
  301. package/types/lifecorner-angular-ui-kit-provider-button.d.ts +137 -0
  302. package/types/lifecorner-angular-ui-kit-radar-chart.d.ts +113 -0
  303. package/types/lifecorner-angular-ui-kit-radio.d.ts +297 -0
  304. package/types/lifecorner-angular-ui-kit-rating.d.ts +115 -0
  305. package/types/lifecorner-angular-ui-kit-rich-text-editor.d.ts +226 -0
  306. package/types/lifecorner-angular-ui-kit-scatter-plot.d.ts +190 -0
  307. package/types/lifecorner-angular-ui-kit-search-input.d.ts +137 -0
  308. package/types/lifecorner-angular-ui-kit-section.d.ts +34 -0
  309. package/types/lifecorner-angular-ui-kit-select.d.ts +274 -0
  310. package/types/lifecorner-angular-ui-kit-sidenav.d.ts +367 -0
  311. package/types/lifecorner-angular-ui-kit-skeleton.d.ts +61 -0
  312. package/types/lifecorner-angular-ui-kit-slider.d.ts +79 -0
  313. package/types/lifecorner-angular-ui-kit-spacer.d.ts +27 -0
  314. package/types/lifecorner-angular-ui-kit-sparkline.d.ts +113 -0
  315. package/types/lifecorner-angular-ui-kit-spinner.d.ts +50 -0
  316. package/types/lifecorner-angular-ui-kit-split-pane.d.ts +131 -0
  317. package/types/lifecorner-angular-ui-kit-stack.d.ts +49 -0
  318. package/types/lifecorner-angular-ui-kit-stacked-bar-chart.d.ts +171 -0
  319. package/types/lifecorner-angular-ui-kit-stage-list.d.ts +69 -0
  320. package/types/lifecorner-angular-ui-kit-stat-trend.d.ts +62 -0
  321. package/types/lifecorner-angular-ui-kit-status-dot.d.ts +62 -0
  322. package/types/lifecorner-angular-ui-kit-stepper.d.ts +113 -0
  323. package/types/lifecorner-angular-ui-kit-switch.d.ts +141 -0
  324. package/types/lifecorner-angular-ui-kit-table.d.ts +632 -0
  325. package/types/lifecorner-angular-ui-kit-tabs.d.ts +196 -0
  326. package/types/lifecorner-angular-ui-kit-tag-input.d.ts +123 -0
  327. package/types/lifecorner-angular-ui-kit-textarea.d.ts +225 -0
  328. package/types/lifecorner-angular-ui-kit-theme.d.ts +91 -0
  329. package/types/lifecorner-angular-ui-kit-timeline.d.ts +162 -0
  330. package/types/lifecorner-angular-ui-kit-toast.d.ts +204 -0
  331. package/types/lifecorner-angular-ui-kit-toggle-group.d.ts +100 -0
  332. package/types/lifecorner-angular-ui-kit-tokens.d.ts +134 -0
  333. package/types/lifecorner-angular-ui-kit-toolbar.d.ts +120 -0
  334. package/types/lifecorner-angular-ui-kit-tooltip.d.ts +120 -0
  335. package/types/lifecorner-angular-ui-kit-tree-view.d.ts +231 -0
  336. package/types/lifecorner-angular-ui-kit-typography.d.ts +126 -0
  337. package/types/lifecorner-angular-ui-kit-verification-code-input.d.ts +187 -0
  338. package/types/lifecorner-angular-ui-kit-waterfall-chart.d.ts +163 -0
  339. package/types/lifecorner-angular-ui-kit.d.ts +109 -17401
  340. package/fesm2022/lifecorner-angular-ui-kit.mjs.map +0 -1
@@ -0,0 +1,756 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, ElementRef, SecurityContext, ViewEncapsulation, computed, effect, inject, input, output, signal, untracked } from "@angular/core";
3
+ import { DomSanitizer } from "@angular/platform-browser";
4
+ import { HttpClient } from "@angular/common/http";
5
+ import { CodeBlockComponent } from "@lifecorner/angular-ui-kit/code-block";
6
+ import { isSafeImageUrl, isSafeLinkUrl } from "@lifecorner/angular-ui-kit/internal/url";
7
+ const BLOCK_MARK = "\0";
8
+ const blockPlaceholder = (idx) => `${BLOCK_MARK}LCBLOCK${idx}${BLOCK_MARK}`;
9
+ const BLOCK_PLACEHOLDER = /\u0000LCBLOCK(\d+)\u0000/g;
10
+ let markdownInstances = 0;
11
+ var MarkdownComponent = class MarkdownComponent {
12
+ sanitizer = inject(DomSanitizer);
13
+ instanceId = ++markdownInstances;
14
+ http = inject(HttpClient);
15
+ host = inject(ElementRef);
16
+ httpSub;
17
+ fadeTimer;
18
+ scrollTimer;
19
+ mermaidApiPromise;
20
+ mermaidInitialized = false;
21
+ mermaidRenderRun = 0;
22
+ src = input(...ngDevMode ? [void 0, { debugName: "src" }] : /* istanbul ignore next */ []);
23
+ content = input(...ngDevMode ? [void 0, { debugName: "content" }] : /* istanbul ignore next */ []);
24
+ variant = input("default", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
25
+ linkTarget = input("_self", ...ngDevMode ? [{ debugName: "linkTarget" }] : /* istanbul ignore next */ []);
26
+ sanitize = input(true, ...ngDevMode ? [{ debugName: "sanitize" }] : /* istanbul ignore next */ []);
27
+ syntaxHighlight = input(true, ...ngDevMode ? [{ debugName: "syntaxHighlight" }] : /* istanbul ignore next */ []);
28
+ showHeadingAnchors = input(false, ...ngDevMode ? [{ debugName: "showHeadingAnchors" }] : /* istanbul ignore next */ []);
29
+ baseUrl = input(...ngDevMode ? [void 0, { debugName: "baseUrl" }] : /* istanbul ignore next */ []);
30
+ highlightChanges = input(false, ...ngDevMode ? [{ debugName: "highlightChanges" }] : /* istanbul ignore next */ []);
31
+ previousContent = input(...ngDevMode ? [void 0, { debugName: "previousContent" }] : /* istanbul ignore next */ []);
32
+ changeHighlightFadeMs = input(...ngDevMode ? [void 0, { debugName: "changeHighlightFadeMs" }] : /* istanbul ignore next */ []);
33
+ scrollToFirstChange = input(false, ...ngDevMode ? [{ debugName: "scrollToFirstChange" }] : /* istanbul ignore next */ []);
34
+ changedMarkerLabel = input("(geändert)", ...ngDevMode ? [{ debugName: "changedMarkerLabel" }] : /* istanbul ignore next */ []);
35
+ changedSummaryOneLabel = input("Abschnitt geändert", ...ngDevMode ? [{ debugName: "changedSummaryOneLabel" }] : /* istanbul ignore next */ []);
36
+ changedSummaryManyLabel = input("Abschnitte geändert", ...ngDevMode ? [{ debugName: "changedSummaryManyLabel" }] : /* istanbul ignore next */ []);
37
+ mermaidLoadingLabel = input("Rendering Mermaid diagram...", ...ngDevMode ? [{ debugName: "mermaidLoadingLabel" }] : /* istanbul ignore next */ []);
38
+ mermaidErrorLabel = input("Mermaid diagram could not be rendered.", ...ngDevMode ? [{ debugName: "mermaidErrorLabel" }] : /* istanbul ignore next */ []);
39
+ mermaidUnavailableLabel = input("Mermaid runtime is not available.", ...ngDevMode ? [{ debugName: "mermaidUnavailableLabel" }] : /* istanbul ignore next */ []);
40
+ linkClick = output();
41
+ rendered = output();
42
+ changesHighlighted = output();
43
+ resolvedMarkdown = signal("", ...ngDevMode ? [{ debugName: "resolvedMarkdown" }] : /* istanbul ignore next */ []);
44
+ parsed = computed(() => {
45
+ const md = this.resolvedMarkdown();
46
+ if (!md) return {
47
+ html: "",
48
+ blocks: [],
49
+ headings: []
50
+ };
51
+ return this.parseMarkdown(md);
52
+ }, ...ngDevMode ? [{ debugName: "parsed" }] : /* istanbul ignore next */ []);
53
+ highlightResult = computed(() => {
54
+ const { html } = this.parsed();
55
+ const prev = this.previousContent();
56
+ if (!html || !this.highlightChanges() || prev == null || prev === this.resolvedMarkdown()) return {
57
+ html,
58
+ count: 0
59
+ };
60
+ return this.applyChangeHighlights(html, prev);
61
+ }, ...ngDevMode ? [{ debugName: "highlightResult" }] : /* istanbul ignore next */ []);
62
+ changedCount = computed(() => this.highlightResult().count, ...ngDevMode ? [{ debugName: "changedCount" }] : /* istanbul ignore next */ []);
63
+ changeSummary = computed(() => {
64
+ const n = this.changedCount();
65
+ if (n <= 0) return "";
66
+ return `${n} ${n === 1 ? this.changedSummaryOneLabel() : this.changedSummaryManyLabel()}`;
67
+ }, ...ngDevMode ? [{ debugName: "changeSummary" }] : /* istanbul ignore next */ []);
68
+ highlightsFaded = signal(false, ...ngDevMode ? [{ debugName: "highlightsFaded" }] : /* istanbul ignore next */ []);
69
+ renderParts = computed(() => {
70
+ const html = this.highlightResult().html;
71
+ const { blocks } = this.parsed();
72
+ if (!html) return [];
73
+ if (this.syntaxHighlight() && blocks.length > 0) return this.splitIntoParts(html, blocks);
74
+ return [{
75
+ type: "html",
76
+ index: 0,
77
+ safeHtml: this.sanitizer.bypassSecurityTrustHtml(this.sanitizeHtml(html, { next: 0 }))
78
+ }];
79
+ }, ...ngDevMode ? [{ debugName: "renderParts" }] : /* istanbul ignore next */ []);
80
+ sanitizeHtml(html, cursor) {
81
+ const headings = this.headings();
82
+ if (!this.sanitize()) {
83
+ cursor.next += (html.match(/<h[1-6]\b/g) ?? []).length;
84
+ return html;
85
+ }
86
+ return (this.sanitizer.sanitize(SecurityContext.HTML, html) || "").replace(/<h([1-6])(\s[^>]*)?>/g, (tag, level, attrs = "") => {
87
+ const heading = headings[cursor.next++];
88
+ if (!heading || /\sid=/.test(attrs)) return tag;
89
+ return `<h${level} id="${heading.id}"${attrs}>`;
90
+ });
91
+ }
92
+ containerClasses = computed(() => {
93
+ let classes = `lc-markdown lc-markdown--${this.variant()}`;
94
+ if (this.highlightsFaded()) classes += " lc-markdown--faded";
95
+ return classes;
96
+ }, ...ngDevMode ? [{ debugName: "containerClasses" }] : /* istanbul ignore next */ []);
97
+ mermaidSvgs = signal({}, ...ngDevMode ? [{ debugName: "mermaidSvgs" }] : /* istanbul ignore next */ []);
98
+ mermaidErrors = signal({}, ...ngDevMode ? [{ debugName: "mermaidErrors" }] : /* istanbul ignore next */ []);
99
+ headings = computed(() => this.parsed().headings, ...ngDevMode ? [{ debugName: "headings" }] : /* istanbul ignore next */ []);
100
+ constructor() {
101
+ effect(() => {
102
+ const src = this.src();
103
+ if (src) this.loadFromUrl(src);
104
+ });
105
+ effect(() => {
106
+ const content = this.content();
107
+ if (content !== void 0) this.resolvedMarkdown.set(content);
108
+ });
109
+ effect(() => {
110
+ const h = this.headings();
111
+ untracked(() => this.rendered.emit({ headings: h }));
112
+ });
113
+ effect(() => {
114
+ this.renderMermaidParts(this.renderParts());
115
+ });
116
+ effect(() => {
117
+ const count = this.highlightResult().count;
118
+ untracked(() => this.onHighlightResult(count));
119
+ });
120
+ }
121
+ ngOnDestroy() {
122
+ this.httpSub?.unsubscribe();
123
+ clearTimeout(this.fadeTimer);
124
+ clearTimeout(this.scrollTimer);
125
+ }
126
+ onLinkClick(event) {
127
+ const anchor = event.target.closest("a");
128
+ if (anchor) this.linkClick.emit({
129
+ href: anchor.href,
130
+ event
131
+ });
132
+ }
133
+ onHighlightResult(count) {
134
+ clearTimeout(this.fadeTimer);
135
+ clearTimeout(this.scrollTimer);
136
+ this.highlightsFaded.set(false);
137
+ if (count <= 0) return;
138
+ this.changesHighlighted.emit({ changedBlocks: count });
139
+ const fadeMs = this.changeHighlightFadeMs();
140
+ if (fadeMs && fadeMs > 0) this.fadeTimer = setTimeout(() => this.highlightsFaded.set(true), fadeMs);
141
+ if (this.scrollToFirstChange()) this.scrollTimer = setTimeout(() => this.scrollToFirstChanged(), 0);
142
+ }
143
+ scrollToFirstChanged() {
144
+ if (typeof document === "undefined") return;
145
+ this.host.nativeElement.querySelector(".lc-markdown__block--changed")?.scrollIntoView({
146
+ behavior: "smooth",
147
+ block: "nearest"
148
+ });
149
+ }
150
+ applyChangeHighlights(html, prevMarkdown) {
151
+ if (typeof document === "undefined") return {
152
+ html,
153
+ count: 0
154
+ };
155
+ const prevKeys = this.collectBlockKeys(this.parseMarkdown(prevMarkdown).html);
156
+ const root = this.htmlToElement(html);
157
+ if (!root) return {
158
+ html,
159
+ count: 0
160
+ };
161
+ let count = 0;
162
+ const markIfChanged = (el) => {
163
+ const key = this.blockTextKey(el.textContent ?? "");
164
+ if (!key || prevKeys.has(key)) return;
165
+ el.classList.add("lc-markdown__block--changed");
166
+ const sr = document.createElement("span");
167
+ sr.className = "lc-markdown__sr-only";
168
+ sr.textContent = `${this.changedMarkerLabel()} `;
169
+ el.insertBefore(sr, el.firstChild);
170
+ count++;
171
+ };
172
+ this.eachLogicalBlock(root, markIfChanged);
173
+ return {
174
+ html: root.innerHTML,
175
+ count
176
+ };
177
+ }
178
+ collectBlockKeys(html) {
179
+ const keys = /* @__PURE__ */ new Set();
180
+ const root = this.htmlToElement(html);
181
+ if (!root) return keys;
182
+ this.eachLogicalBlock(root, (el) => {
183
+ const key = this.blockTextKey(el.textContent ?? "");
184
+ if (key) keys.add(key);
185
+ });
186
+ return keys;
187
+ }
188
+ eachLogicalBlock(root, visit) {
189
+ for (const node of Array.from(root.childNodes)) {
190
+ if (node.nodeType !== 1) continue;
191
+ const el = node;
192
+ const tag = el.tagName;
193
+ if (tag === "UL" || tag === "OL") {
194
+ for (const li of Array.from(el.children)) if (li.tagName === "LI") visit(li);
195
+ } else if (tag === "TABLE" || el.querySelector("table")) for (const tr of Array.from(el.querySelectorAll("tr"))) visit(tr);
196
+ else visit(el);
197
+ }
198
+ }
199
+ blockTextKey(text) {
200
+ return text.replace(/\s+/g, " ").trim().toLowerCase();
201
+ }
202
+ htmlToElement(html) {
203
+ if (typeof document === "undefined") return null;
204
+ const div = document.createElement("div");
205
+ div.innerHTML = html;
206
+ return div;
207
+ }
208
+ loadFromUrl(url) {
209
+ this.httpSub?.unsubscribe();
210
+ this.httpSub = this.http.get(url, { responseType: "text" }).subscribe({
211
+ next: (text) => this.resolvedMarkdown.set(text),
212
+ error: () => this.resolvedMarkdown.set(`*Failed to load ${url}*`)
213
+ });
214
+ }
215
+ splitIntoParts(html, blocks) {
216
+ const parts = [];
217
+ const regex = new RegExp(BLOCK_PLACEHOLDER.source, "g");
218
+ const cursor = { next: 0 };
219
+ let lastIndex = 0;
220
+ let partIndex = 0;
221
+ let match;
222
+ while ((match = regex.exec(html)) !== null) {
223
+ const before = html.slice(lastIndex, match.index);
224
+ if (before.trim()) parts.push({
225
+ type: "html",
226
+ index: partIndex++,
227
+ safeHtml: this.sanitizer.bypassSecurityTrustHtml(this.sanitizeHtml(before, cursor))
228
+ });
229
+ const block = blocks[parseInt(match[1], 10)];
230
+ lastIndex = match.index + match[0].length;
231
+ if (!block) continue;
232
+ if (block.kind === "mermaid") parts.push({
233
+ type: "mermaid",
234
+ index: partIndex++,
235
+ code: block.code
236
+ });
237
+ else parts.push({
238
+ type: "code",
239
+ index: partIndex++,
240
+ code: block.code,
241
+ lang: block.lang
242
+ });
243
+ }
244
+ const remaining = html.slice(lastIndex);
245
+ if (remaining.trim()) parts.push({
246
+ type: "html",
247
+ index: partIndex++,
248
+ safeHtml: this.sanitizer.bypassSecurityTrustHtml(this.sanitizeHtml(remaining, cursor))
249
+ });
250
+ return parts;
251
+ }
252
+ parseMarkdown(md) {
253
+ const blocks = [];
254
+ const headings = [];
255
+ const baseUrl = this.baseUrl();
256
+ const linkTarget = this.linkTarget();
257
+ const showAnchors = this.showHeadingAnchors();
258
+ let processed = md.replace(/\u0000/g, "").replace(/```(\w*)\n([\s\S]*?)```/g, (_match, lang, code) => {
259
+ const idx = blocks.length;
260
+ const normalizedLang = (lang || "text").toLowerCase();
261
+ blocks.push({
262
+ kind: normalizedLang === "mermaid" ? "mermaid" : "code",
263
+ lang: normalizedLang,
264
+ code: code.trimEnd()
265
+ });
266
+ return blockPlaceholder(idx);
267
+ });
268
+ processed = this.escapeHtml(processed);
269
+ processed = processed.replace(/^(#{1,6})\s+(.+)$/gm, (_match, hashes, text) => {
270
+ const level = hashes.length;
271
+ const id = text.toLowerCase().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-");
272
+ headings.push({
273
+ level,
274
+ text,
275
+ id
276
+ });
277
+ return `<h${level} id="${id}">${showAnchors ? `<a href="#${id}" class="lc-markdown__anchor" aria-hidden="true">#</a>` : ""}${text}</h${level}>`;
278
+ });
279
+ processed = processed.replace(/^---+$/gm, "<hr>");
280
+ processed = processed.replace(/^(?:&gt;)\s?(.*)$/gm, "<blockquote>$1</blockquote>");
281
+ processed = processed.replace(/<\/blockquote>\n<blockquote>/g, "\n");
282
+ processed = this.parseTables(processed);
283
+ processed = processed.replace(/^[-*]\s+\[[xX]\]\s+(.*)$/gm, "<li class=\"lc-markdown__task-item\"><span class=\"lc-markdown__checkbox lc-markdown__checkbox--checked\" role=\"checkbox\" aria-checked=\"true\" aria-disabled=\"true\"></span><span class=\"lc-markdown__task-label\">$1</span></li>");
284
+ processed = processed.replace(/^[-*]\s+\[ \]\s+(.*)$/gm, "<li class=\"lc-markdown__task-item\"><span class=\"lc-markdown__checkbox\" role=\"checkbox\" aria-checked=\"false\" aria-disabled=\"true\"></span><span class=\"lc-markdown__task-label\">$1</span></li>");
285
+ processed = processed.replace(/^[-*]\s+(.*)$/gm, "<li>$1</li>");
286
+ processed = processed.replace(/((?:<li[^>]*>.*<\/li>\n?)+)/g, "<ul>$1</ul>");
287
+ processed = processed.replace(/^\d+\.\s+(.*)$/gm, "<li data-ol>$1</li>");
288
+ processed = processed.replace(/((?:<li data-ol>.*<\/li>\n?)+)/g, (run) => `<ol>${run.replace(/ data-ol/g, "")}</ol>`);
289
+ processed = processed.replace(/`([^`]+)`/g, "<code>$1</code>");
290
+ processed = processed.replace(/\*\*\*(.+?)\*\*\*/g, "<strong><em>$1</em></strong>");
291
+ processed = processed.replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>");
292
+ processed = processed.replace(/\*(.+?)\*/g, "<em>$1</em>");
293
+ processed = processed.replace(/~~(.+?)~~/g, "<del>$1</del>");
294
+ processed = processed.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, (_match, alt, src) => {
295
+ if (!isSafeImageUrl(src)) return alt;
296
+ return `<img src="${baseUrl && !src.startsWith("http") ? `${baseUrl}/${src}` : src}" alt="${alt}" class="lc-markdown__img">`;
297
+ });
298
+ processed = processed.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (_match, text, href) => {
299
+ if (!isSafeLinkUrl(href)) return text;
300
+ return `<a href="${baseUrl && !href.startsWith("http") && !href.startsWith("#") ? `${baseUrl}/${href}` : href}" target="${linkTarget}" rel="noopener">${text}</a>`;
301
+ });
302
+ processed = this.autolink(processed, linkTarget);
303
+ processed = processed.split("\n\n").map((block) => {
304
+ const trimmed = block.trim();
305
+ if (!trimmed) return "";
306
+ if (trimmed.startsWith("<h") || trimmed.startsWith("<ul") || trimmed.startsWith("<ol") || trimmed.startsWith("<blockquote") || trimmed.startsWith("<hr") || trimmed.startsWith("<table") || trimmed.startsWith("<div") || trimmed.startsWith(BLOCK_MARK)) return trimmed;
307
+ return `<p>${trimmed.replace(/\n/g, "<br>")}</p>`;
308
+ }).join("\n");
309
+ if (this.syntaxHighlight()) {} else processed = processed.replace(new RegExp(BLOCK_PLACEHOLDER.source, "g"), (_match, idx) => {
310
+ const block = blocks[parseInt(idx, 10)];
311
+ if (!block) return "";
312
+ return `<pre><code class="language-${block.lang}">${this.escapeHtml(block.code)}</code></pre>`;
313
+ });
314
+ return {
315
+ html: processed,
316
+ blocks,
317
+ headings
318
+ };
319
+ }
320
+ parseTables(text) {
321
+ return text.replace(/^(\|.+\|)\n(\|[-| :]+\|)\n((?:\|.+\|\n?)*)/gm, (_match, header, separator, body) => {
322
+ const aligns = this.splitTableRow(separator).map((cell) => {
323
+ const left = cell.startsWith(":");
324
+ const right = cell.endsWith(":");
325
+ if (left && right) return "center";
326
+ if (right) return "right";
327
+ if (left) return "left";
328
+ return "";
329
+ });
330
+ const alignClass = (col) => aligns[col] ? ` class="lc-markdown__cell--${aligns[col]}"` : "";
331
+ return `<div class="lc-markdown__table-wrap"><table class="lc-markdown__table"><thead><tr>${this.splitTableRow(header).map((cell, i) => `<th scope="col"${alignClass(i)}>${cell.trim()}</th>`).join("")}</tr></thead><tbody>${body.trim().split("\n").map((row) => {
332
+ return `<tr>${this.splitTableRow(row).map((cell, i) => `<td${alignClass(i)}>${cell.trim()}</td>`).join("")}</tr>`;
333
+ }).join("")}</tbody></table></div>`;
334
+ });
335
+ }
336
+ splitTableRow(row) {
337
+ return row.trim().replace(/^\|/, "").replace(/\|$/, "").split("|").map((cell) => cell.trim());
338
+ }
339
+ escapeHtml(text) {
340
+ return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
341
+ }
342
+ autolink(html, linkTarget) {
343
+ const pattern = new RegExp(`${/(?:https?:\/\/|www\.)[^\s<]*[^\s<.,:;!?)\]}'"]/.source}|${/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/.source}`, "g");
344
+ let depth = 0;
345
+ return html.split(/(<[^>]+>)/g).map((segment) => {
346
+ if (segment.startsWith("<")) {
347
+ if (/^<(a|code)[\s>]/i.test(segment)) depth++;
348
+ else if (/^<\/(a|code)>/i.test(segment)) depth = Math.max(0, depth - 1);
349
+ return segment;
350
+ }
351
+ if (depth > 0 || !segment) return segment;
352
+ return segment.replace(pattern, (token) => {
353
+ return `<a href="${token.includes("@") && !/^(?:https?:\/\/|www\.)/.test(token) ? `mailto:${token}` : token.startsWith("www.") ? `https://${token}` : token}" target="${linkTarget}" rel="noopener">${token}</a>`;
354
+ });
355
+ }).join("");
356
+ }
357
+ mermaidSvgFor(index) {
358
+ return this.mermaidSvgs()[index] ?? null;
359
+ }
360
+ mermaidErrorFor(index) {
361
+ return this.mermaidErrors()[index] ?? null;
362
+ }
363
+ async renderMermaidParts(parts) {
364
+ const mermaidParts = parts.filter((part) => part.type === "mermaid" && !!part.code);
365
+ this.mermaidSvgs.set({});
366
+ this.mermaidErrors.set({});
367
+ if (mermaidParts.length === 0) return;
368
+ const runId = ++this.mermaidRenderRun;
369
+ try {
370
+ const mermaidApi = await this.getMermaidApi();
371
+ if (runId !== this.mermaidRenderRun) return;
372
+ const nextSvgs = {};
373
+ const nextErrors = {};
374
+ for (const part of mermaidParts) try {
375
+ const renderId = `lc-md-mermaid-${this.instanceId}-${runId}-${part.index}`;
376
+ const { svg } = await mermaidApi.render(renderId, part.code);
377
+ if (runId !== this.mermaidRenderRun) return;
378
+ nextSvgs[part.index] = this.sanitizer.bypassSecurityTrustHtml(svg);
379
+ } catch {
380
+ nextErrors[part.index] = this.mermaidErrorLabel();
381
+ }
382
+ if (runId !== this.mermaidRenderRun) return;
383
+ this.mermaidSvgs.set(nextSvgs);
384
+ this.mermaidErrors.set(nextErrors);
385
+ } catch {
386
+ if (runId !== this.mermaidRenderRun) return;
387
+ const fallbackErrors = {};
388
+ for (const part of mermaidParts) fallbackErrors[part.index] = this.mermaidUnavailableLabel();
389
+ this.mermaidErrors.set(fallbackErrors);
390
+ }
391
+ }
392
+ async getMermaidApi() {
393
+ if (!this.mermaidApiPromise) this.mermaidApiPromise = import("mermaid").then((module) => {
394
+ const api = module.default ?? module;
395
+ if (!this.mermaidInitialized) {
396
+ api.initialize({
397
+ startOnLoad: false,
398
+ securityLevel: "strict"
399
+ });
400
+ this.mermaidInitialized = true;
401
+ }
402
+ return api;
403
+ });
404
+ return this.mermaidApiPromise;
405
+ }
406
+ static ɵfac = i0.ɵɵngDeclareFactory({
407
+ minVersion: "12.0.0",
408
+ version: "22.2.2",
409
+ ngImport: i0,
410
+ type: MarkdownComponent,
411
+ deps: [],
412
+ target: i0.ɵɵFactoryTarget.Component
413
+ });
414
+ static ɵcmp = i0.ɵɵngDeclareComponent({
415
+ minVersion: "17.0.0",
416
+ version: "22.2.2",
417
+ type: MarkdownComponent,
418
+ isStandalone: true,
419
+ selector: "lc-markdown",
420
+ inputs: {
421
+ src: {
422
+ classPropertyName: "src",
423
+ publicName: "src",
424
+ isSignal: true,
425
+ isRequired: false,
426
+ transformFunction: null
427
+ },
428
+ content: {
429
+ classPropertyName: "content",
430
+ publicName: "content",
431
+ isSignal: true,
432
+ isRequired: false,
433
+ transformFunction: null
434
+ },
435
+ variant: {
436
+ classPropertyName: "variant",
437
+ publicName: "variant",
438
+ isSignal: true,
439
+ isRequired: false,
440
+ transformFunction: null
441
+ },
442
+ linkTarget: {
443
+ classPropertyName: "linkTarget",
444
+ publicName: "linkTarget",
445
+ isSignal: true,
446
+ isRequired: false,
447
+ transformFunction: null
448
+ },
449
+ sanitize: {
450
+ classPropertyName: "sanitize",
451
+ publicName: "sanitize",
452
+ isSignal: true,
453
+ isRequired: false,
454
+ transformFunction: null
455
+ },
456
+ syntaxHighlight: {
457
+ classPropertyName: "syntaxHighlight",
458
+ publicName: "syntaxHighlight",
459
+ isSignal: true,
460
+ isRequired: false,
461
+ transformFunction: null
462
+ },
463
+ showHeadingAnchors: {
464
+ classPropertyName: "showHeadingAnchors",
465
+ publicName: "showHeadingAnchors",
466
+ isSignal: true,
467
+ isRequired: false,
468
+ transformFunction: null
469
+ },
470
+ baseUrl: {
471
+ classPropertyName: "baseUrl",
472
+ publicName: "baseUrl",
473
+ isSignal: true,
474
+ isRequired: false,
475
+ transformFunction: null
476
+ },
477
+ highlightChanges: {
478
+ classPropertyName: "highlightChanges",
479
+ publicName: "highlightChanges",
480
+ isSignal: true,
481
+ isRequired: false,
482
+ transformFunction: null
483
+ },
484
+ previousContent: {
485
+ classPropertyName: "previousContent",
486
+ publicName: "previousContent",
487
+ isSignal: true,
488
+ isRequired: false,
489
+ transformFunction: null
490
+ },
491
+ changeHighlightFadeMs: {
492
+ classPropertyName: "changeHighlightFadeMs",
493
+ publicName: "changeHighlightFadeMs",
494
+ isSignal: true,
495
+ isRequired: false,
496
+ transformFunction: null
497
+ },
498
+ scrollToFirstChange: {
499
+ classPropertyName: "scrollToFirstChange",
500
+ publicName: "scrollToFirstChange",
501
+ isSignal: true,
502
+ isRequired: false,
503
+ transformFunction: null
504
+ },
505
+ changedMarkerLabel: {
506
+ classPropertyName: "changedMarkerLabel",
507
+ publicName: "changedMarkerLabel",
508
+ isSignal: true,
509
+ isRequired: false,
510
+ transformFunction: null
511
+ },
512
+ changedSummaryOneLabel: {
513
+ classPropertyName: "changedSummaryOneLabel",
514
+ publicName: "changedSummaryOneLabel",
515
+ isSignal: true,
516
+ isRequired: false,
517
+ transformFunction: null
518
+ },
519
+ changedSummaryManyLabel: {
520
+ classPropertyName: "changedSummaryManyLabel",
521
+ publicName: "changedSummaryManyLabel",
522
+ isSignal: true,
523
+ isRequired: false,
524
+ transformFunction: null
525
+ },
526
+ mermaidLoadingLabel: {
527
+ classPropertyName: "mermaidLoadingLabel",
528
+ publicName: "mermaidLoadingLabel",
529
+ isSignal: true,
530
+ isRequired: false,
531
+ transformFunction: null
532
+ },
533
+ mermaidErrorLabel: {
534
+ classPropertyName: "mermaidErrorLabel",
535
+ publicName: "mermaidErrorLabel",
536
+ isSignal: true,
537
+ isRequired: false,
538
+ transformFunction: null
539
+ },
540
+ mermaidUnavailableLabel: {
541
+ classPropertyName: "mermaidUnavailableLabel",
542
+ publicName: "mermaidUnavailableLabel",
543
+ isSignal: true,
544
+ isRequired: false,
545
+ transformFunction: null
546
+ }
547
+ },
548
+ outputs: {
549
+ linkClick: "linkClick",
550
+ rendered: "rendered",
551
+ changesHighlighted: "changesHighlighted"
552
+ },
553
+ ngImport: i0,
554
+ template: "<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -- delegated handler for clicks on rendered links, which are focusable anchors -->\n<div [class]=\"containerClasses()\" (click)=\"onLinkClick($event)\">\n @if (highlightChanges()) {\n <div class=\"lc-markdown__sr-only\" role=\"status\" aria-live=\"polite\">{{ changeSummary() }}</div>\n }\n @for (part of renderParts(); track part.index) {\n @if (part.type === 'html') {\n <div [innerHTML]=\"part.safeHtml\"></div>\n } @else if (part.type === 'code') {\n <lc-code-block\n [code]=\"part.code!\"\n [language]=\"part.lang ?? 'text'\"\n [showLineNumbers]=\"true\"\n [showCopy]=\"true\"\n />\n } @else {\n @if (mermaidSvgFor(part.index); as svg) {\n <div class=\"lc-markdown__mermaid\" [innerHTML]=\"svg\"></div>\n } @else if (mermaidErrorFor(part.index); as errorMessage) {\n <div class=\"lc-markdown__mermaid-fallback\">\n <p class=\"lc-markdown__mermaid-error\">{{ errorMessage }}</p>\n <lc-code-block\n [code]=\"part.code!\"\n [language]=\"'text'\"\n [showLineNumbers]=\"true\"\n [showCopy]=\"true\"\n />\n </div>\n } @else {\n <div class=\"lc-markdown__mermaid-loading\">{{ mermaidLoadingLabel() }}</div>\n }\n }\n }\n</div>\n",
555
+ styles: [".lc-markdown{color:var(--color-text-primary);font-family:var(--font-family-sans);font-size:var(--font-size-base, 1rem);line-height:var(--line-height-relaxed, 1.75);hyphens:var(--lc-markdown-hyphens, auto);overflow-wrap:var(--lc-markdown-overflow-wrap, anywhere)}.lc-markdown h1,.lc-markdown h2,.lc-markdown h3,.lc-markdown h4,.lc-markdown h5,.lc-markdown h6{color:var(--color-text-primary);font-weight:var(--font-weight-semibold, 600);line-height:var(--line-height-tight, 1.25);margin:1.5em 0 .5em}.lc-markdown h1:first-child,.lc-markdown h2:first-child,.lc-markdown h3:first-child,.lc-markdown h4:first-child,.lc-markdown h5:first-child,.lc-markdown h6:first-child{margin-top:0}.lc-markdown h1{font-size:var(--lc-markdown-h1, 2rem)}.lc-markdown h2{font-size:var(--lc-markdown-h2, 1.5rem)}.lc-markdown h3{font-size:var(--lc-markdown-h3, 1.25rem)}.lc-markdown h4{font-size:var(--lc-markdown-h4, 1.125rem)}.lc-markdown h5{font-size:var(--lc-markdown-h5, 1rem)}.lc-markdown h6{font-size:var(--lc-markdown-h6, .875rem)}.lc-markdown p{margin:0 0 1em}.lc-markdown a{color:var(--lc-markdown-link-color, var(--color-link, #1a6a79));text-decoration:var(--lc-markdown-link-decoration, underline);hyphens:none;text-decoration-thickness:1px;text-underline-offset:.18em}.lc-markdown a:hover{color:var(--lc-markdown-link-hover-color, var(--color-link-hover, #144f5b));text-decoration-line:underline;text-decoration-thickness:2px}.lc-markdown a:focus-visible{outline:2px solid var(--color-primary-500);outline-offset:2px;border-radius:2px}.lc-markdown strong{font-weight:var(--font-weight-semibold, 600)}.lc-markdown code{background-color:var(--color-surface-hover);color:var(--color-text-primary);padding:.125em .375em;border-radius:var(--border-radius-sm, .25rem);font-family:var(--font-family-mono, monospace);font-size:.875em;hyphens:none}.lc-markdown pre{margin:1em 0;overflow-x:auto;hyphens:none;overflow-wrap:normal}.lc-markdown pre code{background:none;padding:0;border-radius:0}.lc-markdown blockquote{margin:1em 0;padding:.5em 1em;border-left:4px solid var(--color-primary-300, #93c5fd);background-color:var(--color-surface-2);color:var(--color-text-secondary, #4b5563)}.lc-markdown blockquote p{margin:0}.lc-markdown ul,.lc-markdown ol{margin:0 0 1em;padding-left:1.5em}.lc-markdown ul{list-style:disc}.lc-markdown ol{list-style:decimal}.lc-markdown li{margin:.25em 0}.lc-markdown hr{border:none;border-top:1px solid var(--color-divider, #e5e7eb);margin:1.5em 0}.lc-markdown img{max-width:100%;height:auto;border-radius:var(--border-radius-md, .375rem)}.lc-markdown del{text-decoration:line-through;color:var(--color-text-secondary, #6b7280)}.lc-markdown em{font-style:italic}.lc-markdown__table-wrap{margin:1em 0;overflow-x:auto;-webkit-overflow-scrolling:touch;hyphens:manual;overflow-wrap:break-word}.lc-markdown__table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm, .875rem)}.lc-markdown__table th,.lc-markdown__table td{padding:.5rem .75rem;border:1px solid var(--color-divider, #e5e7eb);text-align:left}.lc-markdown__table th{background-color:var(--color-surface-2);font-weight:var(--font-weight-semibold, 600)}.lc-markdown__table tr:hover td{background-color:var(--color-surface-2)}.lc-markdown__cell--left{text-align:left}.lc-markdown__cell--center{text-align:center}.lc-markdown__cell--right{text-align:right}.lc-markdown__task-item{list-style:none;display:flex;align-items:flex-start;gap:.5em}.lc-markdown__checkbox{flex:0 0 auto;box-sizing:border-box;width:1.05em;height:1.05em;margin-top:.18em;border:1.5px solid var(--color-border-strong, var(--color-border));border-radius:3px;background-color:var(--color-surface);position:relative}.lc-markdown__checkbox--checked{background-color:var(--color-primary);border-color:var(--color-primary)}.lc-markdown__checkbox--checked:after{content:\"\";position:absolute;left:.32em;top:.12em;width:.28em;height:.55em;border:solid var(--color-on-primary, #fff);border-width:0 2px 2px 0;transform:rotate(45deg)}.lc-markdown__task-label{flex:1 1 auto;min-width:0}.lc-markdown .lc-markdown__anchor{color:var(--color-text-tertiary);text-decoration:none;margin-right:.25em;opacity:0;transition:opacity .15s ease}h1:hover .lc-markdown__anchor,h2:hover .lc-markdown__anchor,h3:hover .lc-markdown__anchor,h4:hover .lc-markdown__anchor,h5:hover .lc-markdown__anchor,h6:hover .lc-markdown__anchor{opacity:1}.lc-markdown lc-code-block{display:block;margin:1em 0;hyphens:none;overflow-wrap:normal}.lc-markdown lc-code-block code{background:none;color:inherit;padding:0;border-radius:0;font-size:inherit}.lc-markdown__mermaid{margin:1em 0;padding:.75rem;border:1px solid var(--color-divider, #e5e7eb);border-radius:var(--border-radius-md, .375rem);background:var(--color-surface, #ffffff);overflow-x:auto}.lc-markdown__mermaid svg{display:block;margin:0 auto;max-width:100%;height:auto}.lc-markdown__mermaid-loading{margin:1em 0;padding:.75rem;border:1px dashed var(--color-divider, #e5e7eb);border-radius:var(--border-radius-md, .375rem);color:var(--color-text-secondary, #6b7280);font-size:var(--font-size-sm, .875rem)}.lc-markdown__mermaid-fallback{margin:1em 0}.lc-markdown__mermaid-error{margin:0 0 .5rem;color:var(--color-error);font-size:var(--font-size-sm, .875rem)}.lc-markdown--compact{font-size:var(--font-size-sm, .875rem);line-height:var(--line-height-normal, 1.5)}.lc-markdown--compact h1{font-size:1.5rem}.lc-markdown--compact h2{font-size:1.25rem}.lc-markdown--compact h3{font-size:1.125rem}.lc-markdown--compact h4{font-size:1rem}.lc-markdown--compact h5,.lc-markdown--compact h6{font-size:.875rem}.lc-markdown--compact h1,.lc-markdown--compact h2,.lc-markdown--compact h3,.lc-markdown--compact h4,.lc-markdown--compact h5,.lc-markdown--compact h6{margin:1em 0 .25em}.lc-markdown--compact p{margin:0 0 .5em}.lc-markdown--compact blockquote{margin:.5em 0;padding:.25em .75em}.lc-markdown--compact ul,.lc-markdown--compact ol{margin:0 0 .5em}.lc-markdown--chat{font-size:inherit;line-height:1.4}.lc-markdown--chat p,.lc-markdown--chat ul,.lc-markdown--chat ol,.lc-markdown--chat pre,.lc-markdown--chat blockquote,.lc-markdown--chat table{margin:0 0 6px}.lc-markdown--chat h1,.lc-markdown--chat h2,.lc-markdown--chat h3,.lc-markdown--chat h4,.lc-markdown--chat h5,.lc-markdown--chat h6{margin:8px 0 4px;line-height:1.25}.lc-markdown--chat h1{font-size:1.25rem}.lc-markdown--chat h2{font-size:1.125rem}.lc-markdown--chat h3{font-size:1rem}.lc-markdown--chat h4,.lc-markdown--chat h5,.lc-markdown--chat h6{font-size:.9375rem}.lc-markdown--chat li{margin:0;line-height:1.4}.lc-markdown--chat ul,.lc-markdown--chat ol{padding-left:1.25em}.lc-markdown--chat blockquote{padding:.25em .75em}.lc-markdown--chat lc-code-block{margin:6px 0}.lc-markdown--chat hr{margin:8px 0}.lc-markdown--chat .lc-markdown__mermaid,.lc-markdown--chat .lc-markdown__mermaid-loading,.lc-markdown--chat .lc-markdown__mermaid-fallback{margin:6px 0}.lc-markdown--chat>*:first-child{margin-top:0}.lc-markdown--chat>*:last-child{margin-bottom:0}.lc-markdown__block--changed{position:relative;padding:.4rem .875rem;border-radius:0 6px 6px 0;background-color:color-mix(in srgb,var(--color-primary) 13%,var(--color-surface));transition:background-color .42s ease,padding .42s ease}.lc-markdown__block--changed:before{content:\"\";position:absolute;inset-block:0;left:0;width:3px;border-radius:0 3px 3px 0;background-color:var(--color-primary);transition:opacity .42s ease}.lc-markdown--faded .lc-markdown__block--changed{padding:0;background-color:transparent}.lc-markdown--faded .lc-markdown__block--changed:before{opacity:0}.lc-markdown__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"],
556
+ dependencies: [{
557
+ kind: "component",
558
+ type: CodeBlockComponent,
559
+ selector: "lc-code-block",
560
+ inputs: [
561
+ "code",
562
+ "language",
563
+ "filename",
564
+ "showLineNumbers",
565
+ "showCopy",
566
+ "showHeader",
567
+ "copyLabel",
568
+ "copyAriaLabel",
569
+ "copiedLabel",
570
+ "copiedAnnouncement"
571
+ ]
572
+ }],
573
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
574
+ encapsulation: i0.ViewEncapsulation.None
575
+ });
576
+ };
577
+ i0.ɵɵngDeclareClassMetadata({
578
+ minVersion: "12.0.0",
579
+ version: "22.2.2",
580
+ ngImport: i0,
581
+ type: MarkdownComponent,
582
+ decorators: [{
583
+ type: Component,
584
+ args: [{
585
+ selector: "lc-markdown",
586
+ standalone: true,
587
+ imports: [CodeBlockComponent],
588
+ changeDetection: ChangeDetectionStrategy.OnPush,
589
+ encapsulation: ViewEncapsulation.None,
590
+ template: "<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -- delegated handler for clicks on rendered links, which are focusable anchors -->\n<div [class]=\"containerClasses()\" (click)=\"onLinkClick($event)\">\n @if (highlightChanges()) {\n <div class=\"lc-markdown__sr-only\" role=\"status\" aria-live=\"polite\">{{ changeSummary() }}</div>\n }\n @for (part of renderParts(); track part.index) {\n @if (part.type === 'html') {\n <div [innerHTML]=\"part.safeHtml\"></div>\n } @else if (part.type === 'code') {\n <lc-code-block\n [code]=\"part.code!\"\n [language]=\"part.lang ?? 'text'\"\n [showLineNumbers]=\"true\"\n [showCopy]=\"true\"\n />\n } @else {\n @if (mermaidSvgFor(part.index); as svg) {\n <div class=\"lc-markdown__mermaid\" [innerHTML]=\"svg\"></div>\n } @else if (mermaidErrorFor(part.index); as errorMessage) {\n <div class=\"lc-markdown__mermaid-fallback\">\n <p class=\"lc-markdown__mermaid-error\">{{ errorMessage }}</p>\n <lc-code-block\n [code]=\"part.code!\"\n [language]=\"'text'\"\n [showLineNumbers]=\"true\"\n [showCopy]=\"true\"\n />\n </div>\n } @else {\n <div class=\"lc-markdown__mermaid-loading\">{{ mermaidLoadingLabel() }}</div>\n }\n }\n }\n</div>\n",
591
+ styles: [".lc-markdown{color:var(--color-text-primary);font-family:var(--font-family-sans);font-size:var(--font-size-base, 1rem);line-height:var(--line-height-relaxed, 1.75);hyphens:var(--lc-markdown-hyphens, auto);overflow-wrap:var(--lc-markdown-overflow-wrap, anywhere)}.lc-markdown h1,.lc-markdown h2,.lc-markdown h3,.lc-markdown h4,.lc-markdown h5,.lc-markdown h6{color:var(--color-text-primary);font-weight:var(--font-weight-semibold, 600);line-height:var(--line-height-tight, 1.25);margin:1.5em 0 .5em}.lc-markdown h1:first-child,.lc-markdown h2:first-child,.lc-markdown h3:first-child,.lc-markdown h4:first-child,.lc-markdown h5:first-child,.lc-markdown h6:first-child{margin-top:0}.lc-markdown h1{font-size:var(--lc-markdown-h1, 2rem)}.lc-markdown h2{font-size:var(--lc-markdown-h2, 1.5rem)}.lc-markdown h3{font-size:var(--lc-markdown-h3, 1.25rem)}.lc-markdown h4{font-size:var(--lc-markdown-h4, 1.125rem)}.lc-markdown h5{font-size:var(--lc-markdown-h5, 1rem)}.lc-markdown h6{font-size:var(--lc-markdown-h6, .875rem)}.lc-markdown p{margin:0 0 1em}.lc-markdown a{color:var(--lc-markdown-link-color, var(--color-link, #1a6a79));text-decoration:var(--lc-markdown-link-decoration, underline);hyphens:none;text-decoration-thickness:1px;text-underline-offset:.18em}.lc-markdown a:hover{color:var(--lc-markdown-link-hover-color, var(--color-link-hover, #144f5b));text-decoration-line:underline;text-decoration-thickness:2px}.lc-markdown a:focus-visible{outline:2px solid var(--color-primary-500);outline-offset:2px;border-radius:2px}.lc-markdown strong{font-weight:var(--font-weight-semibold, 600)}.lc-markdown code{background-color:var(--color-surface-hover);color:var(--color-text-primary);padding:.125em .375em;border-radius:var(--border-radius-sm, .25rem);font-family:var(--font-family-mono, monospace);font-size:.875em;hyphens:none}.lc-markdown pre{margin:1em 0;overflow-x:auto;hyphens:none;overflow-wrap:normal}.lc-markdown pre code{background:none;padding:0;border-radius:0}.lc-markdown blockquote{margin:1em 0;padding:.5em 1em;border-left:4px solid var(--color-primary-300, #93c5fd);background-color:var(--color-surface-2);color:var(--color-text-secondary, #4b5563)}.lc-markdown blockquote p{margin:0}.lc-markdown ul,.lc-markdown ol{margin:0 0 1em;padding-left:1.5em}.lc-markdown ul{list-style:disc}.lc-markdown ol{list-style:decimal}.lc-markdown li{margin:.25em 0}.lc-markdown hr{border:none;border-top:1px solid var(--color-divider, #e5e7eb);margin:1.5em 0}.lc-markdown img{max-width:100%;height:auto;border-radius:var(--border-radius-md, .375rem)}.lc-markdown del{text-decoration:line-through;color:var(--color-text-secondary, #6b7280)}.lc-markdown em{font-style:italic}.lc-markdown__table-wrap{margin:1em 0;overflow-x:auto;-webkit-overflow-scrolling:touch;hyphens:manual;overflow-wrap:break-word}.lc-markdown__table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm, .875rem)}.lc-markdown__table th,.lc-markdown__table td{padding:.5rem .75rem;border:1px solid var(--color-divider, #e5e7eb);text-align:left}.lc-markdown__table th{background-color:var(--color-surface-2);font-weight:var(--font-weight-semibold, 600)}.lc-markdown__table tr:hover td{background-color:var(--color-surface-2)}.lc-markdown__cell--left{text-align:left}.lc-markdown__cell--center{text-align:center}.lc-markdown__cell--right{text-align:right}.lc-markdown__task-item{list-style:none;display:flex;align-items:flex-start;gap:.5em}.lc-markdown__checkbox{flex:0 0 auto;box-sizing:border-box;width:1.05em;height:1.05em;margin-top:.18em;border:1.5px solid var(--color-border-strong, var(--color-border));border-radius:3px;background-color:var(--color-surface);position:relative}.lc-markdown__checkbox--checked{background-color:var(--color-primary);border-color:var(--color-primary)}.lc-markdown__checkbox--checked:after{content:\"\";position:absolute;left:.32em;top:.12em;width:.28em;height:.55em;border:solid var(--color-on-primary, #fff);border-width:0 2px 2px 0;transform:rotate(45deg)}.lc-markdown__task-label{flex:1 1 auto;min-width:0}.lc-markdown .lc-markdown__anchor{color:var(--color-text-tertiary);text-decoration:none;margin-right:.25em;opacity:0;transition:opacity .15s ease}h1:hover .lc-markdown__anchor,h2:hover .lc-markdown__anchor,h3:hover .lc-markdown__anchor,h4:hover .lc-markdown__anchor,h5:hover .lc-markdown__anchor,h6:hover .lc-markdown__anchor{opacity:1}.lc-markdown lc-code-block{display:block;margin:1em 0;hyphens:none;overflow-wrap:normal}.lc-markdown lc-code-block code{background:none;color:inherit;padding:0;border-radius:0;font-size:inherit}.lc-markdown__mermaid{margin:1em 0;padding:.75rem;border:1px solid var(--color-divider, #e5e7eb);border-radius:var(--border-radius-md, .375rem);background:var(--color-surface, #ffffff);overflow-x:auto}.lc-markdown__mermaid svg{display:block;margin:0 auto;max-width:100%;height:auto}.lc-markdown__mermaid-loading{margin:1em 0;padding:.75rem;border:1px dashed var(--color-divider, #e5e7eb);border-radius:var(--border-radius-md, .375rem);color:var(--color-text-secondary, #6b7280);font-size:var(--font-size-sm, .875rem)}.lc-markdown__mermaid-fallback{margin:1em 0}.lc-markdown__mermaid-error{margin:0 0 .5rem;color:var(--color-error);font-size:var(--font-size-sm, .875rem)}.lc-markdown--compact{font-size:var(--font-size-sm, .875rem);line-height:var(--line-height-normal, 1.5)}.lc-markdown--compact h1{font-size:1.5rem}.lc-markdown--compact h2{font-size:1.25rem}.lc-markdown--compact h3{font-size:1.125rem}.lc-markdown--compact h4{font-size:1rem}.lc-markdown--compact h5,.lc-markdown--compact h6{font-size:.875rem}.lc-markdown--compact h1,.lc-markdown--compact h2,.lc-markdown--compact h3,.lc-markdown--compact h4,.lc-markdown--compact h5,.lc-markdown--compact h6{margin:1em 0 .25em}.lc-markdown--compact p{margin:0 0 .5em}.lc-markdown--compact blockquote{margin:.5em 0;padding:.25em .75em}.lc-markdown--compact ul,.lc-markdown--compact ol{margin:0 0 .5em}.lc-markdown--chat{font-size:inherit;line-height:1.4}.lc-markdown--chat p,.lc-markdown--chat ul,.lc-markdown--chat ol,.lc-markdown--chat pre,.lc-markdown--chat blockquote,.lc-markdown--chat table{margin:0 0 6px}.lc-markdown--chat h1,.lc-markdown--chat h2,.lc-markdown--chat h3,.lc-markdown--chat h4,.lc-markdown--chat h5,.lc-markdown--chat h6{margin:8px 0 4px;line-height:1.25}.lc-markdown--chat h1{font-size:1.25rem}.lc-markdown--chat h2{font-size:1.125rem}.lc-markdown--chat h3{font-size:1rem}.lc-markdown--chat h4,.lc-markdown--chat h5,.lc-markdown--chat h6{font-size:.9375rem}.lc-markdown--chat li{margin:0;line-height:1.4}.lc-markdown--chat ul,.lc-markdown--chat ol{padding-left:1.25em}.lc-markdown--chat blockquote{padding:.25em .75em}.lc-markdown--chat lc-code-block{margin:6px 0}.lc-markdown--chat hr{margin:8px 0}.lc-markdown--chat .lc-markdown__mermaid,.lc-markdown--chat .lc-markdown__mermaid-loading,.lc-markdown--chat .lc-markdown__mermaid-fallback{margin:6px 0}.lc-markdown--chat>*:first-child{margin-top:0}.lc-markdown--chat>*:last-child{margin-bottom:0}.lc-markdown__block--changed{position:relative;padding:.4rem .875rem;border-radius:0 6px 6px 0;background-color:color-mix(in srgb,var(--color-primary) 13%,var(--color-surface));transition:background-color .42s ease,padding .42s ease}.lc-markdown__block--changed:before{content:\"\";position:absolute;inset-block:0;left:0;width:3px;border-radius:0 3px 3px 0;background-color:var(--color-primary);transition:opacity .42s ease}.lc-markdown--faded .lc-markdown__block--changed{padding:0;background-color:transparent}.lc-markdown--faded .lc-markdown__block--changed:before{opacity:0}.lc-markdown__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"]
592
+ }]
593
+ }],
594
+ ctorParameters: () => [],
595
+ propDecorators: {
596
+ src: [{
597
+ type: i0.Input,
598
+ args: [{
599
+ isSignal: true,
600
+ alias: "src",
601
+ required: false
602
+ }]
603
+ }],
604
+ content: [{
605
+ type: i0.Input,
606
+ args: [{
607
+ isSignal: true,
608
+ alias: "content",
609
+ required: false
610
+ }]
611
+ }],
612
+ variant: [{
613
+ type: i0.Input,
614
+ args: [{
615
+ isSignal: true,
616
+ alias: "variant",
617
+ required: false
618
+ }]
619
+ }],
620
+ linkTarget: [{
621
+ type: i0.Input,
622
+ args: [{
623
+ isSignal: true,
624
+ alias: "linkTarget",
625
+ required: false
626
+ }]
627
+ }],
628
+ sanitize: [{
629
+ type: i0.Input,
630
+ args: [{
631
+ isSignal: true,
632
+ alias: "sanitize",
633
+ required: false
634
+ }]
635
+ }],
636
+ syntaxHighlight: [{
637
+ type: i0.Input,
638
+ args: [{
639
+ isSignal: true,
640
+ alias: "syntaxHighlight",
641
+ required: false
642
+ }]
643
+ }],
644
+ showHeadingAnchors: [{
645
+ type: i0.Input,
646
+ args: [{
647
+ isSignal: true,
648
+ alias: "showHeadingAnchors",
649
+ required: false
650
+ }]
651
+ }],
652
+ baseUrl: [{
653
+ type: i0.Input,
654
+ args: [{
655
+ isSignal: true,
656
+ alias: "baseUrl",
657
+ required: false
658
+ }]
659
+ }],
660
+ highlightChanges: [{
661
+ type: i0.Input,
662
+ args: [{
663
+ isSignal: true,
664
+ alias: "highlightChanges",
665
+ required: false
666
+ }]
667
+ }],
668
+ previousContent: [{
669
+ type: i0.Input,
670
+ args: [{
671
+ isSignal: true,
672
+ alias: "previousContent",
673
+ required: false
674
+ }]
675
+ }],
676
+ changeHighlightFadeMs: [{
677
+ type: i0.Input,
678
+ args: [{
679
+ isSignal: true,
680
+ alias: "changeHighlightFadeMs",
681
+ required: false
682
+ }]
683
+ }],
684
+ scrollToFirstChange: [{
685
+ type: i0.Input,
686
+ args: [{
687
+ isSignal: true,
688
+ alias: "scrollToFirstChange",
689
+ required: false
690
+ }]
691
+ }],
692
+ changedMarkerLabel: [{
693
+ type: i0.Input,
694
+ args: [{
695
+ isSignal: true,
696
+ alias: "changedMarkerLabel",
697
+ required: false
698
+ }]
699
+ }],
700
+ changedSummaryOneLabel: [{
701
+ type: i0.Input,
702
+ args: [{
703
+ isSignal: true,
704
+ alias: "changedSummaryOneLabel",
705
+ required: false
706
+ }]
707
+ }],
708
+ changedSummaryManyLabel: [{
709
+ type: i0.Input,
710
+ args: [{
711
+ isSignal: true,
712
+ alias: "changedSummaryManyLabel",
713
+ required: false
714
+ }]
715
+ }],
716
+ mermaidLoadingLabel: [{
717
+ type: i0.Input,
718
+ args: [{
719
+ isSignal: true,
720
+ alias: "mermaidLoadingLabel",
721
+ required: false
722
+ }]
723
+ }],
724
+ mermaidErrorLabel: [{
725
+ type: i0.Input,
726
+ args: [{
727
+ isSignal: true,
728
+ alias: "mermaidErrorLabel",
729
+ required: false
730
+ }]
731
+ }],
732
+ mermaidUnavailableLabel: [{
733
+ type: i0.Input,
734
+ args: [{
735
+ isSignal: true,
736
+ alias: "mermaidUnavailableLabel",
737
+ required: false
738
+ }]
739
+ }],
740
+ linkClick: [{
741
+ type: i0.Output,
742
+ args: ["linkClick"]
743
+ }],
744
+ rendered: [{
745
+ type: i0.Output,
746
+ args: ["rendered"]
747
+ }],
748
+ changesHighlighted: [{
749
+ type: i0.Output,
750
+ args: ["changesHighlighted"]
751
+ }]
752
+ }
753
+ });
754
+ export { MarkdownComponent };
755
+
756
+ //# sourceMappingURL=lifecorner-angular-ui-kit-markdown.mjs.map