@leanix/components 0.4.20 → 0.4.22

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 (231) hide show
  1. package/{esm2020 → esm2022}/lib/core-ui/components/badge/badge.component.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/core-ui/components/button/button.component.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/core-ui/components/button-group/button-group.component.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/core-ui/components/card/card.component.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/core-ui/components/collapsible/collapsible.component.mjs +4 -4
  6. package/{esm2020 → esm2022}/lib/core-ui/components/colored-label/colored-label.component.mjs +4 -4
  7. package/esm2022/lib/core-ui/components/ellipsis/ellipsis.component.mjs +139 -0
  8. package/{esm2020 → esm2022}/lib/core-ui/components/file-download-button/file-download-button.component.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/core-ui/components/icon-scale/icon-scale.component.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/core-ui/components/spinner/spinner.component.mjs +4 -4
  11. package/{esm2020 → esm2022}/lib/core-ui/components/table/table-header/table-header.component.mjs +4 -4
  12. package/{esm2020 → esm2022}/lib/core-ui/components/table/table.component.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/core-ui/components/tiny-spinner/tiny-spinner.component.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/core-ui/core-ui.module.mjs +72 -72
  15. package/{esm2020 → esm2022}/lib/core-ui/directives/after-view-init.directive.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/core-ui/directives/autoclose-group.service.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/core-ui/directives/autoclose.directive.mjs +4 -4
  18. package/{esm2020 → esm2022}/lib/core-ui/directives/autofocus.directive.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/core-ui/directives/html.directive.mjs +4 -4
  20. package/esm2022/lib/core-ui/linkify/linkify.pipe.mjs +144 -0
  21. package/{esm2020 → esm2022}/lib/core-ui/linkify/unlinkify.pipe.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/core-ui/pipes/br.pipe.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/core-ui/pipes/contrast-color.pipe.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/core-ui/pipes/custom-date.pipe.mjs +4 -4
  25. package/{esm2020 → esm2022}/lib/core-ui/pipes/highlight-range.pipe.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/core-ui/pipes/highlight-term.pipe.mjs +4 -4
  27. package/{esm2020 → esm2022}/lib/core-ui/pipes/lx-is-uuid.pipe.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/core-ui/pipes/lx-time-ago.pipe.mjs +4 -4
  29. package/{esm2020 → esm2022}/lib/core-ui/pipes/lx-translate.pipe.mjs +5 -5
  30. package/{esm2020 → esm2022}/lib/core-ui/pipes/markdown.pipe.mjs +4 -4
  31. package/{esm2020 → esm2022}/lib/core-ui/pipes/nbsp.pipe.mjs +4 -4
  32. package/{esm2020 → esm2022}/lib/core-ui/pipes/sort.pipe.mjs +4 -4
  33. package/{esm2020 → esm2022}/lib/core-ui/pipes/translation-after.pipe.mjs +4 -4
  34. package/{esm2020 → esm2022}/lib/core-ui/pipes/translation-before.pipe.mjs +4 -4
  35. package/{esm2020 → esm2022}/lib/core-ui/pipes/translation-between.pipe.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/core-ui/pipes/unescape-curly-braces.pipe.mjs +4 -4
  37. package/{esm2020 → esm2022}/lib/core-ui/services/resize-observer.service.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/core-ui/tooltip/tooltip.component.mjs +4 -4
  39. package/esm2022/lib/core-ui/tooltip/tooltip.directive.mjs +105 -0
  40. package/{esm2020 → esm2022}/lib/core-ui/tooltip/tooltip.module.mjs +5 -5
  41. package/esm2022/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.mjs +120 -0
  42. package/{esm2020 → esm2022}/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.mjs +4 -4
  43. package/{esm2020 → esm2022}/lib/forms-ui/components/breadcrumb/breadcrumb.component.mjs +4 -4
  44. package/esm2022/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.mjs +216 -0
  45. package/{esm2020 → esm2022}/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.mjs +4 -4
  46. package/{esm2020 → esm2022}/lib/forms-ui/components/copy-button/copy-button.component.mjs +4 -4
  47. package/esm2022/lib/forms-ui/components/currency/currency-input.component.mjs +145 -0
  48. package/{esm2020 → esm2022}/lib/forms-ui/components/currency/currency-symbol.component.mjs +4 -4
  49. package/{esm2020 → esm2022}/lib/forms-ui/components/date-input/date-input.component.mjs +7 -7
  50. package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.mjs +6 -6
  51. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.mjs +27 -0
  52. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.component.mjs +205 -0
  53. package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/datepicker.config.mjs +4 -4
  54. package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/daypicker.component.mjs +6 -6
  55. package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/monthpicker.component.mjs +6 -6
  56. package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/yearpicker.component.mjs +6 -6
  57. package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.mjs +49 -0
  58. package/{esm2020 → esm2022}/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.mjs +4 -4
  59. package/{esm2020 → esm2022}/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.mjs +5 -5
  60. package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.mjs +134 -0
  61. package/{esm2020 → esm2022}/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/forms-ui/components/error-message/error-message.component.mjs +7 -7
  63. package/{esm2020 → esm2022}/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.mjs +4 -4
  64. package/{esm2020 → esm2022}/lib/forms-ui/components/form-error/form-error.component.mjs +4 -4
  65. package/{esm2020 → esm2022}/lib/forms-ui/components/icon/icon.component.mjs +4 -4
  66. package/{esm2020 → esm2022}/lib/forms-ui/components/input/input.component.mjs +4 -4
  67. package/{esm2020 → esm2022}/lib/forms-ui/components/keyboard-select.directive.mjs +4 -4
  68. package/esm2022/lib/forms-ui/components/multi-select/multi-select.component.mjs +255 -0
  69. package/esm2022/lib/forms-ui/components/option/option.component.mjs +84 -0
  70. package/{esm2020 → esm2022}/lib/forms-ui/components/option-group/option-group.component.mjs +4 -4
  71. package/{esm2020 → esm2022}/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.mjs +4 -4
  72. package/esm2022/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +185 -0
  73. package/{esm2020 → esm2022}/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.mjs +4 -4
  74. package/{esm2020 → esm2022}/lib/forms-ui/components/picker/picker-trigger.directive.mjs +7 -7
  75. package/{esm2020 → esm2022}/lib/forms-ui/components/picker/picker.component.mjs +19 -19
  76. package/esm2022/lib/forms-ui/components/picker-option/picker-option.component.mjs +118 -0
  77. package/{esm2020 → esm2022}/lib/forms-ui/components/pill-item/pill-item.component.mjs +4 -4
  78. package/{esm2020 → esm2022}/lib/forms-ui/components/pill-list/pill-list.component.mjs +4 -4
  79. package/esm2022/lib/forms-ui/components/responsive-input/responsive-input.component.mjs +100 -0
  80. package/{esm2020 → esm2022}/lib/forms-ui/components/select-list/select-list.component.mjs +4 -4
  81. package/esm2022/lib/forms-ui/components/single-select/single-select.component.mjs +279 -0
  82. package/{esm2020 → esm2022}/lib/forms-ui/components/slider-toggle/slider-toggle.component.mjs +4 -4
  83. package/{esm2020 → esm2022}/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.mjs +4 -4
  84. package/{esm2020 → esm2022}/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.mjs +4 -4
  85. package/esm2022/lib/forms-ui/directives/contenteditable.directive.mjs +129 -0
  86. package/esm2022/lib/forms-ui/directives/form-error.directive.mjs +109 -0
  87. package/{esm2020 → esm2022}/lib/forms-ui/directives/form-submit.directive.mjs +4 -4
  88. package/{esm2020 → esm2022}/lib/forms-ui/directives/keyboard-action-source.directive.mjs +4 -4
  89. package/{esm2020 → esm2022}/lib/forms-ui/directives/mark-invalid.directive.mjs +4 -4
  90. package/{esm2020 → esm2022}/lib/forms-ui/directives/select-dropdown.directive.mjs +4 -4
  91. package/{esm2020 → esm2022}/lib/forms-ui/directives/selectable-item.directive.mjs +7 -7
  92. package/{esm2020 → esm2022}/lib/forms-ui/directives/selected-option.directive.mjs +4 -4
  93. package/{esm2020 → esm2022}/lib/forms-ui/forms-ui.module.mjs +102 -102
  94. package/{esm2020 → esm2022}/lib/forms-ui/models/base-select.directive.mjs +4 -4
  95. package/{esm2020 → esm2022}/lib/forms-ui/pipes/filter-selection.pipe.mjs +4 -4
  96. package/{esm2020 → esm2022}/lib/forms-ui/pipes/filter-term.pipe.mjs +4 -4
  97. package/{esm2020 → esm2022}/lib/forms-ui/pipes/format-number.pipe.mjs +4 -4
  98. package/esm2022/lib/modal-ui/components/modal/modal.component.mjs +213 -0
  99. package/{esm2020 → esm2022}/lib/modal-ui/components/modal-footer/modal-footer.component.mjs +4 -4
  100. package/{esm2020 → esm2022}/lib/modal-ui/components/modal-header/modal-header.component.mjs +4 -4
  101. package/{esm2020 → esm2022}/lib/modal-ui/directives/modal-content.directive.mjs +4 -4
  102. package/{esm2020 → esm2022}/lib/modal-ui/modal.module.mjs +5 -5
  103. package/{esm2020 → esm2022}/lib/popover-ui/components/popover/popover.component.mjs +4 -4
  104. package/{esm2020 → esm2022}/lib/popover-ui/directives/popover-click.directive.mjs +4 -4
  105. package/{esm2020 → esm2022}/lib/popover-ui/directives/popover-content.directive.mjs +4 -4
  106. package/esm2022/lib/popover-ui/directives/popover-hover.directive.mjs +87 -0
  107. package/{esm2020 → esm2022}/lib/popover-ui/popover-ui.module.mjs +5 -5
  108. package/{esm2020 → esm2022}/lib/tab-ui/components/tab/tab.component.mjs +14 -14
  109. package/esm2022/lib/tab-ui/components/tab-group/tab-group.component.mjs +71 -0
  110. package/{esm2020 → esm2022}/lib/tab-ui/tab-ui.module.mjs +5 -5
  111. package/{fesm2020 → fesm2022}/leanix-components.mjs +767 -768
  112. package/fesm2022/leanix-components.mjs.map +1 -0
  113. package/lib/core-ui/components/badge/badge.component.d.ts +1 -1
  114. package/lib/core-ui/components/button/button.component.d.ts +1 -1
  115. package/lib/core-ui/components/button-group/button-group.component.d.ts +1 -1
  116. package/lib/core-ui/components/card/card.component.d.ts +1 -1
  117. package/lib/core-ui/components/collapsible/collapsible.component.d.ts +1 -1
  118. package/lib/core-ui/components/colored-label/colored-label.component.d.ts +1 -1
  119. package/lib/core-ui/components/ellipsis/ellipsis.component.d.ts +1 -1
  120. package/lib/core-ui/components/file-download-button/file-download-button.component.d.ts +1 -1
  121. package/lib/core-ui/components/icon-scale/icon-scale.component.d.ts +1 -1
  122. package/lib/core-ui/components/spinner/spinner.component.d.ts +1 -1
  123. package/lib/core-ui/components/table/table-header/table-header.component.d.ts +1 -1
  124. package/lib/core-ui/components/table/table.component.d.ts +1 -1
  125. package/lib/core-ui/directives/autoclose.directive.d.ts +1 -1
  126. package/lib/core-ui/directives/autofocus.directive.d.ts +1 -1
  127. package/lib/core-ui/directives/html.directive.d.ts +1 -1
  128. package/lib/core-ui/pipes/sort.pipe.d.ts +1 -1
  129. package/lib/core-ui/services/resize-observer.service.d.ts +1 -1
  130. package/lib/core-ui/tooltip/tooltip.component.d.ts +1 -1
  131. package/lib/core-ui/tooltip/tooltip.directive.d.ts +1 -1
  132. package/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.d.ts +1 -1
  133. package/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.d.ts +1 -1
  134. package/lib/forms-ui/components/breadcrumb/breadcrumb.component.d.ts +2 -2
  135. package/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.d.ts +1 -1
  136. package/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.d.ts +1 -1
  137. package/lib/forms-ui/components/copy-button/copy-button.component.d.ts +1 -1
  138. package/lib/forms-ui/components/currency/currency-input.component.d.ts +4 -4
  139. package/lib/forms-ui/components/currency/currency-symbol.component.d.ts +1 -1
  140. package/lib/forms-ui/components/date-input/date-input.component.d.ts +2 -2
  141. package/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.d.ts +1 -1
  142. package/lib/forms-ui/components/date-picker-ui/datepicker.component.d.ts +1 -1
  143. package/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.d.ts +1 -1
  144. package/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.d.ts +1 -1
  145. package/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.d.ts +1 -1
  146. package/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.d.ts +1 -1
  147. package/lib/forms-ui/components/error-message/error-message.component.d.ts +1 -1
  148. package/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.d.ts +1 -1
  149. package/lib/forms-ui/components/form-error/form-error.component.d.ts +1 -1
  150. package/lib/forms-ui/components/icon/icon.component.d.ts +2 -2
  151. package/lib/forms-ui/components/input/input.component.d.ts +1 -1
  152. package/lib/forms-ui/components/keyboard-select.directive.d.ts +1 -1
  153. package/lib/forms-ui/components/multi-select/multi-select.component.d.ts +3 -3
  154. package/lib/forms-ui/components/option/option.component.d.ts +1 -1
  155. package/lib/forms-ui/components/option-group/option-group.component.d.ts +1 -1
  156. package/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.d.ts +3 -3
  157. package/lib/forms-ui/components/options-dropdown/options-dropdown.component.d.ts +1 -1
  158. package/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.d.ts +1 -1
  159. package/lib/forms-ui/components/picker/picker.component.d.ts +1 -1
  160. package/lib/forms-ui/components/picker-option/picker-option.component.d.ts +1 -1
  161. package/lib/forms-ui/components/pill-item/pill-item.component.d.ts +1 -1
  162. package/lib/forms-ui/components/pill-list/pill-list.component.d.ts +1 -1
  163. package/lib/forms-ui/components/select-list/select-list.component.d.ts +1 -1
  164. package/lib/forms-ui/components/single-select/single-select.component.d.ts +2 -2
  165. package/lib/forms-ui/components/slider-toggle/slider-toggle.component.d.ts +1 -1
  166. package/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.d.ts +1 -1
  167. package/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.d.ts +1 -1
  168. package/lib/forms-ui/directives/contenteditable.directive.d.ts +2 -2
  169. package/lib/forms-ui/directives/form-error.directive.d.ts +2 -2
  170. package/lib/forms-ui/directives/mark-invalid.directive.d.ts +1 -1
  171. package/lib/forms-ui/directives/selectable-item.directive.d.ts +1 -1
  172. package/lib/forms-ui/models/base-select.directive.d.ts +1 -1
  173. package/lib/forms-ui/models/single-select-padding.interface.d.ts +1 -1
  174. package/lib/forms-ui/models/sorting.interface.d.ts +1 -1
  175. package/lib/modal-ui/components/modal/modal.component.d.ts +1 -1
  176. package/lib/modal-ui/components/modal-footer/modal-footer.component.d.ts +1 -1
  177. package/lib/modal-ui/components/modal-header/modal-header.component.d.ts +1 -1
  178. package/lib/popover-ui/components/popover/popover.component.d.ts +1 -1
  179. package/lib/popover-ui/directives/popover-click.directive.d.ts +1 -1
  180. package/lib/popover-ui/directives/popover-hover.directive.d.ts +1 -1
  181. package/lib/tab-ui/components/tab/tab.component.d.ts +1 -1
  182. package/lib/tab-ui/components/tab-group/tab-group.component.d.ts +1 -1
  183. package/package.json +13 -19
  184. package/esm2020/lib/core-ui/components/ellipsis/ellipsis.component.mjs +0 -139
  185. package/esm2020/lib/core-ui/linkify/linkify.pipe.mjs +0 -144
  186. package/esm2020/lib/core-ui/tooltip/tooltip.directive.mjs +0 -105
  187. package/esm2020/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.mjs +0 -120
  188. package/esm2020/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.mjs +0 -216
  189. package/esm2020/lib/forms-ui/components/currency/currency-input.component.mjs +0 -145
  190. package/esm2020/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.mjs +0 -28
  191. package/esm2020/lib/forms-ui/components/date-picker-ui/datepicker.component.mjs +0 -205
  192. package/esm2020/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.mjs +0 -49
  193. package/esm2020/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.mjs +0 -134
  194. package/esm2020/lib/forms-ui/components/multi-select/multi-select.component.mjs +0 -255
  195. package/esm2020/lib/forms-ui/components/option/option.component.mjs +0 -84
  196. package/esm2020/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +0 -185
  197. package/esm2020/lib/forms-ui/components/picker-option/picker-option.component.mjs +0 -118
  198. package/esm2020/lib/forms-ui/components/responsive-input/responsive-input.component.mjs +0 -100
  199. package/esm2020/lib/forms-ui/components/single-select/single-select.component.mjs +0 -279
  200. package/esm2020/lib/forms-ui/directives/contenteditable.directive.mjs +0 -129
  201. package/esm2020/lib/forms-ui/directives/form-error.directive.mjs +0 -109
  202. package/esm2020/lib/modal-ui/components/modal/modal.component.mjs +0 -213
  203. package/esm2020/lib/popover-ui/directives/popover-hover.directive.mjs +0 -87
  204. package/esm2020/lib/tab-ui/components/tab-group/tab-group.component.mjs +0 -71
  205. package/fesm2015/leanix-components.mjs +0 -8448
  206. package/fesm2015/leanix-components.mjs.map +0 -1
  207. package/fesm2020/leanix-components.mjs.map +0 -1
  208. package/src/lib/forms-ui/components/date-picker-ui/README.md +0 -8
  209. /package/{esm2020 → esm2022}/index.mjs +0 -0
  210. /package/{esm2020 → esm2022}/leanix-components.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/core-ui/annotations/required.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/core-ui/core-ui.constants.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/core-ui/functions/core-css.helpers.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/core-ui/tooltip/to-cdk-position.function.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/core-ui/tooltip/tooltip-position.interface.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/forms-ui/components/currency/currency-symbol-map.constant.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/date-formatter.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/isBs3.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/forms-ui/components/drag-and-drop-list/constants.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/forms-ui/helpers/key-codes.constants.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/forms-ui/helpers/keyboard-navigation.helpers.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/forms-ui/models/dropdown-item.interface.mjs +0 -0
  223. /package/{esm2020 → esm2022}/lib/forms-ui/models/single-select-padding.interface.mjs +0 -0
  224. /package/{esm2020 → esm2022}/lib/forms-ui/models/sorting.interface.mjs +0 -0
  225. /package/{esm2020 → esm2022}/lib/forms-ui/validators/date-in-foreseeable-future.validator.mjs +0 -0
  226. /package/{esm2020 → esm2022}/lib/forms-ui/validators/string-not-in-array.validator.mjs +0 -0
  227. /package/{esm2020 → esm2022}/lib/modal-ui/modal.constants.mjs +0 -0
  228. /package/{esm2020 → esm2022}/lib/shared/date-helpers.mjs +0 -0
  229. /package/{esm2020 → esm2022}/lib/shared/html-helpers.function.mjs +0 -0
  230. /package/{esm2020 → esm2022}/lib/shared/misc-helpers.mjs +0 -0
  231. /package/{esm2020 → esm2022}/lib/shared/observe.mjs +0 -0
@@ -1,216 +0,0 @@
1
- import { CdkConnectedOverlay } from '@angular/cdk/overlay';
2
- import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, Input, ViewChild } from '@angular/core';
3
- import { BehaviorSubject, combineLatest, fromEvent, merge, Subject } from 'rxjs';
4
- import { debounceTime, delay, distinctUntilChanged, filter, map, startWith, switchMap, takeUntil, withLatestFrom } from 'rxjs/operators';
5
- import { TooltipDirective } from '../../../core-ui/tooltip/tooltip.directive';
6
- import { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';
7
- import { KeyboardSelectAction } from '../keyboard-select.directive';
8
- import { OptionComponent } from '../option/option.component';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/cdk/overlay";
11
- const BOTTOM_LEFT_POSITION = {
12
- originX: 'end',
13
- overlayX: 'end',
14
- originY: 'bottom',
15
- overlayY: 'top'
16
- };
17
- const BOTTOM_RIGHT_POSITION = {
18
- originX: 'start',
19
- overlayX: 'start',
20
- originY: 'bottom',
21
- overlayY: 'top'
22
- };
23
- const TOP_LEFT_POSITION = {
24
- originX: 'end',
25
- overlayX: 'end',
26
- originY: 'top',
27
- overlayY: 'bottom'
28
- };
29
- const TOP_RIGHT_POSITION = {
30
- originX: 'start',
31
- overlayX: 'start',
32
- originY: 'top',
33
- overlayY: 'bottom'
34
- };
35
- const LEFT_ALIGN_POSITIONS = [BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION, BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION];
36
- const RIGHT_ALIGN_POSITIONS = [BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION, BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION];
37
- export class CdkOptionsDropdownComponent {
38
- constructor(changeDetection) {
39
- this.changeDetection = changeDetection;
40
- this.align = 'right';
41
- this.closeOnScroll = false;
42
- this.disabled = false;
43
- this.maxHeight = 'none';
44
- this.highlightedOptionIndex$ = new BehaviorSubject(0);
45
- this._open = false;
46
- this.isSubdropdownExpanded = false;
47
- this.destroyed$ = new Subject();
48
- this.isPositionComputed = true;
49
- }
50
- set open(value) {
51
- if (this.disabled) {
52
- return;
53
- }
54
- this._open = value;
55
- if (this.trigger) {
56
- // Don't emit keyboard actions while the dropdown is not open yet.
57
- this.trigger.dontEmit = !this.open;
58
- }
59
- if (this.open) {
60
- this.isSubdropdownExpanded = false;
61
- this.setInitialHighlightingIndex();
62
- }
63
- this.reloadOverlayPosition(this.open);
64
- }
65
- get open() {
66
- return this._open;
67
- }
68
- get options() {
69
- return this._options.toArray();
70
- }
71
- ngAfterViewInit() {
72
- this.trigger.dontEmit = !this.open;
73
- this.overlay.positions = this.align === 'left' ? LEFT_ALIGN_POSITIONS : RIGHT_ALIGN_POSITIONS;
74
- const optionsChanges$ = this._options.changes.pipe(startWith(this._options), map((options) => options.toArray()));
75
- this.trigger.keyboardActions$
76
- .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.NEXT), withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.next(index, options)))
77
- .subscribe(this.highlightedOptionIndex$);
78
- this.trigger.keyboardActions$
79
- .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.PREV), withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.prev(index, options)))
80
- .subscribe(this.highlightedOptionIndex$);
81
- this.trigger.keyboardActions$
82
- .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LEFT), withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)))
83
- .subscribe(this.highlightedOptionIndex$);
84
- this.trigger.keyboardActions$
85
- .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.RIGHT), withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)))
86
- .subscribe(this.highlightedOptionIndex$);
87
- this.trigger.keyboardActions$
88
- .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.CLOSE))
89
- .subscribe(() => this.closeDropdown());
90
- this.trigger.keyboardActions$
91
- .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE), withLatestFrom(this.highlightedOptionIndex$, (_, index) => index))
92
- .subscribe((index) => {
93
- this.options[index]?.selectOption();
94
- });
95
- /** Combined stream of all of the child options' select outputs. */
96
- this._options.changes
97
- .pipe(startWith(this._options), switchMap(() => merge(...this._options.map((option) => option.select), ...this._options.map((option) => option.selectedClick))), delay(0), takeUntil(this.destroyed$))
98
- .subscribe((_value) => {
99
- this.closeDropdown();
100
- });
101
- combineLatest([optionsChanges$, this.highlightedOptionIndex$])
102
- .pipe(delay(0), map(([options, index]) => options[index]), distinctUntilChanged(), takeUntil(this.destroyed$))
103
- .subscribe((optionToBeHighlighted) => {
104
- this.options.forEach((option) => option.setHighlighted(optionToBeHighlighted === option));
105
- this.changeDetection.markForCheck();
106
- });
107
- if (this.closeOnScroll) {
108
- fromEvent(window, 'scroll')
109
- .pipe(debounceTime(100), takeUntil(this.destroyed$))
110
- .subscribe(() => {
111
- this.open = false;
112
- this.trigger.blur();
113
- });
114
- }
115
- }
116
- ngOnDestroy() {
117
- this.destroyed$.next();
118
- }
119
- closeDropdown() {
120
- this.tooltips.toArray().forEach((tooltip) => tooltip.hide());
121
- this.open = false;
122
- }
123
- setInitialHighlightingIndex() {
124
- const firstAvailableIndex = this.options.map((option) => !this.optionIsHighlightable(option)).indexOf(false, 0);
125
- this.highlightedOptionIndex$.next(firstAvailableIndex);
126
- }
127
- prev(currentIndex, items) {
128
- if (currentIndex > 0) {
129
- const prevEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).lastIndexOf(false, currentIndex - 1);
130
- return prevEnabledIndex !== -1 ? prevEnabledIndex : currentIndex;
131
- }
132
- else {
133
- return currentIndex;
134
- }
135
- }
136
- next(currentIndex, items) {
137
- if (currentIndex < items.length) {
138
- const nextEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).indexOf(false, currentIndex + 1);
139
- return nextEnabledIndex !== -1 ? nextEnabledIndex : currentIndex;
140
- }
141
- else {
142
- return currentIndex;
143
- }
144
- }
145
- expand(currentIndex, items) {
146
- if (items[currentIndex]?.hasSubdropdown) {
147
- this.isSubdropdownExpanded = true;
148
- return this.next(currentIndex, items);
149
- }
150
- else {
151
- return currentIndex;
152
- }
153
- }
154
- collapse(currentIndex, items) {
155
- if (this.isSubdropdownExpanded) {
156
- this.isSubdropdownExpanded = false;
157
- return this.prev(currentIndex, items);
158
- }
159
- else {
160
- return currentIndex;
161
- }
162
- }
163
- optionIsHighlightable(option) {
164
- const isToplevelOptionAndAllowed = !option.isSuboption && !this.isSubdropdownExpanded;
165
- const isSecondlevelOptionAndAllowed = option.isSuboption && this.isSubdropdownExpanded;
166
- return !option.disabled && (isToplevelOptionAndAllowed || isSecondlevelOptionAndAllowed);
167
- }
168
- reloadOverlayPosition(open) {
169
- if (open) {
170
- this.isPositionComputed = false;
171
- setTimeout(() => {
172
- const dropdownElement = this.dropdownContainer.nativeElement;
173
- this.overlay.overlayRef.updateSize({
174
- height: dropdownElement.offsetHeight,
175
- width: dropdownElement.offsetWidth
176
- });
177
- this.overlay.overlayRef.updatePosition();
178
- this.isPositionComputed = true;
179
- this.changeDetection.markForCheck();
180
- }, 0);
181
- }
182
- else {
183
- this.changeDetection.markForCheck();
184
- }
185
- }
186
- }
187
- CdkOptionsDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CdkOptionsDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
188
- CdkOptionsDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: CdkOptionsDropdownComponent, selector: "lx-cdk-options-dropdown", inputs: { align: "align", closeOnScroll: "closeOnScroll", disabled: "disabled", maxHeight: "maxHeight" }, queries: [{ propertyName: "trigger", first: true, predicate: KeyboardActionSourceDirective, descendants: true }, { propertyName: "_options", predicate: OptionComponent, descendants: true }, { propertyName: "tooltips", predicate: TooltipDirective, descendants: true }], viewQueries: [{ propertyName: "dropdownContainer", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }], ngImport: i0, template: "<div (click)=\"open = !open\" class=\"triggerContainer\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</div>\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open\"\n (overlayOutsideClick)=\"closeDropdown()\"\n>\n <ul\n #dropdown\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n [style.visibility]=\"isPositionComputed ? null : 'hidden'\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}ul{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;text-align:left;list-style:none;margin:0;padding-left:0;z-index:20;white-space:nowrap}ul::-webkit-scrollbar{width:.5em;height:.5em;background-color:transparent}ul::-webkit-scrollbar-thumb{background-color:#c2c9d6;border-radius:6px}ul::-webkit-scrollbar-track-piece{background-color:transparent}ul.left{right:0;padding-right:0}ul.showScrollbar{overflow-y:auto}.triggerContainer{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
189
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CdkOptionsDropdownComponent, decorators: [{
190
- type: Component,
191
- args: [{ selector: 'lx-cdk-options-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div (click)=\"open = !open\" class=\"triggerContainer\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</div>\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open\"\n (overlayOutsideClick)=\"closeDropdown()\"\n>\n <ul\n #dropdown\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n [style.visibility]=\"isPositionComputed ? null : 'hidden'\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}ul{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;text-align:left;list-style:none;margin:0;padding-left:0;z-index:20;white-space:nowrap}ul::-webkit-scrollbar{width:.5em;height:.5em;background-color:transparent}ul::-webkit-scrollbar-thumb{background-color:#c2c9d6;border-radius:6px}ul::-webkit-scrollbar-track-piece{background-color:transparent}ul.left{right:0;padding-right:0}ul.showScrollbar{overflow-y:auto}.triggerContainer{display:inline-block}\n"] }]
192
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { dropdownContainer: [{
193
- type: ViewChild,
194
- args: ['dropdown']
195
- }], align: [{
196
- type: Input
197
- }], closeOnScroll: [{
198
- type: Input
199
- }], disabled: [{
200
- type: Input
201
- }], maxHeight: [{
202
- type: Input
203
- }], trigger: [{
204
- type: ContentChild,
205
- args: [KeyboardActionSourceDirective]
206
- }], overlay: [{
207
- type: ViewChild,
208
- args: [CdkConnectedOverlay]
209
- }], _options: [{
210
- type: ContentChildren,
211
- args: [OptionComponent, { descendants: true }]
212
- }], tooltips: [{
213
- type: ContentChildren,
214
- args: [TooltipDirective, { descendants: true }]
215
- }] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLW9wdGlvbnMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZm9ybXMtdWkvY29tcG9uZW50cy9jZGstb3B0aW9ucy1kcm9wZG93bi9jZGstb3B0aW9ucy1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL2Nkay1vcHRpb25zLWRyb3Bkb3duL2Nkay1vcHRpb25zLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLEtBQUssRUFHTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6SSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUU3RCxNQUFNLG9CQUFv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QUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNQO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQzs7d0hBdE5VLDJCQUEyQjs0R0FBM0IsMkJBQTJCLDhNQTRCeEIsNkJBQTZCLDhEQUcxQixlQUFlLDhEQUdmLGdCQUFnQix5TEFMdEIsbUJBQW1CLGdEQ3ZGaEMseWtCQWtCQTsyRkR3Q2EsMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTTt3R0FHeEIsaUJBQWlCO3NCQUF2QyxTQUFTO3VCQUFDLFVBQVU7Z0JBRVosS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQXNCdUMsT0FBTztzQkFBbkQsWUFBWTt1QkFBQyw2QkFBNkI7Z0JBQ1gsT0FBTztzQkFBdEMsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBRzlCLFFBQVE7c0JBRFAsZUFBZTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUl2RCxRQUFRO3NCQURQLGVBQWU7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ29ubmVjdGVkUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRlbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUtdWkvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBLZXlib2FyZEFjdGlvblNvdXJjZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMva2V5Ym9hcmQtYWN0aW9uLXNvdXJjZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgS2V5Ym9hcmRTZWxlY3RBY3Rpb24gfSBmcm9tICcuLi9rZXlib2FyZC1zZWxlY3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL29wdGlvbi9vcHRpb24uY29tcG9uZW50JztcblxuY29uc3QgQk9UVE9NX0xFRlRfUE9TSVRJT046IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnZW5kJyxcbiAgb3ZlcmxheVg6ICdlbmQnLFxuICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgb3ZlcmxheVk6ICd0b3AnXG59O1xuXG5jb25zdCBCT1RUT01fUklHSFRfUE9TSVRJT046IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnc3RhcnQnLFxuICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgb3JpZ2luWTogJ2JvdHRvbScsXG4gIG92ZXJsYXlZOiAndG9wJ1xufTtcblxuY29uc3QgVE9QX0xFRlRfUE9TSVRJT046IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnZW5kJyxcbiAgb3ZlcmxheVg6ICdlbmQnLFxuICBvcmlnaW5ZOiAndG9wJyxcbiAgb3ZlcmxheVk6ICdib3R0b20nXG59O1xuXG5jb25zdCBUT1BfUklHSFRfUE9TSVRJT046IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnc3RhcnQnLFxuICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgb3JpZ2luWTogJ3RvcCcsXG4gIG92ZXJsYXlZOiAnYm90dG9tJ1xufTtcblxuY29uc3QgTEVGVF9BTElHTl9QT1NJVElPTlM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbQk9UVE9NX0xFRlRfUE9TSVRJT04sIFRPUF9MRUZUX1BPU0lUSU9OLCBCT1RUT01fUklHSFRfUE9TSVRJT04sIFRPUF9SSUdIVF9QT1NJVElPTl07XG5jb25zdCBSSUdIVF9BTElHTl9QT1NJVElPTlM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbQk9UVE9NX1JJR0hUX1BPU0lUSU9OLCBUT1BfUklHSFRfUE9TSVRJT04sIEJPVFRPTV9MRUZUX1BPU0lUSU9OLCBUT1BfTEVGVF9QT1NJVElPTl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LWNkay1vcHRpb25zLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICdjZGstb3B0aW9ucy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydjZGstb3B0aW9ucy1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDZGtPcHRpb25zRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdkcm9wZG93bicpIGRyb3Bkb3duQ29udGFpbmVyITogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBhbGlnbjogJ3JpZ2h0JyB8ICdsZWZ0JyA9ICdyaWdodCc7XG4gIEBJbnB1dCgpIGNsb3NlT25TY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbWF4SGVpZ2h0OiBzdHJpbmcgPSAnbm9uZSc7XG5cbiAgc2V0IG9wZW4odmFsdWUpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX29wZW4gPSB2YWx1ZTtcbiAgICBpZiAodGhpcy50cmlnZ2VyKSB7XG4gICAgICAvLyBEb24ndCBlbWl0IGtleWJvYXJkIGFjdGlvbnMgd2hpbGUgdGhlIGRyb3Bkb3duIGlzIG5vdCBvcGVuIHlldC5cbiAgICAgIHRoaXMudHJpZ2dlci5kb250RW1pdCA9ICF0aGlzLm9wZW47XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgIHRoaXMuaXNTdWJkcm9wZG93bkV4cGFuZGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnNldEluaXRpYWxIaWdobGlnaHRpbmdJbmRleCgpO1xuICAgIH1cbiAgICB0aGlzLnJlbG9hZE92ZXJsYXlQb3NpdGlvbih0aGlzLm9wZW4pO1xuICB9XG4gIGdldCBvcGVuKCkge1xuICAgIHJldHVybiB0aGlzLl9vcGVuO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZChLZXlib2FyZEFjdGlvblNvdXJjZURpcmVjdGl2ZSkgdHJpZ2dlciE6IEtleWJvYXJkQWN0aW9uU291cmNlRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXkpIG92ZXJsYXkhOiBDZGtDb25uZWN0ZWRPdmVybGF5O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oT3B0aW9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIF9vcHRpb25zITogUXVlcnlMaXN0PE9wdGlvbkNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUb29sdGlwRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHRvb2x0aXBzITogUXVlcnlMaXN0PFRvb2x0aXBEaXJlY3RpdmU+O1xuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zLnRvQXJyYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByaXZhdGUgX29wZW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1N1YmRyb3Bkb3duRXhwYW5kZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGlzUG9zaXRpb25Db21wdXRlZCA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnRyaWdnZXIuZG9udEVtaXQgPSAhdGhpcy5vcGVuO1xuXG4gICAgdGhpcy5vdmVybGF5LnBvc2l0aW9ucyA9IHRoaXMuYWxpZ24gPT09ICdsZWZ0JyA/IExFRlRfQUxJR05fUE9TSVRJT05TIDogUklHSFRfQUxJR05fUE9TSVRJT05TO1xuXG4gICAgY29uc3Qgb3B0aW9uc0NoYW5nZXMkID0gdGhpcy5fb3B0aW9ucy5jaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgodGhpcy5fb3B0aW9ucyksXG4gICAgICBtYXAoKG9wdGlvbnM6IFF1ZXJ5TGlzdDxPcHRpb25Db21wb25lbnQ+KSA9PiBvcHRpb25zLnRvQXJyYXkoKSlcbiAgICApO1xuXG4gICAgdGhpcy50cmlnZ2VyLmtleWJvYXJkQWN0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGtleWJvYXJkU2VsZWN0QWN0aW9uKSA9PiBrZXlib2FyZFNlbGVjdEFjdGlvbiA9PT0gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uTkVYVCksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQsIG9wdGlvbnNDaGFuZ2VzJCwgKF8sIGluZGV4LCBvcHRpb25zKSA9PiB0aGlzLm5leHQoaW5kZXgsIG9wdGlvbnMpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkKTtcblxuICAgIHRoaXMudHJpZ2dlci5rZXlib2FyZEFjdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChrZXlib2FyZFNlbGVjdEFjdGlvbikgPT4ga2V5Ym9hcmRTZWxlY3RBY3Rpb24gPT09IEtleWJvYXJkU2VsZWN0QWN0aW9uLlBSRVYpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkLCBvcHRpb25zQ2hhbmdlcyQsIChfLCBpbmRleCwgb3B0aW9ucykgPT4gdGhpcy5wcmV2KGluZGV4LCBvcHRpb25zKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JCk7XG5cbiAgICB0aGlzLnRyaWdnZXIua2V5Ym9hcmRBY3Rpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoa2V5Ym9hcmRTZWxlY3RBY3Rpb24pID0+IGtleWJvYXJkU2VsZWN0QWN0aW9uID09PSBLZXlib2FyZFNlbGVjdEFjdGlvbi5MRUZUKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JCwgb3B0aW9uc0NoYW5nZXMkLCAoXywgaW5kZXgsIG9wdGlvbnMpID0+XG4gICAgICAgICAgdGhpcy5pc1N1YmRyb3Bkb3duRXhwYW5kZWQgPyB0aGlzLmNvbGxhcHNlKGluZGV4LCBvcHRpb25zKSA6IHRoaXMuZXhwYW5kKGluZGV4LCBvcHRpb25zKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQpO1xuXG4gICAgdGhpcy50cmlnZ2VyLmtleWJvYXJkQWN0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGtleWJvYXJkU2VsZWN0QWN0aW9uKSA9PiBrZXlib2FyZFNlbGVjdEFjdGlvbiA9PT0gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uUklHSFQpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkLCBvcHRpb25zQ2hhbmdlcyQsIChfLCBpbmRleCwgb3B0aW9ucykgPT5cbiAgICAgICAgICB0aGlzLmlzU3ViZHJvcGRvd25FeHBhbmRlZCA/IHRoaXMuY29sbGFwc2UoaW5kZXgsIG9wdGlvbnMpIDogdGhpcy5leHBhbmQoaW5kZXgsIG9wdGlvbnMpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JCk7XG5cbiAgICB0aGlzLnRyaWdnZXIua2V5Ym9hcmRBY3Rpb25zJFxuICAgICAgLnBpcGUoZmlsdGVyKChrZXlib2FyZFNlbGVjdEFjdGlvbikgPT4ga2V5Ym9hcmRTZWxlY3RBY3Rpb24gPT09IEtleWJvYXJkU2VsZWN0QWN0aW9uLkNMT1NFKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZURyb3Bkb3duKCkpO1xuXG4gICAgdGhpcy50cmlnZ2VyLmtleWJvYXJkQWN0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGtleWJvYXJkU2VsZWN0QWN0aW9uKSA9PiBrZXlib2FyZFNlbGVjdEFjdGlvbiA9PT0gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uRVhFQ1VURSksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQsIChfLCBpbmRleCkgPT4gaW5kZXgpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChpbmRleCkgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnNbaW5kZXhdPy5zZWxlY3RPcHRpb24oKTtcbiAgICAgIH0pO1xuXG4gICAgLyoqIENvbWJpbmVkIHN0cmVhbSBvZiBhbGwgb2YgdGhlIGNoaWxkIG9wdGlvbnMnIHNlbGVjdCBvdXRwdXRzLiAqL1xuICAgIHRoaXMuX29wdGlvbnMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLl9vcHRpb25zKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IG1lcmdlKC4uLnRoaXMuX29wdGlvbnMubWFwKChvcHRpb24pID0+IG9wdGlvbi5zZWxlY3QpLCAuLi50aGlzLl9vcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWRDbGljaykpKSxcbiAgICAgICAgZGVsYXkoMCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChfdmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICB9KTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW29wdGlvbnNDaGFuZ2VzJCwgdGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JF0pXG4gICAgICAucGlwZShcbiAgICAgICAgZGVsYXkoMCksXG4gICAgICAgIG1hcCgoW29wdGlvbnMsIGluZGV4XTogW09wdGlvbkNvbXBvbmVudFtdLCBudW1iZXJdKSA9PiBvcHRpb25zW2luZGV4XSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChvcHRpb25Ub0JlSGlnaGxpZ2h0ZWQpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4gb3B0aW9uLnNldEhpZ2hsaWdodGVkKG9wdGlvblRvQmVIaWdobGlnaHRlZCA9PT0gb3B0aW9uKSk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5jbG9zZU9uU2Nyb2xsKSB7XG4gICAgICBmcm9tRXZlbnQod2luZG93LCAnc2Nyb2xsJylcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRyaWdnZXIuYmx1cigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG5cbiAgY2xvc2VEcm9wZG93bigpIHtcbiAgICB0aGlzLnRvb2x0aXBzLnRvQXJyYXkoKS5mb3JFYWNoKCh0b29sdGlwKSA9PiB0b29sdGlwLmhpZGUoKSk7XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxIaWdobGlnaHRpbmdJbmRleCgpIHtcbiAgICBjb25zdCBmaXJzdEF2YWlsYWJsZUluZGV4ID0gdGhpcy5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiAhdGhpcy5vcHRpb25Jc0hpZ2hsaWdodGFibGUob3B0aW9uKSkuaW5kZXhPZihmYWxzZSwgMCk7XG4gICAgdGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JC5uZXh0KGZpcnN0QXZhaWxhYmxlSW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmV2KGN1cnJlbnRJbmRleDogbnVtYmVyLCBpdGVtczogT3B0aW9uQ29tcG9uZW50W10pOiBudW1iZXIge1xuICAgIGlmIChjdXJyZW50SW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBwcmV2RW5hYmxlZEluZGV4ID0gaXRlbXMubWFwKChvcHRpb24pID0+ICF0aGlzLm9wdGlvbklzSGlnaGxpZ2h0YWJsZShvcHRpb24pKS5sYXN0SW5kZXhPZihmYWxzZSwgY3VycmVudEluZGV4IC0gMSk7XG4gICAgICByZXR1cm4gcHJldkVuYWJsZWRJbmRleCAhPT0gLTEgPyBwcmV2RW5hYmxlZEluZGV4IDogY3VycmVudEluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3VycmVudEluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmV4dChjdXJyZW50SW5kZXg6IG51bWJlciwgaXRlbXM6IE9wdGlvbkNvbXBvbmVudFtdKTogbnVtYmVyIHtcbiAgICBpZiAoY3VycmVudEluZGV4IDwgaXRlbXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBuZXh0RW5hYmxlZEluZGV4ID0gaXRlbXMubWFwKChvcHRpb24pID0+ICF0aGlzLm9wdGlvbklzSGlnaGxpZ2h0YWJsZShvcHRpb24pKS5pbmRleE9mKGZhbHNlLCBjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgIHJldHVybiBuZXh0RW5hYmxlZEluZGV4ICE9PSAtMSA/IG5leHRFbmFibGVkSW5kZXggOiBjdXJyZW50SW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdXJyZW50SW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleHBhbmQoY3VycmVudEluZGV4OiBudW1iZXIsIGl0ZW1zOiBPcHRpb25Db21wb25lbnRbXSkge1xuICAgIGlmIChpdGVtc1tjdXJyZW50SW5kZXhdPy5oYXNTdWJkcm9wZG93bikge1xuICAgICAgdGhpcy5pc1N1YmRyb3Bkb3duRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXMubmV4dChjdXJyZW50SW5kZXgsIGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGN1cnJlbnRJbmRleDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbGxhcHNlKGN1cnJlbnRJbmRleDogbnVtYmVyLCBpdGVtczogT3B0aW9uQ29tcG9uZW50W10pIHtcbiAgICBpZiAodGhpcy5pc1N1YmRyb3Bkb3duRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuaXNTdWJkcm9wZG93bkV4cGFuZGVkID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5wcmV2KGN1cnJlbnRJbmRleCwgaXRlbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3VycmVudEluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3B0aW9uSXNIaWdobGlnaHRhYmxlKG9wdGlvbjogT3B0aW9uQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNUb3BsZXZlbE9wdGlvbkFuZEFsbG93ZWQgPSAhb3B0aW9uLmlzU3Vib3B0aW9uICYmICF0aGlzLmlzU3ViZHJvcGRvd25FeHBhbmRlZDtcbiAgICBjb25zdCBpc1NlY29uZGxldmVsT3B0aW9uQW5kQWxsb3dlZCA9IG9wdGlvbi5pc1N1Ym9wdGlvbiAmJiB0aGlzLmlzU3ViZHJvcGRvd25FeHBhbmRlZDtcbiAgICByZXR1cm4gIW9wdGlvbi5kaXNhYmxlZCAmJiAoaXNUb3BsZXZlbE9wdGlvbkFuZEFsbG93ZWQgfHwgaXNTZWNvbmRsZXZlbE9wdGlvbkFuZEFsbG93ZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWxvYWRPdmVybGF5UG9zaXRpb24ob3BlbjogYm9vbGVhbikge1xuICAgIGlmIChvcGVuKSB7XG4gICAgICB0aGlzLmlzUG9zaXRpb25Db21wdXRlZCA9IGZhbHNlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudCA9IHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudDtcblxuICAgICAgICB0aGlzLm92ZXJsYXkub3ZlcmxheVJlZi51cGRhdGVTaXplKHtcbiAgICAgICAgICBoZWlnaHQ6IGRyb3Bkb3duRWxlbWVudC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgd2lkdGg6IGRyb3Bkb3duRWxlbWVudC5vZmZzZXRXaWR0aFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vdmVybGF5Lm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKTtcblxuICAgICAgICB0aGlzLmlzUG9zaXRpb25Db21wdXRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiAoY2xpY2spPVwib3BlbiA9ICFvcGVuXCIgY2xhc3M9XCJ0cmlnZ2VyQ29udGFpbmVyXCIgY2RrT3ZlcmxheU9yaWdpbiAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2x4S2V5Ym9hcmRBY3Rpb25Tb3VyY2VdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48bmctdGVtcGxhdGVcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cIm9wZW5cIlxuICAob3ZlcmxheU91dHNpZGVDbGljayk9XCJjbG9zZURyb3Bkb3duKClcIlxuPlxuICA8dWxcbiAgICAjZHJvcGRvd25cbiAgICBbY2xhc3Muc2hvd1Njcm9sbGJhcl09XCJtYXhIZWlnaHQgIT09ICdub25lJ1wiXG4gICAgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4SGVpZ2h0XCJcbiAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJpc1Bvc2l0aW9uQ29tcHV0ZWQgPyBudWxsIDogJ2hpZGRlbidcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,145 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { fromEvent, ReplaySubject, Subject } from 'rxjs';
5
- import { filter, takeUntil } from 'rxjs/operators';
6
- import { Observe } from '../../../shared/observe';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
- import * as i2 from "@angular/forms";
10
- import * as i3 from "./currency-symbol.component";
11
- import * as i4 from "../../directives/mark-invalid.directive";
12
- export class CurrencyInputComponent {
13
- constructor(changeDetector) {
14
- this.changeDetector = changeDetector;
15
- this.decimalSeparator = '.';
16
- this.data = 0;
17
- this.disabled = false;
18
- this.mode = 'edit';
19
- this.iconPosition = 'first';
20
- this.format = '1.2-2';
21
- this.markInvalid = false;
22
- this.onFocusLost = new EventEmitter();
23
- this.onChange = new EventEmitter();
24
- this.showCurrencyInput = false;
25
- this.dataValue$ = new ReplaySubject();
26
- this.destroyed$ = new Subject();
27
- }
28
- get allowedCharacters() {
29
- return this.fieldDefinitionType === 'DOUBLE' ? new RegExp(`[0-9\e\\${this.decimalSeparator}\]`) : /[0-9\e\\]/;
30
- }
31
- ngOnInit() {
32
- this.data$.pipe(takeUntil(this.destroyed$)).subscribe(this.dataValue$);
33
- }
34
- ngAfterViewInit() {
35
- if (this.currencyInput) {
36
- fromEvent(this.currencyInput.nativeElement, 'keypress')
37
- .pipe(filter((keyboardEvent) => this.shouldRejectKey(keyboardEvent)), takeUntil(this.destroyed$))
38
- .subscribe((keyboardEvent) => {
39
- keyboardEvent.preventDefault();
40
- });
41
- }
42
- }
43
- ngOnDestroy() {
44
- this.destroyed$.next();
45
- }
46
- valueChanged(value) {
47
- if (typeof value === 'string') {
48
- const invalidSeparator = this.decimalSeparator === '.' ? ',' : '.';
49
- value = this.parseInput(value, invalidSeparator);
50
- }
51
- // fix copy & paste string values being interpreted wrongly
52
- this.dataValue$.next(value);
53
- this.onChange.emit(value);
54
- this.propagateChange(value);
55
- }
56
- onBlur() {
57
- this.showCurrencyInput = false;
58
- this.onFocusLost.emit(true);
59
- }
60
- focusCurrencyInput() {
61
- this.showCurrencyInput = true;
62
- this.changeDetector.detectChanges();
63
- this.currencyInput.nativeElement.focus();
64
- this.currencyInput.nativeElement.setSelectionRange(0, 0);
65
- }
66
- shouldRejectKey(event) {
67
- if (this.fieldDefinitionType === 'DOUBLE' && event.key === this.decimalSeparator) {
68
- return this.containsSeparators(this.currencyInput.nativeElement.value);
69
- }
70
- return !this.allowedCharacters.test(event.key);
71
- }
72
- propagateChange(_newValue) { }
73
- writeValue(newValue) {
74
- this.dataValue$.next(newValue);
75
- }
76
- registerOnChange(fn) {
77
- this.propagateChange = fn;
78
- }
79
- registerOnTouched(_fn) { }
80
- setDisabledState(disabled) {
81
- this.disabled = disabled;
82
- }
83
- parseInput(value, char) {
84
- const countOccurences = value.split(char).length - 1;
85
- if (countOccurences > 1) {
86
- for (let i = 0; i < countOccurences; i++) {
87
- value = value.replace(char, '');
88
- }
89
- }
90
- const parsedValue = parseFloat(value.replace(',', '.').replace(/ /g, ''));
91
- return isNaN(parsedValue) ? null : parsedValue;
92
- }
93
- containsSeparators(value) {
94
- return value.indexOf(',') > -1 || value.indexOf('.') > -1;
95
- }
96
- }
97
- CurrencyInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CurrencyInputComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
98
- CurrencyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: CurrencyInputComponent, selector: "lx-currency-input", inputs: { code: "code", decimalSeparator: "decimalSeparator", placeholder: "placeholder", data: "data", disabled: "disabled", mode: "mode", fieldDefinitionType: "fieldDefinitionType", iconPosition: "iconPosition", format: "format", markInvalid: "markInvalid" }, outputs: { onFocusLost: "onFocusLost", onChange: "onChange" }, providers: [
99
- {
100
- provide: NG_VALUE_ACCESSOR,
101
- useExisting: forwardRef(() => CurrencyInputComponent),
102
- multi: true
103
- }
104
- ], viewQueries: [{ propertyName: "currencyInput", first: true, predicate: ["currencyInput"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"mode === 'edit'\" class=\"container input-group\">\n <div *ngIf=\"iconPosition === 'first'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\"></lx-currency-symbol>\n </div>\n <input\n [attr.disabled]=\"disabled ? true : null\"\n *ngIf=\"!showCurrencyInput\"\n type=\"text\"\n class=\"form-control currencyDisplayValue\"\n placeholder=\"{{ placeholder }}\"\n [lxMarkInvalid]=\"markInvalid\"\n [value]=\"dataValue$ | async | number : format\"\n (focus)=\"focusCurrencyInput()\"\n />\n <input\n autocomplete=\"off\"\n [attr.disabled]=\"disabled ? true : null\"\n [class.hideInput]=\"!showCurrencyInput\"\n type=\"text\"\n inputmode=\"numeric\"\n class=\"form-control currencyInput\"\n name=\"inputAmount\"\n #currencyInput\n placeholder=\"{{ placeholder }}\"\n [ngModel]=\"dataValue$ | async\"\n (blur)=\"onBlur()\"\n (ngModelChange)=\"valueChanged($event)\"\n />\n <div *ngIf=\"iconPosition === 'end'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\"></lx-currency-symbol>\n </div>\n</div>\n<span *ngIf=\"mode === 'view'\" [class.placeholder]=\"(dataValue$ | async) === null && placeholder\">\n <!-- Not using Angular 2 currency pipe since a lot of currency symbols are missing: https://github.com/angular/angular/issues/6724 -->\n <lx-currency-symbol *ngIf=\"iconPosition === 'first'\" [code]=\"code\"></lx-currency-symbol>\n {{ (dataValue$ | async | number : format) || placeholder }}\n <lx-currency-symbol *ngIf=\"iconPosition === 'end'\" [code]=\"code\"></lx-currency-symbol>\n</span>\n", styles: [".container{width:100%!important;padding:0}.labelContainer{width:5%!important;min-width:40px}input{width:100%}.hideInput{display:none}.placeholder{color:#99a5bb}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.CurrencySymbolComponent, selector: "lx-currency-symbol", inputs: ["code"] }, { kind: "directive", type: i4.MarkInvalidDirective, selector: "[lxMarkInvalid]", inputs: ["lxMarkInvalid"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
105
- __decorate([
106
- Observe('data')
107
- ], CurrencyInputComponent.prototype, "data$", void 0);
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CurrencyInputComponent, decorators: [{
109
- type: Component,
110
- args: [{ selector: 'lx-currency-input', providers: [
111
- {
112
- provide: NG_VALUE_ACCESSOR,
113
- useExisting: forwardRef(() => CurrencyInputComponent),
114
- multi: true
115
- }
116
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"mode === 'edit'\" class=\"container input-group\">\n <div *ngIf=\"iconPosition === 'first'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\"></lx-currency-symbol>\n </div>\n <input\n [attr.disabled]=\"disabled ? true : null\"\n *ngIf=\"!showCurrencyInput\"\n type=\"text\"\n class=\"form-control currencyDisplayValue\"\n placeholder=\"{{ placeholder }}\"\n [lxMarkInvalid]=\"markInvalid\"\n [value]=\"dataValue$ | async | number : format\"\n (focus)=\"focusCurrencyInput()\"\n />\n <input\n autocomplete=\"off\"\n [attr.disabled]=\"disabled ? true : null\"\n [class.hideInput]=\"!showCurrencyInput\"\n type=\"text\"\n inputmode=\"numeric\"\n class=\"form-control currencyInput\"\n name=\"inputAmount\"\n #currencyInput\n placeholder=\"{{ placeholder }}\"\n [ngModel]=\"dataValue$ | async\"\n (blur)=\"onBlur()\"\n (ngModelChange)=\"valueChanged($event)\"\n />\n <div *ngIf=\"iconPosition === 'end'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\"></lx-currency-symbol>\n </div>\n</div>\n<span *ngIf=\"mode === 'view'\" [class.placeholder]=\"(dataValue$ | async) === null && placeholder\">\n <!-- Not using Angular 2 currency pipe since a lot of currency symbols are missing: https://github.com/angular/angular/issues/6724 -->\n <lx-currency-symbol *ngIf=\"iconPosition === 'first'\" [code]=\"code\"></lx-currency-symbol>\n {{ (dataValue$ | async | number : format) || placeholder }}\n <lx-currency-symbol *ngIf=\"iconPosition === 'end'\" [code]=\"code\"></lx-currency-symbol>\n</span>\n", styles: [".container{width:100%!important;padding:0}.labelContainer{width:5%!important;min-width:40px}input{width:100%}.hideInput{display:none}.placeholder{color:#99a5bb}\n"] }]
117
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { code: [{
118
- type: Input
119
- }], decimalSeparator: [{
120
- type: Input
121
- }], placeholder: [{
122
- type: Input
123
- }], data: [{
124
- type: Input
125
- }], data$: [], disabled: [{
126
- type: Input
127
- }], mode: [{
128
- type: Input
129
- }], fieldDefinitionType: [{
130
- type: Input
131
- }], iconPosition: [{
132
- type: Input
133
- }], format: [{
134
- type: Input
135
- }], markInvalid: [{
136
- type: Input
137
- }], onFocusLost: [{
138
- type: Output
139
- }], onChange: [{
140
- type: Output
141
- }], currencyInput: [{
142
- type: ViewChild,
143
- args: ['currencyInput']
144
- }] } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZm9ybXMtdWkvY29tcG9uZW50cy9jdXJyZW5jeS9jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL2N1cnJlbmN5L2N1cnJlbmN5LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQW9CbEQsTUFBTSxPQUFPLHNCQUFzQjtJQTJCakMsWUFBb0IsY0FBaUM7UUFBakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBekJyQyxxQkFBZ0IsR0FBcUIsR0FBRyxDQUFDO1FBRXpDLFNBQUksR0FBVyxDQUFDLENBQUM7UUFHakIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixTQUFJLEdBQXNCLE1BQU0sQ0FBQztRQUVqQyxpQkFBWSxHQUF5QixPQUFPLENBQUM7UUFDN0MsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUNoQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVaLGdCQUFX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LENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7O21IQTVHVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixpWEFUdEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztZQUNyRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsMElDbENILGduREFzQ0E7QURJMkI7SUFBeEIsT0FBTyxDQUFTLE1BQU0sQ0FBQztxREFBNEI7MkZBTHpDLHNCQUFzQjtrQkFibEMsU0FBUzsrQkFDRSxtQkFBbUIsYUFHbEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7NEJBQ3JELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO3dHQUcvQixJQUFJO3NCQUFuQixLQUFLO2dCQUNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ21CLEtBQUssTUFFZCxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVXLFdBQVc7c0JBQTNCLE1BQU07Z0JBQ1UsUUFBUTtzQkFBeEIsTUFBTTtnQkFFNkIsYUFBYTtzQkFBaEQsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL29ic2VydmUnO1xuXG5leHBvcnQgdHlwZSBDdXJyZW5jeUlucHV0TW9kZSA9ICd2aWV3JyB8ICdlZGl0JztcbmV4cG9ydCB0eXBlIEN1cnJlbmN5SWNvblBvc2l0aW9uID0gJ2ZpcnN0JyB8ICdlbmQnIHwgJ25vbmUnO1xuXG5leHBvcnQgdHlwZSBEZWNpbWFsU2VwYXJhdG9yID0gJywnIHwgJy4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1jdXJyZW5jeS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnY3VycmVuY3ktaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnY3VycmVuY3ktaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDdXJyZW5jeUlucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDdXJyZW5jeUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcbiAgQElucHV0KCkgcHVibGljIGNvZGUhOiBzdHJpbmcgfCBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgZGVjaW1hbFNlcGFyYXRvcjogRGVjaW1hbFNlcGFyYXRvciA9ICcuJztcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZGF0YTogbnVtYmVyID0gMDtcbiAgQE9ic2VydmU8bnVtYmVyPignZGF0YScpIGRhdGEkITogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgbW9kZTogQ3VycmVuY3lJbnB1dE1vZGUgPSAnZWRpdCc7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZERlZmluaXRpb25UeXBlITogJ0RPVUJMRScgfCAnSU5URUdFUic7XG4gIEBJbnB1dCgpIHB1YmxpYyBpY29uUG9zaXRpb246IEN1cnJlbmN5SWNvblBvc2l0aW9uID0gJ2ZpcnN0JztcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdDogc3RyaW5nID0gJzEuMi0yJztcbiAgQElucHV0KCkgbWFya0ludmFsaWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgcHVibGljIG9uRm9jdXNMb3N0ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY3VycmVuY3lJbnB1dCcpIHByaXZhdGUgY3VycmVuY3lJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIHNob3dDdXJyZW5jeUlucHV0OiBib29sZWFuID0gZmFsc2U7XG4gIGRhdGFWYWx1ZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KCk7XG5cbiAgcHJpdmF0ZSBnZXQgYWxsb3dlZENoYXJhY3RlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGREZWZpbml0aW9uVHlwZSA9PT0gJ0RPVUJMRScgPyBuZXcgUmVnRXhwKGBbMC05XFxlXFxcXCR7dGhpcy5kZWNpbWFsU2VwYXJhdG9yfVxcXWApIDogL1swLTlcXGVcXFxcXS87XG4gIH1cblxuICByZWFkb25seSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRhdGEkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSh0aGlzLmRhdGFWYWx1ZSQpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmN1cnJlbmN5SW5wdXQpIHtcbiAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLmN1cnJlbmN5SW5wdXQubmF0aXZlRWxlbWVudCwgJ2tleXByZXNzJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChrZXlib2FyZEV2ZW50KSA9PiB0aGlzLnNob3VsZFJlamVjdEtleShrZXlib2FyZEV2ZW50KSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChrZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAga2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG5cbiAgdmFsdWVDaGFuZ2VkKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgaW52YWxpZFNlcGFyYXRvciA9IHRoaXMuZGVjaW1hbFNlcGFyYXRvciA9PT0gJy4nID8gJywnIDogJy4nO1xuICAgICAgdmFsdWUgPSB0aGlzLnBhcnNlSW5wdXQodmFsdWUsIGludmFsaWRTZXBhcmF0b3IpIGFzIG51bWJlcjtcbiAgICB9XG4gICAgLy8gZml4IGNvcHkgJiBwYXN0ZSBzdHJpbmcgdmFsdWVzIGJlaW5nIGludGVycHJldGVkIHdyb25nbHlcbiAgICB0aGlzLmRhdGFWYWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5zaG93Q3VycmVuY3lJbnB1dCA9IGZhbHNlO1xuICAgIHRoaXMub25Gb2N1c0xvc3QuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIGZvY3VzQ3VycmVuY3lJbnB1dCgpIHtcbiAgICB0aGlzLnNob3dDdXJyZW5jeUlucHV0ID0gdHJ1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmN1cnJlbmN5SW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMuY3VycmVuY3lJbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDApO1xuICB9XG5cbiAgc2hvdWxkUmVqZWN0S2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZmllbGREZWZpbml0aW9uVHlwZSA9PT0gJ0RPVUJMRScgJiYgZXZlbnQua2V5ID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5zU2VwYXJhdG9ycyh0aGlzLmN1cnJlbmN5SW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiAhdGhpcy5hbGxvd2VkQ2hhcmFjdGVycy50ZXN0KGV2ZW50LmtleSk7XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UoX25ld1ZhbHVlOiBudW1iZXIpIHt9XG5cbiAgd3JpdGVWYWx1ZShuZXdWYWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5kYXRhVmFsdWUkLm5leHQobmV3VmFsdWUpO1xuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChfZm46IGFueSkge31cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUlucHV0KHZhbHVlOiBzdHJpbmcsIGNoYXI6IHN0cmluZykge1xuICAgIGNvbnN0IGNvdW50T2NjdXJlbmNlcyA9IHZhbHVlLnNwbGl0KGNoYXIpLmxlbmd0aCAtIDE7XG4gICAgaWYgKGNvdW50T2NjdXJlbmNlcyA+IDEpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRPY2N1cmVuY2VzOyBpKyspIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGNoYXIsICcnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcGFyc2VkVmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlLnJlcGxhY2UoJywnLCAnLicpLnJlcGxhY2UoLyAvZywgJycpKTtcbiAgICByZXR1cm4gaXNOYU4ocGFyc2VkVmFsdWUpID8gbnVsbCA6IHBhcnNlZFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250YWluc1NlcGFyYXRvcnModmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKCcsJykgPiAtMSB8fCB2YWx1ZS5pbmRleE9mKCcuJykgPiAtMTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIm1vZGUgPT09ICdlZGl0J1wiIGNsYXNzPVwiY29udGFpbmVyIGlucHV0LWdyb3VwXCI+XG4gIDxkaXYgKm5nSWY9XCJpY29uUG9zaXRpb24gPT09ICdmaXJzdCdcIiBjbGFzcz1cImxhYmVsQ29udGFpbmVyIGlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgPGx4LWN1cnJlbmN5LXN5bWJvbCBbY29kZV09XCJjb2RlXCI+PC9seC1jdXJyZW5jeS1zeW1ib2w+XG4gIDwvZGl2PlxuICA8aW5wdXRcbiAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICAqbmdJZj1cIiFzaG93Q3VycmVuY3lJbnB1dFwiXG4gICAgdHlwZT1cInRleHRcIlxuICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGN1cnJlbmN5RGlzcGxheVZhbHVlXCJcbiAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICBbbHhNYXJrSW52YWxpZF09XCJtYXJrSW52YWxpZFwiXG4gICAgW3ZhbHVlXT1cImRhdGFWYWx1ZSQgfCBhc3luYyB8IG51bWJlciA6IGZvcm1hdFwiXG4gICAgKGZvY3VzKT1cImZvY3VzQ3VycmVuY3lJbnB1dCgpXCJcbiAgLz5cbiAgPGlucHV0XG4gICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICBbY2xhc3MuaGlkZUlucHV0XT1cIiFzaG93Q3VycmVuY3lJbnB1dFwiXG4gICAgdHlwZT1cInRleHRcIlxuICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGN1cnJlbmN5SW5wdXRcIlxuICAgIG5hbWU9XCJpbnB1dEFtb3VudFwiXG4gICAgI2N1cnJlbmN5SW5wdXRcbiAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICBbbmdNb2RlbF09XCJkYXRhVmFsdWUkIHwgYXN5bmNcIlxuICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gIC8+XG4gIDxkaXYgKm5nSWY9XCJpY29uUG9zaXRpb24gPT09ICdlbmQnXCIgY2xhc3M9XCJsYWJlbENvbnRhaW5lciBpbnB1dC1ncm91cC1hZGRvblwiPlxuICAgIDxseC1jdXJyZW5jeS1zeW1ib2wgW2NvZGVdPVwiY29kZVwiPjwvbHgtY3VycmVuY3ktc3ltYm9sPlxuICA8L2Rpdj5cbjwvZGl2PlxuPHNwYW4gKm5nSWY9XCJtb2RlID09PSAndmlldydcIiBbY2xhc3MucGxhY2Vob2xkZXJdPVwiKGRhdGFWYWx1ZSQgfCBhc3luYykgPT09IG51bGwgJiYgcGxhY2Vob2xkZXJcIj5cbiAgPCEtLSBOb3QgdXNpbmcgQW5ndWxhciAyIGN1cnJlbmN5IHBpcGUgc2luY2UgYSBsb3Qgb2YgY3VycmVuY3kgc3ltYm9scyBhcmUgbWlzc2luZzogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNjcyNCAtLT5cbiAgPGx4LWN1cnJlbmN5LXN5bWJvbCAqbmdJZj1cImljb25Qb3NpdGlvbiA9PT0gJ2ZpcnN0J1wiIFtjb2RlXT1cImNvZGVcIj48L2x4LWN1cnJlbmN5LXN5bWJvbD5cbiAge3sgKGRhdGFWYWx1ZSQgfCBhc3luYyB8IG51bWJlciA6IGZvcm1hdCkgfHwgcGxhY2Vob2xkZXIgfX1cbiAgPGx4LWN1cnJlbmN5LXN5bWJvbCAqbmdJZj1cImljb25Qb3NpdGlvbiA9PT0gJ2VuZCdcIiBbY29kZV09XCJjb2RlXCI+PC9seC1jdXJyZW5jeS1zeW1ib2w+XG48L3NwYW4+XG4iXX0=
@@ -1,28 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { FormsModule } from '@angular/forms';
4
- import { DatePickerInnerComponent } from './datepicker-inner.component';
5
- import { DatePickerComponent } from './datepicker.component';
6
- import { DatepickerConfig } from './datepicker.config';
7
- import { DayPickerComponent } from './daypicker.component';
8
- import { MonthPickerComponent } from './monthpicker.component';
9
- import { YearPickerComponent } from './yearpicker.component';
10
- import * as i0 from "@angular/core";
11
- export class DatepickerUiModule {
12
- static forRoot() {
13
- return { ngModule: DatepickerUiModule, providers: [DatepickerConfig] };
14
- }
15
- }
16
- DatepickerUiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: DatepickerUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
- DatepickerUiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.1", ngImport: i0, type: DatepickerUiModule, declarations: [DatePickerComponent, DatePickerInnerComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent], imports: [CommonModule, FormsModule], exports: [DatePickerComponent, DatePickerInnerComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent] });
18
- DatepickerUiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: DatepickerUiModule, imports: [CommonModule, FormsModule] });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: DatepickerUiModule, decorators: [{
20
- type: NgModule,
21
- args: [{
22
- imports: [CommonModule, FormsModule],
23
- declarations: [DatePickerComponent, DatePickerInnerComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent],
24
- exports: [DatePickerComponent, DatePickerInnerComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent],
25
- entryComponents: [DatePickerComponent]
26
- }]
27
- }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci11aS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL2RhdGUtcGlja2VyLXVpL2RhdGVwaWNrZXItdWkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBUTdELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztJQUN6RSxDQUFDOzsrR0FIVSxrQkFBa0I7Z0hBQWxCLGtCQUFrQixpQkFKZCxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsYUFEakgsWUFBWSxFQUFFLFdBQVcsYUFFekIsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CO2dIQUczRyxrQkFBa0IsWUFMbkIsWUFBWSxFQUFFLFdBQVc7MkZBS3hCLGtCQUFrQjtrQkFOOUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUNwQyxZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsQ0FBQztvQkFDNUgsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3ZILGVBQWUsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRlUGlja2VySW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXItaW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVwaWNrZXJDb25maWcgfSBmcm9tICcuL2RhdGVwaWNrZXIuY29uZmlnJztcbmltcG9ydCB7IERheVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF5cGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb250aFBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vbW9udGhwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFllYXJQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3llYXJwaWNrZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtEYXRlUGlja2VyQ29tcG9uZW50LCBEYXRlUGlja2VySW5uZXJDb21wb25lbnQsIERheVBpY2tlckNvbXBvbmVudCwgTW9udGhQaWNrZXJDb21wb25lbnQsIFllYXJQaWNrZXJDb21wb25lbnRdLFxuICBleHBvcnRzOiBbRGF0ZVBpY2tlckNvbXBvbmVudCwgRGF0ZVBpY2tlcklubmVyQ29tcG9uZW50LCBEYXlQaWNrZXJDb21wb25lbnQsIE1vbnRoUGlja2VyQ29tcG9uZW50LCBZZWFyUGlja2VyQ29tcG9uZW50XSxcbiAgZW50cnlDb21wb25lbnRzOiBbRGF0ZVBpY2tlckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlclVpTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxEYXRlcGlja2VyVWlNb2R1bGU+IHtcbiAgICByZXR1cm4geyBuZ01vZHVsZTogRGF0ZXBpY2tlclVpTW9kdWxlLCBwcm92aWRlcnM6IFtEYXRlcGlja2VyQ29uZmlnXSB9O1xuICB9XG59XG4iXX0=