@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
@@ -1,12 +1,13 @@
1
- import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
2
- import { PanelModule as SeniorPanelModule } from '@seniorsistemas/angular-components/panel';
3
- import { EnumSeverity } from '@seniorsistemas/angular-components/shared';
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
4
3
  import { TranslateModule } from '@ngx-translate/core';
4
+ import { nextSequentialId } from '../../core/utils/id.util';
5
+ import { EnumSeverity } from '../../core/types/panel.type';
5
6
  import * as i0 from "@angular/core";
6
- import * as i1 from "@seniorsistemas/angular-components/panel";
7
- import * as i2 from "@seniorsistemas/angular-components/template";
8
- import * as i3 from "@ngx-translate/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@ngx-translate/core";
9
9
  export class PanelComponent {
10
+ contentId = nextSequentialId('sdc-panel-content');
10
11
  header = '';
11
12
  toggleable = false;
12
13
  set collapsed(value) {
@@ -16,20 +17,51 @@ export class PanelComponent {
16
17
  return this.$collapsed;
17
18
  }
18
19
  collapsedChange = new EventEmitter();
19
- $collapsed = false;
20
20
  severity = EnumSeverity.Default;
21
21
  borderButtonOptions;
22
22
  panelClass = '';
23
- // Accessibility inputs - permite customização ou usa defaults com i18n
23
+ // Accessibility inputs - permite customizacao ou usa defaults com i18n
24
24
  ariaLabel;
25
25
  ariaLabelledBy;
26
+ $collapsed = false;
26
27
  onCollapsedChanged(v) {
27
28
  this.$collapsed = v;
28
29
  this.collapsedChange.emit(v);
29
30
  }
31
+ toggleCollapsed() {
32
+ if (!this.toggleable) {
33
+ return;
34
+ }
35
+ this.onCollapsedChanged(!this.collapsed);
36
+ }
37
+ onBorderButtonClick(event) {
38
+ event.stopPropagation();
39
+ if (this.borderButtonDisabled) {
40
+ return;
41
+ }
42
+ this.borderButtonOptions?.onClick?.(this.severity);
43
+ }
30
44
  get panelClasses() {
31
45
  return ['sdc-panel', this.panelClass].filter(Boolean).join(' ');
32
46
  }
47
+ get severityClass() {
48
+ return `sdc-panel--${this.severity}`;
49
+ }
50
+ get showBorderButton() {
51
+ return this.borderButtonOptions?.visible?.(this.severity) ?? false;
52
+ }
53
+ get borderButtonLabel() {
54
+ return this.borderButtonOptions?.label?.(this.severity) ?? 'platform.datacore.accessibility.panel_toggle';
55
+ }
56
+ get borderButtonTooltip() {
57
+ return this.borderButtonOptions?.tooltip?.(this.severity) ?? null;
58
+ }
59
+ get borderButtonIcon() {
60
+ return this.borderButtonOptions?.icon?.(this.severity) ?? null;
61
+ }
62
+ get borderButtonDisabled() {
63
+ return this.borderButtonOptions?.disabled?.(this.severity) ?? false;
64
+ }
33
65
  getToggleAriaLabel() {
34
66
  if (this.collapsed) {
35
67
  return 'platform.datacore.accessibility.panel_expand';
@@ -37,11 +69,11 @@ export class PanelComponent {
37
69
  return 'platform.datacore.accessibility.panel_collapse';
38
70
  }
39
71
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PanelComponent, isStandalone: true, selector: "sdc-panel", inputs: { header: "header", toggleable: "toggleable", collapsed: "collapsed", severity: "severity", borderButtonOptions: "borderButtonOptions", panelClass: ["class", "panelClass"], ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy" }, outputs: { collapsedChange: "collapsedChange" }, ngImport: i0, template: "<s-panel [(collapsed)]=\"collapsed\" [header]=\"header | translate\" [toggleable]=\"toggleable\" [severity]=\"severity\"\n [borderButtonOptions]=\"borderButtonOptions\" [class]=\"panelClasses\" (collapsedChange)=\"onCollapsedChanged($event)\"\n [attr.aria-label]=\"(ariaLabel || header) | translate\" [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-expanded]=\"toggleable ? !collapsed : null\">\n <div class=\"sdc-panel-content\" [attr.aria-label]=\"'platform.datacore.accessibility.panel_content' | translate\">\n <ng-content></ng-content>\n </div>\n\n <ng-template sTemplate=\"footer\">\n <div class=\"sdc-panel-footer\">\n <ng-content select=\"[sdcFooter]\"></ng-content>\n </div>\n </ng-template>\n</s-panel>\n", styles: [":host{display:contents}.sdc-panel-content,.sdc-panel-footer{display:contents}.sdc-panel-footer:empty{display:none}::ng-deep s-panel .panel.sdc-panel{background-color:var(--sdc-panel-bg, var(--sdc-surface-bg, #ffffff));border:var(--sdc-panel-border, var(--sdc-surface-border, 1px solid #dedce5));border-radius:var(--sdc-panel-radius, var(--sdc-surface-radius, 4px));box-shadow:var(--sdc-panel-shadow, var(--sdc-surface-shadow, none));padding:var(--sdc-panel-padding, var(--sdc-surface-padding, 22px 22px 20px))!important;transition:var(--sdc-panel-transition, var(--sdc-surface-transition, border-color .5s ease))}::ng-deep s-panel .panel.sdc-panel .header{align-items:center;border-bottom:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5));color:var(--sdc-panel-title-color, var(--sdc-surface-title-color, #212533));font-size:var(--sdc-panel-title-font-size, var(--sdc-surface-title-font-size, 14px));font-weight:var(--sdc-panel-title-font-weight, var(--sdc-surface-title-font-weight, 400));line-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px));min-height:var(--sdc-panel-header-min-height, var(--sdc-surface-header-min-height, 34px));padding-bottom:var(--sdc-panel-header-padding-bottom, var(--sdc-surface-header-padding-bottom, 20px))}::ng-deep s-panel .panel.sdc-panel .header-content{display:flex;align-items:center;min-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px))}::ng-deep s-panel .panel.sdc-panel .collapse-button,::ng-deep s-panel .panel.sdc-panel .s-panel-header-icon,::ng-deep s-panel .panel.sdc-panel .s-panel-header button{min-width:var(--sdc-panel-action-size, 24px);min-height:var(--sdc-panel-action-size, 24px)}::ng-deep s-panel .panel.sdc-panel .collapse-button,::ng-deep s-panel .panel.sdc-panel .s-panel-header button{display:inline-flex;align-items:center;justify-content:center}::ng-deep s-panel .panel.sdc-panel .collapse-button:focus-visible,::ng-deep s-panel .panel.sdc-panel .s-panel-header button:focus-visible{outline:2px solid currentColor;outline-offset:2px}::ng-deep s-panel .panel.sdc-panel .panel-content .body{padding:var(--sdc-panel-content-padding, var(--sdc-surface-content-padding, 15px 0))!important}::ng-deep s-panel .panel.sdc-panel .panel-content .footer{border-top:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5))!important;margin-top:var(--sdc-panel-footer-margin-top, var(--sdc-surface-footer-margin-top, 0));padding-top:var(--sdc-panel-footer-padding-top, var(--sdc-surface-footer-padding-top, 15px))}::ng-deep s-panel .panel.sdc-panel .panel-content .footer:has(>.sdc-panel-footer:empty){display:none}::ng-deep s-panel .panel.sdc-panel .panel-content .footer .sdc-panel-footer>[sdcFooter]{margin-top:0!important}::ng-deep s-panel .panel.sdc-panel.panel--collapsed .header{border-bottom:none;min-height:0;padding-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: SeniorPanelModule }, { kind: "component", type: i1.PanelComponent, selector: "s-panel", inputs: ["header", "toggleable", "collapsed", "severity", "borderButtonOptions", "class"], outputs: ["collapsedChange"] }, { kind: "directive", type: i2.TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PanelComponent, isStandalone: true, selector: "sdc-panel", inputs: { header: "header", toggleable: "toggleable", collapsed: "collapsed", severity: "severity", borderButtonOptions: "borderButtonOptions", panelClass: ["class", "panelClass"], ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy" }, outputs: { collapsedChange: "collapsedChange" }, ngImport: i0, template: "<section\n [class]=\"panelClasses\"\n [class.sdc-panel--collapsed]=\"collapsed\"\n [class.sdc-panel--toggleable]=\"toggleable\"\n [class.sdc-panel--with-border-button]=\"showBorderButton\"\n [ngClass]=\"severityClass\"\n [attr.aria-label]=\"(ariaLabel || header) | translate\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-expanded]=\"toggleable ? !collapsed : null\"\n>\n @if (showBorderButton) {\n <button\n type=\"button\"\n class=\"sdc-panel__border-button\"\n [disabled]=\"borderButtonDisabled\"\n [attr.aria-label]=\"borderButtonLabel | translate\"\n [attr.title]=\"borderButtonTooltip ? (borderButtonTooltip | translate) : null\"\n (click)=\"onBorderButtonClick($event)\"\n >\n @if (borderButtonIcon) {\n <i [class]=\"borderButtonIcon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-panel__sr-only\">{{ borderButtonLabel | translate }}</span>\n } @else {\n <span>{{ borderButtonLabel | translate }}</span>\n }\n </button>\n }\n\n @if (header || toggleable) {\n <div class=\"sdc-panel__header\">\n <div class=\"sdc-panel__header-content\">\n @if (header) {\n <span class=\"sdc-panel__title\">{{ header | translate }}</span>\n }\n </div>\n\n @if (toggleable) {\n <button\n type=\"button\"\n class=\"sdc-panel__toggle fas\"\n [ngClass]=\"collapsed ? 'fa-plus' : 'fa-minus'\"\n [attr.aria-controls]=\"contentId\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-label]=\"getToggleAriaLabel() | translate\"\n (click)=\"toggleCollapsed()\"\n >\n <span class=\"sdc-panel__sr-only\">{{ getToggleAriaLabel() | translate }}</span>\n </button>\n }\n </div>\n }\n\n @if (!toggleable || !collapsed) {\n <div\n [id]=\"contentId\"\n class=\"sdc-panel__content\"\n [attr.aria-label]=\"'platform.datacore.accessibility.panel_content' | translate\"\n >\n <div class=\"sdc-panel__body\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"sdc-panel__footer\">\n <ng-content select=\"[sdcFooter]\"></ng-content>\n </div>\n </div>\n }\n</section>\n", styles: [":host{display:block}.sdc-panel{position:relative;display:block;overflow:hidden;background-color:var(--sdc-panel-bg, var(--sdc-surface-bg, #ffffff));border:var(--sdc-panel-border, var(--sdc-surface-border, 1px solid #dedce5));border-radius:var(--sdc-panel-radius, var(--sdc-surface-radius, 4px));box-shadow:var(--sdc-panel-shadow, var(--sdc-surface-shadow, none));padding:var(--sdc-panel-padding, var(--sdc-surface-padding, 22px 22px 20px));transition:var(--sdc-panel-transition, var(--sdc-surface-transition, border-color .25s ease))}.sdc-panel.sdc-panel--success{border-left:4px solid var(--sdc-panel-success, #1f9d55)}.sdc-panel.sdc-panel--info{border-left:4px solid var(--sdc-panel-info, #2563eb)}.sdc-panel.sdc-panel--warn{border-left:4px solid var(--sdc-panel-warn, #d97706)}.sdc-panel.sdc-panel--error{border-left:4px solid var(--sdc-panel-error, #dc2626)}.sdc-panel__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--sdc-panel-header-min-height, var(--sdc-surface-header-min-height, 34px));padding-bottom:var(--sdc-panel-header-padding-bottom, var(--sdc-surface-header-padding-bottom, 20px));border-bottom:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5));color:var(--sdc-panel-title-color, var(--sdc-surface-title-color, #212533))}.sdc-panel--collapsed .sdc-panel__header{padding-bottom:0;border-bottom:none}.sdc-panel__header-content{display:flex;align-items:center;min-width:0}.sdc-panel__title{color:inherit;font-size:var(--sdc-panel-title-font-size, var(--sdc-surface-title-font-size, 14px));font-weight:var(--sdc-panel-title-font-weight, var(--sdc-surface-title-font-weight, 400));line-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px))}.sdc-panel__toggle,.sdc-panel__border-button{display:inline-flex;align-items:center;justify-content:center;min-width:var(--sdc-panel-action-size, 24px);min-height:var(--sdc-panel-action-size, 24px);border:none;background:transparent;color:inherit;cursor:pointer}.sdc-panel__toggle{flex:0 0 auto;border-radius:999px}.sdc-panel__toggle:focus-visible{outline:2px solid currentColor;outline-offset:2px}.sdc-panel__border-button{position:absolute;inset-block-start:1rem;inset-inline-start:0;z-index:1;padding:.5rem;border-radius:999px;background:var(--sdc-panel-border-button-bg, #ffffff);box-shadow:0 10px 20px #0f172a1f;transform:translate(-40%)}.sdc-panel__border-button:focus-visible{outline:2px solid currentColor;outline-offset:2px}.sdc-panel__border-button:disabled{cursor:not-allowed;opacity:.56}.sdc-panel__content{padding-top:var(--sdc-panel-content-padding-top, 15px)}.sdc-panel__body{padding:var(--sdc-panel-content-padding, var(--sdc-surface-content-padding, 0))}.sdc-panel__footer{margin-top:var(--sdc-panel-footer-margin-top, var(--sdc-surface-footer-margin-top, 15px));padding-top:var(--sdc-panel-footer-padding-top, var(--sdc-surface-footer-padding-top, 15px));border-top:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5))}.sdc-panel__footer:empty{display:none}.sdc-panel__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
41
73
  }
42
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PanelComponent, decorators: [{
43
75
  type: Component,
44
- args: [{ imports: [SeniorPanelModule, TranslateModule], standalone: true, selector: 'sdc-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<s-panel [(collapsed)]=\"collapsed\" [header]=\"header | translate\" [toggleable]=\"toggleable\" [severity]=\"severity\"\n [borderButtonOptions]=\"borderButtonOptions\" [class]=\"panelClasses\" (collapsedChange)=\"onCollapsedChanged($event)\"\n [attr.aria-label]=\"(ariaLabel || header) | translate\" [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-expanded]=\"toggleable ? !collapsed : null\">\n <div class=\"sdc-panel-content\" [attr.aria-label]=\"'platform.datacore.accessibility.panel_content' | translate\">\n <ng-content></ng-content>\n </div>\n\n <ng-template sTemplate=\"footer\">\n <div class=\"sdc-panel-footer\">\n <ng-content select=\"[sdcFooter]\"></ng-content>\n </div>\n </ng-template>\n</s-panel>\n", styles: [":host{display:contents}.sdc-panel-content,.sdc-panel-footer{display:contents}.sdc-panel-footer:empty{display:none}::ng-deep s-panel .panel.sdc-panel{background-color:var(--sdc-panel-bg, var(--sdc-surface-bg, #ffffff));border:var(--sdc-panel-border, var(--sdc-surface-border, 1px solid #dedce5));border-radius:var(--sdc-panel-radius, var(--sdc-surface-radius, 4px));box-shadow:var(--sdc-panel-shadow, var(--sdc-surface-shadow, none));padding:var(--sdc-panel-padding, var(--sdc-surface-padding, 22px 22px 20px))!important;transition:var(--sdc-panel-transition, var(--sdc-surface-transition, border-color .5s ease))}::ng-deep s-panel .panel.sdc-panel .header{align-items:center;border-bottom:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5));color:var(--sdc-panel-title-color, var(--sdc-surface-title-color, #212533));font-size:var(--sdc-panel-title-font-size, var(--sdc-surface-title-font-size, 14px));font-weight:var(--sdc-panel-title-font-weight, var(--sdc-surface-title-font-weight, 400));line-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px));min-height:var(--sdc-panel-header-min-height, var(--sdc-surface-header-min-height, 34px));padding-bottom:var(--sdc-panel-header-padding-bottom, var(--sdc-surface-header-padding-bottom, 20px))}::ng-deep s-panel .panel.sdc-panel .header-content{display:flex;align-items:center;min-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px))}::ng-deep s-panel .panel.sdc-panel .collapse-button,::ng-deep s-panel .panel.sdc-panel .s-panel-header-icon,::ng-deep s-panel .panel.sdc-panel .s-panel-header button{min-width:var(--sdc-panel-action-size, 24px);min-height:var(--sdc-panel-action-size, 24px)}::ng-deep s-panel .panel.sdc-panel .collapse-button,::ng-deep s-panel .panel.sdc-panel .s-panel-header button{display:inline-flex;align-items:center;justify-content:center}::ng-deep s-panel .panel.sdc-panel .collapse-button:focus-visible,::ng-deep s-panel .panel.sdc-panel .s-panel-header button:focus-visible{outline:2px solid currentColor;outline-offset:2px}::ng-deep s-panel .panel.sdc-panel .panel-content .body{padding:var(--sdc-panel-content-padding, var(--sdc-surface-content-padding, 15px 0))!important}::ng-deep s-panel .panel.sdc-panel .panel-content .footer{border-top:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5))!important;margin-top:var(--sdc-panel-footer-margin-top, var(--sdc-surface-footer-margin-top, 0));padding-top:var(--sdc-panel-footer-padding-top, var(--sdc-surface-footer-padding-top, 15px))}::ng-deep s-panel .panel.sdc-panel .panel-content .footer:has(>.sdc-panel-footer:empty){display:none}::ng-deep s-panel .panel.sdc-panel .panel-content .footer .sdc-panel-footer>[sdcFooter]{margin-top:0!important}::ng-deep s-panel .panel.sdc-panel.panel--collapsed .header{border-bottom:none;min-height:0;padding-bottom:0}\n"] }]
76
+ args: [{ imports: [CommonModule, TranslateModule], standalone: true, selector: 'sdc-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<section\n [class]=\"panelClasses\"\n [class.sdc-panel--collapsed]=\"collapsed\"\n [class.sdc-panel--toggleable]=\"toggleable\"\n [class.sdc-panel--with-border-button]=\"showBorderButton\"\n [ngClass]=\"severityClass\"\n [attr.aria-label]=\"(ariaLabel || header) | translate\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-expanded]=\"toggleable ? !collapsed : null\"\n>\n @if (showBorderButton) {\n <button\n type=\"button\"\n class=\"sdc-panel__border-button\"\n [disabled]=\"borderButtonDisabled\"\n [attr.aria-label]=\"borderButtonLabel | translate\"\n [attr.title]=\"borderButtonTooltip ? (borderButtonTooltip | translate) : null\"\n (click)=\"onBorderButtonClick($event)\"\n >\n @if (borderButtonIcon) {\n <i [class]=\"borderButtonIcon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-panel__sr-only\">{{ borderButtonLabel | translate }}</span>\n } @else {\n <span>{{ borderButtonLabel | translate }}</span>\n }\n </button>\n }\n\n @if (header || toggleable) {\n <div class=\"sdc-panel__header\">\n <div class=\"sdc-panel__header-content\">\n @if (header) {\n <span class=\"sdc-panel__title\">{{ header | translate }}</span>\n }\n </div>\n\n @if (toggleable) {\n <button\n type=\"button\"\n class=\"sdc-panel__toggle fas\"\n [ngClass]=\"collapsed ? 'fa-plus' : 'fa-minus'\"\n [attr.aria-controls]=\"contentId\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-label]=\"getToggleAriaLabel() | translate\"\n (click)=\"toggleCollapsed()\"\n >\n <span class=\"sdc-panel__sr-only\">{{ getToggleAriaLabel() | translate }}</span>\n </button>\n }\n </div>\n }\n\n @if (!toggleable || !collapsed) {\n <div\n [id]=\"contentId\"\n class=\"sdc-panel__content\"\n [attr.aria-label]=\"'platform.datacore.accessibility.panel_content' | translate\"\n >\n <div class=\"sdc-panel__body\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"sdc-panel__footer\">\n <ng-content select=\"[sdcFooter]\"></ng-content>\n </div>\n </div>\n }\n</section>\n", styles: [":host{display:block}.sdc-panel{position:relative;display:block;overflow:hidden;background-color:var(--sdc-panel-bg, var(--sdc-surface-bg, #ffffff));border:var(--sdc-panel-border, var(--sdc-surface-border, 1px solid #dedce5));border-radius:var(--sdc-panel-radius, var(--sdc-surface-radius, 4px));box-shadow:var(--sdc-panel-shadow, var(--sdc-surface-shadow, none));padding:var(--sdc-panel-padding, var(--sdc-surface-padding, 22px 22px 20px));transition:var(--sdc-panel-transition, var(--sdc-surface-transition, border-color .25s ease))}.sdc-panel.sdc-panel--success{border-left:4px solid var(--sdc-panel-success, #1f9d55)}.sdc-panel.sdc-panel--info{border-left:4px solid var(--sdc-panel-info, #2563eb)}.sdc-panel.sdc-panel--warn{border-left:4px solid var(--sdc-panel-warn, #d97706)}.sdc-panel.sdc-panel--error{border-left:4px solid var(--sdc-panel-error, #dc2626)}.sdc-panel__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--sdc-panel-header-min-height, var(--sdc-surface-header-min-height, 34px));padding-bottom:var(--sdc-panel-header-padding-bottom, var(--sdc-surface-header-padding-bottom, 20px));border-bottom:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5));color:var(--sdc-panel-title-color, var(--sdc-surface-title-color, #212533))}.sdc-panel--collapsed .sdc-panel__header{padding-bottom:0;border-bottom:none}.sdc-panel__header-content{display:flex;align-items:center;min-width:0}.sdc-panel__title{color:inherit;font-size:var(--sdc-panel-title-font-size, var(--sdc-surface-title-font-size, 14px));font-weight:var(--sdc-panel-title-font-weight, var(--sdc-surface-title-font-weight, 400));line-height:var(--sdc-panel-title-line-height, var(--sdc-surface-title-line-height, 20px))}.sdc-panel__toggle,.sdc-panel__border-button{display:inline-flex;align-items:center;justify-content:center;min-width:var(--sdc-panel-action-size, 24px);min-height:var(--sdc-panel-action-size, 24px);border:none;background:transparent;color:inherit;cursor:pointer}.sdc-panel__toggle{flex:0 0 auto;border-radius:999px}.sdc-panel__toggle:focus-visible{outline:2px solid currentColor;outline-offset:2px}.sdc-panel__border-button{position:absolute;inset-block-start:1rem;inset-inline-start:0;z-index:1;padding:.5rem;border-radius:999px;background:var(--sdc-panel-border-button-bg, #ffffff);box-shadow:0 10px 20px #0f172a1f;transform:translate(-40%)}.sdc-panel__border-button:focus-visible{outline:2px solid currentColor;outline-offset:2px}.sdc-panel__border-button:disabled{cursor:not-allowed;opacity:.56}.sdc-panel__content{padding-top:var(--sdc-panel-content-padding-top, 15px)}.sdc-panel__body{padding:var(--sdc-panel-content-padding, var(--sdc-surface-content-padding, 0))}.sdc-panel__footer{margin-top:var(--sdc-panel-footer-margin-top, var(--sdc-surface-footer-margin-top, 15px));padding-top:var(--sdc-panel-footer-padding-top, var(--sdc-surface-footer-padding-top, 15px));border-top:var(--sdc-panel-divider-border, var(--sdc-surface-divider-border, 1px solid #dedce5))}.sdc-panel__footer:empty{display:none}.sdc-panel__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n"] }]
45
77
  }], propDecorators: { header: [{
46
78
  type: Input
47
79
  }], toggleable: [{
@@ -62,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
62
94
  }], ariaLabelledBy: [{
63
95
  type: Input
64
96
  }] } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9wYW5lbC9wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3BhbmVsL3BhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLFdBQVcsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVGLE9BQU8sRUFBdUIsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVd0RCxNQUFNLE9BQU8sY0FBYztJQUNoQixNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ1osVUFBVSxHQUFHLEtBQUssQ0FBQztJQUU1QixJQUFhLFNBQVMsQ0FBQyxLQUFjO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNTLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ2hELFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbEIsUUFBUSxHQUFpQixZQUFZLENBQUMsT0FBTyxDQUFDO0lBQzlDLG1CQUFtQixDQUF1QjtJQUVuQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBRWhDLHVFQUF1RTtJQUM5RCxTQUFTLENBQVU7SUFDbkIsY0FBYyxDQUFVO0lBRWpDLGtCQUFrQixDQUFDLENBQVU7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixPQUFPLDhDQUE4QyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLGdEQUFnRCxDQUFDO0lBQzFELENBQUM7d0dBcENVLGNBQWM7NEZBQWQsY0FBYyx1V0NkM0Isd3VCQWNBLCs1RkRSWSxpQkFBaUIsK1RBQUUsZUFBZTs7NEZBUWpDLGNBQWM7a0JBVDFCLFNBQVM7OEJBQ0MsQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLENBQUMsY0FDakMsSUFBSSxZQUNOLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUTs4QkFHaEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRU8sU0FBUztzQkFBckIsS0FBSztnQkFNSSxlQUFlO3NCQUF4QixNQUFNO2dCQUdFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVVLFVBQVU7c0JBQXpCLEtBQUs7dUJBQUMsT0FBTztnQkFHTCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYW5lbE1vZHVsZSBhcyBTZW5pb3JQYW5lbE1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvcGFuZWwnO1xuaW1wb3J0IHsgQm9yZGVyQnV0dG9uT3B0aW9ucywgRW51bVNldmVyaXR5IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbU2VuaW9yUGFuZWxNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnc2RjLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3BhbmVsLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIFBhbmVsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaGVhZGVyID0gJyc7XG4gIEBJbnB1dCgpIHRvZ2dsZWFibGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgY29sbGFwc2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4kY29sbGFwc2VkID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4kY29sbGFwc2VkO1xuICB9XG4gIEBPdXRwdXQoKSBjb2xsYXBzZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgJGNvbGxhcHNlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNldmVyaXR5OiBFbnVtU2V2ZXJpdHkgPSBFbnVtU2V2ZXJpdHkuRGVmYXVsdDtcbiAgQElucHV0KCkgYm9yZGVyQnV0dG9uT3B0aW9ucz86IEJvcmRlckJ1dHRvbk9wdGlvbnM7XG5cbiAgQElucHV0KCdjbGFzcycpIHBhbmVsQ2xhc3MgPSAnJztcblxuICAvLyBBY2Nlc3NpYmlsaXR5IGlucHV0cyAtIHBlcm1pdGUgY3VzdG9taXphw6fDo28gb3UgdXNhIGRlZmF1bHRzIGNvbSBpMThuXG4gIEBJbnB1dCgpIGFyaWFMYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk/OiBzdHJpbmc7XG5cbiAgb25Db2xsYXBzZWRDaGFuZ2VkKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLiRjb2xsYXBzZWQgPSB2O1xuICAgIHRoaXMuY29sbGFwc2VkQ2hhbmdlLmVtaXQodik7XG4gIH1cblxuICBnZXQgcGFuZWxDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFsnc2RjLXBhbmVsJywgdGhpcy5wYW5lbENsYXNzXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICB9XG5cbiAgZ2V0VG9nZ2xlQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICByZXR1cm4gJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucGFuZWxfZXhwYW5kJztcbiAgICB9XG4gICAgcmV0dXJuICdwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LnBhbmVsX2NvbGxhcHNlJztcbiAgfVxufVxuIiwiPHMtcGFuZWwgWyhjb2xsYXBzZWQpXT1cImNvbGxhcHNlZFwiIFtoZWFkZXJdPVwiaGVhZGVyIHwgdHJhbnNsYXRlXCIgW3RvZ2dsZWFibGVdPVwidG9nZ2xlYWJsZVwiIFtzZXZlcml0eV09XCJzZXZlcml0eVwiXG4gIFtib3JkZXJCdXR0b25PcHRpb25zXT1cImJvcmRlckJ1dHRvbk9wdGlvbnNcIiBbY2xhc3NdPVwicGFuZWxDbGFzc2VzXCIgKGNvbGxhcHNlZENoYW5nZSk9XCJvbkNvbGxhcHNlZENoYW5nZWQoJGV2ZW50KVwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiKGFyaWFMYWJlbCB8fCBoZWFkZXIpIHwgdHJhbnNsYXRlXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJ0b2dnbGVhYmxlID8gIWNvbGxhcHNlZCA6IG51bGxcIj5cbiAgPGRpdiBjbGFzcz1cInNkYy1wYW5lbC1jb250ZW50XCIgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5wYW5lbF9jb250ZW50JyB8IHRyYW5zbGF0ZVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlIHNUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZGMtcGFuZWwtZm9vdGVyXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2RjRm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvcy1wYW5lbD5cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9wYW5lbC9wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3BhbmVsL3BhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQXVCLFlBQVksRUFBbUIsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQVdqRyxNQUFNLE9BQU8sY0FBYztJQUNoQixTQUFTLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUVsRCxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ1osVUFBVSxHQUFHLEtBQUssQ0FBQztJQUU1QixJQUFhLFNBQVMsQ0FBQyxLQUFjO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVTLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBRS9DLFFBQVEsR0FBZSxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQzVDLG1CQUFtQixDQUF1QjtJQUNuQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBRWhDLHVFQUF1RTtJQUM5RCxTQUFTLENBQVU7SUFDbkIsY0FBYyxDQUFVO0lBRXpCLFVB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bW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgbmV4dFNlcXVlbnRpYWxJZCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvaWQudXRpbCc7XG5pbXBvcnQgeyBCb3JkZXJCdXR0b25PcHRpb25zLCBFbnVtU2V2ZXJpdHksIHR5cGUgU2V2ZXJpdGllcyB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvcGFuZWwudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3NkYy1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wYW5lbC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZFxufSlcbmV4cG9ydCBjbGFzcyBQYW5lbENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGNvbnRlbnRJZCA9IG5leHRTZXF1ZW50aWFsSWQoJ3NkYy1wYW5lbC1jb250ZW50Jyk7XG5cbiAgQElucHV0KCkgaGVhZGVyID0gJyc7XG4gIEBJbnB1dCgpIHRvZ2dsZWFibGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgY29sbGFwc2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4kY29sbGFwc2VkID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4kY29sbGFwc2VkO1xuICB9XG5cbiAgQE91dHB1dCgpIGNvbGxhcHNlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASW5wdXQoKSBzZXZlcml0eTogU2V2ZXJpdGllcyA9IEVudW1TZXZlcml0eS5EZWZhdWx0O1xuICBASW5wdXQoKSBib3JkZXJCdXR0b25PcHRpb25zPzogQm9yZGVyQnV0dG9uT3B0aW9ucztcbiAgQElucHV0KCdjbGFzcycpIHBhbmVsQ2xhc3MgPSAnJztcblxuICAvLyBBY2Nlc3NpYmlsaXR5IGlucHV0cyAtIHBlcm1pdGUgY3VzdG9taXphY2FvIG91IHVzYSBkZWZhdWx0cyBjb20gaTE4blxuICBASW5wdXQoKSBhcmlhTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nO1xuXG4gIHByaXZhdGUgJGNvbGxhcHNlZCA9IGZhbHNlO1xuXG4gIG9uQ29sbGFwc2VkQ2hhbmdlZCh2OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy4kY29sbGFwc2VkID0gdjtcbiAgICB0aGlzLmNvbGxhcHNlZENoYW5nZS5lbWl0KHYpO1xuICB9XG5cbiAgdG9nZ2xlQ29sbGFwc2VkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50b2dnbGVhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbkNvbGxhcHNlZENoYW5nZWQoIXRoaXMuY29sbGFwc2VkKTtcbiAgfVxuXG4gIG9uQm9yZGVyQnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5ib3JkZXJCdXR0b25EaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYm9yZGVyQnV0dG9uT3B0aW9ucz8ub25DbGljaz8uKHRoaXMuc2V2ZXJpdHkpO1xuICB9XG5cbiAgZ2V0IHBhbmVsQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBbJ3NkYy1wYW5lbCcsIHRoaXMucGFuZWxDbGFzc10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGdldCBzZXZlcml0eUNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBzZGMtcGFuZWwtLSR7dGhpcy5zZXZlcml0eX1gO1xuICB9XG5cbiAgZ2V0IHNob3dCb3JkZXJCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYm9yZGVyQnV0dG9uT3B0aW9ucz8udmlzaWJsZT8uKHRoaXMuc2V2ZXJpdHkpID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGJvcmRlckJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm9yZGVyQnV0dG9uT3B0aW9ucz8ubGFiZWw/Lih0aGlzLnNldmVyaXR5KSA/PyAncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5wYW5lbF90b2dnbGUnO1xuICB9XG5cbiAgZ2V0IGJvcmRlckJ1dHRvblRvb2x0aXAoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYm9yZGVyQnV0dG9uT3B0aW9ucz8udG9vbHRpcD8uKHRoaXMuc2V2ZXJpdHkpID8/IG51bGw7XG4gIH1cblxuICBnZXQgYm9yZGVyQnV0dG9uSWNvbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5ib3JkZXJCdXR0b25PcHRpb25zPy5pY29uPy4odGhpcy5zZXZlcml0eSkgPz8gbnVsbDtcbiAgfVxuXG4gIGdldCBib3JkZXJCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ib3JkZXJCdXR0b25PcHRpb25zPy5kaXNhYmxlZD8uKHRoaXMuc2V2ZXJpdHkpID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0VG9nZ2xlQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICByZXR1cm4gJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucGFuZWxfZXhwYW5kJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucGFuZWxfY29sbGFwc2UnO1xuICB9XG59XG4iLCI8c2VjdGlvblxuICBbY2xhc3NdPVwicGFuZWxDbGFzc2VzXCJcbiAgW2NsYXNzLnNkYy1wYW5lbC0tY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiXG4gIFtjbGFzcy5zZGMtcGFuZWwtLXRvZ2dsZWFibGVdPVwidG9nZ2xlYWJsZVwiXG4gIFtjbGFzcy5zZGMtcGFuZWwtLXdpdGgtYm9yZGVyLWJ1dHRvbl09XCJzaG93Qm9yZGVyQnV0dG9uXCJcbiAgW25nQ2xhc3NdPVwic2V2ZXJpdHlDbGFzc1wiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiKGFyaWFMYWJlbCB8fCBoZWFkZXIpIHwgdHJhbnNsYXRlXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJ0b2dnbGVhYmxlID8gIWNvbGxhcHNlZCA6IG51bGxcIlxuPlxuICBAaWYgKHNob3dCb3JkZXJCdXR0b24pIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLXBhbmVsX19ib3JkZXItYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJib3JkZXJCdXR0b25EaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJvcmRlckJ1dHRvbkxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgIFthdHRyLnRpdGxlXT1cImJvcmRlckJ1dHRvblRvb2x0aXAgPyAoYm9yZGVyQnV0dG9uVG9vbHRpcCB8IHRyYW5zbGF0ZSkgOiBudWxsXCJcbiAgICAgIChjbGljayk9XCJvbkJvcmRlckJ1dHRvbkNsaWNrKCRldmVudClcIlxuICAgID5cbiAgICAgIEBpZiAoYm9yZGVyQnV0dG9uSWNvbikge1xuICAgICAgICA8aSBbY2xhc3NdPVwiYm9yZGVyQnV0dG9uSWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtcGFuZWxfX3NyLW9ubHlcIj57eyBib3JkZXJCdXR0b25MYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c3Bhbj57eyBib3JkZXJCdXR0b25MYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2J1dHRvbj5cbiAgfVxuXG4gIEBpZiAoaGVhZGVyIHx8IHRvZ2dsZWFibGUpIHtcbiAgICA8ZGl2IGNsYXNzPVwic2RjLXBhbmVsX19oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtcGFuZWxfX2hlYWRlci1jb250ZW50XCI+XG4gICAgICAgIEBpZiAoaGVhZGVyKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtcGFuZWxfX3RpdGxlXCI+e3sgaGVhZGVyIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmICh0b2dnbGVhYmxlKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInNkYy1wYW5lbF9fdG9nZ2xlIGZhc1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiY29sbGFwc2VkID8gJ2ZhLXBsdXMnIDogJ2ZhLW1pbnVzJ1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJjb250ZW50SWRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWNvbGxhcHNlZFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRUb2dnbGVBcmlhTGFiZWwoKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXBhbmVsX19zci1vbmx5XCI+e3sgZ2V0VG9nZ2xlQXJpYUxhYmVsKCkgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgQGlmICghdG9nZ2xlYWJsZSB8fCAhY29sbGFwc2VkKSB7XG4gICAgPGRpdlxuICAgICAgW2lkXT1cImNvbnRlbnRJZFwiXG4gICAgICBjbGFzcz1cInNkYy1wYW5lbF9fY29udGVudFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LnBhbmVsX2NvbnRlbnQnIHwgdHJhbnNsYXRlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2RjLXBhbmVsX19ib2R5XCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic2RjLXBhbmVsX19mb290ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NkY0Zvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9zZWN0aW9uPlxuIl19
@@ -0,0 +1,234 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChildren, ViewEncapsulation, forwardRef } from '@angular/core';
3
+ import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { TranslateModule } from '@ngx-translate/core';
5
+ import { PIN_CODE_FIELD_CHARACTER_ARIA_LABEL_KEY, PIN_CODE_FIELD_DEFAULT_ALPHANUMERIC, PIN_CODE_FIELD_DEFAULT_LENGTH, PIN_CODE_FIELD_DIGIT_ARIA_LABEL_KEY, PIN_CODE_FIELD_GROUP_ARIA_LABEL_KEY } from '../../core/constants/pin-code-field.const';
6
+ import { nextSequentialId } from '../../core/utils/id.util';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@ngx-translate/core";
9
+ export class PinCodeFieldComponent {
10
+ cdr;
11
+ id = nextSequentialId('sdc-pin');
12
+ length = PIN_CODE_FIELD_DEFAULT_LENGTH;
13
+ alphanumeric = PIN_CODE_FIELD_DEFAULT_ALPHANUMERIC;
14
+ helpText = '';
15
+ invalid = false;
16
+ disabled = false;
17
+ codeFilled = new EventEmitter();
18
+ pinInputs;
19
+ groupAriaLabelKey = PIN_CODE_FIELD_GROUP_ARIA_LABEL_KEY;
20
+ digitAriaLabelKey = PIN_CODE_FIELD_DIGIT_ARIA_LABEL_KEY;
21
+ characterAriaLabelKey = PIN_CODE_FIELD_CHARACTER_ARIA_LABEL_KEY;
22
+ inputs = [];
23
+ touched = false;
24
+ _onChange;
25
+ _onTouched;
26
+ constructor(cdr) {
27
+ this.cdr = cdr;
28
+ this.inputs = Array(this.length).fill('');
29
+ }
30
+ get currentValue() {
31
+ return this.inputs.join('');
32
+ }
33
+ get isComplete() {
34
+ return this.inputs.every(v => v.length === 1);
35
+ }
36
+ get hasError() {
37
+ return this.invalid;
38
+ }
39
+ ngOnChanges(changes) {
40
+ if (changes['length']) {
41
+ const newLength = changes['length'].currentValue;
42
+ const oldInputs = this.inputs.slice();
43
+ this.inputs = Array(newLength).fill('').map((_, i) => oldInputs[i] ?? '');
44
+ }
45
+ }
46
+ // ControlValueAccessor
47
+ writeValue(value) {
48
+ const str = value ?? '';
49
+ this.inputs = Array(this.length).fill('').map((_, i) => str[i] ?? '');
50
+ this.cdr.markForCheck();
51
+ }
52
+ registerOnChange(fn) {
53
+ this._onChange = fn;
54
+ }
55
+ registerOnTouched(fn) {
56
+ this._onTouched = fn;
57
+ }
58
+ setDisabledState(isDisabled) {
59
+ this.disabled = isDisabled;
60
+ this.cdr.markForCheck();
61
+ }
62
+ // Keyboard & input handlers
63
+ onFocus(event) {
64
+ const input = event.target;
65
+ input.select();
66
+ }
67
+ onInput(event, index) {
68
+ if (this.disabled) {
69
+ return;
70
+ }
71
+ const input = event.target;
72
+ const raw = input.value;
73
+ const validChar = this.extractValidChar(raw);
74
+ if (validChar) {
75
+ this.inputs[index] = validChar;
76
+ input.value = validChar;
77
+ this.notifyChange();
78
+ this.advanceFocus(index);
79
+ }
80
+ else {
81
+ this.inputs[index] = '';
82
+ input.value = '';
83
+ this.notifyChange();
84
+ }
85
+ this.cdr.markForCheck();
86
+ }
87
+ onKeydown(event, index) {
88
+ if (this.disabled) {
89
+ return;
90
+ }
91
+ const { key } = event;
92
+ if (key === 'Backspace') {
93
+ event.preventDefault();
94
+ if (this.inputs[index]) {
95
+ this.inputs[index] = '';
96
+ const inputEl = this.getInputEl(index);
97
+ if (inputEl) {
98
+ inputEl.value = '';
99
+ }
100
+ this.notifyChange();
101
+ }
102
+ else {
103
+ this.moveFocus(index - 1);
104
+ }
105
+ this.cdr.markForCheck();
106
+ return;
107
+ }
108
+ if (key === 'ArrowRight') {
109
+ event.preventDefault();
110
+ this.moveFocus(index + 1);
111
+ return;
112
+ }
113
+ if (key === 'ArrowLeft') {
114
+ event.preventDefault();
115
+ this.moveFocus(index - 1);
116
+ return;
117
+ }
118
+ // Keep branch explicit for static-analysis rule requiring else/default handling.
119
+ if (key) {
120
+ return;
121
+ }
122
+ }
123
+ onPaste(event, startIndex) {
124
+ if (this.disabled) {
125
+ return;
126
+ }
127
+ event.preventDefault();
128
+ const pasted = event.clipboardData?.getData('text') ?? '';
129
+ const validChars = this.extractValidCharsFromString(pasted);
130
+ let cursor = startIndex;
131
+ for (const char of validChars) {
132
+ if (cursor >= this.length) {
133
+ break;
134
+ }
135
+ this.inputs[cursor] = char;
136
+ const inputEl = this.getInputEl(cursor);
137
+ if (inputEl) {
138
+ inputEl.value = char;
139
+ }
140
+ cursor = cursor + 1;
141
+ }
142
+ this.notifyChange();
143
+ const focusTarget = Math.min(cursor, this.length - 1);
144
+ this.moveFocus(focusTarget);
145
+ this.cdr.markForCheck();
146
+ }
147
+ onBlur(index) {
148
+ if (index === this.length - 1) {
149
+ this.touched = true;
150
+ this._onTouched?.();
151
+ }
152
+ }
153
+ // Private helpers
154
+ extractValidChar(raw) {
155
+ if (!raw) {
156
+ return '';
157
+ }
158
+ const chars = raw.split('');
159
+ for (const char of chars) {
160
+ if (this.isValidChar(char)) {
161
+ return char;
162
+ }
163
+ }
164
+ return '';
165
+ }
166
+ extractValidCharsFromString(str) {
167
+ return str.split('').filter(c => this.isValidChar(c));
168
+ }
169
+ isValidChar(char) {
170
+ if (this.alphanumeric) {
171
+ return char.trim().length === 1;
172
+ }
173
+ return /\d/.test(char);
174
+ }
175
+ advanceFocus(index) {
176
+ this.moveFocus(index + 1);
177
+ }
178
+ moveFocus(index) {
179
+ if (index < 0 || index >= this.length) {
180
+ return;
181
+ }
182
+ const inputEl = this.getInputEl(index);
183
+ inputEl?.focus();
184
+ }
185
+ getInputEl(index) {
186
+ const list = this.pinInputs?.toArray();
187
+ if (!list || index < 0 || index >= list.length) {
188
+ return null;
189
+ }
190
+ return list[index]?.nativeElement ?? null;
191
+ }
192
+ notifyChange() {
193
+ this._onChange?.(this.currentValue);
194
+ if (this.isComplete) {
195
+ this.codeFilled.emit(this.currentValue);
196
+ }
197
+ }
198
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinCodeFieldComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
199
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PinCodeFieldComponent, isStandalone: true, selector: "sdc-pin-code-field", inputs: { id: "id", length: "length", alphanumeric: "alphanumeric", helpText: "helpText", invalid: "invalid", disabled: "disabled" }, outputs: { codeFilled: "codeFilled" }, providers: [
200
+ {
201
+ provide: NG_VALUE_ACCESSOR,
202
+ useExisting: forwardRef(() => PinCodeFieldComponent),
203
+ multi: true
204
+ }
205
+ ], viewQueries: [{ propertyName: "pinInputs", predicate: ["pinInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"sdc-pin-code-field\">\n <div\n class=\"sdc-pin-code-field__inputs\"\n [attr.aria-label]=\"groupAriaLabelKey | translate\"\n [attr.aria-describedby]=\"helpText ? 'pin-help-' + id : null\"\n >\n @for (value of inputs; track $index) {\n <input\n #pinInput\n type=\"text\"\n class=\"sdc-pin-code-field__input\"\n [class.sdc-pin-code-field__input--error]=\"hasError\"\n [class.sdc-pin-code-field__input--disabled]=\"disabled\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"\n (alphanumeric ? characterAriaLabelKey : digitAriaLabelKey)\n | translate : { n: $index + 1, total: length }\n \"\n [attr.aria-describedby]=\"helpText ? 'pin-help-' + id : null\"\n [attr.aria-required]=\"true\"\n [attr.aria-invalid]=\"hasError\"\n [attr.inputmode]=\"alphanumeric ? 'text' : 'numeric'\"\n [attr.maxlength]=\"1\"\n autocomplete=\"off\"\n (focus)=\"onFocus($event)\"\n (input)=\"onInput($event, $index)\"\n (keydown)=\"onKeydown($event, $index)\"\n (paste)=\"onPaste($event, $index)\"\n (blur)=\"onBlur($index)\"\n />\n }\n </div>\n\n @if (helpText) {\n <div\n [id]=\"'pin-help-' + id\"\n class=\"sdc-pin-code-field__help\"\n >{{ helpText }}</div>\n }\n</div>\n", styles: [":host{display:block}.sdc-pin-code-field{--sdc-pin-code-field-input-size: 3rem;--sdc-pin-code-field-gap: .5rem;--sdc-pin-code-field-border: var(--sdc-color-border, #dedce5);--sdc-pin-code-field-border-focus: var(--sdc-color-primary, #428bca);--sdc-pin-code-field-border-error: var(--sdc-color-danger, #c13018);--sdc-pin-code-field-bg: #fff;--sdc-pin-code-field-bg-disabled: #f5f5f5;--sdc-pin-code-field-text: #212533;--sdc-pin-code-field-text-disabled: #697882;--sdc-pin-code-field-radius: .375rem;--sdc-pin-code-field-font-size: 1.125rem;--sdc-pin-code-field-help-color: #697882;display:flex;flex-direction:column;gap:.375rem}.sdc-pin-code-field__inputs{display:flex;flex-direction:row;gap:var(--sdc-pin-code-field-gap);align-items:center}.sdc-pin-code-field__input{width:var(--sdc-pin-code-field-input-size);height:var(--sdc-pin-code-field-input-size);border:1px solid var(--sdc-pin-code-field-border);border-radius:var(--sdc-pin-code-field-radius);background-color:var(--sdc-pin-code-field-bg);color:var(--sdc-pin-code-field-text);font-size:var(--sdc-pin-code-field-font-size);font-family:var(--sdc-font-family, \"Open Sans\", sans-serif);text-align:center;outline:none;padding:0;transition:border-color .15s ease,box-shadow .15s ease;appearance:none;-moz-appearance:textfield}.sdc-pin-code-field__input::-webkit-outer-spin-button,.sdc-pin-code-field__input::-webkit-inner-spin-button{appearance:none;margin:0}.sdc-pin-code-field__input:focus{border-color:var(--sdc-pin-code-field-border-focus);box-shadow:0 0 0 3px #428bca33}.sdc-pin-code-field__input--error{border-color:var(--sdc-pin-code-field-border-error)}.sdc-pin-code-field__input--error:focus{border-color:var(--sdc-pin-code-field-border-error);box-shadow:0 0 0 3px #c1301833}.sdc-pin-code-field__input--disabled,.sdc-pin-code-field__input:disabled{background-color:var(--sdc-pin-code-field-bg-disabled);color:var(--sdc-pin-code-field-text-disabled);cursor:not-allowed;border-color:var(--sdc-pin-code-field-border)}.sdc-pin-code-field__help{font-size:.75rem;color:var(--sdc-pin-code-field-help-color);font-family:var(--sdc-font-family, \"Open Sans\", sans-serif);line-height:1.4}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
206
+ }
207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinCodeFieldComponent, decorators: [{
208
+ type: Component,
209
+ args: [{ selector: 'sdc-pin-code-field', standalone: true, imports: [CommonModule, TranslateModule, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, providers: [
210
+ {
211
+ provide: NG_VALUE_ACCESSOR,
212
+ useExisting: forwardRef(() => PinCodeFieldComponent),
213
+ multi: true
214
+ }
215
+ ], template: "<div class=\"sdc-pin-code-field\">\n <div\n class=\"sdc-pin-code-field__inputs\"\n [attr.aria-label]=\"groupAriaLabelKey | translate\"\n [attr.aria-describedby]=\"helpText ? 'pin-help-' + id : null\"\n >\n @for (value of inputs; track $index) {\n <input\n #pinInput\n type=\"text\"\n class=\"sdc-pin-code-field__input\"\n [class.sdc-pin-code-field__input--error]=\"hasError\"\n [class.sdc-pin-code-field__input--disabled]=\"disabled\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"\n (alphanumeric ? characterAriaLabelKey : digitAriaLabelKey)\n | translate : { n: $index + 1, total: length }\n \"\n [attr.aria-describedby]=\"helpText ? 'pin-help-' + id : null\"\n [attr.aria-required]=\"true\"\n [attr.aria-invalid]=\"hasError\"\n [attr.inputmode]=\"alphanumeric ? 'text' : 'numeric'\"\n [attr.maxlength]=\"1\"\n autocomplete=\"off\"\n (focus)=\"onFocus($event)\"\n (input)=\"onInput($event, $index)\"\n (keydown)=\"onKeydown($event, $index)\"\n (paste)=\"onPaste($event, $index)\"\n (blur)=\"onBlur($index)\"\n />\n }\n </div>\n\n @if (helpText) {\n <div\n [id]=\"'pin-help-' + id\"\n class=\"sdc-pin-code-field__help\"\n >{{ helpText }}</div>\n }\n</div>\n", styles: [":host{display:block}.sdc-pin-code-field{--sdc-pin-code-field-input-size: 3rem;--sdc-pin-code-field-gap: .5rem;--sdc-pin-code-field-border: var(--sdc-color-border, #dedce5);--sdc-pin-code-field-border-focus: var(--sdc-color-primary, #428bca);--sdc-pin-code-field-border-error: var(--sdc-color-danger, #c13018);--sdc-pin-code-field-bg: #fff;--sdc-pin-code-field-bg-disabled: #f5f5f5;--sdc-pin-code-field-text: #212533;--sdc-pin-code-field-text-disabled: #697882;--sdc-pin-code-field-radius: .375rem;--sdc-pin-code-field-font-size: 1.125rem;--sdc-pin-code-field-help-color: #697882;display:flex;flex-direction:column;gap:.375rem}.sdc-pin-code-field__inputs{display:flex;flex-direction:row;gap:var(--sdc-pin-code-field-gap);align-items:center}.sdc-pin-code-field__input{width:var(--sdc-pin-code-field-input-size);height:var(--sdc-pin-code-field-input-size);border:1px solid var(--sdc-pin-code-field-border);border-radius:var(--sdc-pin-code-field-radius);background-color:var(--sdc-pin-code-field-bg);color:var(--sdc-pin-code-field-text);font-size:var(--sdc-pin-code-field-font-size);font-family:var(--sdc-font-family, \"Open Sans\", sans-serif);text-align:center;outline:none;padding:0;transition:border-color .15s ease,box-shadow .15s ease;appearance:none;-moz-appearance:textfield}.sdc-pin-code-field__input::-webkit-outer-spin-button,.sdc-pin-code-field__input::-webkit-inner-spin-button{appearance:none;margin:0}.sdc-pin-code-field__input:focus{border-color:var(--sdc-pin-code-field-border-focus);box-shadow:0 0 0 3px #428bca33}.sdc-pin-code-field__input--error{border-color:var(--sdc-pin-code-field-border-error)}.sdc-pin-code-field__input--error:focus{border-color:var(--sdc-pin-code-field-border-error);box-shadow:0 0 0 3px #c1301833}.sdc-pin-code-field__input--disabled,.sdc-pin-code-field__input:disabled{background-color:var(--sdc-pin-code-field-bg-disabled);color:var(--sdc-pin-code-field-text-disabled);cursor:not-allowed;border-color:var(--sdc-pin-code-field-border)}.sdc-pin-code-field__help{font-size:.75rem;color:var(--sdc-pin-code-field-help-color);font-family:var(--sdc-font-family, \"Open Sans\", sans-serif);line-height:1.4}\n"] }]
216
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { id: [{
217
+ type: Input
218
+ }], length: [{
219
+ type: Input
220
+ }], alphanumeric: [{
221
+ type: Input
222
+ }], helpText: [{
223
+ type: Input
224
+ }], invalid: [{
225
+ type: Input
226
+ }], disabled: [{
227
+ type: Input
228
+ }], codeFilled: [{
229
+ type: Output
230
+ }], pinInputs: [{
231
+ type: ViewChildren,
232
+ args: ['pinInput']
233
+ }] } });
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWNvZGUtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9waW4tY29kZS1maWVsZC9waW4tY29kZS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3Bpbi1jb2RlLWZpZWxkL3Bpbi1jb2RlLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQ0wsdUNBQXVDLEVBQ3ZDLG1DQUFtQyxFQUNuQyw2QkFBNkIsRUFDN0IsbUNBQW1DLEVBQ25DLG1DQUFtQyxFQUNwQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFrQjVELE1BQU0sT0FBTyxxQkFBcUI7SUFzQkg7SUFyQnBCLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxNQUFNLEdBQUcsNkJBQTZCLENBQUM7SUFDdkMsWUFBWSxHQUFHLG1DQUFtQyxDQUFDO0lBQ25ELFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFaEIsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFFeEIsU0FBUyxDQUEyQztJQUUzRCxpQkFBaUIsR0FBRyxtQ0FBbUMsQ0FBQztJQUN4RCxpQkFBaUIsR0FBRyxtQ0FBbUMsQ0FBQztJQUN4RCxxQkFBcUIsR0FBRyx1Q0FBdUMsQ0FBQztJQUV6RSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQ3RCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFbEIsU0FBUyxDQUEyQjtJQUNwQyxVQUFVLENBQWM7SUFFaEMsWUFBNkIsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDakQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQXNCLENBQUM7WUFDM0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0lBRUQsdUJBQXVCO0lBRXZCLFVBQVUsQ0FBQyxLQUFnQztRQUN6QyxNQUFNLEdBQUcsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQTJCO1FBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsT0FBTyxDQUFDLEtBQWlCO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVksRUFBRSxLQUFhO1FBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDL0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDO1lBQy9CLEtBQUssQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBb0IsRUFBRSxLQUFhO1FBQzNDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV0QixJQUFJLEdBQUcsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixDQUFDO2dCQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUVELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLEdBQUcsS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUN6QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLEdBQUcsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCxpRkFBaUY7UUFDakYsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLE9BQU87UUFDVCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFxQixFQUFFLFVBQWtCO1FBQy9DLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDO1FBRXhCLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7WUFDOUIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixNQUFNO1lBQ1IsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUN2QixDQUFDO1lBQ0QsTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWE7UUFDbEIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUVWLGdCQUFnQixDQUFDLEdBQVc7UUFDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU1QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMzQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU8sMkJBQTJCLENBQUMsR0FBVztRQUM3QyxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTyxXQUFXLENBQUMsSUFBWTtRQUM5QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBYTtRQUM3QixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBYTtRQUM5QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9DLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLGFBQWEsSUFBSSxJQUFJLENBQUM7SUFDNUMsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7d0dBNU9VLHFCQUFxQjs0RkFBckIscUJBQXFCLDhPQVJyQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ3BELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRix5SUMxQ0gsNDJDQXlDQSx1cEVEVlksWUFBWSw4QkFBRSxlQUFlLDJGQUFFLFdBQVc7OzRGQWF6QyxxQkFBcUI7a0JBaEJqQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxtQkFHcEMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUSxhQUM5Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7c0ZBR1EsRUFBRTtzQkFBVixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFFbUIsU0FBUztzQkFBbEMsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge1xuICBQSU5fQ09ERV9GSUVMRF9DSEFSQUNURVJfQVJJQV9MQUJFTF9LRVksXG4gIFBJTl9DT0RFX0ZJRUxEX0RFRkFVTFRfQUxQSEFOVU1FUklDLFxuICBQSU5fQ09ERV9GSUVMRF9ERUZBVUxUX0xFTkdUSCxcbiAgUElOX0NPREVfRklFTERfRElHSVRfQVJJQV9MQUJFTF9LRVksXG4gIFBJTl9DT0RFX0ZJRUxEX0dST1VQX0FSSUFfTEFCRUxfS0VZXG59IGZyb20gJy4uLy4uL2NvcmUvY29uc3RhbnRzL3Bpbi1jb2RlLWZpZWxkLmNvbnN0JztcbmltcG9ydCB7IG5leHRTZXF1ZW50aWFsSWQgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2lkLnV0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtcGluLWNvZGUtZmllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bpbi1jb2RlLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Bpbi1jb2RlLWZpZWxkLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBpbkNvZGVGaWVsZENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQaW5Db2RlRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaWQgPSBuZXh0U2VxdWVudGlhbElkKCdzZGMtcGluJyk7XG4gIEBJbnB1dCgpIGxlbmd0aCA9IFBJTl9DT0RFX0ZJRUxEX0RFRkFVTFRfTEVOR1RIO1xuICBASW5wdXQoKSBhbHBoYW51bWVyaWMgPSBQSU5fQ09ERV9GSUVMRF9ERUZBVUxUX0FMUEhBTlVNRVJJQztcbiAgQElucHV0KCkgaGVscFRleHQgPSAnJztcbiAgQElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjb2RlRmlsbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZHJlbigncGluSW5wdXQnKSBwaW5JbnB1dHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj47XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdyb3VwQXJpYUxhYmVsS2V5ID0gUElOX0NPREVfRklFTERfR1JPVVBfQVJJQV9MQUJFTF9LRVk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkaWdpdEFyaWFMYWJlbEtleSA9IFBJTl9DT0RFX0ZJRUxEX0RJR0lUX0FSSUFfTEFCRUxfS0VZO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhcmFjdGVyQXJpYUxhYmVsS2V5ID0gUElOX0NPREVfRklFTERfQ0hBUkFDVEVSX0FSSUFfTEFCRUxfS0VZO1xuXG4gIHByb3RlY3RlZCBpbnB1dHM6IHN0cmluZ1tdID0gW107XG4gIHByb3RlY3RlZCB0b3VjaGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLmlucHV0cyA9IEFycmF5KHRoaXMubGVuZ3RoKS5maWxsKCcnKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dHMuam9pbignJyk7XG4gIH1cblxuICBnZXQgaXNDb21wbGV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dHMuZXZlcnkodiA9PiB2Lmxlbmd0aCA9PT0gMSk7XG4gIH1cblxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snbGVuZ3RoJ10pIHtcbiAgICAgIGNvbnN0IG5ld0xlbmd0aCA9IGNoYW5nZXNbJ2xlbmd0aCddLmN1cnJlbnRWYWx1ZSBhcyBudW1iZXI7XG4gICAgICBjb25zdCBvbGRJbnB1dHMgPSB0aGlzLmlucHV0cy5zbGljZSgpO1xuICAgICAgdGhpcy5pbnB1dHMgPSBBcnJheShuZXdMZW5ndGgpLmZpbGwoJycpLm1hcCgoXywgaSkgPT4gb2xkSW5wdXRzW2ldID8/ICcnKTtcbiAgICB9XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvclxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBzdHIgPSB2YWx1ZSA/PyAnJztcbiAgICB0aGlzLmlucHV0cyA9IEFycmF5KHRoaXMubGVuZ3RoKS5maWxsKCcnKS5tYXAoKF8sIGkpID0+IHN0cltpXSA/PyAnJyk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyBLZXlib2FyZCAmIGlucHV0IGhhbmRsZXJzXG5cbiAgb25Gb2N1cyhldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaW5wdXQuc2VsZWN0KCk7XG4gIH1cblxuICBvbklucHV0KGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCByYXcgPSBpbnB1dC52YWx1ZTtcbiAgICBjb25zdCB2YWxpZENoYXIgPSB0aGlzLmV4dHJhY3RWYWxpZENoYXIocmF3KTtcblxuICAgIGlmICh2YWxpZENoYXIpIHtcbiAgICAgIHRoaXMuaW5wdXRzW2luZGV4XSA9IHZhbGlkQ2hhcjtcbiAgICAgIGlucHV0LnZhbHVlID0gdmFsaWRDaGFyO1xuICAgICAgdGhpcy5ub3RpZnlDaGFuZ2UoKTtcbiAgICAgIHRoaXMuYWR2YW5jZUZvY3VzKGluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dHNbaW5kZXhdID0gJyc7XG4gICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgdGhpcy5ub3RpZnlDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50O1xuXG4gICAgaWYgKGtleSA9PT0gJ0JhY2tzcGFjZScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIGlmICh0aGlzLmlucHV0c1tpbmRleF0pIHtcbiAgICAgICAgdGhpcy5pbnB1dHNbaW5kZXhdID0gJyc7XG4gICAgICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmdldElucHV0RWwoaW5kZXgpO1xuICAgICAgICBpZiAoaW5wdXRFbCkge1xuICAgICAgICAgIGlucHV0RWwudmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vdGlmeUNoYW5nZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXMoaW5kZXggLSAxKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ0Fycm93UmlnaHQnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5tb3ZlRm9jdXMoaW5kZXggKyAxKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMubW92ZUZvY3VzKGluZGV4IC0gMSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gS2VlcCBicmFuY2ggZXhwbGljaXQgZm9yIHN0YXRpYy1hbmFseXNpcyBydWxlIHJlcXVpcmluZyBlbHNlL2RlZmF1bHQgaGFuZGxpbmcuXG4gICAgaWYgKGtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50LCBzdGFydEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgcGFzdGVkID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpID8/ICcnO1xuICAgIGNvbnN0IHZhbGlkQ2hhcnMgPSB0aGlzLmV4dHJhY3RWYWxpZENoYXJzRnJvbVN0cmluZyhwYXN0ZWQpO1xuICAgIGxldCBjdXJzb3IgPSBzdGFydEluZGV4O1xuXG4gICAgZm9yIChjb25zdCBjaGFyIG9mIHZhbGlkQ2hhcnMpIHtcbiAgICAgIGlmIChjdXJzb3IgPj0gdGhpcy5sZW5ndGgpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLmlucHV0c1tjdXJzb3JdID0gY2hhcjtcbiAgICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmdldElucHV0RWwoY3Vyc29yKTtcbiAgICAgIGlmIChpbnB1dEVsKSB7XG4gICAgICAgIGlucHV0RWwudmFsdWUgPSBjaGFyO1xuICAgICAgfVxuICAgICAgY3Vyc29yID0gY3Vyc29yICsgMTtcbiAgICB9XG5cbiAgICB0aGlzLm5vdGlmeUNoYW5nZSgpO1xuXG4gICAgY29uc3QgZm9jdXNUYXJnZXQgPSBNYXRoLm1pbihjdXJzb3IsIHRoaXMubGVuZ3RoIC0gMSk7XG4gICAgdGhpcy5tb3ZlRm9jdXMoZm9jdXNUYXJnZXQpO1xuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkJsdXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpbmRleCA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkPy4oKTtcbiAgICB9XG4gIH1cblxuICAvLyBQcml2YXRlIGhlbHBlcnNcblxuICBwcml2YXRlIGV4dHJhY3RWYWxpZENoYXIocmF3OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghcmF3KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhcnMgPSByYXcuc3BsaXQoJycpO1xuXG4gICAgZm9yIChjb25zdCBjaGFyIG9mIGNoYXJzKSB7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkQ2hhcihjaGFyKSkge1xuICAgICAgICByZXR1cm4gY2hhcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RWYWxpZENoYXJzRnJvbVN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCcnKS5maWx0ZXIoYyA9PiB0aGlzLmlzVmFsaWRDaGFyKGMpKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZENoYXIoY2hhcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuYWxwaGFudW1lcmljKSB7XG4gICAgICByZXR1cm4gY2hhci50cmltKCkubGVuZ3RoID09PSAxO1xuICAgIH1cblxuICAgIHJldHVybiAvXFxkLy50ZXN0KGNoYXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZHZhbmNlRm9jdXMoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubW92ZUZvY3VzKGluZGV4ICsgMSk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVGb2N1cyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmdldElucHV0RWwoaW5kZXgpO1xuICAgIGlucHV0RWw/LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIGdldElucHV0RWwoaW5kZXg6IG51bWJlcik6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5waW5JbnB1dHM/LnRvQXJyYXkoKTtcblxuICAgIGlmICghbGlzdCB8fCBpbmRleCA8IDAgfHwgaW5kZXggPj0gbGlzdC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBsaXN0W2luZGV4XT8ubmF0aXZlRWxlbWVudCA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBub3RpZnlDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2U/Lih0aGlzLmN1cnJlbnRWYWx1ZSk7XG5cbiAgICBpZiAodGhpcy5pc0NvbXBsZXRlKSB7XG4gICAgICB0aGlzLmNvZGVGaWxsZWQuZW1pdCh0aGlzLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2RjLXBpbi1jb2RlLWZpZWxkXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNkYy1waW4tY29kZS1maWVsZF9faW5wdXRzXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdyb3VwQXJpYUxhYmVsS2V5IHwgdHJhbnNsYXRlXCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImhlbHBUZXh0ID8gJ3Bpbi1oZWxwLScgKyBpZCA6IG51bGxcIlxuICA+XG4gICAgQGZvciAodmFsdWUgb2YgaW5wdXRzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxpbnB1dFxuICAgICAgICAjcGluSW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBjbGFzcz1cInNkYy1waW4tY29kZS1maWVsZF9faW5wdXRcIlxuICAgICAgICBbY2xhc3Muc2RjLXBpbi1jb2RlLWZpZWxkX19pbnB1dC0tZXJyb3JdPVwiaGFzRXJyb3JcIlxuICAgICAgICBbY2xhc3Muc2RjLXBpbi1jb2RlLWZpZWxkX19pbnB1dC0tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgIChhbHBoYW51bWVyaWMgPyBjaGFyYWN0ZXJBcmlhTGFiZWxLZXkgOiBkaWdpdEFyaWFMYWJlbEtleSlcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlIDogeyBuOiAkaW5kZXggKyAxLCB0b3RhbDogbGVuZ3RoIH1cbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoZWxwVGV4dCA/ICdwaW4taGVscC0nICsgaWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yXCJcbiAgICAgICAgW2F0dHIuaW5wdXRtb2RlXT1cImFscGhhbnVtZXJpYyA/ICd0ZXh0JyA6ICdudW1lcmljJ1wiXG4gICAgICAgIFthdHRyLm1heGxlbmd0aF09XCIxXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgJGluZGV4KVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQsICRpbmRleClcIlxuICAgICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQsICRpbmRleClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGluZGV4KVwiXG4gICAgICAvPlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgQGlmIChoZWxwVGV4dCkge1xuICAgIDxkaXZcbiAgICAgIFtpZF09XCIncGluLWhlbHAtJyArIGlkXCJcbiAgICAgIGNsYXNzPVwic2RjLXBpbi1jb2RlLWZpZWxkX19oZWxwXCJcbiAgICA+e3sgaGVscFRleHQgfX08L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=