@seniorsistemas/data-seniorx-core 2.3.0 → 3.0.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 (262) hide show
  1. package/core/constants/autocomplete.const.d.ts +4 -0
  2. package/core/constants/context-selector.const.d.ts +1 -0
  3. package/core/constants/gantt.const.d.ts +7 -0
  4. package/core/constants/hyperlink.const.d.ts +1 -0
  5. package/core/constants/inline-edit.const.d.ts +4 -0
  6. package/core/constants/kanban.const.d.ts +2 -0
  7. package/core/constants/pin-code-field.const.d.ts +5 -0
  8. package/core/constants/rating-scale.const.d.ts +1 -0
  9. package/core/constants/spotlight.const.d.ts +8 -0
  10. package/core/constants/star-rating.const.d.ts +4 -0
  11. package/core/constants/stepper.const.d.ts +1 -0
  12. package/core/constants/tiered-menu.const.d.ts +3 -0
  13. package/core/types/autocomplete.type.d.ts +9 -0
  14. package/core/types/chat.type.d.ts +12 -0
  15. package/core/types/checkbox-list.type.d.ts +12 -0
  16. package/core/types/gantt.type.d.ts +22 -0
  17. package/core/types/grid-menu.type.d.ts +13 -0
  18. package/core/types/hyperlink.type.d.ts +1 -0
  19. package/core/types/image-cropper.type.d.ts +20 -0
  20. package/core/types/inline-edit.type.d.ts +26 -0
  21. package/core/types/kanban.type.d.ts +36 -0
  22. package/core/types/panel.type.d.ts +16 -0
  23. package/core/types/profile-picture-picker.type.d.ts +9 -0
  24. package/core/types/rating-scale.type.d.ts +5 -0
  25. package/core/types/select-button.type.d.ts +1 -0
  26. package/core/types/spotlight.type.d.ts +34 -0
  27. package/core/types/star-rating.type.d.ts +1 -0
  28. package/core/types/stepper.type.d.ts +20 -0
  29. package/core/types/table-column.type.d.ts +3 -1
  30. package/core/types/table-options.type.d.ts +8 -2
  31. package/core/types/table.type.d.ts +1 -1
  32. package/core/types/tiered-menu.type.d.ts +16 -0
  33. package/core/types/tree.type.d.ts +25 -0
  34. package/core/types/workspace-switch.type.d.ts +6 -0
  35. package/core/utils/body-scroll.util.d.ts +2 -0
  36. package/core/utils/roving-focus.util.d.ts +2 -0
  37. package/core/utils/selection.util.d.ts +3 -0
  38. package/core/utils/tree.util.d.ts +4 -0
  39. package/esm2022/core/constants/autocomplete.const.mjs +5 -0
  40. package/esm2022/core/constants/context-selector.const.mjs +2 -0
  41. package/esm2022/core/constants/gantt.const.mjs +7 -0
  42. package/esm2022/core/constants/hyperlink.const.mjs +2 -1
  43. package/esm2022/core/constants/inline-edit.const.mjs +5 -0
  44. package/esm2022/core/constants/kanban.const.mjs +3 -0
  45. package/esm2022/core/constants/pin-code-field.const.mjs +6 -0
  46. package/esm2022/core/constants/rating-scale.const.mjs +2 -0
  47. package/esm2022/core/constants/spotlight.const.mjs +9 -0
  48. package/esm2022/core/constants/star-rating.const.mjs +5 -0
  49. package/esm2022/core/constants/stepper.const.mjs +2 -0
  50. package/esm2022/core/constants/table.const.mjs +2 -2
  51. package/esm2022/core/constants/tiered-menu.const.mjs +4 -0
  52. package/esm2022/core/types/autocomplete.type.mjs +2 -0
  53. package/esm2022/core/types/chat.type.mjs +2 -0
  54. package/esm2022/core/types/checkbox-list.type.mjs +2 -0
  55. package/esm2022/core/types/gantt.type.mjs +2 -0
  56. package/esm2022/core/types/grid-menu.type.mjs +2 -0
  57. package/esm2022/core/types/hyperlink.type.mjs +1 -1
  58. package/esm2022/core/types/image-cropper.type.mjs +2 -0
  59. package/esm2022/core/types/inline-edit.type.mjs +2 -0
  60. package/esm2022/core/types/kanban.type.mjs +2 -0
  61. package/esm2022/core/types/panel.type.mjs +9 -0
  62. package/esm2022/core/types/profile-picture-picker.type.mjs +2 -0
  63. package/esm2022/core/types/rating-scale.type.mjs +2 -0
  64. package/esm2022/core/types/select-button.type.mjs +1 -1
  65. package/esm2022/core/types/spotlight.type.mjs +2 -0
  66. package/esm2022/core/types/star-rating.type.mjs +2 -0
  67. package/esm2022/core/types/stepper.type.mjs +7 -0
  68. package/esm2022/core/types/table-column.type.mjs +1 -1
  69. package/esm2022/core/types/table-options.type.mjs +1 -1
  70. package/esm2022/core/types/table.type.mjs +1 -1
  71. package/esm2022/core/types/tiered-menu.type.mjs +2 -0
  72. package/esm2022/core/types/tree.type.mjs +2 -0
  73. package/esm2022/core/types/workspace-switch.type.mjs +2 -0
  74. package/esm2022/core/utils/body-scroll.util.mjs +19 -0
  75. package/esm2022/core/utils/combobox.util.mjs +3 -2
  76. package/esm2022/core/utils/roving-focus.util.mjs +20 -0
  77. package/esm2022/core/utils/selection.util.mjs +13 -0
  78. package/esm2022/core/utils/string.util.mjs +8 -3
  79. package/esm2022/core/utils/tree.util.mjs +23 -0
  80. package/esm2022/features/accordion/accordion.component.mjs +2 -2
  81. package/esm2022/features/accordion/{accordion-item.component.mjs → components/accordion-item/accordion-item.component.mjs} +7 -7
  82. package/esm2022/features/autocomplete/autocomplete.component.mjs +501 -0
  83. package/esm2022/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +30 -0
  84. package/esm2022/features/breadcrumb/breadcrumb.component.mjs +2 -2
  85. package/esm2022/features/card-list/card/card.component.mjs +63 -99
  86. package/esm2022/features/chat/chat.component.mjs +126 -0
  87. package/esm2022/features/checkbox-list/checkbox-list.component.mjs +125 -0
  88. package/esm2022/features/combobox/combobox.component.mjs +20 -8
  89. package/esm2022/features/context-selector/context-selector.component.mjs +198 -0
  90. package/esm2022/features/filters/filters.component.mjs +1 -1
  91. package/esm2022/features/gantt/components/gantt-side-table/gantt-side-table.component.mjs +17 -0
  92. package/esm2022/features/gantt/gantt-date.utils.mjs +97 -0
  93. package/esm2022/features/gantt/gantt.component.mjs +89 -0
  94. package/esm2022/features/gantt/gantt.engine.mjs +662 -0
  95. package/esm2022/features/grid-menu/grid-menu.component.mjs +104 -0
  96. package/esm2022/features/hyperlink/hyperlink.component.mjs +7 -4
  97. package/esm2022/features/icon-picker/icon-picker.component.mjs +3 -3
  98. package/esm2022/features/image-cropper/image-cropper.component.mjs +218 -0
  99. package/esm2022/features/image-cropper/services/image-cropper.service.mjs +50 -0
  100. package/esm2022/features/infinite-scroll/infinite-scroll.directive.mjs +89 -0
  101. package/esm2022/features/info-sign/info-sign.component.mjs +3 -3
  102. package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +38 -0
  103. package/esm2022/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +29 -0
  104. package/esm2022/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.mjs +29 -0
  105. package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +131 -0
  106. package/esm2022/features/inline-edit/fields/inline-edit-field.mjs +17 -0
  107. package/esm2022/features/inline-edit/fields/inline-edit-number-field.mjs +15 -0
  108. package/esm2022/features/inline-edit/fields/inline-edit-text-field.mjs +11 -0
  109. package/esm2022/features/inline-edit/fields/inline-edit-textarea-field.mjs +15 -0
  110. package/esm2022/features/inline-edit/inline-edit.component.mjs +27 -0
  111. package/esm2022/features/interactive-content/interactive-content.directive.mjs +140 -0
  112. package/esm2022/features/kanban/components/kanban-column/kanban-column.component.mjs +88 -0
  113. package/esm2022/features/kanban/components/kanban-item/kanban-item.component.mjs +72 -0
  114. package/esm2022/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +19 -0
  115. package/esm2022/features/kanban/directives/kanban-template.directive.mjs +22 -0
  116. package/esm2022/features/kanban/kanban.component.mjs +198 -0
  117. package/esm2022/features/kanban/services/kanban-event.service.mjs +27 -0
  118. package/esm2022/features/loading-state/loading-state.component.mjs +3 -62
  119. package/esm2022/features/mouse-events/directives/double-click.directive.mjs +34 -0
  120. package/esm2022/features/mouse-events/directives/long-press.directive.mjs +61 -0
  121. package/esm2022/features/paginator/paginator.component.mjs +8 -3
  122. package/esm2022/features/panel/panel.component.mjs +43 -11
  123. package/esm2022/features/pin-code-field/pin-code-field.component.mjs +234 -0
  124. package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +330 -0
  125. package/esm2022/features/rating-scale/rating-scale.component.mjs +86 -0
  126. package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
  127. package/esm2022/features/scaffold/scaffold.component.mjs +4 -6
  128. package/esm2022/features/select-button/select-button.component.mjs +7 -4
  129. package/esm2022/features/speech-recognition/services/speech-recognition.service.mjs +148 -0
  130. package/esm2022/features/speech-recognition/services/text-to-speech.service.mjs +88 -0
  131. package/esm2022/features/speech-recognition/speech-recognition.component.mjs +243 -0
  132. package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +521 -0
  133. package/esm2022/features/spotlight/directives/spotlight-step.directive.mjs +38 -0
  134. package/esm2022/features/spotlight/services/spotlight-tour.service.mjs +179 -0
  135. package/esm2022/features/spotlight/spotlight.component.mjs +160 -0
  136. package/esm2022/features/star-rating/star-rating.component.mjs +95 -0
  137. package/esm2022/features/stepper/stepper.component.mjs +86 -0
  138. package/esm2022/features/switch/switch.component.mjs +12 -8
  139. package/esm2022/features/tab/{tab-item.component.mjs → components/tab-item/tab-item.component.mjs} +1 -1
  140. package/esm2022/features/tab/tab.component.mjs +4 -4
  141. package/esm2022/features/table/components/table-cell-content.component.mjs +14 -5
  142. package/esm2022/features/table/table.component.mjs +220 -29
  143. package/esm2022/features/table/utils/table-data.util.mjs +71 -8
  144. package/esm2022/features/table/utils/table-layout.util.mjs +21 -1
  145. package/esm2022/features/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +367 -0
  146. package/esm2022/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
  147. package/esm2022/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +97 -0
  148. package/esm2022/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +181 -0
  149. package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +246 -0
  150. package/esm2022/features/tiered-menu/services/tiered-menu.event.service.mjs +16 -0
  151. package/esm2022/features/tiered-menu/services/tiered-menu.global.service.mjs +12 -0
  152. package/esm2022/features/tiered-menu/services/tiered-menu.service.mjs +49 -0
  153. package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +169 -0
  154. package/esm2022/features/tree/tree.component.mjs +211 -0
  155. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.mjs +41 -0
  156. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.mjs +38 -0
  157. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.mjs +29 -0
  158. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.mjs +29 -0
  159. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.mjs +35 -0
  160. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-flow.service.mjs +106 -0
  161. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-state.service.mjs +230 -0
  162. package/esm2022/features/visual-sql-editor/types/visual-sql-editor.types.mjs +2 -0
  163. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.mjs +72 -0
  164. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sql.util.mjs +281 -0
  165. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-text.util.mjs +37 -0
  166. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor.constants.mjs +89 -0
  167. package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +172 -630
  168. package/esm2022/locales/en.json +351 -3
  169. package/esm2022/locales/es-CO.json +351 -3
  170. package/esm2022/locales/pt.json +351 -3
  171. package/esm2022/providers/features.provider.mjs +40 -4
  172. package/esm2022/public-api.mjs +56 -3
  173. package/features/accordion/accordion.component.d.ts +1 -1
  174. package/features/accordion/{accordion-item.component.d.ts → components/accordion-item/accordion-item.component.d.ts} +1 -1
  175. package/features/autocomplete/autocomplete.component.d.ts +102 -0
  176. package/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +11 -0
  177. package/features/card-list/card/card.component.d.ts +14 -34
  178. package/features/chat/chat.component.d.ts +31 -0
  179. package/features/checkbox-list/checkbox-list.component.d.ts +26 -0
  180. package/features/combobox/combobox.component.d.ts +2 -1
  181. package/features/context-selector/context-selector.component.d.ts +37 -0
  182. package/features/gantt/components/gantt-side-table/gantt-side-table.component.d.ts +8 -0
  183. package/features/gantt/gantt-date.utils.d.ts +36 -0
  184. package/features/gantt/gantt.component.d.ts +24 -0
  185. package/features/gantt/gantt.engine.d.ts +52 -0
  186. package/features/grid-menu/grid-menu.component.d.ts +29 -0
  187. package/features/hyperlink/hyperlink.component.d.ts +2 -1
  188. package/features/image-cropper/image-cropper.component.d.ts +43 -0
  189. package/features/image-cropper/services/image-cropper.service.d.ts +13 -0
  190. package/features/infinite-scroll/infinite-scroll.directive.d.ts +25 -0
  191. package/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +13 -0
  192. package/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.d.ts +13 -0
  193. package/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.d.ts +13 -0
  194. package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +37 -0
  195. package/features/inline-edit/fields/inline-edit-field.d.ts +12 -0
  196. package/features/inline-edit/fields/inline-edit-number-field.d.ts +9 -0
  197. package/features/inline-edit/fields/inline-edit-text-field.d.ts +7 -0
  198. package/features/inline-edit/fields/inline-edit-textarea-field.d.ts +9 -0
  199. package/features/inline-edit/inline-edit.component.d.ts +13 -0
  200. package/features/interactive-content/interactive-content.directive.d.ts +31 -0
  201. package/features/kanban/components/kanban-column/kanban-column.component.d.ts +22 -0
  202. package/features/kanban/components/kanban-item/kanban-item.component.d.ts +23 -0
  203. package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +8 -0
  204. package/features/kanban/directives/kanban-template.directive.d.ts +10 -0
  205. package/features/kanban/kanban.component.d.ts +32 -0
  206. package/features/kanban/services/kanban-event.service.d.ts +15 -0
  207. package/features/loading-state/loading-state.component.d.ts +0 -2
  208. package/features/mouse-events/directives/double-click.directive.d.ts +11 -0
  209. package/features/mouse-events/directives/long-press.directive.d.ts +14 -0
  210. package/features/panel/panel.component.d.ts +12 -3
  211. package/features/pin-code-field/pin-code-field.component.d.ts +44 -0
  212. package/features/profile-picture-picker/profile-picture-picker.component.d.ts +77 -0
  213. package/features/rating-scale/rating-scale.component.d.ts +24 -0
  214. package/features/select-button/select-button.component.d.ts +2 -1
  215. package/features/speech-recognition/services/speech-recognition.service.d.ts +29 -0
  216. package/features/speech-recognition/services/text-to-speech.service.d.ts +24 -0
  217. package/features/speech-recognition/speech-recognition.component.d.ts +50 -0
  218. package/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.d.ts +59 -0
  219. package/features/spotlight/directives/spotlight-step.directive.d.ts +13 -0
  220. package/features/spotlight/services/spotlight-tour.service.d.ts +46 -0
  221. package/features/spotlight/spotlight.component.d.ts +59 -0
  222. package/features/star-rating/star-rating.component.d.ts +26 -0
  223. package/features/stepper/stepper.component.d.ts +23 -0
  224. package/features/switch/switch.component.d.ts +2 -1
  225. package/features/tab/tab.component.d.ts +1 -1
  226. package/features/table/components/table-cell-content.component.d.ts +4 -3
  227. package/features/table/table.component.d.ts +40 -5
  228. package/features/table/utils/table-data.util.d.ts +1 -0
  229. package/features/table/utils/table-layout.util.d.ts +1 -0
  230. package/features/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +49 -0
  231. package/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +5 -0
  232. package/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +19 -0
  233. package/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +26 -0
  234. package/features/tiered-menu/directives/tiered-menu.directive.d.ts +44 -0
  235. package/features/tiered-menu/services/tiered-menu.event.service.d.ts +13 -0
  236. package/features/tiered-menu/services/tiered-menu.global.service.d.ts +7 -0
  237. package/features/tiered-menu/services/tiered-menu.service.d.ts +14 -0
  238. package/features/tree/components/tree-node-item/tree-node-item.component.d.ts +37 -0
  239. package/features/tree/tree.component.d.ts +37 -0
  240. package/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.d.ts +18 -0
  241. package/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.d.ts +17 -0
  242. package/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.d.ts +13 -0
  243. package/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.d.ts +13 -0
  244. package/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.d.ts +15 -0
  245. package/features/visual-sql-editor/services/visual-sql-editor-flow.service.d.ts +26 -0
  246. package/features/visual-sql-editor/services/visual-sql-editor-state.service.d.ts +72 -0
  247. package/features/visual-sql-editor/types/visual-sql-editor.types.d.ts +182 -0
  248. package/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.d.ts +14 -0
  249. package/features/visual-sql-editor/utils/visual-sql-editor-sql.util.d.ts +81 -0
  250. package/features/visual-sql-editor/utils/visual-sql-editor-text.util.d.ts +15 -0
  251. package/features/visual-sql-editor/utils/visual-sql-editor.constants.d.ts +36 -0
  252. package/features/visual-sql-editor/visual-sql-editor.component.d.ts +37 -199
  253. package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14883 -6353
  254. package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
  255. package/package.json +8 -8
  256. package/public-api.d.ts +72 -2
  257. package/src/locales/en.json +353 -15
  258. package/src/locales/es-CO.json +352 -14
  259. package/src/locales/pt.json +352 -14
  260. package/styles/sdc-global-variables.scss +1 -1
  261. package/styles.css +1 -1
  262. /package/features/tab/{tab-item.component.d.ts → components/tab-item/tab-item.component.d.ts} +0 -0
@@ -0,0 +1,30 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AutocompleteChipComponent {
4
+ suggestion;
5
+ suggestionLabel;
6
+ suggestionRemoved = new EventEmitter();
7
+ get label() {
8
+ if (this.suggestionLabel && this.suggestion && typeof this.suggestion === 'object') {
9
+ return String(this.suggestion[this.suggestionLabel] ?? '');
10
+ }
11
+ return String(this.suggestion ?? '');
12
+ }
13
+ removeSuggestion() {
14
+ this.suggestionRemoved.emit(this.suggestion);
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutocompleteChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AutocompleteChipComponent, isStandalone: true, selector: "sdc-autocomplete-chip", inputs: { suggestion: "suggestion", suggestionLabel: "suggestionLabel" }, outputs: { suggestionRemoved: "suggestionRemoved" }, ngImport: i0, template: "<span class=\"sdc-autocomplete-chip\">\n <span class=\"sdc-autocomplete-chip__label\">{{ label }}</span>\n <button\n type=\"button\"\n class=\"sdc-autocomplete-chip__remove\"\n aria-label=\"Remove suggestion\"\n (click)=\"removeSuggestion()\"\n >\n <i class=\"far fa-times\"></i>\n </button>\n</span>\n", styles: [".sdc-autocomplete-chip{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;border-radius:999px;background:#e9f2f8;color:#123;font-size:.8125rem}.sdc-autocomplete-chip__remove{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;cursor:pointer;color:inherit}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutocompleteChipComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'sdc-autocomplete-chip', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"sdc-autocomplete-chip\">\n <span class=\"sdc-autocomplete-chip__label\">{{ label }}</span>\n <button\n type=\"button\"\n class=\"sdc-autocomplete-chip__remove\"\n aria-label=\"Remove suggestion\"\n (click)=\"removeSuggestion()\"\n >\n <i class=\"far fa-times\"></i>\n </button>\n</span>\n", styles: [".sdc-autocomplete-chip{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;border-radius:999px;background:#e9f2f8;color:#123;font-size:.8125rem}.sdc-autocomplete-chip__remove{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;cursor:pointer;color:inherit}\n"] }]
22
+ }], propDecorators: { suggestion: [{
23
+ type: Input,
24
+ args: [{ required: true }]
25
+ }], suggestionLabel: [{
26
+ type: Input
27
+ }], suggestionRemoved: [{
28
+ type: Output
29
+ }] } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWNoaXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9hdXRvY29tcGxldGUvY29tcG9uZW50cy9hdXRvY29tcGxldGUtY2hpcC9hdXRvY29tcGxldGUtY2hpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2F1dG9jb21wbGV0ZS9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS1jaGlwL2F1dG9jb21wbGV0ZS1jaGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBU2hHLE1BQU0sT0FBTyx5QkFBeUI7SUFDVCxVQUFVLENBQUs7SUFDakMsZUFBZSxDQUFXO0lBRXpCLGlCQUFpQixHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFFcEQsSUFBYyxLQUFLO1FBQ2pCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVMsZ0JBQWdCO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7d0dBaEJVLHlCQUF5Qjs0RkFBekIseUJBQXlCLGdOQ1R0QyxtVUFXQTs7NEZERmEseUJBQXlCO2tCQVByQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU07OEJBR3BCLFVBQVU7c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixlQUFlO3NCQUF2QixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtYXV0b2NvbXBsZXRlLWNoaXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLWNoaXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUtY2hpcC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDaGlwQ29tcG9uZW50PFQ+IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc3VnZ2VzdGlvbiE6IFQ7XG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25MYWJlbD86IGtleW9mIFQ7XG5cbiAgQE91dHB1dCgpIHN1Z2dlc3Rpb25SZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gIHByb3RlY3RlZCBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zdWdnZXN0aW9uTGFiZWwgJiYgdGhpcy5zdWdnZXN0aW9uICYmIHR5cGVvZiB0aGlzLnN1Z2dlc3Rpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKHRoaXMuc3VnZ2VzdGlvblt0aGlzLnN1Z2dlc3Rpb25MYWJlbF0gPz8gJycpO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcodGhpcy5zdWdnZXN0aW9uID8/ICcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW1vdmVTdWdnZXN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc3VnZ2VzdGlvblJlbW92ZWQuZW1pdCh0aGlzLnN1Z2dlc3Rpb24pO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cInNkYy1hdXRvY29tcGxldGUtY2hpcFwiPlxuICA8c3BhbiBjbGFzcz1cInNkYy1hdXRvY29tcGxldGUtY2hpcF9fbGFiZWxcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZS1jaGlwX19yZW1vdmVcIlxuICAgIGFyaWEtbGFiZWw9XCJSZW1vdmUgc3VnZ2VzdGlvblwiXG4gICAgKGNsaWNrKT1cInJlbW92ZVN1Z2dlc3Rpb24oKVwiXG4gID5cbiAgICA8aSBjbGFzcz1cImZhciBmYS10aW1lc1wiPjwvaT5cbiAgPC9idXR0b24+XG48L3NwYW4+XG4iXX0=
@@ -258,11 +258,11 @@ export class BreadcrumbComponent {
258
258
  });
259
259
  }
260
260
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
261
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BreadcrumbComponent, isStandalone: true, selector: "sdc-breadcrumb", inputs: { homeUrl: "homeUrl", targetHomeUrl: "targetHomeUrl", enableLinks: ["enableLinks", "enableLinks", booleanAttribute], ariaLabel: "ariaLabel", items: "items" }, ngImport: i0, template: "<nav\n class=\"sdc-breadcrumb\"\n [attr.aria-label]=\"(ariaLabelText() || 'platform.datacore.accessibility.breadcrumb_navigation') | translate\"\n>\n <ol class=\"sdc-breadcrumb-list\">\n @if (homeItem()) {\n <li class=\"sdc-breadcrumb-item sdc-breadcrumb-item--home\" [class.sdc-breadcrumb-item--current]=\"isAtHome()\">\n @if (!isAtHome() && canUseRouterLink(homeItem()!)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [routerLink]=\"routerLinkOf(homeItem()!)\"\n [queryParams]=\"queryParamsOf(homeItem()!)\"\n [fragment]=\"homeItem()!.fragment\"\n [queryParamsHandling]=\"homeItem()!.queryParamsHandling\"\n [preserveFragment]=\"homeItem()!.preserveFragment\"\n [skipLocationChange]=\"homeItem()!.skipLocationChange\"\n [replaceUrl]=\"homeItem()!.replaceUrl\"\n [state]=\"homeItem()!.state\"\n [attr.target]=\"targetAttrOf(homeItem()!)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </a>\n } @else if (!isAtHome() && canUseUrl(homeItem()!)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [attr.href]=\"hrefOf(homeItem()!)\"\n [attr.target]=\"targetAttrOf(homeItem()!)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </a>\n } @else {\n <span\n class=\"sdc-breadcrumb-text sdc-breadcrumb-text--home\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </span>\n }\n </li>\n }\n\n @for (item of trailItems(); track $index) {\n <li class=\"sdc-breadcrumb-separator\" aria-hidden=\"true\"></li>\n\n <li\n class=\"sdc-breadcrumb-item\"\n [class.sdc-breadcrumb-item--current]=\"item.disabled\"\n [class.sdc-breadcrumb-item--previous]=\"!item.disabled && $index === trailItems().length - 2\"\n >\n @if (canNavigate(item)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [routerLink]=\"hasRouterLink(item) ? routerLinkOf(item) : null\"\n [queryParams]=\"queryParamsOf(item)\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [attr.href]=\"!hasRouterLink(item) && hasUrl(item) ? hrefOf(item) : null\"\n [attr.target]=\"targetAttrOf(item)\"\n >\n <span class=\"sdc-breadcrumb-item-label\">{{ (item.label || '') | translate }}</span>\n <span class=\"sdc-breadcrumb-sr-only\">{{ ' (' + ($index + 1) + ')' }}</span>\n </a>\n } @else if (!item.disabled) {\n <span class=\"sdc-breadcrumb-text\">\n <span class=\"sdc-breadcrumb-item-label\">{{ (item.label || '') | translate }}</span>\n </span>\n } @else {\n <span class=\"sdc-breadcrumb-current\" aria-current=\"page\">{{ (item.label || '') | translate }}</span>\n }\n </li>\n }\n </ol>\n</nav>\n", styles: ["@charset \"UTF-8\";:host{display:block}.sdc-breadcrumb{font-size:12px;line-height:1.2;padding:0;background:transparent}.sdc-breadcrumb-list{list-style:none;display:flex;align-items:center;gap:0;margin:0;padding:0}.sdc-breadcrumb-item{display:inline-flex;align-items:center;min-height:18px}.sdc-breadcrumb-link{display:inline-flex;align-items:center;gap:var(--sdc-breadcrumb-link-gap, 8px);color:var(--sdc-breadcrumb-text-color, inherit);text-decoration:none!important;outline:none}.sdc-breadcrumb-item--home .sdc-breadcrumb-link,.sdc-breadcrumb-item--previous .sdc-breadcrumb-link{color:var(--sdc-breadcrumb-link-color, var(--sdc-primary-600, #2563eb))}.sdc-breadcrumb-item--home.sdc-breadcrumb-item--current .sdc-breadcrumb-text,.sdc-breadcrumb-item--home.sdc-breadcrumb-item--current .sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-current-color, #666872);cursor:default}.sdc-breadcrumb-text{display:inline-flex;align-items:center;gap:var(--sdc-breadcrumb-link-gap, 8px);color:var(--sdc-breadcrumb-text-color, inherit)}.sdc-breadcrumb-link:hover,.sdc-breadcrumb-link:active,.sdc-breadcrumb-link:visited{text-decoration:none!important}.sdc-breadcrumb-link:focus-visible{outline:2px solid var(--sdc-primary-600, #2563eb);outline-offset:2px;border-radius:4px}.sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-text-color, inherit);font-size:12px;line-height:1}.sdc-breadcrumb-item--home .sdc-breadcrumb-item-icon,.sdc-breadcrumb-item--previous .sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-link-color, var(--sdc-primary-600, #2563eb))}.sdc-breadcrumb-text .sdc-breadcrumb-item-icon{color:currentColor}.sdc-breadcrumb-item-label{font-weight:400}.sdc-breadcrumb-separator{display:inline-flex;align-items:center;justify-content:center;padding:0 var(--sdc-breadcrumb-separator-padding-x, 8px);color:var(--sdc-breadcrumb-separator-color, #667085);font-size:var(--sdc-breadcrumb-separator-size, 17px);line-height:1;transform:translateY(var(--sdc-breadcrumb-separator-translate-y, -1.6px))}.sdc-breadcrumb-separator:before{content:\"\\203a\"}.sdc-breadcrumb-current{color:var(--sdc-breadcrumb-current-color, #666872);font-weight:400}.sdc-breadcrumb-sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sdc-breadcrumb-item--current .sdc-breadcrumb-link{color:var(--sdc-breadcrumb-current-color, #666872);pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
261
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BreadcrumbComponent, isStandalone: true, selector: "sdc-breadcrumb", inputs: { homeUrl: "homeUrl", targetHomeUrl: "targetHomeUrl", enableLinks: ["enableLinks", "enableLinks", booleanAttribute], ariaLabel: "ariaLabel", items: "items" }, ngImport: i0, template: "<nav\n class=\"sdc-breadcrumb\"\n [attr.aria-label]=\"(ariaLabelText() || 'platform.datacore.accessibility.breadcrumb_navigation') | translate\"\n>\n <ol class=\"sdc-breadcrumb-list\">\n @if (homeItem()) {\n <li class=\"sdc-breadcrumb-item sdc-breadcrumb-item--home\" [class.sdc-breadcrumb-item--current]=\"isAtHome()\">\n @if (!isAtHome() && canUseRouterLink(homeItem()!)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [routerLink]=\"routerLinkOf(homeItem()!)\"\n [queryParams]=\"queryParamsOf(homeItem()!)\"\n [fragment]=\"homeItem()!.fragment\"\n [queryParamsHandling]=\"homeItem()!.queryParamsHandling\"\n [preserveFragment]=\"homeItem()!.preserveFragment\"\n [skipLocationChange]=\"homeItem()!.skipLocationChange\"\n [replaceUrl]=\"homeItem()!.replaceUrl\"\n [state]=\"homeItem()!.state\"\n [attr.target]=\"targetAttrOf(homeItem()!)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </a>\n } @else if (!isAtHome() && canUseUrl(homeItem()!)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [attr.href]=\"hrefOf(homeItem()!)\"\n [attr.target]=\"targetAttrOf(homeItem()!)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </a>\n } @else {\n <span\n class=\"sdc-breadcrumb-text sdc-breadcrumb-text--home\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </span>\n }\n </li>\n }\n\n @for (item of trailItems(); track $index) {\n <li class=\"sdc-breadcrumb-separator\" aria-hidden=\"true\"></li>\n\n <li\n class=\"sdc-breadcrumb-item\"\n [class.sdc-breadcrumb-item--current]=\"item.disabled\"\n [class.sdc-breadcrumb-item--previous]=\"!item.disabled && $index === trailItems().length - 2\"\n >\n @if (canNavigate(item)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [routerLink]=\"hasRouterLink(item) ? routerLinkOf(item) : null\"\n [queryParams]=\"queryParamsOf(item)\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [attr.href]=\"!hasRouterLink(item) && hasUrl(item) ? hrefOf(item) : null\"\n [attr.target]=\"targetAttrOf(item)\"\n >\n <span class=\"sdc-breadcrumb-item-label\">{{ (item.label || '') | translate }}</span>\n <span class=\"sdc-breadcrumb-sr-only\">{{ ' (' + ($index + 1) + ')' }}</span>\n </a>\n } @else if (!item.disabled) {\n <span class=\"sdc-breadcrumb-text\">\n <span class=\"sdc-breadcrumb-item-label\">{{ (item.label || '') | translate }}</span>\n </span>\n } @else {\n <span class=\"sdc-breadcrumb-current\" aria-current=\"page\">{{ (item.label || '') | translate }}</span>\n }\n </li>\n }\n </ol>\n</nav>\n", styles: ["@charset \"UTF-8\";:host{display:block}.sdc-breadcrumb{font-size:12px;line-height:1.2;padding:0;background:transparent}.sdc-breadcrumb-list{list-style:none;display:flex;align-items:center;gap:0;margin:0;padding:0}.sdc-breadcrumb-item{display:inline-flex;align-items:center;min-height:18px}.sdc-breadcrumb-link{display:inline-flex;align-items:center;gap:var(--sdc-breadcrumb-link-gap, 8px);color:var(--sdc-breadcrumb-text-color, inherit);text-decoration:none!important;outline:none}.sdc-breadcrumb-link:hover,.sdc-breadcrumb-link:active,.sdc-breadcrumb-link:visited{text-decoration:none!important}.sdc-breadcrumb-link:focus-visible{outline:2px solid var(--sdc-primary-600, #2563eb);outline-offset:2px;border-radius:4px}.sdc-breadcrumb-item--home .sdc-breadcrumb-link,.sdc-breadcrumb-item--previous .sdc-breadcrumb-link{color:var(--sdc-breadcrumb-link-color, var(--sdc-primary-600, #2563eb))}.sdc-breadcrumb-item--current .sdc-breadcrumb-link{color:var(--sdc-breadcrumb-current-color, #666872);pointer-events:none}.sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-text-color, inherit);font-size:12px;line-height:1}.sdc-breadcrumb-item--home.sdc-breadcrumb-item--current .sdc-breadcrumb-text,.sdc-breadcrumb-item--home.sdc-breadcrumb-item--current .sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-current-color, #666872);cursor:default}.sdc-breadcrumb-text{display:inline-flex;align-items:center;gap:var(--sdc-breadcrumb-link-gap, 8px);color:var(--sdc-breadcrumb-text-color, inherit)}.sdc-breadcrumb-item--home .sdc-breadcrumb-item-icon,.sdc-breadcrumb-item--previous .sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-link-color, var(--sdc-primary-600, #2563eb))}.sdc-breadcrumb-text .sdc-breadcrumb-item-icon{color:currentColor}.sdc-breadcrumb-item-label{font-weight:400}.sdc-breadcrumb-separator{display:inline-flex;align-items:center;justify-content:center;padding:0 var(--sdc-breadcrumb-separator-padding-x, 8px);color:var(--sdc-breadcrumb-separator-color, #667085);font-size:var(--sdc-breadcrumb-separator-size, 17px);line-height:1;transform:translateY(var(--sdc-breadcrumb-separator-translate-y, -1.6px))}.sdc-breadcrumb-separator:before{content:\"\\203a\"}.sdc-breadcrumb-current{color:var(--sdc-breadcrumb-current-color, #666872);font-weight:400}.sdc-breadcrumb-sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
262
262
  }
263
263
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BreadcrumbComponent, decorators: [{
264
264
  type: Component,
265
- args: [{ selector: 'sdc-breadcrumb', standalone: true, imports: [CommonModule, RouterModule, TranslateModule], encapsulation: ViewEncapsulation.Emulated, changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav\n class=\"sdc-breadcrumb\"\n [attr.aria-label]=\"(ariaLabelText() || 'platform.datacore.accessibility.breadcrumb_navigation') | translate\"\n>\n <ol class=\"sdc-breadcrumb-list\">\n @if (homeItem()) {\n <li class=\"sdc-breadcrumb-item sdc-breadcrumb-item--home\" [class.sdc-breadcrumb-item--current]=\"isAtHome()\">\n @if (!isAtHome() && canUseRouterLink(homeItem()!)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [routerLink]=\"routerLinkOf(homeItem()!)\"\n [queryParams]=\"queryParamsOf(homeItem()!)\"\n [fragment]=\"homeItem()!.fragment\"\n [queryParamsHandling]=\"homeItem()!.queryParamsHandling\"\n [preserveFragment]=\"homeItem()!.preserveFragment\"\n [skipLocationChange]=\"homeItem()!.skipLocationChange\"\n [replaceUrl]=\"homeItem()!.replaceUrl\"\n [state]=\"homeItem()!.state\"\n [attr.target]=\"targetAttrOf(homeItem()!)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </a>\n } @else if (!isAtHome() && canUseUrl(homeItem()!)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [attr.href]=\"hrefOf(homeItem()!)\"\n [attr.target]=\"targetAttrOf(homeItem()!)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </a>\n } @else {\n <span\n class=\"sdc-breadcrumb-text sdc-breadcrumb-text--home\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </span>\n }\n </li>\n }\n\n @for (item of trailItems(); track $index) {\n <li class=\"sdc-breadcrumb-separator\" aria-hidden=\"true\"></li>\n\n <li\n class=\"sdc-breadcrumb-item\"\n [class.sdc-breadcrumb-item--current]=\"item.disabled\"\n [class.sdc-breadcrumb-item--previous]=\"!item.disabled && $index === trailItems().length - 2\"\n >\n @if (canNavigate(item)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [routerLink]=\"hasRouterLink(item) ? routerLinkOf(item) : null\"\n [queryParams]=\"queryParamsOf(item)\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [attr.href]=\"!hasRouterLink(item) && hasUrl(item) ? hrefOf(item) : null\"\n [attr.target]=\"targetAttrOf(item)\"\n >\n <span class=\"sdc-breadcrumb-item-label\">{{ (item.label || '') | translate }}</span>\n <span class=\"sdc-breadcrumb-sr-only\">{{ ' (' + ($index + 1) + ')' }}</span>\n </a>\n } @else if (!item.disabled) {\n <span class=\"sdc-breadcrumb-text\">\n <span class=\"sdc-breadcrumb-item-label\">{{ (item.label || '') | translate }}</span>\n </span>\n } @else {\n <span class=\"sdc-breadcrumb-current\" aria-current=\"page\">{{ (item.label || '') | translate }}</span>\n }\n </li>\n }\n </ol>\n</nav>\n", styles: ["@charset \"UTF-8\";:host{display:block}.sdc-breadcrumb{font-size:12px;line-height:1.2;padding:0;background:transparent}.sdc-breadcrumb-list{list-style:none;display:flex;align-items:center;gap:0;margin:0;padding:0}.sdc-breadcrumb-item{display:inline-flex;align-items:center;min-height:18px}.sdc-breadcrumb-link{display:inline-flex;align-items:center;gap:var(--sdc-breadcrumb-link-gap, 8px);color:var(--sdc-breadcrumb-text-color, inherit);text-decoration:none!important;outline:none}.sdc-breadcrumb-item--home .sdc-breadcrumb-link,.sdc-breadcrumb-item--previous .sdc-breadcrumb-link{color:var(--sdc-breadcrumb-link-color, var(--sdc-primary-600, #2563eb))}.sdc-breadcrumb-item--home.sdc-breadcrumb-item--current .sdc-breadcrumb-text,.sdc-breadcrumb-item--home.sdc-breadcrumb-item--current .sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-current-color, #666872);cursor:default}.sdc-breadcrumb-text{display:inline-flex;align-items:center;gap:var(--sdc-breadcrumb-link-gap, 8px);color:var(--sdc-breadcrumb-text-color, inherit)}.sdc-breadcrumb-link:hover,.sdc-breadcrumb-link:active,.sdc-breadcrumb-link:visited{text-decoration:none!important}.sdc-breadcrumb-link:focus-visible{outline:2px solid var(--sdc-primary-600, #2563eb);outline-offset:2px;border-radius:4px}.sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-text-color, inherit);font-size:12px;line-height:1}.sdc-breadcrumb-item--home .sdc-breadcrumb-item-icon,.sdc-breadcrumb-item--previous .sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-link-color, var(--sdc-primary-600, #2563eb))}.sdc-breadcrumb-text .sdc-breadcrumb-item-icon{color:currentColor}.sdc-breadcrumb-item-label{font-weight:400}.sdc-breadcrumb-separator{display:inline-flex;align-items:center;justify-content:center;padding:0 var(--sdc-breadcrumb-separator-padding-x, 8px);color:var(--sdc-breadcrumb-separator-color, #667085);font-size:var(--sdc-breadcrumb-separator-size, 17px);line-height:1;transform:translateY(var(--sdc-breadcrumb-separator-translate-y, -1.6px))}.sdc-breadcrumb-separator:before{content:\"\\203a\"}.sdc-breadcrumb-current{color:var(--sdc-breadcrumb-current-color, #666872);font-weight:400}.sdc-breadcrumb-sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sdc-breadcrumb-item--current .sdc-breadcrumb-link{color:var(--sdc-breadcrumb-current-color, #666872);pointer-events:none}\n"] }]
265
+ args: [{ selector: 'sdc-breadcrumb', standalone: true, imports: [CommonModule, RouterModule, TranslateModule], encapsulation: ViewEncapsulation.Emulated, changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav\n class=\"sdc-breadcrumb\"\n [attr.aria-label]=\"(ariaLabelText() || 'platform.datacore.accessibility.breadcrumb_navigation') | translate\"\n>\n <ol class=\"sdc-breadcrumb-list\">\n @if (homeItem()) {\n <li class=\"sdc-breadcrumb-item sdc-breadcrumb-item--home\" [class.sdc-breadcrumb-item--current]=\"isAtHome()\">\n @if (!isAtHome() && canUseRouterLink(homeItem()!)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [routerLink]=\"routerLinkOf(homeItem()!)\"\n [queryParams]=\"queryParamsOf(homeItem()!)\"\n [fragment]=\"homeItem()!.fragment\"\n [queryParamsHandling]=\"homeItem()!.queryParamsHandling\"\n [preserveFragment]=\"homeItem()!.preserveFragment\"\n [skipLocationChange]=\"homeItem()!.skipLocationChange\"\n [replaceUrl]=\"homeItem()!.replaceUrl\"\n [state]=\"homeItem()!.state\"\n [attr.target]=\"targetAttrOf(homeItem()!)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </a>\n } @else if (!isAtHome() && canUseUrl(homeItem()!)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [attr.href]=\"hrefOf(homeItem()!)\"\n [attr.target]=\"targetAttrOf(homeItem()!)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </a>\n } @else {\n <span\n class=\"sdc-breadcrumb-text sdc-breadcrumb-text--home\"\n [attr.aria-label]=\"'platform.datacore.accessibility.breadcrumb_home' | translate\"\n >\n @if (homeItem()!.icon) {\n <span class=\"sdc-breadcrumb-item-icon\" [class]=\"homeItem()!.icon\" aria-hidden=\"true\"></span>\n }\n </span>\n }\n </li>\n }\n\n @for (item of trailItems(); track $index) {\n <li class=\"sdc-breadcrumb-separator\" aria-hidden=\"true\"></li>\n\n <li\n class=\"sdc-breadcrumb-item\"\n [class.sdc-breadcrumb-item--current]=\"item.disabled\"\n [class.sdc-breadcrumb-item--previous]=\"!item.disabled && $index === trailItems().length - 2\"\n >\n @if (canNavigate(item)) {\n <a\n class=\"sdc-breadcrumb-link\"\n [routerLink]=\"hasRouterLink(item) ? routerLinkOf(item) : null\"\n [queryParams]=\"queryParamsOf(item)\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [attr.href]=\"!hasRouterLink(item) && hasUrl(item) ? hrefOf(item) : null\"\n [attr.target]=\"targetAttrOf(item)\"\n >\n <span class=\"sdc-breadcrumb-item-label\">{{ (item.label || '') | translate }}</span>\n <span class=\"sdc-breadcrumb-sr-only\">{{ ' (' + ($index + 1) + ')' }}</span>\n </a>\n } @else if (!item.disabled) {\n <span class=\"sdc-breadcrumb-text\">\n <span class=\"sdc-breadcrumb-item-label\">{{ (item.label || '') | translate }}</span>\n </span>\n } @else {\n <span class=\"sdc-breadcrumb-current\" aria-current=\"page\">{{ (item.label || '') | translate }}</span>\n }\n </li>\n }\n </ol>\n</nav>\n", styles: ["@charset \"UTF-8\";:host{display:block}.sdc-breadcrumb{font-size:12px;line-height:1.2;padding:0;background:transparent}.sdc-breadcrumb-list{list-style:none;display:flex;align-items:center;gap:0;margin:0;padding:0}.sdc-breadcrumb-item{display:inline-flex;align-items:center;min-height:18px}.sdc-breadcrumb-link{display:inline-flex;align-items:center;gap:var(--sdc-breadcrumb-link-gap, 8px);color:var(--sdc-breadcrumb-text-color, inherit);text-decoration:none!important;outline:none}.sdc-breadcrumb-link:hover,.sdc-breadcrumb-link:active,.sdc-breadcrumb-link:visited{text-decoration:none!important}.sdc-breadcrumb-link:focus-visible{outline:2px solid var(--sdc-primary-600, #2563eb);outline-offset:2px;border-radius:4px}.sdc-breadcrumb-item--home .sdc-breadcrumb-link,.sdc-breadcrumb-item--previous .sdc-breadcrumb-link{color:var(--sdc-breadcrumb-link-color, var(--sdc-primary-600, #2563eb))}.sdc-breadcrumb-item--current .sdc-breadcrumb-link{color:var(--sdc-breadcrumb-current-color, #666872);pointer-events:none}.sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-text-color, inherit);font-size:12px;line-height:1}.sdc-breadcrumb-item--home.sdc-breadcrumb-item--current .sdc-breadcrumb-text,.sdc-breadcrumb-item--home.sdc-breadcrumb-item--current .sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-current-color, #666872);cursor:default}.sdc-breadcrumb-text{display:inline-flex;align-items:center;gap:var(--sdc-breadcrumb-link-gap, 8px);color:var(--sdc-breadcrumb-text-color, inherit)}.sdc-breadcrumb-item--home .sdc-breadcrumb-item-icon,.sdc-breadcrumb-item--previous .sdc-breadcrumb-item-icon{color:var(--sdc-breadcrumb-link-color, var(--sdc-primary-600, #2563eb))}.sdc-breadcrumb-text .sdc-breadcrumb-item-icon{color:currentColor}.sdc-breadcrumb-item-label{font-weight:400}.sdc-breadcrumb-separator{display:inline-flex;align-items:center;justify-content:center;padding:0 var(--sdc-breadcrumb-separator-padding-x, 8px);color:var(--sdc-breadcrumb-separator-color, #667085);font-size:var(--sdc-breadcrumb-separator-size, 17px);line-height:1;transform:translateY(var(--sdc-breadcrumb-separator-translate-y, -1.6px))}.sdc-breadcrumb-separator:before{content:\"\\203a\"}.sdc-breadcrumb-current{color:var(--sdc-breadcrumb-current-color, #666872);font-weight:400}.sdc-breadcrumb-sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}\n"] }]
266
266
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }], propDecorators: { homeUrl: [{
267
267
  type: Input
268
268
  }], targetHomeUrl: [{
@@ -1,31 +1,36 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewEncapsulation, inject } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, Output, ViewChild, ViewEncapsulation, inject } from '@angular/core';
2
2
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
3
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
4
- import { CARD_COLLAPSE_CATEGORY_ARIA_LABEL_KEY, CARD_COLLAPSE_DESCRIPTION_ARIA_LABEL_KEY, CARD_COLLAPSE_NAME_ARIA_LABEL_KEY, CARD_DESCRIPTION_LABEL_KEY, CARD_DEFAULT_CATEGORY_MAX_LENGTH, CARD_DEFAULT_DESCRIPTION_MAX_LENGTH, CARD_DEFAULT_NAME_MAX_LENGTH, CARD_EXPAND_CATEGORY_ARIA_LABEL_KEY, CARD_EXPAND_DESCRIPTION_ARIA_LABEL_KEY, CARD_EXPAND_NAME_ARIA_LABEL_KEY, CARD_SHOW_LESS_LABEL_KEY } from '../../../core/constants/card.const';
4
+ import { CARD_DESCRIPTION_LABEL_KEY } from '../../../core/constants/card.const';
5
5
  import { resolveTranslatableText } from '../../../core/utils/i18n.util';
6
- import { toPositiveInteger } from '../../../core/utils/number.util';
7
- import { characterLength, truncateCharacters } from '../../../core/utils/string.util';
8
6
  import { ButtonComponent } from '../../button/button.component';
9
7
  import * as i0 from "@angular/core";
10
- import * as i1 from "@ngx-translate/core";
11
8
  export class CardMiniComponent {
12
9
  cdr = inject(ChangeDetectorRef);
13
10
  translate = inject(TranslateService);
14
- showLessLabelKey = CARD_SHOW_LESS_LABEL_KEY;
15
- expandNameAriaLabelKey = CARD_EXPAND_NAME_ARIA_LABEL_KEY;
16
- collapseNameAriaLabelKey = CARD_COLLAPSE_NAME_ARIA_LABEL_KEY;
17
- expandCategoryAriaLabelKey = CARD_EXPAND_CATEGORY_ARIA_LABEL_KEY;
18
- collapseCategoryAriaLabelKey = CARD_COLLAPSE_CATEGORY_ARIA_LABEL_KEY;
19
- expandDescriptionAriaLabelKey = CARD_EXPAND_DESCRIPTION_ARIA_LABEL_KEY;
20
- collapseDescriptionAriaLabelKey = CARD_COLLAPSE_DESCRIPTION_ARIA_LABEL_KEY;
21
11
  data;
22
12
  options;
23
13
  cardAction = new EventEmitter();
24
- expandedDescription = false;
25
- expandedName = false;
26
- expandedCategory = false;
14
+ nameTextRef;
15
+ categoryTextRef;
16
+ descriptionTextRef;
17
+ showNameTitle = false;
18
+ showCategoryTitle = false;
19
+ showDescriptionTitle = false;
27
20
  constructor() {
28
- this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe(() => this.cdr.markForCheck());
21
+ this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe(() => {
22
+ this.refreshNativeTitles();
23
+ this.cdr.markForCheck();
24
+ });
25
+ }
26
+ ngAfterViewInit() {
27
+ this.refreshNativeTitles();
28
+ }
29
+ ngOnChanges(_) {
30
+ this.refreshNativeTitles();
31
+ }
32
+ onWindowResize() {
33
+ this.refreshNativeTitles();
29
34
  }
30
35
  get fullDescription() {
31
36
  return this.translateText(this.data?.description);
@@ -45,102 +50,61 @@ export class CardMiniComponent {
45
50
  get buttonAriaLabel() {
46
51
  return [this.buttonLabelText, this.fullName].filter(Boolean).join(' - ');
47
52
  }
48
- get descriptionMaxLen() {
49
- return toPositiveInteger(this.options?.descriptionMaxLength, CARD_DEFAULT_DESCRIPTION_MAX_LENGTH);
50
- }
51
- get nameMaxLen() {
52
- return toPositiveInteger(this.options?.nameMaxLength, CARD_DEFAULT_NAME_MAX_LENGTH);
53
- }
54
- get categoryMaxLen() {
55
- return toPositiveInteger(this.options?.categoryMaxLength, CARD_DEFAULT_CATEGORY_MAX_LENGTH);
56
- }
57
- get isDescriptionTruncated() {
58
- return characterLength(this.fullDescription) > this.descriptionMaxLen;
59
- }
60
- get isNameTruncated() {
61
- return characterLength(this.fullName) > this.nameMaxLen;
62
- }
63
- get isCategoryTruncated() {
64
- return characterLength(this.fullCategory) > this.categoryMaxLen;
65
- }
66
- get shortDescription() {
67
- return truncateCharacters(this.fullDescription, this.descriptionMaxLen);
68
- }
69
- get shortName() {
70
- return truncateCharacters(this.fullName, this.nameMaxLen);
71
- }
72
- get shortCategory() {
73
- return truncateCharacters(this.fullCategory, this.categoryMaxLen);
74
- }
75
- expandDescription(event) {
76
- this.stop(event);
77
- if (!this.isDescriptionTruncated) {
78
- return;
79
- }
80
- this.expandedDescription = true;
81
- }
82
- collapseDescription(event) {
83
- this.stop(event);
84
- this.expandedDescription = false;
53
+ translateText(value) {
54
+ return resolveTranslatableText(this.translate, value);
85
55
  }
86
- expandName(event) {
87
- this.stop(event);
88
- if (!this.isNameTruncated) {
89
- return;
56
+ refreshNativeTitles() {
57
+ queueMicrotask(() => {
58
+ const nextName = this.hasHorizontalOverflow(this.nameTextRef?.nativeElement);
59
+ const nextCategory = this.hasHorizontalOverflow(this.categoryTextRef?.nativeElement);
60
+ const nextDescription = this.hasVerticalOverflow(this.descriptionTextRef?.nativeElement);
61
+ const hasChanged = this.showNameTitle !== nextName
62
+ || this.showCategoryTitle !== nextCategory
63
+ || this.showDescriptionTitle !== nextDescription;
64
+ if (!hasChanged) {
65
+ return;
66
+ }
67
+ this.showNameTitle = nextName;
68
+ this.showCategoryTitle = nextCategory;
69
+ this.showDescriptionTitle = nextDescription;
70
+ this.cdr.markForCheck();
71
+ });
72
+ }
73
+ hasHorizontalOverflow(element) {
74
+ if (!element) {
75
+ return false;
90
76
  }
91
- this.expandedName = true;
77
+ return element.scrollWidth > element.clientWidth;
92
78
  }
93
- collapseName(event) {
94
- this.stop(event);
95
- this.expandedName = false;
96
- }
97
- expandCategory(event) {
98
- this.stop(event);
99
- if (!this.isCategoryTruncated) {
100
- return;
79
+ hasVerticalOverflow(element) {
80
+ if (!element) {
81
+ return false;
101
82
  }
102
- this.expandedCategory = true;
103
- }
104
- collapseCategory(event) {
105
- this.stop(event);
106
- this.expandedCategory = false;
107
- }
108
- onDescriptionEllipsisEnter(event) {
109
- this.expandDescription(event);
110
- }
111
- onDescriptionEllipsisSpace(event) {
112
- this.expandDescription(event);
113
- }
114
- onNameEllipsisEnter(event) {
115
- this.expandName(event);
116
- }
117
- onNameEllipsisSpace(event) {
118
- this.expandName(event);
119
- }
120
- onCategoryEllipsisEnter(event) {
121
- this.expandCategory(event);
122
- }
123
- onCategoryEllipsisSpace(event) {
124
- this.expandCategory(event);
125
- }
126
- translateText(value) {
127
- return resolveTranslatableText(this.translate, value);
128
- }
129
- stop(event) {
130
- event?.preventDefault();
131
- event?.stopPropagation();
83
+ return element.scrollHeight > element.clientHeight;
132
84
  }
133
85
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardMiniComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
134
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CardMiniComponent, isStandalone: true, selector: "sdc-card-mini", inputs: { data: "data", options: "options" }, outputs: { cardAction: "cardAction" }, ngImport: i0, template: "<article class=\"sdc-card-mini dp-card\" [attr.aria-label]=\"fullName + ' - ' + fullCategory\">\n <header class=\"sdc-card__header\">\n <div class=\"sdc-card__icon\" [style.background]=\"options?.backgroundIcon\" [style.color]=\"options?.iconColor\">\n <i [class]=\"data.icon || options?.icon\" aria-hidden=\"true\"></i>\n </div>\n\n <div class=\"sdc-card__header-text\">\n <h2 class=\"sdc-card__title\" [attr.aria-expanded]=\"isNameTruncated ? expandedName : null\">\n @if (!expandedName) {\n {{ shortName }}@if (isNameTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__ellipsis\"\n [attr.aria-label]=\"expandNameAriaLabelKey | translate\"\n (click)=\"expandName($event)\"\n (keydown.enter)=\"onNameEllipsisEnter($event)\"\n (keydown.space)=\"onNameEllipsisSpace($event)\"\n >...</button\n >\n }\n } @else {\n {{ fullName }}\n }\n </h2>\n\n @if (expandedName && isNameTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__toggle sdc-card__toggle--inline\"\n (click)=\"collapseName($event)\"\n [attr.aria-label]=\"collapseNameAriaLabelKey | translate\"\n >\n {{ showLessLabelKey | translate }}\n </button>\n }\n\n <div class=\"sdc-card__subtitle\" [attr.aria-expanded]=\"isCategoryTruncated ? expandedCategory : null\">\n @if (!expandedCategory) {\n {{ shortCategory }}@if (isCategoryTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__ellipsis\"\n [attr.aria-label]=\"expandCategoryAriaLabelKey | translate\"\n (click)=\"expandCategory($event)\"\n (keydown.enter)=\"onCategoryEllipsisEnter($event)\"\n (keydown.space)=\"onCategoryEllipsisSpace($event)\"\n >...</button\n >\n }\n } @else {\n {{ fullCategory }}\n }\n </div>\n\n @if (expandedCategory && isCategoryTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__toggle sdc-card__toggle--inline\"\n (click)=\"collapseCategory($event)\"\n [attr.aria-label]=\"collapseCategoryAriaLabelKey | translate\"\n >\n {{ showLessLabelKey | translate }}\n </button>\n }\n </div>\n </header>\n\n <div class=\"sdc-card__body\">\n <div class=\"sdc-card__content\">\n @if (descriptionLabel) {\n <div class=\"sdc-card__description-label\">{{ descriptionLabel }}</div>\n }\n\n <p class=\"sdc-card__description\" [attr.aria-expanded]=\"isDescriptionTruncated ? expandedDescription : null\">\n @if (!expandedDescription) {\n {{ shortDescription }}@if (isDescriptionTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__ellipsis\"\n [attr.aria-label]=\"expandDescriptionAriaLabelKey | translate\"\n (click)=\"expandDescription($event)\"\n (keydown.enter)=\"onDescriptionEllipsisEnter($event)\"\n (keydown.space)=\"onDescriptionEllipsisSpace($event)\"\n >...</button\n >\n }\n } @else {\n {{ fullDescription }}\n }\n </p>\n\n @if (expandedDescription && isDescriptionTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__toggle\"\n (click)=\"collapseDescription($event)\"\n [attr.aria-label]=\"collapseDescriptionAriaLabelKey | translate\"\n >\n {{ showLessLabelKey | translate }}\n </button>\n }\n </div>\n </div>\n\n <footer class=\"sdc-card__footer flex justify-content-end\">\n <div class=\"sdc-card__footer-action\">\n <sdc-button\n width=\"100%\"\n (clicked)=\"cardAction.emit(data)\"\n [priority]=\"options?.buttonPriority!\"\n [label]=\"options?.buttonLabel!\"\n [attr.aria-label]=\"buttonAriaLabel\"\n >\n </sdc-button>\n </div>\n </footer>\n</article>\n", styles: [":host{display:block}.sdc-card-mini{width:100%;border-radius:var(--sdc-formfield-border-radius);border:var(--sdc-surface-border);overflow:hidden;display:flex;padding:var(--sdc-card-padding, 7px);flex-direction:column;min-height:var(--sdc-card-min-height, 19rem)}.sdc-card__header{display:flex;align-items:flex-start;justify-content:flex-start;gap:var(--sdc-card-header-gap, .75rem);padding:var(--sdc-card-header-padding, max(0px, var(--sdc-card-header-vertical-spacing, 1.25rem) - var(--sdc-card-padding, 7px)) var(--sdc-card-header-padding-x, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))) var(--sdc-card-header-vertical-spacing, 1.25rem));position:relative;border-bottom:none}.sdc-card__header:after{content:\"\";position:absolute;bottom:0;left:calc(-1 * var(--sdc-card-padding, 7px));right:calc(-1 * var(--sdc-card-padding, 7px));border-bottom:var(--sdc-card-divider-border, var(--sdc-surface-divider-border))}.sdc-card__icon{min-width:var(--sdc-card-icon-size, 2.9rem);min-height:var(--sdc-card-icon-size, 2.9rem);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.sdc-card__header-text{display:flex;flex-direction:column;justify-content:flex-start;min-height:var(--sdc-card-icon-size, 2.9rem);width:100%;min-width:0;flex:1 1 auto}.sdc-card__body{padding:var(--sdc-card-body-padding, var(--sdc-card-body-padding-y, .3rem) var(--sdc-card-body-padding-x, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))))}.sdc-card__title{margin:0;width:100%;min-width:0;font-size:1.4rem;font-weight:600;line-height:1.1;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.sdc-card__subtitle{margin-top:.45rem;width:100%;min-width:0;font-weight:700;font-size:.775rem;color:var(--sdc-card-subtitle-color, var(--sdc-text-muted, #475569));line-height:1.1;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.sdc-card__content{margin-top:.5rem}.sdc-card__description-label{margin:0 0 var(--sdc-card-description-label-gap, .35rem);color:var(--sdc-card-description-label-color, inherit);font-size:var(--sdc-card-description-label-font-size, inherit);font-weight:var(--sdc-card-description-label-font-weight, 700);line-height:var(--sdc-card-description-label-line-height, 1.2)}.sdc-card__description{text-align:justify;margin:0;overflow:hidden}.sdc-card__ellipsis{appearance:none;background:transparent;border:0;padding:0;font:inherit;display:inline;white-space:nowrap;margin-left:.05rem;color:var(--sdc-card-action-color, #3b82f6);font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none;line-height:1}.sdc-card__ellipsis:hover{text-decoration:underline}.sdc-card__ellipsis:focus-visible{outline:none;box-shadow:var(--sdc-card-action-focus, 0 0 0 2px #3b82f6);border-radius:var(--sdc-card-action-radius, .5rem);padding:0 var(--sdc-card-toggle-padding, .25rem)}.sdc-card__toggle{margin-top:.5rem;background:transparent;border:0;padding:0;font:inherit;font-size:var(--sdc-card-toggle-font-size, .72rem);line-height:var(--sdc-card-toggle-line-height, 1);cursor:pointer;color:var(--sdc-card-action-color, #3b82f6);font-weight:600;text-align:left}.sdc-card__toggle--inline{margin-top:.15rem}.sdc-card__toggle:hover{text-decoration:underline}.sdc-card__toggle:focus-visible{outline:none;box-shadow:var(--sdc-card-action-focus, 0 0 0 2px #3b82f6);border-radius:var(--sdc-card-action-radius, .5rem);padding:var(--sdc-card-toggle-padding, .25rem);margin-left:calc(-1 * var(--sdc-card-toggle-padding, .25rem))}.sdc-card__tags{margin-top:.5rem;display:flex;gap:.5rem;flex-wrap:wrap}.sdc-card__footer{margin-top:auto;padding:var(--sdc-card-footer-padding, var(--sdc-card-footer-padding-y, var(--sdc-card-horizontal-spacing, 1rem)) var(--sdc-card-footer-padding-right, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))) var(--sdc-card-footer-padding-bottom, max(0px, var(--sdc-card-footer-padding-y, var(--sdc-card-horizontal-spacing, 1rem)) - var(--sdc-card-padding, 7px))) var(--sdc-card-footer-padding-left, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))));display:flex;align-items:center;justify-content:flex-end;gap:var(--sdc-card-footer-gap, .5rem);min-height:var(--sdc-card-footer-min-height, auto);position:relative;border-top:none}.sdc-card__footer:before{content:\"\";position:absolute;top:0;left:calc(-1 * var(--sdc-card-padding, 7px));right:calc(-1 * var(--sdc-card-padding, 7px));border-top:var(--sdc-card-divider-border, var(--sdc-surface-divider-border))}.sdc-card__footer-action{box-sizing:border-box;flex:0 1 var(--sdc-card-footer-action-width, 50%);max-width:100%;width:var(--sdc-card-footer-action-width, 50%)}.sdc-card__footer-action sdc-button{display:block;width:100%}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
86
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CardMiniComponent, isStandalone: true, selector: "sdc-card-mini", inputs: { data: "data", options: "options" }, outputs: { cardAction: "cardAction" }, host: { listeners: { "window:resize": "onWindowResize()" } }, viewQueries: [{ propertyName: "nameTextRef", first: true, predicate: ["nameTextRef"], descendants: true }, { propertyName: "categoryTextRef", first: true, predicate: ["categoryTextRef"], descendants: true }, { propertyName: "descriptionTextRef", first: true, predicate: ["descriptionTextRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<article class=\"sdc-card-mini dp-card\" [attr.aria-label]=\"fullName + ' - ' + fullCategory\">\n <header class=\"sdc-card__header\">\n <div class=\"sdc-card__icon\" [style.background]=\"options?.backgroundIcon\" [style.color]=\"options?.iconColor\">\n <i [class]=\"data.icon || options?.icon\" aria-hidden=\"true\"></i>\n </div>\n\n <div class=\"sdc-card__header-text\">\n <h2\n #nameTextRef\n class=\"sdc-card__title\"\n [attr.title]=\"showNameTitle ? fullName : null\"\n >\n {{ fullName }}\n </h2>\n\n <div\n #categoryTextRef\n class=\"sdc-card__subtitle\"\n [attr.title]=\"showCategoryTitle ? fullCategory : null\"\n >\n {{ fullCategory }}\n </div>\n </div>\n </header>\n\n <div class=\"sdc-card__body\">\n <div class=\"sdc-card__content\">\n @if (descriptionLabel) {\n <div class=\"sdc-card__description-label\">{{ descriptionLabel }}</div>\n }\n\n <p\n #descriptionTextRef\n class=\"sdc-card__description\"\n [attr.title]=\"showDescriptionTitle ? fullDescription : null\"\n >\n {{ fullDescription }}\n </p>\n </div>\n </div>\n\n <footer class=\"sdc-card__footer flex justify-content-end\">\n <div class=\"sdc-card__footer-action\">\n <sdc-button\n width=\"100%\"\n (clicked)=\"cardAction.emit(data)\"\n [priority]=\"options?.buttonPriority!\"\n [label]=\"options?.buttonLabel!\"\n [attr.aria-label]=\"buttonAriaLabel\"\n >\n </sdc-button>\n </div>\n </footer>\n</article>\n", styles: [":host{display:block}.sdc-card-mini{width:100%;border-radius:var(--sdc-formfield-border-radius);border:var(--sdc-surface-border);overflow:hidden;display:flex;padding:var(--sdc-card-padding, 7px);flex-direction:column;min-height:var(--sdc-card-min-height, 19rem)}.sdc-card__header{display:flex;align-items:flex-start;justify-content:flex-start;gap:var(--sdc-card-header-gap, .75rem);padding:var(--sdc-card-header-padding, max(0px, var(--sdc-card-header-vertical-spacing, 1.25rem) - var(--sdc-card-padding, 7px)) var(--sdc-card-header-padding-x, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))) var(--sdc-card-header-vertical-spacing, 1.25rem));position:relative;border-bottom:none}.sdc-card__header:after{content:\"\";position:absolute;bottom:0;left:calc(-1 * var(--sdc-card-padding, 7px));right:calc(-1 * var(--sdc-card-padding, 7px));border-bottom:var(--sdc-card-divider-border, var(--sdc-surface-divider-border))}.sdc-card__icon{min-width:var(--sdc-card-icon-size, 2.9rem);min-height:var(--sdc-card-icon-size, 2.9rem);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.sdc-card__header-text{display:flex;flex-direction:column;justify-content:flex-start;min-height:var(--sdc-card-icon-size, 2.9rem);width:100%;min-width:0;flex:1 1 auto}.sdc-card__body{padding:var(--sdc-card-body-padding, var(--sdc-card-body-padding-y, .3rem) var(--sdc-card-body-padding-x, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))))}.sdc-card__title{margin:0;width:100%;min-width:0;font-size:1.4rem;font-weight:600;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-card__subtitle{margin-top:.45rem;width:100%;min-width:0;font-weight:700;font-size:.775rem;color:var(--sdc-card-subtitle-color, var(--sdc-text-muted, #475569));line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-card__content{margin-top:.5rem}.sdc-card__description-label{margin:0 0 var(--sdc-card-description-label-gap, .35rem);color:var(--sdc-card-description-label-color, inherit);font-size:var(--sdc-card-description-label-font-size, inherit);font-weight:var(--sdc-card-description-label-font-weight, 700);line-height:var(--sdc-card-description-label-line-height, 1.2)}.sdc-card__description{text-align:justify;margin:0;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3}.sdc-card__tags{margin-top:.5rem;display:flex;gap:.5rem;flex-wrap:wrap}.sdc-card__footer{margin-top:auto;padding:var(--sdc-card-footer-padding, var(--sdc-card-footer-padding-y, var(--sdc-card-horizontal-spacing, 1rem)) var(--sdc-card-footer-padding-right, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))) var(--sdc-card-footer-padding-bottom, max(0px, var(--sdc-card-footer-padding-y, var(--sdc-card-horizontal-spacing, 1rem)) - var(--sdc-card-padding, 7px))) var(--sdc-card-footer-padding-left, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))));display:flex;align-items:center;justify-content:flex-end;gap:var(--sdc-card-footer-gap, .5rem);min-height:var(--sdc-card-footer-min-height, auto);position:relative;border-top:none}.sdc-card__footer:before{content:\"\";position:absolute;top:0;left:calc(-1 * var(--sdc-card-padding, 7px));right:calc(-1 * var(--sdc-card-padding, 7px));border-top:var(--sdc-card-divider-border, var(--sdc-surface-divider-border))}.sdc-card__footer-action{box-sizing:border-box;flex:0 1 var(--sdc-card-footer-action-width, 50%);max-width:100%;width:var(--sdc-card-footer-action-width, 50%)}.sdc-card__footer-action sdc-button{display:block;width:100%}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
135
87
  }
136
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardMiniComponent, decorators: [{
137
89
  type: Component,
138
- args: [{ selector: 'sdc-card-mini', imports: [ButtonComponent, TranslateModule], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<article class=\"sdc-card-mini dp-card\" [attr.aria-label]=\"fullName + ' - ' + fullCategory\">\n <header class=\"sdc-card__header\">\n <div class=\"sdc-card__icon\" [style.background]=\"options?.backgroundIcon\" [style.color]=\"options?.iconColor\">\n <i [class]=\"data.icon || options?.icon\" aria-hidden=\"true\"></i>\n </div>\n\n <div class=\"sdc-card__header-text\">\n <h2 class=\"sdc-card__title\" [attr.aria-expanded]=\"isNameTruncated ? expandedName : null\">\n @if (!expandedName) {\n {{ shortName }}@if (isNameTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__ellipsis\"\n [attr.aria-label]=\"expandNameAriaLabelKey | translate\"\n (click)=\"expandName($event)\"\n (keydown.enter)=\"onNameEllipsisEnter($event)\"\n (keydown.space)=\"onNameEllipsisSpace($event)\"\n >...</button\n >\n }\n } @else {\n {{ fullName }}\n }\n </h2>\n\n @if (expandedName && isNameTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__toggle sdc-card__toggle--inline\"\n (click)=\"collapseName($event)\"\n [attr.aria-label]=\"collapseNameAriaLabelKey | translate\"\n >\n {{ showLessLabelKey | translate }}\n </button>\n }\n\n <div class=\"sdc-card__subtitle\" [attr.aria-expanded]=\"isCategoryTruncated ? expandedCategory : null\">\n @if (!expandedCategory) {\n {{ shortCategory }}@if (isCategoryTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__ellipsis\"\n [attr.aria-label]=\"expandCategoryAriaLabelKey | translate\"\n (click)=\"expandCategory($event)\"\n (keydown.enter)=\"onCategoryEllipsisEnter($event)\"\n (keydown.space)=\"onCategoryEllipsisSpace($event)\"\n >...</button\n >\n }\n } @else {\n {{ fullCategory }}\n }\n </div>\n\n @if (expandedCategory && isCategoryTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__toggle sdc-card__toggle--inline\"\n (click)=\"collapseCategory($event)\"\n [attr.aria-label]=\"collapseCategoryAriaLabelKey | translate\"\n >\n {{ showLessLabelKey | translate }}\n </button>\n }\n </div>\n </header>\n\n <div class=\"sdc-card__body\">\n <div class=\"sdc-card__content\">\n @if (descriptionLabel) {\n <div class=\"sdc-card__description-label\">{{ descriptionLabel }}</div>\n }\n\n <p class=\"sdc-card__description\" [attr.aria-expanded]=\"isDescriptionTruncated ? expandedDescription : null\">\n @if (!expandedDescription) {\n {{ shortDescription }}@if (isDescriptionTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__ellipsis\"\n [attr.aria-label]=\"expandDescriptionAriaLabelKey | translate\"\n (click)=\"expandDescription($event)\"\n (keydown.enter)=\"onDescriptionEllipsisEnter($event)\"\n (keydown.space)=\"onDescriptionEllipsisSpace($event)\"\n >...</button\n >\n }\n } @else {\n {{ fullDescription }}\n }\n </p>\n\n @if (expandedDescription && isDescriptionTruncated) {\n <button\n type=\"button\"\n class=\"sdc-card__toggle\"\n (click)=\"collapseDescription($event)\"\n [attr.aria-label]=\"collapseDescriptionAriaLabelKey | translate\"\n >\n {{ showLessLabelKey | translate }}\n </button>\n }\n </div>\n </div>\n\n <footer class=\"sdc-card__footer flex justify-content-end\">\n <div class=\"sdc-card__footer-action\">\n <sdc-button\n width=\"100%\"\n (clicked)=\"cardAction.emit(data)\"\n [priority]=\"options?.buttonPriority!\"\n [label]=\"options?.buttonLabel!\"\n [attr.aria-label]=\"buttonAriaLabel\"\n >\n </sdc-button>\n </div>\n </footer>\n</article>\n", styles: [":host{display:block}.sdc-card-mini{width:100%;border-radius:var(--sdc-formfield-border-radius);border:var(--sdc-surface-border);overflow:hidden;display:flex;padding:var(--sdc-card-padding, 7px);flex-direction:column;min-height:var(--sdc-card-min-height, 19rem)}.sdc-card__header{display:flex;align-items:flex-start;justify-content:flex-start;gap:var(--sdc-card-header-gap, .75rem);padding:var(--sdc-card-header-padding, max(0px, var(--sdc-card-header-vertical-spacing, 1.25rem) - var(--sdc-card-padding, 7px)) var(--sdc-card-header-padding-x, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))) var(--sdc-card-header-vertical-spacing, 1.25rem));position:relative;border-bottom:none}.sdc-card__header:after{content:\"\";position:absolute;bottom:0;left:calc(-1 * var(--sdc-card-padding, 7px));right:calc(-1 * var(--sdc-card-padding, 7px));border-bottom:var(--sdc-card-divider-border, var(--sdc-surface-divider-border))}.sdc-card__icon{min-width:var(--sdc-card-icon-size, 2.9rem);min-height:var(--sdc-card-icon-size, 2.9rem);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.sdc-card__header-text{display:flex;flex-direction:column;justify-content:flex-start;min-height:var(--sdc-card-icon-size, 2.9rem);width:100%;min-width:0;flex:1 1 auto}.sdc-card__body{padding:var(--sdc-card-body-padding, var(--sdc-card-body-padding-y, .3rem) var(--sdc-card-body-padding-x, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))))}.sdc-card__title{margin:0;width:100%;min-width:0;font-size:1.4rem;font-weight:600;line-height:1.1;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.sdc-card__subtitle{margin-top:.45rem;width:100%;min-width:0;font-weight:700;font-size:.775rem;color:var(--sdc-card-subtitle-color, var(--sdc-text-muted, #475569));line-height:1.1;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.sdc-card__content{margin-top:.5rem}.sdc-card__description-label{margin:0 0 var(--sdc-card-description-label-gap, .35rem);color:var(--sdc-card-description-label-color, inherit);font-size:var(--sdc-card-description-label-font-size, inherit);font-weight:var(--sdc-card-description-label-font-weight, 700);line-height:var(--sdc-card-description-label-line-height, 1.2)}.sdc-card__description{text-align:justify;margin:0;overflow:hidden}.sdc-card__ellipsis{appearance:none;background:transparent;border:0;padding:0;font:inherit;display:inline;white-space:nowrap;margin-left:.05rem;color:var(--sdc-card-action-color, #3b82f6);font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none;line-height:1}.sdc-card__ellipsis:hover{text-decoration:underline}.sdc-card__ellipsis:focus-visible{outline:none;box-shadow:var(--sdc-card-action-focus, 0 0 0 2px #3b82f6);border-radius:var(--sdc-card-action-radius, .5rem);padding:0 var(--sdc-card-toggle-padding, .25rem)}.sdc-card__toggle{margin-top:.5rem;background:transparent;border:0;padding:0;font:inherit;font-size:var(--sdc-card-toggle-font-size, .72rem);line-height:var(--sdc-card-toggle-line-height, 1);cursor:pointer;color:var(--sdc-card-action-color, #3b82f6);font-weight:600;text-align:left}.sdc-card__toggle--inline{margin-top:.15rem}.sdc-card__toggle:hover{text-decoration:underline}.sdc-card__toggle:focus-visible{outline:none;box-shadow:var(--sdc-card-action-focus, 0 0 0 2px #3b82f6);border-radius:var(--sdc-card-action-radius, .5rem);padding:var(--sdc-card-toggle-padding, .25rem);margin-left:calc(-1 * var(--sdc-card-toggle-padding, .25rem))}.sdc-card__tags{margin-top:.5rem;display:flex;gap:.5rem;flex-wrap:wrap}.sdc-card__footer{margin-top:auto;padding:var(--sdc-card-footer-padding, var(--sdc-card-footer-padding-y, var(--sdc-card-horizontal-spacing, 1rem)) var(--sdc-card-footer-padding-right, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))) var(--sdc-card-footer-padding-bottom, max(0px, var(--sdc-card-footer-padding-y, var(--sdc-card-horizontal-spacing, 1rem)) - var(--sdc-card-padding, 7px))) var(--sdc-card-footer-padding-left, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))));display:flex;align-items:center;justify-content:flex-end;gap:var(--sdc-card-footer-gap, .5rem);min-height:var(--sdc-card-footer-min-height, auto);position:relative;border-top:none}.sdc-card__footer:before{content:\"\";position:absolute;top:0;left:calc(-1 * var(--sdc-card-padding, 7px));right:calc(-1 * var(--sdc-card-padding, 7px));border-top:var(--sdc-card-divider-border, var(--sdc-surface-divider-border))}.sdc-card__footer-action{box-sizing:border-box;flex:0 1 var(--sdc-card-footer-action-width, 50%);max-width:100%;width:var(--sdc-card-footer-action-width, 50%)}.sdc-card__footer-action sdc-button{display:block;width:100%}\n"] }]
90
+ args: [{ selector: 'sdc-card-mini', imports: [ButtonComponent, TranslateModule], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<article class=\"sdc-card-mini dp-card\" [attr.aria-label]=\"fullName + ' - ' + fullCategory\">\n <header class=\"sdc-card__header\">\n <div class=\"sdc-card__icon\" [style.background]=\"options?.backgroundIcon\" [style.color]=\"options?.iconColor\">\n <i [class]=\"data.icon || options?.icon\" aria-hidden=\"true\"></i>\n </div>\n\n <div class=\"sdc-card__header-text\">\n <h2\n #nameTextRef\n class=\"sdc-card__title\"\n [attr.title]=\"showNameTitle ? fullName : null\"\n >\n {{ fullName }}\n </h2>\n\n <div\n #categoryTextRef\n class=\"sdc-card__subtitle\"\n [attr.title]=\"showCategoryTitle ? fullCategory : null\"\n >\n {{ fullCategory }}\n </div>\n </div>\n </header>\n\n <div class=\"sdc-card__body\">\n <div class=\"sdc-card__content\">\n @if (descriptionLabel) {\n <div class=\"sdc-card__description-label\">{{ descriptionLabel }}</div>\n }\n\n <p\n #descriptionTextRef\n class=\"sdc-card__description\"\n [attr.title]=\"showDescriptionTitle ? fullDescription : null\"\n >\n {{ fullDescription }}\n </p>\n </div>\n </div>\n\n <footer class=\"sdc-card__footer flex justify-content-end\">\n <div class=\"sdc-card__footer-action\">\n <sdc-button\n width=\"100%\"\n (clicked)=\"cardAction.emit(data)\"\n [priority]=\"options?.buttonPriority!\"\n [label]=\"options?.buttonLabel!\"\n [attr.aria-label]=\"buttonAriaLabel\"\n >\n </sdc-button>\n </div>\n </footer>\n</article>\n", styles: [":host{display:block}.sdc-card-mini{width:100%;border-radius:var(--sdc-formfield-border-radius);border:var(--sdc-surface-border);overflow:hidden;display:flex;padding:var(--sdc-card-padding, 7px);flex-direction:column;min-height:var(--sdc-card-min-height, 19rem)}.sdc-card__header{display:flex;align-items:flex-start;justify-content:flex-start;gap:var(--sdc-card-header-gap, .75rem);padding:var(--sdc-card-header-padding, max(0px, var(--sdc-card-header-vertical-spacing, 1.25rem) - var(--sdc-card-padding, 7px)) var(--sdc-card-header-padding-x, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))) var(--sdc-card-header-vertical-spacing, 1.25rem));position:relative;border-bottom:none}.sdc-card__header:after{content:\"\";position:absolute;bottom:0;left:calc(-1 * var(--sdc-card-padding, 7px));right:calc(-1 * var(--sdc-card-padding, 7px));border-bottom:var(--sdc-card-divider-border, var(--sdc-surface-divider-border))}.sdc-card__icon{min-width:var(--sdc-card-icon-size, 2.9rem);min-height:var(--sdc-card-icon-size, 2.9rem);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.sdc-card__header-text{display:flex;flex-direction:column;justify-content:flex-start;min-height:var(--sdc-card-icon-size, 2.9rem);width:100%;min-width:0;flex:1 1 auto}.sdc-card__body{padding:var(--sdc-card-body-padding, var(--sdc-card-body-padding-y, .3rem) var(--sdc-card-body-padding-x, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))))}.sdc-card__title{margin:0;width:100%;min-width:0;font-size:1.4rem;font-weight:600;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-card__subtitle{margin-top:.45rem;width:100%;min-width:0;font-weight:700;font-size:.775rem;color:var(--sdc-card-subtitle-color, var(--sdc-text-muted, #475569));line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-card__content{margin-top:.5rem}.sdc-card__description-label{margin:0 0 var(--sdc-card-description-label-gap, .35rem);color:var(--sdc-card-description-label-color, inherit);font-size:var(--sdc-card-description-label-font-size, inherit);font-weight:var(--sdc-card-description-label-font-weight, 700);line-height:var(--sdc-card-description-label-line-height, 1.2)}.sdc-card__description{text-align:justify;margin:0;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3}.sdc-card__tags{margin-top:.5rem;display:flex;gap:.5rem;flex-wrap:wrap}.sdc-card__footer{margin-top:auto;padding:var(--sdc-card-footer-padding, var(--sdc-card-footer-padding-y, var(--sdc-card-horizontal-spacing, 1rem)) var(--sdc-card-footer-padding-right, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))) var(--sdc-card-footer-padding-bottom, max(0px, var(--sdc-card-footer-padding-y, var(--sdc-card-horizontal-spacing, 1rem)) - var(--sdc-card-padding, 7px))) var(--sdc-card-footer-padding-left, max(0px, var(--sdc-card-horizontal-spacing, 1rem) - var(--sdc-card-padding, 7px))));display:flex;align-items:center;justify-content:flex-end;gap:var(--sdc-card-footer-gap, .5rem);min-height:var(--sdc-card-footer-min-height, auto);position:relative;border-top:none}.sdc-card__footer:before{content:\"\";position:absolute;top:0;left:calc(-1 * var(--sdc-card-padding, 7px));right:calc(-1 * var(--sdc-card-padding, 7px));border-top:var(--sdc-card-divider-border, var(--sdc-surface-divider-border))}.sdc-card__footer-action{box-sizing:border-box;flex:0 1 var(--sdc-card-footer-action-width, 50%);max-width:100%;width:var(--sdc-card-footer-action-width, 50%)}.sdc-card__footer-action sdc-button{display:block;width:100%}\n"] }]
139
91
  }], ctorParameters: () => [], propDecorators: { data: [{
140
92
  type: Input
141
93
  }], options: [{
142
94
  type: Input
143
95
  }], cardAction: [{
144
96
  type: Output
97
+ }], nameTextRef: [{
98
+ type: ViewChild,
99
+ args: ['nameTextRef']
100
+ }], categoryTextRef: [{
101
+ type: ViewChild,
102
+ args: ['categoryTextRef']
103
+ }], descriptionTextRef: [{
104
+ type: ViewChild,
105
+ args: ['descriptionTextRef']
106
+ }], onWindowResize: [{
107
+ type: HostListener,
108
+ args: ['window:resize']
145
109
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2NhcmQtbGlzdC9jYXJkL2NhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9jYXJkLWxpc3QvY2FyZC9jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxPQUFPLEVBQ0wscUNBQXFDLEVBQ3JDLHdDQUF3QyxFQUN4QyxpQ0FBaUMsRUFDakMsMEJBQTBCLEVBQzFCLGdDQUFnQyxFQUNoQyxtQ0FBbUMsRUFDbkMsNEJBQTRCLEVBQzVCLG1DQUFtQyxFQUNuQyxzQ0FBc0MsRUFDdEMsK0JBQStCLEVBQy9CLHdCQUF3QixFQUN6QixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQVdoRSxNQUFNLE9BQU8saUJBQWlCO0lBQ1gsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLFNBQVMsR0FBRyxNQUFN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QUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxjQUUvQixJQUFJLG1CQUVDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLFFBQVE7d0RBY2hDLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7XG4gIENBUkRfQ09MTEFQU0VfQ0FURUdPUllfQVJJQV9MQUJFTF9LRVksXG4gIENBUkRfQ09MTEFQU0VfREVTQ1JJUFRJT05fQVJJQV9MQUJFTF9LRVksXG4gIENBUkRfQ09MTEFQU0VfTkFNRV9BUklBX0xBQkVMX0tFWSxcbiAgQ0FSRF9ERVNDUklQVElPTl9MQUJFTF9LRVksXG4gIENBUkRfREVGQVVMVF9DQVRFR09SWV9NQVhfTEVOR1RILFxuICBDQVJEX0RFRkFVTFRfREVTQ1JJUFRJT05fTUFYX0xFTkdUSCxcbiAgQ0FSRF9ERUZBVUxUX05BTUVfTUFYX0xFTkdUSCxcbiAgQ0FSRF9FWFBBTkRfQ0FURUdPUllfQVJJQV9MQUJFTF9LRVksXG4gIENBUkRfRVhQQU5EX0RFU0NSSVBUSU9OX0FSSUFfTEFCRUxfS0VZLFxuICBDQVJEX0VYUEFORF9OQU1FX0FSSUFfTEFCRUxfS0VZLFxuICBDQVJEX1NIT1dfTEVTU19MQUJFTF9LRVlcbn0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb25zdGFudHMvY2FyZC5jb25zdCc7XG5pbXBvcnQgeyBDYXJkLCBPcHRpb25zQ2FyZCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdHlwZXMvY2FyZC50eXBlJztcbmltcG9ydCB7IHJlc29sdmVUcmFuc2xhdGFibGVUZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91dGlscy9pMThuLnV0aWwnO1xuaW1wb3J0IHsgdG9Qb3NpdGl2ZUludGVnZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL251bWJlci51dGlsJztcbmltcG9ydCB7IGNoYXJhY3Rlckxlbmd0aCwgdHJ1bmNhdGVDaGFyYWN0ZXJzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91dGlscy9zdHJpbmcudXRpbCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NkYy1jYXJkLW1pbmknLFxuICBpbXBvcnRzOiBbQnV0dG9uQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHN0eWxlVXJsOiAnLi9jYXJkLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIENhcmRNaW5pQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd0xlc3NMYWJlbEtleSA9IENBUkRfU0hPV19MRVNTX0xBQkVMX0tFWTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGV4cGFuZE5hbWVBcmlhTGFiZWxLZXkgPSBDQVJEX0VYUEFORF9OQU1FX0FSSUFfTEFCRUxfS0VZO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sbGFwc2VOYW1lQXJpYUxhYmVsS2V5ID0gQ0FSRF9DT0xMQVBTRV9OQU1FX0FSSUFfTEFCRUxfS0VZO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXhwYW5kQ2F0ZWdvcnlBcmlhTGFiZWxLZXkgPSBDQVJEX0VYUEFORF9DQVRFR09SWV9BUklBX0xBQkVMX0tFWTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbGxhcHNlQ2F0ZWdvcnlBcmlhTGFiZWxLZXkgPSBDQVJEX0NPTExBUFNFX0NBVEVHT1JZX0FSSUFfTEFCRUxfS0VZO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXhwYW5kRGVzY3JpcHRpb25BcmlhTGFiZWxLZXkgPSBDQVJEX0VYUEFORF9ERVNDUklQVElPTl9BUklBX0xBQkVMX0tFWTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbGxhcHNlRGVzY3JpcHRpb25BcmlhTGFiZWxLZXkgPSBDQVJEX0NPTExBUFNFX0RFU0NSSVBUSU9OX0FSSUFfTEFCRUxfS0VZO1xuXG4gIEBJbnB1dCgpIGRhdGEhOiBDYXJkO1xuICBASW5wdXQoKSBvcHRpb25zPzogT3B0aW9uc0NhcmQ7XG4gIEBPdXRwdXQoKSBjYXJkQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxDYXJkPigpO1xuXG4gIHByb3RlY3RlZCBleHBhbmRlZERlc2NyaXB0aW9uID0gZmFsc2U7XG4gIHByb3RlY3RlZCBleHBhbmRlZE5hbWUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGV4cGFuZGVkQ2F0ZWdvcnkgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2UucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZnVsbERlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dCh0aGlzLmRhdGE/LmRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0KHRoaXMuZGF0YT8ubmFtZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGZ1bGxDYXRlZ29yeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHQodGhpcy5kYXRhPy5jYXRlZ29yeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGRlc2NyaXB0aW9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0KHRoaXMub3B0aW9ucz8uZGVzY3JpcHRpb25MYWJlbCA/PyBDQVJEX0RFU0NSSVBUSU9OX0xBQkVMX0tFWSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGJ1dHRvbkxhYmVsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHQodGhpcy5vcHRpb25zPy5idXR0b25MYWJlbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGJ1dHRvbkFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBbdGhpcy5idXR0b25MYWJlbFRleHQsIHRoaXMuZnVsbE5hbWVdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgLSAnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZGVzY3JpcHRpb25NYXhMZW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdG9Qb3NpdGl2ZUludGVnZXIodGhpcy5vcHRpb25zPy5kZXNjcmlwdGlvbk1heExlbmd0aCwgQ0FSRF9ERUZBVUxUX0RFU0NSSVBUSU9OX01BWF9MRU5HVEgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBuYW1lTWF4TGVuKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRvUG9zaXRpdmVJbnRlZ2VyKHRoaXMub3B0aW9ucz8ubmFtZU1heExlbmd0aCwgQ0FSRF9ERUZBVUxUX05BTUVfTUFYX0xFTkdUSCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGNhdGVnb3J5TWF4TGVuKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRvUG9zaXRpdmVJbnRlZ2VyKHRoaXMub3B0aW9ucz8uY2F0ZWdvcnlNYXhMZW5ndGgsIENBUkRfREVGQVVMVF9DQVRFR09SWV9NQVhfTEVOR1RIKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgaXNEZXNjcmlwdGlvblRydW5jYXRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2hhcmFjdGVyTGVuZ3RoKHRoaXMuZnVsbERlc2NyaXB0aW9uKSA+IHRoaXMuZGVzY3JpcHRpb25NYXhMZW47XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGlzTmFtZVRydW5jYXRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2hhcmFjdGVyTGVuZ3RoKHRoaXMuZnVsbE5hbWUpID4gdGhpcy5uYW1lTWF4TGVuO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBpc0NhdGVnb3J5VHJ1bmNhdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjaGFyYWN0ZXJMZW5ndGgodGhpcy5mdWxsQ2F0ZWdvcnkpID4gdGhpcy5jYXRlZ29yeU1heExlbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgc2hvcnREZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0cnVuY2F0ZUNoYXJhY3RlcnModGhpcy5mdWxsRGVzY3JpcHRpb24sIHRoaXMuZGVzY3JpcHRpb25NYXhMZW4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBzaG9ydE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHJ1bmNhdGVDaGFyYWN0ZXJzKHRoaXMuZnVsbE5hbWUsIHRoaXMubmFtZU1heExlbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHNob3J0Q2F0ZWdvcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHJ1bmNhdGVDaGFyYWN0ZXJzKHRoaXMuZnVsbENhdGVnb3J5LCB0aGlzLmNhdGVnb3J5TWF4TGVuKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBleHBhbmREZXNjcmlwdGlvbihldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zdG9wKGV2ZW50KTtcblxuICAgIGlmICghdGhpcy5pc0Rlc2NyaXB0aW9uVHJ1bmNhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5leHBhbmRlZERlc2NyaXB0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb2xsYXBzZURlc2NyaXB0aW9uKGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3AoZXZlbnQpO1xuICAgIHRoaXMuZXhwYW5kZWREZXNjcmlwdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGV4cGFuZE5hbWUoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcChldmVudCk7XG5cbiAgICBpZiAoIXRoaXMuaXNOYW1lVHJ1bmNhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5leHBhbmRlZE5hbWUgPSB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbGxhcHNlTmFtZShldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zdG9wKGV2ZW50KTtcbiAgICB0aGlzLmV4cGFuZGVkTmFtZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGV4cGFuZENhdGVnb3J5KGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3AoZXZlbnQpO1xuXG4gICAgaWYgKCF0aGlzLmlzQ2F0ZWdvcnlUcnVuY2F0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmV4cGFuZGVkQ2F0ZWdvcnkgPSB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbGxhcHNlQ2F0ZWdvcnkoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcChldmVudCk7XG4gICAgdGhpcy5leHBhbmRlZENhdGVnb3J5ID0gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25EZXNjcmlwdGlvbkVsbGlwc2lzRW50ZXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmREZXNjcmlwdGlvbihldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25EZXNjcmlwdGlvbkVsbGlwc2lzU3BhY2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmREZXNjcmlwdGlvbihldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25OYW1lRWxsaXBzaXNFbnRlcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZE5hbWUoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uTmFtZUVsbGlwc2lzU3BhY2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmROYW1lKGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNhdGVnb3J5RWxsaXBzaXNFbnRlcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZENhdGVnb3J5KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNhdGVnb3J5RWxsaXBzaXNTcGFjZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZENhdGVnb3J5KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNsYXRlVGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcChldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iLCI8YXJ0aWNsZSBjbGFzcz1cInNkYy1jYXJkLW1pbmkgZHAtY2FyZFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZnVsbE5hbWUgKyAnIC0gJyArIGZ1bGxDYXRlZ29yeVwiPlxuICA8aGVhZGVyIGNsYXNzPVwic2RjLWNhcmRfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZGMtY2FyZF9faWNvblwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIm9wdGlvbnM/LmJhY2tncm91bmRJY29uXCIgW3N0eWxlLmNvbG9yXT1cIm9wdGlvbnM/Lmljb25Db2xvclwiPlxuICAgICAgPGkgW2NsYXNzXT1cImRhdGEuaWNvbiB8fCBvcHRpb25zPy5pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInNkYy1jYXJkX19oZWFkZXItdGV4dFwiPlxuICAgICAgPGgyIGNsYXNzPVwic2RjLWNhcmRfX3RpdGxlXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc05hbWVUcnVuY2F0ZWQgPyBleHBhbmRlZE5hbWUgOiBudWxsXCI+XG4gICAgICAgIEBpZiAoIWV4cGFuZGVkTmFtZSkge1xuICAgICAgICAgIHt7IHNob3J0TmFtZSB9fUBpZiAoaXNOYW1lVHJ1bmNhdGVkKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNkYy1jYXJkX19lbGxpcHNpc1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImV4cGFuZE5hbWVBcmlhTGFiZWxLZXkgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImV4cGFuZE5hbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbk5hbWVFbGxpcHNpc0VudGVyKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwib25OYW1lRWxsaXBzaXNTcGFjZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID4uLi48L2J1dHRvblxuICAgICAgICAgICAgPlxuICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAge3sgZnVsbE5hbWUgfX1cbiAgICAgICAgfVxuICAgICAgPC9oMj5cblxuICAgICAgQGlmIChleHBhbmRlZE5hbWUgJiYgaXNOYW1lVHJ1bmNhdGVkKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInNkYy1jYXJkX190b2dnbGUgc2RjLWNhcmRfX3RvZ2dsZS0taW5saW5lXCJcbiAgICAgICAgICAoY2xpY2spPVwiY29sbGFwc2VOYW1lKCRldmVudClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sbGFwc2VOYW1lQXJpYUxhYmVsS2V5IHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAge3sgc2hvd0xlc3NMYWJlbEtleSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cInNkYy1jYXJkX19zdWJ0aXRsZVwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNDYXRlZ29yeVRydW5jYXRlZCA/IGV4cGFuZGVkQ2F0ZWdvcnkgOiBudWxsXCI+XG4gICAgICAgIEBpZiAoIWV4cGFuZGVkQ2F0ZWdvcnkpIHtcbiAgICAgICAgICB7eyBzaG9ydENhdGVnb3J5IH19QGlmIChpc0NhdGVnb3J5VHJ1bmNhdGVkKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNkYy1jYXJkX19lbGxpcHNpc1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImV4cGFuZENhdGVnb3J5QXJpYUxhYmVsS2V5IHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJleHBhbmRDYXRlZ29yeSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uQ2F0ZWdvcnlFbGxpcHNpc0VudGVyKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwib25DYXRlZ29yeUVsbGlwc2lzU3BhY2UoJGV2ZW50KVwiXG4gICAgICAgICAgICA+Li4uPC9idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIHt7IGZ1bGxDYXRlZ29yeSB9fVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChleHBhbmRlZENhdGVnb3J5ICYmIGlzQ2F0ZWdvcnlUcnVuY2F0ZWQpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwic2RjLWNhcmRfX3RvZ2dsZSBzZGMtY2FyZF9fdG9nZ2xlLS1pbmxpbmVcIlxuICAgICAgICAgIChjbGljayk9XCJjb2xsYXBzZUNhdGVnb3J5KCRldmVudClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sbGFwc2VDYXRlZ29yeUFyaWFMYWJlbEtleSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIHt7IHNob3dMZXNzTGFiZWxLZXkgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvaGVhZGVyPlxuXG4gIDxkaXYgY2xhc3M9XCJzZGMtY2FyZF9fYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZGMtY2FyZF9fY29udGVudFwiPlxuICAgICAgQGlmIChkZXNjcmlwdGlvbkxhYmVsKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtY2FyZF9fZGVzY3JpcHRpb24tbGFiZWxcIj57eyBkZXNjcmlwdGlvbkxhYmVsIH19PC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDxwIGNsYXNzPVwic2RjLWNhcmRfX2Rlc2NyaXB0aW9uXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc0Rlc2NyaXB0aW9uVHJ1bmNhdGVkID8gZXhwYW5kZWREZXNjcmlwdGlvbiA6IG51bGxcIj5cbiAgICAgICAgQGlmICghZXhwYW5kZWREZXNjcmlwdGlvbikge1xuICAgICAgICAgIHt7IHNob3J0RGVzY3JpcHRpb24gfX1AaWYgKGlzRGVzY3JpcHRpb25UcnVuY2F0ZWQpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2RjLWNhcmRfX2VsbGlwc2lzXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZXhwYW5kRGVzY3JpcHRpb25BcmlhTGFiZWxLZXkgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImV4cGFuZERlc2NyaXB0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25EZXNjcmlwdGlvbkVsbGlwc2lzRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJvbkRlc2NyaXB0aW9uRWxsaXBzaXNTcGFjZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID4uLi48L2J1dHRvblxuICAgICAgICAgICAgPlxuICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAge3sgZnVsbERlc2NyaXB0aW9uIH19XG4gICAgICAgIH1cbiAgICAgIDwvcD5cblxuICAgICAgQGlmIChleHBhbmRlZERlc2NyaXB0aW9uICYmIGlzRGVzY3JpcHRpb25UcnVuY2F0ZWQpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwic2RjLWNhcmRfX3RvZ2dsZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNvbGxhcHNlRGVzY3JpcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb2xsYXBzZURlc2NyaXB0aW9uQXJpYUxhYmVsS2V5IHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAge3sgc2hvd0xlc3NMYWJlbEtleSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGZvb3RlciBjbGFzcz1cInNkYy1jYXJkX19mb290ZXIgZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgPGRpdiBjbGFzcz1cInNkYy1jYXJkX19mb290ZXItYWN0aW9uXCI+XG4gICAgICA8c2RjLWJ1dHRvblxuICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAoY2xpY2tlZCk9XCJjYXJkQWN0aW9uLmVtaXQoZGF0YSlcIlxuICAgICAgICBbcHJpb3JpdHldPVwib3B0aW9ucz8uYnV0dG9uUHJpb3JpdHkhXCJcbiAgICAgICAgW2xhYmVsXT1cIm9wdGlvbnM/LmJ1dHRvbkxhYmVsIVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uQXJpYUxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgPC9zZGMtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Zvb3Rlcj5cbjwvYXJ0aWNsZT5cbiJdfQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2NhcmQtbGlzdC9jYXJkL2NhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9jYXJkLWxpc3QvY2FyZC9jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhFLE9BQU8sRUFDTCwwQkFBMEIsRUFDM0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBV2hFLE1BQU0sT0FBTyxpQkFBaUI7SUFDWCxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTdDLElBQUksQ0FBUTtJQUNaLE9BQU8sQ0FBZTtJQUNyQixVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVMLFdBQVcsQ0FBMkI7SUFDbEMsZUFBZSxDQUEyQjtJQUN2QyxrQkFBa0IsQ0FBMkI7SUFFckYsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsb0JBQW9C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QztRQUVELE9BQU8sT0FBTyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ25ELENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUFnQztRQUMxRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztJQUNyRCxDQUFDO3dHQW5HVSxpQkFBaUI7NEZBQWpCLGlCQUFpQiw2aUJDcEM5Qiw4a0RBc0RBLHFwSER6QlksZUFBZSw2U0FBRSxlQUFlOzs0RkFPL0IsaUJBQWlCO2tCQVQ3QixTQUFTOytCQUNFLGVBQWUsV0FDaEIsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLGNBRS9CLElBQUksbUJBRUMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUTt3REFNaEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVvQyxXQUFXO3NCQUFyRCxTQUFTO3VCQUFDLGFBQWE7Z0JBQ3VCLGVBQWU7c0JBQTdELFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNzQixrQkFBa0I7c0JBQW5FLFNBQVM7dUJBQUMsb0JBQW9CO2dCQXNCckIsY0FBYztzQkFEdkIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7XG4gIENBUkRfREVTQ1JJUFRJT05fTEFCRUxfS0VZXG59IGZyb20gJy4uLy4uLy4uL2NvcmUvY29uc3RhbnRzL2NhcmQuY29uc3QnO1xuaW1wb3J0IHsgQ2FyZCwgT3B0aW9uc0NhcmQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL2NhcmQudHlwZSc7XG5pbXBvcnQgeyByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvaTE4bi51dGlsJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLWNhcmQtbWluaScsXG4gIGltcG9ydHM6IFtCdXR0b25Db21wb25lbnQsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc3R5bGVVcmw6ICcuL2NhcmQuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWRcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZE1pbmlDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIEBJbnB1dCgpIGRhdGEhOiBDYXJkO1xuICBASW5wdXQoKSBvcHRpb25zPzogT3B0aW9uc0NhcmQ7XG4gIEBPdXRwdXQoKSBjYXJkQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxDYXJkPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ25hbWVUZXh0UmVmJykgcHJpdmF0ZSByZWFkb25seSBuYW1lVGV4dFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjYXRlZ29yeVRleHRSZWYnKSBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5VGV4dFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdkZXNjcmlwdGlvblRleHRSZWYnKSBwcml2YXRlIHJlYWRvbmx5IGRlc2NyaXB0aW9uVGV4dFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHByb3RlY3RlZCBzaG93TmFtZVRpdGxlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93Q2F0ZWdvcnlUaXRsZSA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2hvd0Rlc2NyaXB0aW9uVGl0bGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2UucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVmcmVzaE5hdGl2ZVRpdGxlcygpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoTmF0aXZlVGl0bGVzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhfOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoTmF0aXZlVGl0bGVzKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgcHJvdGVjdGVkIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaE5hdGl2ZVRpdGxlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBmdWxsRGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0KHRoaXMuZGF0YT8uZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBmdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHQodGhpcy5kYXRhPy5uYW1lKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZnVsbENhdGVnb3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dCh0aGlzLmRhdGE/LmNhdGVnb3J5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZGVzY3JpcHRpb25MYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHQodGhpcy5vcHRpb25zPy5kZXNjcmlwdGlvbkxhYmVsID8/IENBUkRfREVTQ1JJUFRJT05fTEFCRUxfS0VZKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgYnV0dG9uTGFiZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dCh0aGlzLm9wdGlvbnM/LmJ1dHRvbkxhYmVsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgYnV0dG9uQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFt0aGlzLmJ1dHRvbkxhYmVsVGV4dCwgdGhpcy5mdWxsTmFtZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAtICcpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2xhdGVUZXh0KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoTmF0aXZlVGl0bGVzKCk6IHZvaWQge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IG5leHROYW1lID0gdGhpcy5oYXNIb3Jpem9udGFsT3ZlcmZsb3codGhpcy5uYW1lVGV4dFJlZj8ubmF0aXZlRWxlbWVudCk7XG4gICAgICBjb25zdCBuZXh0Q2F0ZWdvcnkgPSB0aGlzLmhhc0hvcml6b250YWxPdmVyZmxvdyh0aGlzLmNhdGVnb3J5VGV4dFJlZj8ubmF0aXZlRWxlbWVudCk7XG4gICAgICBjb25zdCBuZXh0RGVzY3JpcHRpb24gPSB0aGlzLmhhc1ZlcnRpY2FsT3ZlcmZsb3codGhpcy5kZXNjcmlwdGlvblRleHRSZWY/Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICBjb25zdCBoYXNDaGFuZ2VkID0gdGhpcy5zaG93TmFtZVRpdGxlICE9PSBuZXh0TmFtZVxuICAgICAgICB8fCB0aGlzLnNob3dDYXRlZ29yeVRpdGxlICE9PSBuZXh0Q2F0ZWdvcnlcbiAgICAgICAgfHwgdGhpcy5zaG93RGVzY3JpcHRpb25UaXRsZSAhPT0gbmV4dERlc2NyaXB0aW9uO1xuXG4gICAgICBpZiAoIWhhc0NoYW5nZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNob3dOYW1lVGl0bGUgPSBuZXh0TmFtZTtcbiAgICAgIHRoaXMuc2hvd0NhdGVnb3J5VGl0bGUgPSBuZXh0Q2F0ZWdvcnk7XG4gICAgICB0aGlzLnNob3dEZXNjcmlwdGlvblRpdGxlID0gbmV4dERlc2NyaXB0aW9uO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhc0hvcml6b250YWxPdmVyZmxvdyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzVmVydGljYWxPdmVyZmxvdyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50LnNjcm9sbEhlaWdodCA+IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICB9XG59XG4iLCI8YXJ0aWNsZSBjbGFzcz1cInNkYy1jYXJkLW1pbmkgZHAtY2FyZFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZnVsbE5hbWUgKyAnIC0gJyArIGZ1bGxDYXRlZ29yeVwiPlxuICA8aGVhZGVyIGNsYXNzPVwic2RjLWNhcmRfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZGMtY2FyZF9faWNvblwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIm9wdGlvbnM/LmJhY2tncm91bmRJY29uXCIgW3N0eWxlLmNvbG9yXT1cIm9wdGlvbnM/Lmljb25Db2xvclwiPlxuICAgICAgPGkgW2NsYXNzXT1cImRhdGEuaWNvbiB8fCBvcHRpb25zPy5pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInNkYy1jYXJkX19oZWFkZXItdGV4dFwiPlxuICAgICAgPGgyXG4gICAgICAgICNuYW1lVGV4dFJlZlxuICAgICAgICBjbGFzcz1cInNkYy1jYXJkX190aXRsZVwiXG4gICAgICAgIFthdHRyLnRpdGxlXT1cInNob3dOYW1lVGl0bGUgPyBmdWxsTmFtZSA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICB7eyBmdWxsTmFtZSB9fVxuICAgICAgPC9oMj5cblxuICAgICAgPGRpdlxuICAgICAgICAjY2F0ZWdvcnlUZXh0UmVmXG4gICAgICAgIGNsYXNzPVwic2RjLWNhcmRfX3N1YnRpdGxlXCJcbiAgICAgICAgW2F0dHIudGl0bGVdPVwic2hvd0NhdGVnb3J5VGl0bGUgPyBmdWxsQ2F0ZWdvcnkgOiBudWxsXCJcbiAgICAgID5cbiAgICAgICAge3sgZnVsbENhdGVnb3J5IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9oZWFkZXI+XG5cbiAgPGRpdiBjbGFzcz1cInNkYy1jYXJkX19ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cInNkYy1jYXJkX19jb250ZW50XCI+XG4gICAgICBAaWYgKGRlc2NyaXB0aW9uTGFiZWwpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1jYXJkX19kZXNjcmlwdGlvbi1sYWJlbFwiPnt7IGRlc2NyaXB0aW9uTGFiZWwgfX08L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPHBcbiAgICAgICAgI2Rlc2NyaXB0aW9uVGV4dFJlZlxuICAgICAgICBjbGFzcz1cInNkYy1jYXJkX19kZXNjcmlwdGlvblwiXG4gICAgICAgIFthdHRyLnRpdGxlXT1cInNob3dEZXNjcmlwdGlvblRpdGxlID8gZnVsbERlc2NyaXB0aW9uIDogbnVsbFwiXG4gICAgICA+XG4gICAgICAgIHt7IGZ1bGxEZXNjcmlwdGlvbiB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8Zm9vdGVyIGNsYXNzPVwic2RjLWNhcmRfX2Zvb3RlciBmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2RjLWNhcmRfX2Zvb3Rlci1hY3Rpb25cIj5cbiAgICAgIDxzZGMtYnV0dG9uXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgIChjbGlja2VkKT1cImNhcmRBY3Rpb24uZW1pdChkYXRhKVwiXG4gICAgICAgIFtwcmlvcml0eV09XCJvcHRpb25zPy5idXR0b25Qcmlvcml0eSFcIlxuICAgICAgICBbbGFiZWxdPVwib3B0aW9ucz8uYnV0dG9uTGFiZWwhXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b25BcmlhTGFiZWxcIlxuICAgICAgICA+XG4gICAgICA8L3NkYy1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9vdGVyPlxuPC9hcnRpY2xlPlxuIl19