@wizishop/angular-components 15.1.109 → 18.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 (344) hide show
  1. package/README.md +87 -87
  2. package/angular-components.scss +2194 -2188
  3. package/assets/images/upload/icon_picture.svg +11 -11
  4. package/{esm2020 → esm2022}/lib/animations/in-out/in-out-x.animation.mjs +1 -1
  5. package/{esm2020 → esm2022}/lib/animations/in-out/in-out-y.animation.mjs +1 -1
  6. package/{esm2020 → esm2022}/lib/animations/list/animate-list-from-bottom.animation.mjs +1 -1
  7. package/{esm2020 → esm2022}/lib/animations/list/animate-list-from-left.animation.mjs +1 -1
  8. package/{esm2020 → esm2022}/lib/animations/list/animate-list-from-right.animation.mjs +1 -1
  9. package/{esm2020 → esm2022}/lib/animations/list/animate-list-from-top.animation.mjs +1 -1
  10. package/{esm2020 → esm2022}/lib/animations/show/show-from-bottom.animation.mjs +1 -1
  11. package/{esm2020 → esm2022}/lib/animations/show/show-from-left.animation.mjs +1 -1
  12. package/{esm2020 → esm2022}/lib/animations/show/show-from-right.animation.mjs +1 -1
  13. package/{esm2020 → esm2022}/lib/animations/show/show-from-top.animation.mjs +1 -1
  14. package/{esm2020 → esm2022}/lib/animations/switch/switch-in-out.animation.mjs +1 -1
  15. package/esm2022/lib/components/ai-express/ai-express.component.mjs +83 -0
  16. package/{esm2020 → esm2022}/lib/components/alert/alert.component.mjs +5 -5
  17. package/esm2022/lib/components/alert-popup/alert-popup-module.mjs +20 -0
  18. package/esm2022/lib/components/alert-popup/alert-popup.component.mjs +41 -0
  19. package/{esm2020 → esm2022}/lib/components/alert-popup/alert-popup.service.mjs +5 -5
  20. package/esm2022/lib/components/back/back.component.mjs +12 -0
  21. package/{esm2020 → esm2022}/lib/components/block/block-title-legacy/block-title-legacy.component.mjs +5 -5
  22. package/esm2022/lib/components/block/block.component.mjs +124 -0
  23. package/{esm2020 → esm2022}/lib/components/block/separator/block-separator.component.mjs +5 -5
  24. package/esm2022/lib/components/block-with-checkbox/block-with-checkbox.component.mjs +46 -0
  25. package/{esm2020 → esm2022}/lib/components/breadcrumbs/breadcrumbs.component.mjs +5 -5
  26. package/esm2022/lib/components/button/button.component.mjs +194 -0
  27. package/esm2022/lib/components/calendar/calendar.component.mjs +237 -0
  28. package/{esm2020 → esm2022}/lib/components/card-price/card-price.component.mjs +5 -5
  29. package/{esm2020 → esm2022}/lib/components/charging-bar/charging-bar.component.mjs +5 -5
  30. package/{esm2020 → esm2022}/lib/components/checkbox/checkbox.component.mjs +5 -5
  31. package/{esm2020 → esm2022}/lib/components/checkbox/checkbox.module.mjs +7 -7
  32. package/{esm2020 → esm2022}/lib/components/column/column.component.mjs +4 -4
  33. package/{esm2020 → esm2022}/lib/components/common/label/label.component.mjs +5 -5
  34. package/{esm2020 → esm2022}/lib/components/common/placeholder/placeholder.component.mjs +5 -5
  35. package/esm2022/lib/components/confirm-delete/confirm-delete.component.mjs +64 -0
  36. package/{esm2020 → esm2022}/lib/components/content-with-buttons/content-with-buttons.component.mjs +4 -4
  37. package/esm2022/lib/components/delete/delete.component.mjs +12 -0
  38. package/esm2022/lib/components/draganddrop-list/draganddrop-list.component.mjs +61 -0
  39. package/esm2022/lib/components/dropdown/dropdown.component.mjs +26 -0
  40. package/esm2022/lib/components/edit-in-place/edit-in-place.component.mjs +202 -0
  41. package/{esm2020 → esm2022}/lib/components/expanded-panel/expanded-panel.component.mjs +5 -5
  42. package/esm2022/lib/components/expansion/accordion/accordion.component.mjs +74 -0
  43. package/{esm2020 → esm2022}/lib/components/expansion/expansion-panel/expansion-panel.component.mjs +5 -5
  44. package/esm2022/lib/components/expansion/expansion-panel/expansion-panel.directive.mjs +88 -0
  45. package/{esm2020 → esm2022}/lib/components/expansion/expansion-panel-header/expansion-panel-header.component.mjs +5 -5
  46. package/esm2022/lib/components/expansion/expansion-panel-header/expansion-panel-header.directive.mjs +49 -0
  47. package/{esm2020 → esm2022}/lib/components/expansion/expansion.module.mjs +11 -11
  48. package/{esm2020 → esm2022}/lib/components/filters/filter-item.dto.mjs +1 -1
  49. package/esm2022/lib/components/filters/filters.component.mjs +41 -0
  50. package/esm2022/lib/components/free-popin/free-popin.component.mjs +66 -0
  51. package/{esm2020 → esm2022}/lib/components/google-preview/google-preview.component.mjs +5 -5
  52. package/esm2022/lib/components/header-page/header-page.component.mjs +38 -0
  53. package/{esm2020 → esm2022}/lib/components/hn/h1/h1.component.mjs +5 -5
  54. package/esm2022/lib/components/hn/h2/h2.component.mjs +13 -0
  55. package/esm2022/lib/components/hn/h3/h3.component.mjs +18 -0
  56. package/esm2022/lib/components/hn/h4/h4.component.mjs +18 -0
  57. package/esm2022/lib/components/image/image.component.mjs +17 -0
  58. package/esm2022/lib/components/info/info.component.mjs +12 -0
  59. package/esm2022/lib/components/inputs/input/input.component.mjs +184 -0
  60. package/esm2022/lib/components/inputs/input-search/input-search.component.mjs +65 -0
  61. package/{esm2020 → esm2022}/lib/components/inputs/input-with-select/input-with-select.component.mjs +4 -4
  62. package/esm2022/lib/components/link/link.component.mjs +57 -0
  63. package/{esm2020 → esm2022}/lib/components/loader/loader.component.mjs +4 -4
  64. package/esm2022/lib/components/logo/logo.component.mjs +20 -0
  65. package/esm2022/lib/components/mosaic/mosaic.component.mjs +81 -0
  66. package/esm2022/lib/components/multiple-search/multiple-search.component.mjs +115 -0
  67. package/esm2022/lib/components/multiple-search-plus/multiple-search-plus.component.mjs +97 -0
  68. package/{esm2020 → esm2022}/lib/components/multiple-search-plus/shared/multiple-search-plus-option.model.mjs +1 -1
  69. package/{esm2020 → esm2022}/lib/components/multiple-search-plus/shared/multiple-search-plus-results.model.mjs +1 -1
  70. package/{esm2020 → esm2022}/lib/components/optional-disable-container/optional-disable-container.component.mjs +5 -5
  71. package/esm2022/lib/components/pagination/pagination.component.mjs +50 -0
  72. package/esm2022/lib/components/pagination/pagination.module.mjs +33 -0
  73. package/esm2022/lib/components/pagination/pipes/array-pages.pipe.mjs +28 -0
  74. package/esm2022/lib/components/pagination/pipes/custom-text.pipe.mjs +34 -0
  75. package/esm2022/lib/components/pagination/pipes/is-last-page.pipe.mjs +25 -0
  76. package/esm2022/lib/components/popin/popin.component.mjs +73 -0
  77. package/esm2022/lib/components/progress-bar/progress-bar.component.mjs +75 -0
  78. package/{esm2020 → esm2022}/lib/components/radio/option/option.component.mjs +5 -5
  79. package/{esm2020 → esm2022}/lib/components/radio/radio-group.directive.mjs +8 -8
  80. package/esm2022/lib/components/radio/radio.component.mjs +38 -0
  81. package/{esm2020 → esm2022}/lib/components/radio-legacy/radio-directive.mjs +5 -5
  82. package/{esm2020 → esm2022}/lib/components/radio-legacy/radio-group.directive.mjs +8 -8
  83. package/esm2022/lib/components/radio-legacy/radio.component.mjs +58 -0
  84. package/esm2022/lib/components/row/row.component.mjs +141 -0
  85. package/esm2022/lib/components/search/search.component.mjs +86 -0
  86. package/{esm2020 → esm2022}/lib/components/search/shared/search-option.model.mjs +1 -1
  87. package/{esm2020 → esm2022}/lib/components/select/option/option.component.mjs +5 -5
  88. package/esm2022/lib/components/select/option/select-option.directive.mjs +98 -0
  89. package/{esm2020 → esm2022}/lib/components/select/option-call-to-action/option-call-to-action.component.mjs +5 -5
  90. package/esm2022/lib/components/select/select/select.component.mjs +198 -0
  91. package/esm2022/lib/components/select/select/select.directive.mjs +175 -0
  92. package/esm2022/lib/components/select/select/value-change.service.mjs +190 -0
  93. package/{esm2020 → esm2022}/lib/components/select/select-search-trigger/select-search-trigger.component.mjs +5 -5
  94. package/esm2022/lib/components/select-in-text/select-in-text.component.mjs +103 -0
  95. package/esm2022/lib/components/selected-list/selected-list.component.mjs +62 -0
  96. package/{esm2020 → esm2022}/lib/components/selected-list/shared/selected-list-option.model.mjs +1 -1
  97. package/esm2022/lib/components/separator/separator.component.mjs +17 -0
  98. package/esm2022/lib/components/settings/settings.component.mjs +12 -0
  99. package/esm2022/lib/components/shared-components.module.mjs +444 -0
  100. package/esm2022/lib/components/snackbar/snackbar.component.mjs +85 -0
  101. package/esm2022/lib/components/state/state.component.mjs +16 -0
  102. package/esm2022/lib/components/summary/summary.component.mjs +41 -0
  103. package/esm2022/lib/components/switch/switch.component.mjs +89 -0
  104. package/esm2022/lib/components/table/directives/checkBoxRow.directive.mjs +92 -0
  105. package/esm2022/lib/components/table/directives/column.directive.mjs +42 -0
  106. package/esm2022/lib/components/table/directives/columnHeader.directive.mjs +199 -0
  107. package/{esm2020 → esm2022}/lib/components/table/directives/raw.directive.mjs +6 -6
  108. package/esm2022/lib/components/table/shared/filters-table.service.mjs +68 -0
  109. package/esm2022/lib/components/table/shared/table-checkbox-id.service.mjs +20 -0
  110. package/{esm2020 → esm2022}/lib/components/table/shared/table-filters-group.model.mjs +1 -1
  111. package/{esm2020 → esm2022}/lib/components/table/shared/table-filters.model.mjs +1 -1
  112. package/esm2022/lib/components/table/table.component.mjs +146 -0
  113. package/{esm2020 → esm2022}/lib/components/table/table.module.mjs +15 -15
  114. package/{esm2020 → esm2022}/lib/components/tabs/tab/tab.component.mjs +5 -5
  115. package/{esm2020 → esm2022}/lib/components/tabs/tab-body/tab-body.component.mjs +4 -4
  116. package/{esm2020 → esm2022}/lib/components/tabs/tab-body/tab-body.directive.mjs +6 -6
  117. package/esm2022/lib/components/tabs/tabs.component.mjs +99 -0
  118. package/{esm2020 → esm2022}/lib/components/tag/tag.component.mjs +5 -5
  119. package/{esm2020 → esm2022}/lib/components/tag-dropdown/tag-dropdown.component.mjs +5 -5
  120. package/{esm2020 → esm2022}/lib/components/tag-label/tag-label.component.mjs +5 -5
  121. package/{esm2020 → esm2022}/lib/components/text/text.component.mjs +5 -5
  122. package/{esm2020 → esm2022}/lib/components/text-area/text-area.component.mjs +4 -4
  123. package/{esm2020 → esm2022}/lib/components/token-check/token-check.component.mjs +5 -5
  124. package/esm2022/lib/components/tooltip/tooltip.component.mjs +30 -0
  125. package/{esm2020 → esm2022}/lib/components/tooltip/tooltip.module.mjs +7 -7
  126. package/{esm2020 → esm2022}/lib/components/tree/tree.component.mjs +5 -5
  127. package/{esm2020 → esm2022}/lib/components/tree/tree.module.mjs +9 -9
  128. package/esm2022/lib/components/upload/upload.component.mjs +36 -0
  129. package/esm2022/lib/components/wrapper/wrapper.component.mjs +18 -0
  130. package/esm2022/lib/components/wrapper-blocs/wrapper-blocs.component.mjs +19 -0
  131. package/{esm2020 → esm2022}/lib/components/wrapper-multiple-block/wrapper-multiple-block.component.mjs +5 -5
  132. package/{esm2020 → esm2022}/lib/components/wrapper-sidebar/wrapper-sidebar.component.mjs +5 -5
  133. package/{esm2020 → esm2022}/lib/directives/abstract-debounce/abstract-debounce.directive.mjs +5 -5
  134. package/{esm2020 → esm2022}/lib/directives/abstract-debounce/debounce-keyup.directive.mjs +5 -5
  135. package/esm2022/lib/directives/auto-hide/auto-hide.directive.mjs +50 -0
  136. package/{esm2020 → esm2022}/lib/directives/copy-to-clipboard/copy-to-clipboard.directive.mjs +5 -5
  137. package/esm2022/lib/directives/keyboard-events/keypress-enter.directive.mjs +25 -0
  138. package/esm2022/lib/directives/keyboard-events/only-numbers.directive.mjs +45 -0
  139. package/esm2022/lib/directives/keyboard-events/two-digital-decimal-number.directive.mjs +36 -0
  140. package/esm2022/lib/directives/ng-var.directive.mjs +32 -0
  141. package/{esm2020 → esm2022}/lib/directives/scroll-to/scroll-to.directive.mjs +4 -4
  142. package/{esm2020 → esm2022}/lib/directives/shared-directives.module.mjs +27 -27
  143. package/{esm2020 → esm2022}/lib/directives/watch-dom-tree/watch-dom-tree.directive.mjs +5 -5
  144. package/esm2022/lib/directives/zindex-toggle/zindex-toggle.directive.mjs +44 -0
  145. package/{esm2020 → esm2022}/lib/pipes/call-component-function.pipe.mjs +4 -4
  146. package/esm2022/lib/pipes/find-option-selected-field.pipe.mjs +29 -0
  147. package/{esm2020 → esm2022}/lib/pipes/select/filter-options.pipe.mjs +4 -4
  148. package/{esm2020 → esm2022}/lib/pipes/select/select-filters.pipe.mjs +4 -4
  149. package/{esm2020 → esm2022}/lib/pipes/selected-list/are-all-options-selected.pipe.mjs +4 -4
  150. package/{esm2020 → esm2022}/lib/pipes/shared-pipes.module.mjs +13 -13
  151. package/esm2022/lib/pipes/tree/format-object-to-recursif-tree.pipe.mjs +41 -0
  152. package/esm2022/lib/pipes/tree/format-object-to-simple-tree.pipe.mjs +49 -0
  153. package/esm2022/lib/services/dom.service.mjs +59 -0
  154. package/esm2022/lib/services/history.service.mjs +53 -0
  155. package/esm2022/lib/services/multiple-selection.service.mjs +62 -0
  156. package/esm2022/lib/utils/html-container.class.mjs +30 -0
  157. package/{esm2020 → esm2022}/lib/utils/slection-item.interface.mjs +1 -1
  158. package/esm2022/lib/utils/uuid.mjs +8 -0
  159. package/esm2022/lib/wizi-components.module.mjs +34 -0
  160. package/{fesm2020 → fesm2022}/wizishop-angular-components.mjs +892 -901
  161. package/fesm2022/wizishop-angular-components.mjs.map +1 -0
  162. package/lib/components/ai-express/ai-express.component.d.ts +1 -1
  163. package/lib/components/alert/alert.component.d.ts +1 -1
  164. package/lib/components/block/block-title-legacy/block-title-legacy.component.d.ts +1 -1
  165. package/lib/components/block/block.component.d.ts +1 -1
  166. package/lib/components/block-with-checkbox/block-with-checkbox.component.d.ts +1 -1
  167. package/lib/components/breadcrumbs/breadcrumbs.component.d.ts +1 -1
  168. package/lib/components/button/button.component.d.ts +1 -3
  169. package/lib/components/calendar/calendar.component.d.ts +1 -1
  170. package/lib/components/card-price/card-price.component.d.ts +1 -1
  171. package/lib/components/charging-bar/charging-bar.component.d.ts +1 -1
  172. package/lib/components/checkbox/checkbox.component.d.ts +1 -1
  173. package/lib/components/confirm-delete/confirm-delete.component.d.ts +1 -1
  174. package/lib/components/content-with-buttons/content-with-buttons.component.d.ts +1 -1
  175. package/lib/components/draganddrop-list/draganddrop-list.component.d.ts +1 -1
  176. package/lib/components/dropdown/dropdown.component.d.ts +1 -1
  177. package/lib/components/edit-in-place/edit-in-place.component.d.ts +1 -1
  178. package/lib/components/expanded-panel/expanded-panel.component.d.ts +1 -1
  179. package/lib/components/expansion/accordion/accordion.component.d.ts +1 -1
  180. package/lib/components/expansion/expansion-panel/expansion-panel.directive.d.ts +1 -1
  181. package/lib/components/expansion/expansion-panel-header/expansion-panel-header.directive.d.ts +1 -1
  182. package/lib/components/filters/filters.component.d.ts +1 -1
  183. package/lib/components/free-popin/free-popin.component.d.ts +1 -1
  184. package/lib/components/google-preview/google-preview.component.d.ts +1 -1
  185. package/lib/components/header-page/header-page.component.d.ts +1 -1
  186. package/lib/components/hn/h1/h1.component.d.ts +1 -1
  187. package/lib/components/hn/h3/h3.component.d.ts +1 -1
  188. package/lib/components/hn/h4/h4.component.d.ts +1 -1
  189. package/lib/components/image/image.component.d.ts +1 -1
  190. package/lib/components/inputs/input/input.component.d.ts +1 -1
  191. package/lib/components/inputs/input-search/input-search.component.d.ts +1 -1
  192. package/lib/components/link/link.component.d.ts +1 -1
  193. package/lib/components/loader/loader.component.d.ts +1 -1
  194. package/lib/components/logo/logo.component.d.ts +1 -1
  195. package/lib/components/mosaic/mosaic.component.d.ts +1 -1
  196. package/lib/components/multiple-search/multiple-search.component.d.ts +1 -1
  197. package/lib/components/multiple-search-plus/multiple-search-plus.component.d.ts +1 -1
  198. package/lib/components/optional-disable-container/optional-disable-container.component.d.ts +1 -1
  199. package/lib/components/pagination/pagination.component.d.ts +1 -1
  200. package/lib/components/popin/popin.component.d.ts +1 -1
  201. package/lib/components/progress-bar/progress-bar.component.d.ts +1 -1
  202. package/lib/components/radio-legacy/radio.component.d.ts +1 -1
  203. package/lib/components/row/row.component.d.ts +1 -2
  204. package/lib/components/search/search.component.d.ts +1 -1
  205. package/lib/components/select/option/select-option.directive.d.ts +1 -1
  206. package/lib/components/select/select/select.component.d.ts +1 -1
  207. package/lib/components/select/select/select.directive.d.ts +1 -1
  208. package/lib/components/select/select-search-trigger/select-search-trigger.component.d.ts +1 -1
  209. package/lib/components/select-in-text/select-in-text.component.d.ts +1 -1
  210. package/lib/components/selected-list/selected-list.component.d.ts +1 -1
  211. package/lib/components/separator/separator.component.d.ts +1 -1
  212. package/lib/components/shared-components.module.d.ts +34 -35
  213. package/lib/components/snackbar/snackbar.component.d.ts +1 -1
  214. package/lib/components/state/state.component.d.ts +1 -1
  215. package/lib/components/summary/summary.component.d.ts +1 -1
  216. package/lib/components/switch/switch.component.d.ts +1 -1
  217. package/lib/components/table/directives/checkBoxRow.directive.d.ts +1 -1
  218. package/lib/components/table/directives/column.directive.d.ts +1 -1
  219. package/lib/components/table/directives/columnHeader.directive.d.ts +1 -1
  220. package/lib/components/table/table.component.d.ts +1 -1
  221. package/lib/components/tabs/tab/tab.component.d.ts +1 -1
  222. package/lib/components/tabs/tab-body/tab-body.component.d.ts +1 -1
  223. package/lib/components/tabs/tabs.component.d.ts +1 -1
  224. package/lib/components/tag/tag.component.d.ts +1 -1
  225. package/lib/components/tag-dropdown/tag-dropdown.component.d.ts +1 -1
  226. package/lib/components/tag-label/tag-label.component.d.ts +1 -1
  227. package/lib/components/text/text.component.d.ts +1 -1
  228. package/lib/components/text-area/text-area.component.d.ts +1 -1
  229. package/lib/components/token-check/token-check.component.d.ts +1 -1
  230. package/lib/components/tooltip/tooltip.component.d.ts +1 -1
  231. package/lib/components/tree/tree.component.d.ts +1 -1
  232. package/lib/components/upload/upload.component.d.ts +1 -1
  233. package/lib/components/wrapper/wrapper.component.d.ts +1 -1
  234. package/lib/components/wrapper-blocs/wrapper-blocs.component.d.ts +1 -1
  235. package/lib/components/wrapper-sidebar/wrapper-sidebar.component.d.ts +1 -1
  236. package/lib/directives/abstract-debounce/abstract-debounce.directive.d.ts +1 -1
  237. package/lib/directives/auto-hide/auto-hide.directive.d.ts +1 -1
  238. package/lib/directives/keyboard-events/only-numbers.directive.d.ts +1 -1
  239. package/lib/directives/keyboard-events/two-digital-decimal-number.directive.d.ts +1 -1
  240. package/lib/directives/ng-var.directive.d.ts +1 -1
  241. package/lib/directives/scroll-to/scroll-to.directive.d.ts +1 -1
  242. package/lib/directives/zindex-toggle/zindex-toggle.directive.d.ts +1 -1
  243. package/package.json +26 -32
  244. package/esm2020/lib/components/ai-express/ai-express.component.mjs +0 -83
  245. package/esm2020/lib/components/alert-popup/alert-popup-module.mjs +0 -21
  246. package/esm2020/lib/components/alert-popup/alert-popup.component.mjs +0 -41
  247. package/esm2020/lib/components/back/back.component.mjs +0 -12
  248. package/esm2020/lib/components/block/block.component.mjs +0 -124
  249. package/esm2020/lib/components/block-with-checkbox/block-with-checkbox.component.mjs +0 -46
  250. package/esm2020/lib/components/button/button.component.mjs +0 -200
  251. package/esm2020/lib/components/calendar/calendar.component.mjs +0 -237
  252. package/esm2020/lib/components/confirm-delete/confirm-delete.component.mjs +0 -64
  253. package/esm2020/lib/components/delete/delete.component.mjs +0 -12
  254. package/esm2020/lib/components/draganddrop-list/draganddrop-list.component.mjs +0 -61
  255. package/esm2020/lib/components/dropdown/dropdown.component.mjs +0 -26
  256. package/esm2020/lib/components/edit-in-place/edit-in-place.component.mjs +0 -202
  257. package/esm2020/lib/components/expansion/accordion/accordion.component.mjs +0 -74
  258. package/esm2020/lib/components/expansion/expansion-panel/expansion-panel.directive.mjs +0 -88
  259. package/esm2020/lib/components/expansion/expansion-panel-header/expansion-panel-header.directive.mjs +0 -49
  260. package/esm2020/lib/components/filters/filters.component.mjs +0 -41
  261. package/esm2020/lib/components/free-popin/free-popin.component.mjs +0 -66
  262. package/esm2020/lib/components/header-page/header-page.component.mjs +0 -42
  263. package/esm2020/lib/components/hn/h2/h2.component.mjs +0 -13
  264. package/esm2020/lib/components/hn/h3/h3.component.mjs +0 -18
  265. package/esm2020/lib/components/hn/h4/h4.component.mjs +0 -18
  266. package/esm2020/lib/components/image/image.component.mjs +0 -17
  267. package/esm2020/lib/components/info/info.component.mjs +0 -12
  268. package/esm2020/lib/components/inputs/input/input.component.mjs +0 -184
  269. package/esm2020/lib/components/inputs/input-search/input-search.component.mjs +0 -65
  270. package/esm2020/lib/components/link/link.component.mjs +0 -57
  271. package/esm2020/lib/components/logo/logo.component.mjs +0 -20
  272. package/esm2020/lib/components/mosaic/mosaic.component.mjs +0 -81
  273. package/esm2020/lib/components/multiple-search/multiple-search.component.mjs +0 -115
  274. package/esm2020/lib/components/multiple-search-plus/multiple-search-plus.component.mjs +0 -97
  275. package/esm2020/lib/components/pagination/pagination.component.mjs +0 -50
  276. package/esm2020/lib/components/pagination/pagination.module.mjs +0 -33
  277. package/esm2020/lib/components/pagination/pipes/array-pages.pipe.mjs +0 -28
  278. package/esm2020/lib/components/pagination/pipes/custom-text.pipe.mjs +0 -34
  279. package/esm2020/lib/components/pagination/pipes/is-last-page.pipe.mjs +0 -25
  280. package/esm2020/lib/components/popin/popin.component.mjs +0 -73
  281. package/esm2020/lib/components/progress-bar/progress-bar.component.mjs +0 -75
  282. package/esm2020/lib/components/radio/radio.component.mjs +0 -38
  283. package/esm2020/lib/components/radio-legacy/radio.component.mjs +0 -58
  284. package/esm2020/lib/components/row/row.component.mjs +0 -144
  285. package/esm2020/lib/components/search/search.component.mjs +0 -86
  286. package/esm2020/lib/components/select/option/select-option.directive.mjs +0 -98
  287. package/esm2020/lib/components/select/select/select.component.mjs +0 -198
  288. package/esm2020/lib/components/select/select/select.directive.mjs +0 -175
  289. package/esm2020/lib/components/select/select/value-change.service.mjs +0 -190
  290. package/esm2020/lib/components/select-in-text/select-in-text.component.mjs +0 -103
  291. package/esm2020/lib/components/selected-list/selected-list.component.mjs +0 -62
  292. package/esm2020/lib/components/separator/separator.component.mjs +0 -17
  293. package/esm2020/lib/components/settings/settings.component.mjs +0 -12
  294. package/esm2020/lib/components/shared-components.module.mjs +0 -438
  295. package/esm2020/lib/components/snackbar/snackbar.component.mjs +0 -85
  296. package/esm2020/lib/components/state/state.component.mjs +0 -16
  297. package/esm2020/lib/components/summary/summary.component.mjs +0 -41
  298. package/esm2020/lib/components/switch/switch.component.mjs +0 -89
  299. package/esm2020/lib/components/table/directives/checkBoxRow.directive.mjs +0 -92
  300. package/esm2020/lib/components/table/directives/column.directive.mjs +0 -42
  301. package/esm2020/lib/components/table/directives/columnHeader.directive.mjs +0 -199
  302. package/esm2020/lib/components/table/shared/filters-table.service.mjs +0 -68
  303. package/esm2020/lib/components/table/shared/table-checkbox-id.service.mjs +0 -20
  304. package/esm2020/lib/components/table/table.component.mjs +0 -146
  305. package/esm2020/lib/components/tabs/tabs.component.mjs +0 -99
  306. package/esm2020/lib/components/tooltip/tooltip.component.mjs +0 -30
  307. package/esm2020/lib/components/upload/upload.component.mjs +0 -36
  308. package/esm2020/lib/components/wrapper/wrapper.component.mjs +0 -18
  309. package/esm2020/lib/components/wrapper-blocs/wrapper-blocs.component.mjs +0 -19
  310. package/esm2020/lib/directives/auto-hide/auto-hide.directive.mjs +0 -50
  311. package/esm2020/lib/directives/keyboard-events/keypress-enter.directive.mjs +0 -25
  312. package/esm2020/lib/directives/keyboard-events/only-numbers.directive.mjs +0 -45
  313. package/esm2020/lib/directives/keyboard-events/two-digital-decimal-number.directive.mjs +0 -36
  314. package/esm2020/lib/directives/ng-var.directive.mjs +0 -32
  315. package/esm2020/lib/directives/zindex-toggle/zindex-toggle.directive.mjs +0 -44
  316. package/esm2020/lib/pipes/find-option-selected-field.pipe.mjs +0 -29
  317. package/esm2020/lib/pipes/tree/format-object-to-recursif-tree.pipe.mjs +0 -41
  318. package/esm2020/lib/pipes/tree/format-object-to-simple-tree.pipe.mjs +0 -49
  319. package/esm2020/lib/services/dom.service.mjs +0 -59
  320. package/esm2020/lib/services/history.service.mjs +0 -53
  321. package/esm2020/lib/services/multiple-selection.service.mjs +0 -62
  322. package/esm2020/lib/utils/html-container.class.mjs +0 -30
  323. package/esm2020/lib/utils/uuid.mjs +0 -8
  324. package/esm2020/lib/wizi-components.module.mjs +0 -34
  325. package/fesm2015/wizishop-angular-components.mjs +0 -7023
  326. package/fesm2015/wizishop-angular-components.mjs.map +0 -1
  327. package/fesm2020/wizishop-angular-components.mjs.map +0 -1
  328. package/wizishop-angular-components-15.1.109.tgz +0 -0
  329. /package/{esm2020 → esm2022}/lib/animations/show/opacity.animation.mjs +0 -0
  330. /package/{esm2020 → esm2022}/lib/components/breadcrumbs/breadcrumbs.dto.mjs +0 -0
  331. /package/{esm2020 → esm2022}/lib/components/expansion/accordion/accordion-item.interface.mjs +0 -0
  332. /package/{esm2020 → esm2022}/lib/components/expansion/accordion/accordion-item.token.mjs +0 -0
  333. /package/{esm2020 → esm2022}/lib/components/expansion/expansion-panel-header/expansion-panel-header.interface.mjs +0 -0
  334. /package/{esm2020 → esm2022}/lib/components/expansion/expansion-panel-header/expansion-panel-header.token.mjs +0 -0
  335. /package/{esm2020 → esm2022}/lib/components/inputs/input-with-select/option-item.dto.mjs +0 -0
  336. /package/{esm2020 → esm2022}/lib/components/select/call-to-action.model.mjs +0 -0
  337. /package/{esm2020 → esm2022}/lib/components/select/option/option-selection-handler.interface.mjs +0 -0
  338. /package/{esm2020 → esm2022}/lib/components/select/option/option-selection-handler.token.mjs +0 -0
  339. /package/{esm2020 → esm2022}/lib/components/select/select-items.dto.mjs +0 -0
  340. /package/{esm2020 → esm2022}/lib/components/table/shared/distinct-until-table-filters-changed.mjs +0 -0
  341. /package/{esm2020 → esm2022}/lib/components/tree/tree.dto.mjs +0 -0
  342. /package/{esm2020 → esm2022}/lib/utils/array.mjs +0 -0
  343. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  344. /package/{esm2020 → esm2022}/wizishop-angular-components.mjs +0 -0
@@ -1,200 +0,0 @@
1
- import { Attribute, Component, EventEmitter, Inject, Input, Optional, Output, ViewChild } from '@angular/core';
2
- import { FormGroupDirective } from '@angular/forms';
3
- import { interval } from 'rxjs';
4
- import { takeWhile } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "../../directives/auto-hide/auto-hide.directive";
8
- import * as i3 from "@angular/forms";
9
- export class ButtonComponent {
10
- set isLoading(isLoading) {
11
- this._isLoading = isLoading;
12
- this.isLoadingChange.next(isLoading);
13
- this.toggleLoading();
14
- }
15
- get isLoading() {
16
- return this._isLoading;
17
- }
18
- constructor(type, formGroup) {
19
- this.type = type;
20
- this.formGroup = formGroup;
21
- // todo add button type (ex: for submit and check if it works with template driven forms)
22
- this.extraClasses = 'is-info'; // todo make a list of existing class
23
- this.label = '';
24
- this.icon = '';
25
- this.isLoadingSvg = false;
26
- this.textcolor = null;
27
- this.widthAuto = false;
28
- this.contentHorizontalPosition = 'center';
29
- this.iconFontSize = 12;
30
- this.hasLoader = false;
31
- this.disabled = false;
32
- this.whiteSpaceNowrap = false;
33
- this.opacity = false;
34
- // TODO MAKE ANNIMATION AVAILABLE FOR MOBILE as CONFIRM DELETE DO (because, its doeant show the text and trigger click)
35
- this.animation = false;
36
- this.animationRight = false;
37
- this.animationText = '';
38
- this.confirmDelete = false;
39
- this.confirmDeleteText = '';
40
- this.noPadding = false;
41
- this.tooltipPosition = 'top-center';
42
- this.tooltipOneline = false;
43
- this.confirmDeletePosition = 'right';
44
- // eslint-disable-next-line @angular-eslint/no-output-native
45
- this.click = new EventEmitter();
46
- this.isLoadingChange = new EventEmitter();
47
- this._isLoading = false;
48
- this.interval = null;
49
- this.waitForConfirmDelete = false;
50
- this.buttonMaxWidth = '0px';
51
- this.buttonWidth = '0px';
52
- this.buttonMaxWidthDelete = '0px';
53
- this.buttonWidthDelete = '0px';
54
- this.currentLoading = 0;
55
- }
56
- ngOnInit() {
57
- if (this.confirmDelete) {
58
- this.waitForConfirmDelete = true;
59
- }
60
- }
61
- toggleLoading() {
62
- this.currentLoading = this.isLoading ? 10 : 100;
63
- interval(200).pipe(takeWhile(time => this.isLoading)).subscribe(() => {
64
- if (this.currentLoading < 85) {
65
- this.currentLoading += Math.floor(Math.random() * 15);
66
- }
67
- });
68
- }
69
- onButtonClickLoader() {
70
- this.isLoadingSvg = true;
71
- }
72
- addMaxWidth() {
73
- this.buttonMaxWidth = this.buttonWidth + 'px';
74
- }
75
- resetMaxWidth() {
76
- this.buttonMaxWidth = '0px';
77
- }
78
- addMaxWidthDelete() {
79
- this.buttonMaxWidthDelete = this.buttonWidthDelete + 'px';
80
- }
81
- resetMaxWidthDelete() {
82
- this.buttonMaxWidthDelete = '0px';
83
- this.waitForConfirmDelete = true;
84
- }
85
- onButtonClick(event) {
86
- event.stopPropagation();
87
- if (this.disabled) {
88
- return;
89
- }
90
- if (this.type === 'submit' && this.formGroup) { // Maybe there is a better way to handle submit
91
- this.formGroup.onSubmit(this.formGroup.value);
92
- }
93
- if (this.hasLoader) {
94
- this.isLoading = false;
95
- setTimeout(() => {
96
- this.isLoading = true;
97
- }, 0);
98
- }
99
- if (!this.waitForConfirmDelete) {
100
- this.click.emit(event);
101
- if (this.confirmDelete) {
102
- this.resetMaxWidthDelete();
103
- }
104
- }
105
- else {
106
- this.waitForConfirmDelete = false;
107
- }
108
- }
109
- ngAfterViewInit() {
110
- setTimeout(() => {
111
- if (this.animation) {
112
- this.buttonWidth = this.calculWidth.nativeElement.offsetWidth;
113
- }
114
- if (this.confirmDelete) {
115
- this.buttonWidthDelete = this.calculWidthDelete.nativeElement.offsetWidth;
116
- }
117
- }, 1000);
118
- }
119
- }
120
- ButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ButtonComponent, deps: [{ token: 'type', attribute: true }, { token: FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
121
- ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: ButtonComponent, selector: "wac-button", inputs: { extraClasses: "extraClasses", label: "label", icon: "icon", isLoadingSvg: "isLoadingSvg", iconNext: "iconNext", textcolor: "textcolor", colorIcon: "colorIcon", widthAuto: "widthAuto", contentHorizontalPosition: "contentHorizontalPosition", iconFontSize: "iconFontSize", hasLoader: "hasLoader", disabled: "disabled", whiteSpaceNowrap: "whiteSpaceNowrap", opacity: "opacity", animation: "animation", animationRight: "animationRight", animationText: "animationText", confirmDelete: "confirmDelete", confirmDeleteText: "confirmDeleteText", coin: "coin", tooltip: "tooltip", tooltipWidth: "tooltipWidth", borderColor: "borderColor", noPadding: "noPadding", tooltipPosition: "tooltipPosition", tooltipOneline: "tooltipOneline", confirmDeletePosition: "confirmDeletePosition", isLoading: "isLoading" }, outputs: { click: "click", isLoadingChange: "isLoadingChange" }, viewQueries: [{ propertyName: "calculWidth", first: true, predicate: ["calculWidth"], descendants: true }, { propertyName: "calculWidthDelete", first: true, predicate: ["calculWidthDelete"], descendants: true }], ngImport: i0, template: "<a\r\n [class]=\"'wac-button ' + extraClasses\"\r\n [style.borderColor]=\"borderColor ? borderColor + '!important' : ''\"\r\n (click)=\"confirmDelete && waitForConfirmDelete ? addMaxWidthDelete() : '';onButtonClick($event);\"\r\n (mouseleave)=\"animation ? resetMaxWidth() : '';\"\r\n (mouseenter)=\"animation ? addMaxWidth() : '';\"\r\n wzAutoHide (clickOutside)=\"confirmDelete && !waitForConfirmDelete ? resetMaxWidthDelete() : ''\"\r\n [ngClass]=\"[\r\n label === '' ? 'alone' : '',\r\n coin ? 'has-coin width-auto' : '',\r\n animationRight ? 'animation-right' : '',\r\n animation ? 'animationText' : '',\r\n isLoading ? 'is-loading' : '',\r\n opacity ? 'opacity' : '',\r\n disabled ? 'disabled' : '',\r\n widthAuto ? 'width-auto' : '',\r\n noPadding ? 'no-padding' : '',\r\n whiteSpaceNowrap ? 'white-space-no-wrap' : '',\r\n !waitForConfirmDelete && confirmDelete ? 'step-delete' : '',\r\n confirmDelete ? 'deletePosition-' + confirmDeletePosition : ''\r\n ]\"\r\n [ngStyle]=\"{\r\n 'text-align': contentHorizontalPosition\r\n }\"\r\n>\r\n <span class=\"wac-button__wrapper\" [style.color]=\"textcolor ? textcolor : ''\" [ngClass]=\"{'loading-class': isLoadingSvg}\">\r\n <svg *ngIf=\"isLoadingSvg; else iconTemplate\" version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\r\n width=\"20px\" height=\"20px\" viewBox=\"0 0 50 50\" style=\"enable-background:new 0 0 50 50;\" xml:space=\"preserve\">\r\n <path fill=\"#fff\" d=\"M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z\">\r\n <animateTransform attributeType=\"xml\"\r\n attributeName=\"transform\"\r\n type=\"rotate\"\r\n from=\"0 25 25\"\r\n to=\"360 25 25\"\r\n dur=\"0.6s\"\r\n repeatCount=\"indefinite\"/>\r\n </path>\r\n </svg>\r\n <ng-template #iconTemplate>\r\n <i *ngIf=\"icon\" [ngClass]=\"icon\" [style.color]=\"colorIcon\" [style.font-size.px]=\"iconFontSize\"></i>\r\n </ng-template>\r\n {{ label }}\r\n <i *ngIf=\"iconNext\" [style.color]=\"colorIcon\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\r\n </span>\r\n <span class=\"wac-button__animation\" [style.maxWidth]=\"buttonMaxWidth\" [style.width]=\"buttonWidth + 'px'\">\r\n <span #calculWidth class=\"wac-button__animation__text\" [innerHTML]=\"animationText\"></span>\r\n </span>\r\n <span class=\"wac-button__confirmDelete\" [style.maxWidth]=\"buttonMaxWidthDelete\" [style.width]=\"buttonWidthDelete + 'px'\">\r\n <span #calculWidthDelete class=\"wac-button__confirmDelete__text\" [innerHTML]=\"confirmDeleteText\"></span>\r\n </span>\r\n <span *ngIf=\"coin\" class=\"wac-button__coin\"><i class=\"fa-solid fa-coin-front\"></i><span [innerHTML]=\"coin\"></span></span>\r\n <span\r\n class=\"wac-button__loader\"\r\n [ngClass]=\"extraClasses.includes('is-outlined') ? 'outlined' : ''\"\r\n *ngIf=\"isLoading\"\r\n [style.width]=\"currentLoading + '%'\"\r\n >\r\n </span>\r\n <span class=\"wac-button__tooltips {{ tooltipPosition }}\" [ngClass]=\"{'oneline': tooltipOneline}\" [style.minWidth]=\"tooltipWidth\" *ngIf=\"tooltip\">\r\n {{ tooltip }}\r\n </span>\r\n</a>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }] });
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ButtonComponent, decorators: [{
123
- type: Component,
124
- args: [{ selector: 'wac-button', template: "<a\r\n [class]=\"'wac-button ' + extraClasses\"\r\n [style.borderColor]=\"borderColor ? borderColor + '!important' : ''\"\r\n (click)=\"confirmDelete && waitForConfirmDelete ? addMaxWidthDelete() : '';onButtonClick($event);\"\r\n (mouseleave)=\"animation ? resetMaxWidth() : '';\"\r\n (mouseenter)=\"animation ? addMaxWidth() : '';\"\r\n wzAutoHide (clickOutside)=\"confirmDelete && !waitForConfirmDelete ? resetMaxWidthDelete() : ''\"\r\n [ngClass]=\"[\r\n label === '' ? 'alone' : '',\r\n coin ? 'has-coin width-auto' : '',\r\n animationRight ? 'animation-right' : '',\r\n animation ? 'animationText' : '',\r\n isLoading ? 'is-loading' : '',\r\n opacity ? 'opacity' : '',\r\n disabled ? 'disabled' : '',\r\n widthAuto ? 'width-auto' : '',\r\n noPadding ? 'no-padding' : '',\r\n whiteSpaceNowrap ? 'white-space-no-wrap' : '',\r\n !waitForConfirmDelete && confirmDelete ? 'step-delete' : '',\r\n confirmDelete ? 'deletePosition-' + confirmDeletePosition : ''\r\n ]\"\r\n [ngStyle]=\"{\r\n 'text-align': contentHorizontalPosition\r\n }\"\r\n>\r\n <span class=\"wac-button__wrapper\" [style.color]=\"textcolor ? textcolor : ''\" [ngClass]=\"{'loading-class': isLoadingSvg}\">\r\n <svg *ngIf=\"isLoadingSvg; else iconTemplate\" version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\r\n width=\"20px\" height=\"20px\" viewBox=\"0 0 50 50\" style=\"enable-background:new 0 0 50 50;\" xml:space=\"preserve\">\r\n <path fill=\"#fff\" d=\"M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z\">\r\n <animateTransform attributeType=\"xml\"\r\n attributeName=\"transform\"\r\n type=\"rotate\"\r\n from=\"0 25 25\"\r\n to=\"360 25 25\"\r\n dur=\"0.6s\"\r\n repeatCount=\"indefinite\"/>\r\n </path>\r\n </svg>\r\n <ng-template #iconTemplate>\r\n <i *ngIf=\"icon\" [ngClass]=\"icon\" [style.color]=\"colorIcon\" [style.font-size.px]=\"iconFontSize\"></i>\r\n </ng-template>\r\n {{ label }}\r\n <i *ngIf=\"iconNext\" [style.color]=\"colorIcon\" [ngClass]=\"iconNext\" [style.font-size.px]=\"iconFontSize\"></i>\r\n </span>\r\n <span class=\"wac-button__animation\" [style.maxWidth]=\"buttonMaxWidth\" [style.width]=\"buttonWidth + 'px'\">\r\n <span #calculWidth class=\"wac-button__animation__text\" [innerHTML]=\"animationText\"></span>\r\n </span>\r\n <span class=\"wac-button__confirmDelete\" [style.maxWidth]=\"buttonMaxWidthDelete\" [style.width]=\"buttonWidthDelete + 'px'\">\r\n <span #calculWidthDelete class=\"wac-button__confirmDelete__text\" [innerHTML]=\"confirmDeleteText\"></span>\r\n </span>\r\n <span *ngIf=\"coin\" class=\"wac-button__coin\"><i class=\"fa-solid fa-coin-front\"></i><span [innerHTML]=\"coin\"></span></span>\r\n <span\r\n class=\"wac-button__loader\"\r\n [ngClass]=\"extraClasses.includes('is-outlined') ? 'outlined' : ''\"\r\n *ngIf=\"isLoading\"\r\n [style.width]=\"currentLoading + '%'\"\r\n >\r\n </span>\r\n <span class=\"wac-button__tooltips {{ tooltipPosition }}\" [ngClass]=\"{'oneline': tooltipOneline}\" [style.minWidth]=\"tooltipWidth\" *ngIf=\"tooltip\">\r\n {{ tooltip }}\r\n </span>\r\n</a>\r\n" }]
125
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
126
- type: Attribute,
127
- args: ['type']
128
- }] }, { type: i3.FormGroupDirective, decorators: [{
129
- type: Optional
130
- }, {
131
- type: Inject,
132
- args: [FormGroupDirective]
133
- }] }]; }, propDecorators: { extraClasses: [{
134
- type: Input
135
- }], label: [{
136
- type: Input
137
- }], icon: [{
138
- type: Input
139
- }], isLoadingSvg: [{
140
- type: Input
141
- }], iconNext: [{
142
- type: Input
143
- }], textcolor: [{
144
- type: Input
145
- }], colorIcon: [{
146
- type: Input
147
- }], widthAuto: [{
148
- type: Input
149
- }], contentHorizontalPosition: [{
150
- type: Input
151
- }], iconFontSize: [{
152
- type: Input
153
- }], hasLoader: [{
154
- type: Input
155
- }], disabled: [{
156
- type: Input
157
- }], whiteSpaceNowrap: [{
158
- type: Input
159
- }], opacity: [{
160
- type: Input
161
- }], animation: [{
162
- type: Input
163
- }], animationRight: [{
164
- type: Input
165
- }], animationText: [{
166
- type: Input
167
- }], confirmDelete: [{
168
- type: Input
169
- }], confirmDeleteText: [{
170
- type: Input
171
- }], coin: [{
172
- type: Input
173
- }], tooltip: [{
174
- type: Input
175
- }], tooltipWidth: [{
176
- type: Input
177
- }], borderColor: [{
178
- type: Input
179
- }], noPadding: [{
180
- type: Input
181
- }], tooltipPosition: [{
182
- type: Input
183
- }], tooltipOneline: [{
184
- type: Input
185
- }], confirmDeletePosition: [{
186
- type: Input
187
- }], click: [{
188
- type: Output
189
- }], isLoading: [{
190
- type: Input
191
- }], isLoadingChange: [{
192
- type: Output
193
- }], calculWidth: [{
194
- type: ViewChild,
195
- args: ['calculWidth']
196
- }], calculWidthDelete: [{
197
- type: ViewChild,
198
- args: ['calculWidthDelete']
199
- }] } });
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hKLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU0zQyxNQUFNLE9BQU8sZUFBZTtJQXNGMUIsSUFBYSxTQUFTLENBQUMsU0FBbUI7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQXVCRCxZQUM2QixJQUFZLEVBQ1MsU0FBNkI7UUFEbEQsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNTLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBeEgvRSx5RkFBeUY7UUFFekYsaUJBQVksR0FBRyxTQUFTLENBQUMsQ0FBQyxxQ0FBcUM7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bmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3YWMtYnV0dG9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICAvLyB0b2RvIGFkZCBidXR0b24gdHlwZSAoZXg6IGZvciBzdWJtaXQgYW5kIGNoZWNrIGlmIGl0IHdvcmtzIHdpdGggdGVtcGxhdGUgZHJpdmVuIGZvcm1zKVxyXG4gIEBJbnB1dCgpXHJcbiAgZXh0cmFDbGFzc2VzID0gJ2lzLWluZm8nOyAvLyB0b2RvIG1ha2UgYSBsaXN0IG9mIGV4aXN0aW5nIGNsYXNzXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbGFiZWwgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBpY29uID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIFxyXG4gIGlzTG9hZGluZ1N2ZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGljb25OZXh0OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGV4dGNvbG9yID0gbnVsbDtcclxuXHJcbiAgQElucHV0KClcclxuICBjb2xvckljb246IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICB3aWR0aEF1dG8gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBjb250ZW50SG9yaXpvbnRhbFBvc2l0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnY2VudGVyJztcclxuXHJcbiAgQElucHV0KClcclxuICBpY29uRm9udFNpemUgPSAxMjtcclxuXHJcbiAgQElucHV0KClcclxuICBoYXNMb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHdoaXRlU3BhY2VOb3dyYXAgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBvcGFjaXR5ID0gZmFsc2U7XHJcbiAgLy8gVE9ETyBNQUtFIEFOTklNQVRJT04gQVZBSUxBQkxFIEZPUiBNT0JJTEUgYXMgQ09ORklSTSBERUxFVEUgRE8gKGJlY2F1c2UsIGl0cyBkb2VhbnQgc2hvdyB0aGUgdGV4dCBhbmQgdHJpZ2dlciBjbGljaylcclxuICBASW5wdXQoKVxyXG4gIGFuaW1hdGlvbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFuaW1hdGlvblJpZ2h0ID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYW5pbWF0aW9uVGV4dCA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbmZpcm1EZWxldGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBjb25maXJtRGVsZXRlVGV4dCA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvaW46IG51bWJlciB8IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICB0b29sdGlwOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdG9vbHRpcFdpZHRoOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYm9yZGVyQ29sb3I6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBub1BhZGRpbmcgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICB0b29sdGlwUG9zaXRpb246ICd0b3AtY2VudGVyJyB8ICd0b3AtcmlnaHQnIHwgJ3RvcC1sZWZ0JyB8ICdib3R0b20tY2VudGVyJyB8ICdib3R0b20tcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyB8ICdsZWZ0JyB8ICdyaWdodCcgPSAndG9wLWNlbnRlcic7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdG9vbHRpcE9uZWxpbmUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBjb25maXJtRGVsZXRlUG9zaXRpb24gPSAncmlnaHQnO1xyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcclxuICBAT3V0cHV0KCkgcHVibGljIGNsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBpc0xvYWRpbmcoaXNMb2FkaW5nIDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faXNMb2FkaW5nID0gaXNMb2FkaW5nO1xyXG4gICAgdGhpcy5pc0xvYWRpbmdDaGFuZ2UubmV4dChpc0xvYWRpbmcpO1xyXG4gICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgaXNMb2FkaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBnZXQgaXNMb2FkaW5nKCkgOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIGludGVydmFsID0gbnVsbDtcclxuXHJcbiAgd2FpdEZvckNvbmZpcm1EZWxldGUgPSBmYWxzZTtcclxuXHJcbiAgYnV0dG9uTWF4V2lkdGggPSAnMHB4JztcclxuICBidXR0b25XaWR0aCA9ICcwcHgnO1xyXG5cclxuICBidXR0b25NYXhXaWR0aERlbGV0ZSA9ICcwcHgnO1xyXG4gIGJ1dHRvbldpZHRoRGVsZXRlID0gJzBweCc7XHJcblxyXG4gIGN1cnJlbnRMb2FkaW5nID0gMDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY2FsY3VsV2lkdGgnKVxyXG4gIGNhbGN1bFdpZHRoOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdjYWxjdWxXaWR0aERlbGV0ZScpXHJcbiAgY2FsY3VsV2lkdGhEZWxldGU6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEF0dHJpYnV0ZSgndHlwZScpIHByaXZhdGUgdHlwZTogc3RyaW5nLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGb3JtR3JvdXBEaXJlY3RpdmUpIHByaXZhdGUgZm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmVcclxuICAgICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5jb25maXJtRGVsZXRlKSB7XHJcbiAgICAgIHRoaXMud2FpdEZvckNvbmZpcm1EZWxldGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTG9hZGluZygpIHtcclxuICAgIHRoaXMuY3VycmVudExvYWRpbmcgPSB0aGlzLmlzTG9hZGluZyA/IDEwIDogMTAwO1xyXG5cclxuICAgIGludGVydmFsKDIwMCkucGlwZSh0YWtlV2hpbGUoIHRpbWU9PiB0aGlzLmlzTG9hZGluZykpLnN1YnNjcmliZShcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRMb2FkaW5nIDwgODUpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudExvYWRpbmcgKz0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQ2xpY2tMb2FkZXIoKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZ1N2ZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBhZGRNYXhXaWR0aCgpIHtcclxuICAgIHRoaXMuYnV0dG9uTWF4V2lkdGggPSB0aGlzLmJ1dHRvbldpZHRoICsgJ3B4JztcclxuICB9XHJcblxyXG4gIHJlc2V0TWF4V2lkdGgoKSB7XHJcbiAgICB0aGlzLmJ1dHRvbk1heFdpZHRoID0gJzBweCc7XHJcbiAgfVxyXG5cclxuICBhZGRNYXhXaWR0aERlbGV0ZSgpIHtcclxuICAgIHRoaXMuYnV0dG9uTWF4V2lkdGhEZWxldGUgPSB0aGlzLmJ1dHRvbldpZHRoRGVsZXRlICsgJ3B4JztcclxuICB9XHJcblxyXG4gIHJlc2V0TWF4V2lkdGhEZWxldGUoKSB7XHJcbiAgICB0aGlzLmJ1dHRvbk1heFdpZHRoRGVsZXRlID0gJzBweCc7XHJcbiAgICB0aGlzLndhaXRGb3JDb25maXJtRGVsZXRlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQ2xpY2soZXZlbnQpe1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnc3VibWl0JyAmJiB0aGlzLmZvcm1Hcm91cCkgeyAvLyBNYXliZSB0aGVyZSBpcyBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHN1Ym1pdFxyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5vblN1Ym1pdCh0aGlzLmZvcm1Hcm91cC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5oYXNMb2FkZXIpIHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7IC8vIHRyaWNrIHRvIHJlc2V0IHRoZSBhbmltYXRpb24gbG9hZGluZ1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLndhaXRGb3JDb25maXJtRGVsZXRlKSB7XHJcbiAgICAgIHRoaXMuY2xpY2suZW1pdChldmVudCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpcm1EZWxldGUpIHtcclxuICAgICAgICB0aGlzLnJlc2V0TWF4V2lkdGhEZWxldGUoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy53YWl0Rm9yQ29uZmlybURlbGV0ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmFuaW1hdGlvbikge1xyXG4gICAgICAgIHRoaXMuYnV0dG9uV2lkdGggPSB0aGlzLmNhbGN1bFdpZHRoLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29uZmlybURlbGV0ZSkge1xyXG4gICAgICAgIHRoaXMuYnV0dG9uV2lkdGhEZWxldGUgPSB0aGlzLmNhbGN1bFdpZHRoRGVsZXRlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxufVxyXG4iLCI8YVxyXG4gIFtjbGFzc109XCInd2FjLWJ1dHRvbiAnICsgZXh0cmFDbGFzc2VzXCJcclxuICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiYm9yZGVyQ29sb3IgPyBib3JkZXJDb2xvciArICchaW1wb3J0YW50JyA6ICcnXCJcclxuICAoY2xpY2spPVwiY29uZmlybURlbGV0ZSAmJiB3YWl0Rm9yQ29uZmlybURlbGV0ZSA/IGFkZE1heFdpZHRoRGVsZXRlKCkgOiAnJztvbkJ1dHRvbkNsaWNrKCRldmVudCk7XCJcclxuICAobW91c2VsZWF2ZSk9XCJhbmltYXRpb24gPyByZXNldE1heFdpZHRoKCkgOiAnJztcIlxyXG4gIChtb3VzZWVudGVyKT1cImFuaW1hdGlvbiA/IGFkZE1heFdpZHRoKCkgOiAnJztcIlxyXG4gIHd6QXV0b0hpZGUgKGNsaWNrT3V0c2lkZSk9XCJjb25maXJtRGVsZXRlICYmICF3YWl0Rm9yQ29uZmlybURlbGV0ZSA/IHJlc2V0TWF4V2lkdGhEZWxldGUoKSA6ICcnXCJcclxuICBbbmdDbGFzc109XCJbXHJcbiAgICBsYWJlbCA9PT0gJycgPyAnYWxvbmUnIDogJycsXHJcbiAgICBjb2luID8gJ2hhcy1jb2luIHdpZHRoLWF1dG8nIDogJycsXHJcbiAgICBhbmltYXRpb25SaWdodCA/ICdhbmltYXRpb24tcmlnaHQnIDogJycsXHJcbiAgICBhbmltYXRpb24gPyAnYW5pbWF0aW9uVGV4dCcgOiAnJyxcclxuICAgIGlzTG9hZGluZyA/ICdpcy1sb2FkaW5nJyA6ICcnLFxyXG4gICAgb3BhY2l0eSA/ICdvcGFjaXR5JyA6ICcnLFxyXG4gICAgZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogJycsXHJcbiAgICB3aWR0aEF1dG8gPyAnd2lkdGgtYXV0bycgOiAnJyxcclxuICAgIG5vUGFkZGluZyA/ICduby1wYWRkaW5nJyA6ICcnLFxyXG4gICAgd2hpdGVTcGFjZU5vd3JhcCA/ICd3aGl0ZS1zcGFjZS1uby13cmFwJyA6ICcnLFxyXG4gICAgIXdhaXRGb3JDb25maXJtRGVsZXRlICYmIGNvbmZpcm1EZWxldGUgPyAnc3RlcC1kZWxldGUnIDogJycsXHJcbiAgICBjb25maXJtRGVsZXRlID8gJ2RlbGV0ZVBvc2l0aW9uLScgKyBjb25maXJtRGVsZXRlUG9zaXRpb24gOiAnJ1xyXG4gICAgXVwiXHJcbiAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICd0ZXh0LWFsaWduJzogY29udGVudEhvcml6b250YWxQb3NpdGlvblxyXG4gICAgfVwiXHJcbj5cclxuICA8c3BhbiBjbGFzcz1cIndhYy1idXR0b25fX3dyYXBwZXJcIiBbc3R5bGUuY29sb3JdPVwidGV4dGNvbG9yID8gdGV4dGNvbG9yIDogJydcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmctY2xhc3MnOiBpc0xvYWRpbmdTdmd9XCI+XHJcbiAgICA8c3ZnICpuZ0lmPVwiaXNMb2FkaW5nU3ZnOyBlbHNlIGljb25UZW1wbGF0ZVwiIHZlcnNpb249XCIxLjFcIiBpZD1cImxvYWRlci0xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHg9XCIwcHhcIiB5PVwiMHB4XCJcclxuICAgICB3aWR0aD1cIjIwcHhcIiBoZWlnaHQ9XCIyMHB4XCIgdmlld0JveD1cIjAgMCA1MCA1MFwiIHN0eWxlPVwiZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MCA1MDtcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxyXG4gICAgICA8cGF0aCBmaWxsPVwiI2ZmZlwiIGQ9XCJNNDMuOTM1LDI1LjE0NWMwLTEwLjMxOC04LjM2NC0xOC42ODMtMTguNjgzLTE4LjY4M2MtMTAuMzE4LDAtMTguNjgzLDguMzY1LTE4LjY4MywxOC42ODNoNC4wNjhjMC04LjA3MSw2LjU0My0xNC42MTUsMTQuNjE1LTE0LjYxNWM4LjA3MiwwLDE0LjYxNSw2LjU0MywxNC42MTUsMTQuNjE1SDQzLjkzNXpcIj5cclxuICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVUeXBlPVwieG1sXCJcclxuICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJ0cmFuc2Zvcm1cIlxyXG4gICAgICAgICAgdHlwZT1cInJvdGF0ZVwiXHJcbiAgICAgICAgICBmcm9tPVwiMCAyNSAyNVwiXHJcbiAgICAgICAgICB0bz1cIjM2MCAyNSAyNVwiXHJcbiAgICAgICAgICBkdXI9XCIwLjZzXCJcclxuICAgICAgICAgIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiLz5cclxuICAgICAgPC9wYXRoPlxyXG4gICAgPC9zdmc+XHJcbiAgICA8bmctdGVtcGxhdGUgI2ljb25UZW1wbGF0ZT5cclxuICAgICAgPGkgKm5nSWY9XCJpY29uXCIgW25nQ2xhc3NdPVwiaWNvblwiIFtzdHlsZS5jb2xvcl09XCJjb2xvckljb25cIiBbc3R5bGUuZm9udC1zaXplLnB4XT1cImljb25Gb250U2l6ZVwiPjwvaT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICB7eyBsYWJlbCB9fVxyXG4gICAgPGkgKm5nSWY9XCJpY29uTmV4dFwiIFtzdHlsZS5jb2xvcl09XCJjb2xvckljb25cIiBbbmdDbGFzc109XCJpY29uTmV4dFwiIFtzdHlsZS5mb250LXNpemUucHhdPVwiaWNvbkZvbnRTaXplXCI+PC9pPlxyXG4gIDwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cIndhYy1idXR0b25fX2FuaW1hdGlvblwiIFtzdHlsZS5tYXhXaWR0aF09XCJidXR0b25NYXhXaWR0aFwiIFtzdHlsZS53aWR0aF09XCJidXR0b25XaWR0aCArICdweCdcIj5cclxuICAgIDxzcGFuICNjYWxjdWxXaWR0aCBjbGFzcz1cIndhYy1idXR0b25fX2FuaW1hdGlvbl9fdGV4dFwiIFtpbm5lckhUTUxdPVwiYW5pbWF0aW9uVGV4dFwiPjwvc3Bhbj5cclxuICA8L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJ3YWMtYnV0dG9uX19jb25maXJtRGVsZXRlXCIgW3N0eWxlLm1heFdpZHRoXT1cImJ1dHRvbk1heFdpZHRoRGVsZXRlXCIgW3N0eWxlLndpZHRoXT1cImJ1dHRvbldpZHRoRGVsZXRlICsgJ3B4J1wiPlxyXG4gICAgPHNwYW4gI2NhbGN1bFdpZHRoRGVsZXRlIGNsYXNzPVwid2FjLWJ1dHRvbl9fY29uZmlybURlbGV0ZV9fdGV4dFwiIFtpbm5lckhUTUxdPVwiY29uZmlybURlbGV0ZVRleHRcIj48L3NwYW4+XHJcbiAgPC9zcGFuPlxyXG4gIDxzcGFuICpuZ0lmPVwiY29pblwiIGNsYXNzPVwid2FjLWJ1dHRvbl9fY29pblwiPjxpIGNsYXNzPVwiZmEtc29saWQgZmEtY29pbi1mcm9udFwiPjwvaT48c3BhbiBbaW5uZXJIVE1MXT1cImNvaW5cIj48L3NwYW4+PC9zcGFuPlxyXG4gIDxzcGFuXHJcbiAgICBjbGFzcz1cIndhYy1idXR0b25fX2xvYWRlclwiXHJcbiAgICBbbmdDbGFzc109XCJleHRyYUNsYXNzZXMuaW5jbHVkZXMoJ2lzLW91dGxpbmVkJykgPyAnb3V0bGluZWQnIDogJydcIlxyXG4gICAgKm5nSWY9XCJpc0xvYWRpbmdcIlxyXG4gICAgW3N0eWxlLndpZHRoXT1cImN1cnJlbnRMb2FkaW5nICsgJyUnXCJcclxuICA+XHJcbiAgPC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwid2FjLWJ1dHRvbl9fdG9vbHRpcHMge3sgdG9vbHRpcFBvc2l0aW9uIH19XCIgW25nQ2xhc3NdPVwieydvbmVsaW5lJzogdG9vbHRpcE9uZWxpbmV9XCIgW3N0eWxlLm1pbldpZHRoXT1cInRvb2x0aXBXaWR0aFwiICpuZ0lmPVwidG9vbHRpcFwiPlxyXG4gICAge3sgdG9vbHRpcCB9fVxyXG4gIDwvc3Bhbj5cclxuPC9hPlxyXG4iXX0=
@@ -1,237 +0,0 @@
1
- import { DatePipe } from '@angular/common';
2
- import { Component, Input, EventEmitter, Output, ChangeDetectionStrategy, ViewChild, ViewEncapsulation } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { opacityAnimation } from '../../animations/show/opacity.animation';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "@angular/forms";
8
- import * as i3 from "@wizishop/ng-wizi-bulma";
9
- import * as i4 from "../../directives/auto-hide/auto-hide.directive";
10
- import * as i5 from "../../directives/zindex-toggle/zindex-toggle.directive";
11
- import * as i6 from "../../directives/keyboard-events/only-numbers.directive";
12
- import * as i7 from "../optional-disable-container/optional-disable-container.component";
13
- import * as i8 from "@ngx-translate/core";
14
- export class CalendarComponent {
15
- set options(options) {
16
- this._options = options;
17
- if (this.isBulmaDatePickerExists()) {
18
- this.updateBulmaDatePickerOptions(options);
19
- }
20
- }
21
- get options() {
22
- return this._options;
23
- }
24
- set dateSelected(dateSelected) {
25
- if (this.disabled) {
26
- return;
27
- }
28
- this._dateSelected = new Date(dateSelected); // trigger change detection for pure pipe
29
- }
30
- get dateSelected() {
31
- return this._dateSelected;
32
- }
33
- set calendarMinutes(calendarMinutes) {
34
- if (!this.dateSelected) {
35
- this.dateSelected = new Date();
36
- }
37
- const minutes = this.formatTime(calendarMinutes, 0, 59);
38
- this.dateSelected.setMinutes(minutes);
39
- this.dateSelected = this.dateSelected; // trigger change detection
40
- this.minutes.nativeElement.value = this.datePipe.transform(this.dateSelected, 'mm'); // force to update the input value
41
- this.triggerDateSelectedChange();
42
- }
43
- get calendarMinutes() {
44
- return this.datePipe.transform(this.dateSelected ?? new Date(), 'mm');
45
- }
46
- set calendarHours(calendarHours) {
47
- if (!this.dateSelected) {
48
- this.dateSelected = new Date();
49
- }
50
- const hours = this.formatTime(calendarHours, 0, 23);
51
- this.dateSelected.setHours(hours);
52
- this.dateSelected = this.dateSelected; // trigger change detection
53
- this.hours.nativeElement.value = this.datePipe.transform(this.dateSelected, 'HH'); // force to update the input value
54
- this.triggerDateSelectedChange();
55
- }
56
- get calendarHours() {
57
- return this.datePipe.transform(this.dateSelected ?? new Date(), 'HH');
58
- }
59
- constructor(datePipe) {
60
- this.datePipe = datePipe;
61
- this.boldLabel = false; // todo remove when label will be a ng-content
62
- this.type = 'input';
63
- this._options = {
64
- displayMode: 'inline',
65
- showHeader: false,
66
- showFooter: true,
67
- };
68
- this.position = 'bottom';
69
- this.dateSelectedChange = new EventEmitter();
70
- this.typeDate = 'datetime-local';
71
- this.noMargin = false;
72
- this.disabled = false;
73
- this.changeData = new EventEmitter();
74
- this.open = false;
75
- this.startLabel = '';
76
- this.endLabel = '';
77
- // ControlValueAccessor methods
78
- this.onChange = () => { };
79
- this.onTouch = () => { };
80
- }
81
- ngOnChanges(changes) {
82
- if (changes.label || changes.type) {
83
- this.setCalendarLabel();
84
- }
85
- }
86
- onChangeDate(selectedDates) {
87
- if (this.disabled) {
88
- return;
89
- }
90
- if (!this.dateSelected) {
91
- this.dateSelected = new Date();
92
- }
93
- selectedDates.startDate.setHours(this.dateSelected.getHours());
94
- selectedDates.startDate.setMinutes(this.dateSelected.getMinutes());
95
- this.dateSelected = selectedDates.startDate;
96
- this.triggerDateSelectedChange();
97
- }
98
- triggerDateSelectedChange() {
99
- this.onChange(this.dateSelected);
100
- this.dateSelectedChange.emit(this.dateSelected);
101
- this.triggerChange({
102
- startDate: this.dateSelected,
103
- endDate: this.dateSelected
104
- });
105
- }
106
- triggerChange(event) {
107
- this.changeData.emit(event);
108
- }
109
- openCalendar(value = null) {
110
- if (this.disabled) {
111
- return;
112
- }
113
- if (value === 'close') {
114
- if (this.open) {
115
- this.open = false;
116
- this.onTouch();
117
- }
118
- }
119
- else {
120
- this.open = !this.open;
121
- }
122
- }
123
- setCalendarLabel() {
124
- if (this.type === 'edit' && this.label) {
125
- const splitLabel = this.label.split('{x}');
126
- if (splitLabel.length > 1) {
127
- this.startLabel = splitLabel[0];
128
- this.endLabel = splitLabel[1];
129
- }
130
- else {
131
- this.startLabel = this.label;
132
- }
133
- }
134
- }
135
- incrementMinutes($event) {
136
- this.calendarMinutes = parseInt(this.calendarMinutes, 10) + 1 + '';
137
- $event.preventDefault();
138
- }
139
- decrementsMinutes($event) {
140
- this.calendarMinutes = parseInt(this.calendarMinutes, 10) - 1 + '';
141
- $event.preventDefault();
142
- }
143
- incrementHours($event) {
144
- this.calendarHours = parseInt(this.calendarHours, 10) + 1 + '';
145
- $event.preventDefault();
146
- }
147
- decrementHours($event) {
148
- this.calendarHours = parseInt(this.calendarHours, 10) - 1 + '';
149
- $event.preventDefault();
150
- }
151
- /*
152
- Ensure that the input value is a number and that it is between min and max
153
- */
154
- formatTime(time, min = 0, max = 59) {
155
- let timeNumber = typeof time === 'string' ? parseInt(time, 10) : time;
156
- timeNumber = timeNumber > max ? min : timeNumber;
157
- timeNumber = timeNumber < min ? max : timeNumber;
158
- timeNumber = parseInt(('' + timeNumber).slice(-2)); // keeps only the last 2 digits
159
- return timeNumber;
160
- }
161
- updateBulmaDatePickerOptions(options) {
162
- const bulmaCalendarDatePicker = this.datePicker['bulmaCalendar'].datePicker;
163
- bulmaCalendarDatePicker.min = options.minDate;
164
- bulmaCalendarDatePicker.max = options.maxDate;
165
- bulmaCalendarDatePicker.refresh();
166
- }
167
- isBulmaDatePickerExists() {
168
- return this.datePicker && this.datePicker['bulmaCalendar'] && this.datePicker['bulmaCalendar'].datePicker;
169
- }
170
- writeValue(date) {
171
- if (!date) {
172
- return;
173
- }
174
- this.dateSelected = date;
175
- }
176
- registerOnChange(fn) {
177
- this.onChange = fn;
178
- }
179
- registerOnTouched(fn) {
180
- this.onTouch = fn;
181
- }
182
- setDisabledState(isDisabled) {
183
- this.disabled = isDisabled;
184
- }
185
- }
186
- CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
187
- CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: CalendarComponent, selector: "wac-calendar", inputs: { label: "label", boldLabel: "boldLabel", type: "type", options: "options", position: "position", dateSelected: "dateSelected", typeDate: "typeDate", noMargin: "noMargin", disabled: "disabled" }, outputs: { dateSelectedChange: "dateSelectedChange", changeData: "changeData" }, providers: [
188
- {
189
- provide: NG_VALUE_ACCESSOR,
190
- useExisting: CalendarComponent,
191
- multi: true
192
- },
193
- DatePipe
194
- ], viewQueries: [{ propertyName: "minutes", first: true, predicate: ["minutes"], descendants: true }, { propertyName: "hours", first: true, predicate: ["hours"], descendants: true }, { propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"wac-calendar\"\r\n [ngClass]=\"{\r\n 'wac-calendar--input': type === 'input',\r\n 'wac-calendar--onlyDate': typeDate === 'date',\r\n 'wac-calendar--edit': type === 'edit',\r\n 'wac-calendar--select': type === 'select',\r\n 'wac-calendar--no-margin': noMargin,\r\n 'wac-calendar--open': open\r\n }\"\r\n [zIndexToggle]=\"open\"\r\n>\r\n <p [class]=\"'wac-calendar__label' + (boldLabel ? ' bold' : '')\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\r\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\r\n <wac-optional-disable-container [disabled]=\"disabled\">\r\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\r\n <div class=\"wac-calendar__wrapper\">\r\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__input__icon\">\r\n <i class=\"far fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__input__date\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy'}}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/mm/yyyy' | translate }}</span>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__input__time\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\r\n <i class=\"fal fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\r\n <div class=\"wac-calendar__wrapper__input__time\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/MM/yyyy_HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__select__icon\">\r\n <i class=\"fal fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__select__date\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/MM/yyyy_HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"wac-calendar__absolute\"\r\n [ngClass]=\"{\r\n top: position === 'top',\r\n bottom: position === 'bottom',\r\n left: position === 'left',\r\n right: position === 'right',\r\n 'right-top': position === 'right-top',\r\n 'right-bottom': position === 'right-bottom',\r\n 'left-top': position === 'left-top',\r\n 'left-bottom': position === 'left-bottom',\r\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\r\n }\"\r\n >\r\n <nwb-date-picker #datePicker (change)=\"onChangeDate($event)\" [options]=\"options\">\r\n <input [nwbDatepickerStart]=\"datePicker\" type=\"text\" [nwbDateType]=\"'date'\" [value]=\"dateSelected?.toISOString()\" />\r\n </nwb-date-picker>\r\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\r\n <div class=\"wac-calendar__absolute__time__wrapper\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\r\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"incrementHours($event)\">\r\n <i class=\"fas fa-plus\"></i>\r\n </button>\r\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"decrementHours($event)\">\r\n <i class=\"fas fa-minus\"></i>\r\n </button>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\r\n <input #hours type=\"text\" [(ngModel)]=\"calendarHours\" [wacOnlyNumber]=\"true\"/>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\r\n <input #minutes type=\"text\" [(ngModel)]=\"calendarMinutes\" [wacOnlyNumber]=\"true\"/>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\r\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"incrementMinutes($event)\">\r\n <i class=\"fas fa-plus\"></i>\r\n </button>\r\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"decrementsMinutes($event)\">\r\n <i class=\"fas fa-minus\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </wac-optional-disable-container>\r\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.NwbDatePickerComponent, selector: "nwb-date-picker", inputs: ["options"], outputs: ["change", "clear"] }, { kind: "directive", type: i3.NwbDatePickerInputStartDirective, selector: "input[nwbDatepickerStart]", inputs: ["nwbDatepickerStart"] }, { kind: "directive", type: i3.NwbDatePickerInputDateTypeDirective, selector: "input[nwbDateType]", inputs: ["nwbDateType"] }, { kind: "directive", type: i4.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: i5.ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "directive", type: i6.OnlyNumberDirective, selector: "[wacOnlyNumber]", inputs: ["wacOnlyNumber"] }, { kind: "component", type: i7.OptionalDisableContainerComponent, selector: "wac-optional-disable-container", inputs: ["disabled"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], animations: [opacityAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: CalendarComponent, decorators: [{
196
- type: Component,
197
- args: [{ selector: 'wac-calendar', providers: [
198
- {
199
- provide: NG_VALUE_ACCESSOR,
200
- useExisting: CalendarComponent,
201
- multi: true
202
- },
203
- DatePipe
204
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [opacityAnimation], template: "<div\r\n class=\"wac-calendar\"\r\n [ngClass]=\"{\r\n 'wac-calendar--input': type === 'input',\r\n 'wac-calendar--onlyDate': typeDate === 'date',\r\n 'wac-calendar--edit': type === 'edit',\r\n 'wac-calendar--select': type === 'select',\r\n 'wac-calendar--no-margin': noMargin,\r\n 'wac-calendar--open': open\r\n }\"\r\n [zIndexToggle]=\"open\"\r\n>\r\n <p [class]=\"'wac-calendar__label' + (boldLabel ? ' bold' : '')\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\r\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\r\n <wac-optional-disable-container [disabled]=\"disabled\">\r\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\r\n <div class=\"wac-calendar__wrapper\">\r\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__input__icon\">\r\n <i class=\"far fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__input__date\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy'}}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/mm/yyyy' | translate }}</span>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__input__time\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\r\n <i class=\"fal fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\r\n <div class=\"wac-calendar__wrapper__input__time\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/MM/yyyy_HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\r\n <div class=\"wac-calendar__wrapper__select__icon\">\r\n <i class=\"fal fa-calendar-alt\"></i>\r\n </div>\r\n <div class=\"wac-calendar__wrapper__select__date\">\r\n <span *ngIf=\"dateSelected\" @opacityAnimation>{{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}</span>\r\n <span class=\"placeholder-date\" *ngIf=\"!dateSelected\" @opacityAnimation>{{ 'wac.Date.PlaceHolder.dd/MM/yyyy_HH:mm' | translate }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"wac-calendar__absolute\"\r\n [ngClass]=\"{\r\n top: position === 'top',\r\n bottom: position === 'bottom',\r\n left: position === 'left',\r\n right: position === 'right',\r\n 'right-top': position === 'right-top',\r\n 'right-bottom': position === 'right-bottom',\r\n 'left-top': position === 'left-top',\r\n 'left-bottom': position === 'left-bottom',\r\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\r\n }\"\r\n >\r\n <nwb-date-picker #datePicker (change)=\"onChangeDate($event)\" [options]=\"options\">\r\n <input [nwbDatepickerStart]=\"datePicker\" type=\"text\" [nwbDateType]=\"'date'\" [value]=\"dateSelected?.toISOString()\" />\r\n </nwb-date-picker>\r\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\r\n <div class=\"wac-calendar__absolute__time__wrapper\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\r\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"incrementHours($event)\">\r\n <i class=\"fas fa-plus\"></i>\r\n </button>\r\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"decrementHours($event)\">\r\n <i class=\"fas fa-minus\"></i>\r\n </button>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\r\n <input #hours type=\"text\" [(ngModel)]=\"calendarHours\" [wacOnlyNumber]=\"true\"/>\r\n </div>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\r\n <input #minutes type=\"text\" [(ngModel)]=\"calendarMinutes\" [wacOnlyNumber]=\"true\"/>\r\n </div>\r\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\r\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"incrementMinutes($event)\">\r\n <i class=\"fas fa-plus\"></i>\r\n </button>\r\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"decrementsMinutes($event)\">\r\n <i class=\"fas fa-minus\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </wac-optional-disable-container>\r\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\r\n</div>\r\n" }]
205
- }], ctorParameters: function () { return [{ type: i1.DatePipe }]; }, propDecorators: { minutes: [{
206
- type: ViewChild,
207
- args: ['minutes']
208
- }], hours: [{
209
- type: ViewChild,
210
- args: ['hours']
211
- }], datePicker: [{
212
- type: ViewChild,
213
- args: ['datePicker']
214
- }], label: [{
215
- type: Input
216
- }], boldLabel: [{
217
- type: Input
218
- }], type: [{
219
- type: Input
220
- }], options: [{
221
- type: Input
222
- }], position: [{
223
- type: Input
224
- }], dateSelected: [{
225
- type: Input
226
- }], dateSelectedChange: [{
227
- type: Output
228
- }], typeDate: [{
229
- type: Input
230
- }], noMargin: [{
231
- type: Input
232
- }], disabled: [{
233
- type: Input
234
- }], changeData: [{
235
- type: Output
236
- }] } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUE0Qix1QkFBdUIsRUFBRSxTQUFTLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEssT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7O0FBaUIzRSxNQUFNLE9BQU8saUJBQWlCO0lBZTVCLElBQ0ksT0FBTyxDQUFDLE9BQXVDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBV0QsSUFDSSxZQUFZLENBQUMsWUFBa0I7UUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyx5Q0FBeUM7SUFDeEYsQ0FBQztJQUNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBaUJELElBQUksZUFBZSxDQUFDLGVBQXVCO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUNoQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQywyQkFBMkI7UUFDbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7UUFDdkgsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsYUFBcUI7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1NBQ2hDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLDJCQUEyQjtRQUNsRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztRQUNySCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFyRnRDLGNBQVMsR0FBWSxLQUFLLENBQUMsQ0FBQyw4Q0FBOEM7UUFHMUUsU0FBSSxHQUFnQyxPQUFPLENBQUM7UUFjNUMsYUFBUSxHQUFvQztZQUMxQyxXQUFXLEVBQUUsUUFBUTtZQUNyQixVQUFVLEVBQUUsS0FBSztZQUNqQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDO1FBR0YsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQWNWLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHbEQsYUFBUSxHQUEyQyxnQkFBZ0IsQ0FBQztRQUVwRSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRVIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXVDLENBQUM7UUFDL0UsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQThJZCwrQkFBK0I7UUFFL0IsYUFBUSxHQUEwQixHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFM0MsWUFBTyxHQUFlLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQS9HVSxDQUFDO0lBRTFDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtZQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsYUFBaUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUNoQztRQUVELGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvRCxhQUFhLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFbkUsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyx5QkFBeUI7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDNUIsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBMEM7UUFDdEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSTtRQUV2QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBRUQsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFO1lBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDYixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFDbEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2hCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDdEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9CO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUM5QjtTQUNGO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWE7UUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ25FLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBYTtRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkUsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYTtRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0QsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYTtRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0QsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7TUFFRTtJQUNNLFVBQVUsQ0FBQyxJQUFxQixFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUU7UUFDekQsSUFBSSxVQUFVLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdEUsVUFBVSxHQUFHLFVBQVUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ2pELFVBQVUsR0FBRyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNqRCxVQUFVLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQywrQkFBK0I7UUFDbkYsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLDRCQUE0QixDQUFDLE9BQXVDO1FBQzFFLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDNUUsdUJBQXVCLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDOUMsdUJBQXVCLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDOUMsdUJBQXVCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUM1RyxDQUFDO0lBUUQsVUFBVSxDQUFDLElBQVU7UUFDbkIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOzs4R0E5TlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsb1VBWmpCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxpQkFBaUI7WUFDOUIsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELFFBQVE7S0FDVCwrVENoQkgsbzZMQXVHQSx5ekREcEZjLENBQUMsZ0JBQWdCLENBQUM7MkZBRW5CLGlCQUFpQjtrQkFmN0IsU0FBUzsrQkFDRSxjQUFjLGFBRWI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxtQkFBbUI7NEJBQzlCLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELFFBQVE7cUJBQ1QsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsQ0FBQyxnQkFBZ0IsQ0FBQzsrRkFJUixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0EsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNPLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFHdkIsS0FBSztzQkFESixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSUYsT0FBTztzQkFEVixLQUFLO2dCQW1CTixRQUFRO3NCQURQLEtBQUs7Z0JBSUYsWUFBWTtzQkFEZixLQUFLO2dCQVlJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFHUCxRQUFRO3NCQURQLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOd2JEYXRlUGlja2VyQ29tcG9uZW50LCBOd2JEYXRlUGlja2VyRXZlbnQsIE53YkRhdGVQaWNrZXJPcHRpb25zIH0gZnJvbSAnQHdpemlzaG9wL25nLXdpemktYnVsbWEnO1xyXG5pbXBvcnQgeyBvcGFjaXR5QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vYW5pbWF0aW9ucy9zaG93L29wYWNpdHkuYW5pbWF0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd2FjLWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IENhbGVuZGFyQ29tcG9uZW50LFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIERhdGVQaXBlXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFtvcGFjaXR5QW5pbWF0aW9uXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAvLyEgQXQgdGhlIG1vbWVudCwgdGhlIGNvbXBvbmVudCBoYW5kbGUgb25seSBvbmUgZGF0ZSAobm90IGEgcmFuZ2UpXHJcbiAgQFZpZXdDaGlsZCgnbWludXRlcycpIG1pbnV0ZXM6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaG91cnMnKSBob3VyczogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlcjogTndiRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBsYWJlbDogc3RyaW5nIHwgbnVsbDsgLy8gdG9kbyB1c2UgbmctY29udGVudCBpbnN0ZWFkXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYm9sZExhYmVsOiBib29sZWFuID0gZmFsc2U7IC8vIHRvZG8gcmVtb3ZlIHdoZW4gbGFiZWwgd2lsbCBiZSBhIG5nLWNvbnRlbnRcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlOiAnaW5wdXQnIHwgJ2VkaXQnIHwgJ3NlbGVjdCcgPSAnaW5wdXQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IFJlYWRvbmx5PE53YkRhdGVQaWNrZXJPcHRpb25zPikge1xyXG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICBpZiAodGhpcy5pc0J1bG1hRGF0ZVBpY2tlckV4aXN0cygpKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQnVsbWFEYXRlUGlja2VyT3B0aW9ucyhvcHRpb25zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBvcHRpb25zKCkgOiBSZWFkb25seTxOd2JEYXRlUGlja2VyT3B0aW9ucz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBfb3B0aW9uczogUmVhZG9ubHk8TndiRGF0ZVBpY2tlck9wdGlvbnM+ICA9IHtcclxuICAgIGRpc3BsYXlNb2RlOiAnaW5saW5lJyxcclxuICAgIHNob3dIZWFkZXI6IGZhbHNlLFxyXG4gICAgc2hvd0Zvb3RlcjogdHJ1ZSxcclxuICB9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBvc2l0aW9uID0gJ2JvdHRvbSc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRhdGVTZWxlY3RlZChkYXRlU2VsZWN0ZWQ6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2RhdGVTZWxlY3RlZCA9IG5ldyBEYXRlKGRhdGVTZWxlY3RlZCk7IC8vIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBmb3IgcHVyZSBwaXBlXHJcbiAgfVxyXG4gIGdldCBkYXRlU2VsZWN0ZWQoKSA6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGVTZWxlY3RlZDtcclxuICB9XHJcbiAgX2RhdGVTZWxlY3RlZDogRGF0ZTtcclxuXHJcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlRGF0ZTogJ2RhdGV0aW1lJyB8ICdkYXRldGltZS1sb2NhbCcgfCAnZGF0ZScgPSAnZGF0ZXRpbWUtbG9jYWwnO1xyXG4gIEBJbnB1dCgpXHJcbiAgbm9NYXJnaW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIGNoYW5nZURhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc3RhcnREYXRlOiBEYXRlOyBlbmREYXRlOiBEYXRlOyB9PigpO1xyXG4gIG9wZW4gPSBmYWxzZTtcclxuICBzdGFydExhYmVsID0gJyc7XHJcbiAgZW5kTGFiZWwgPSAnJztcclxuXHJcbiAgc2V0IGNhbGVuZGFyTWludXRlcyhjYWxlbmRhck1pbnV0ZXM6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmRhdGVTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtaW51dGVzID0gdGhpcy5mb3JtYXRUaW1lKGNhbGVuZGFyTWludXRlcywgMCwgNTkpO1xyXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuc2V0TWludXRlcyhtaW51dGVzKTtcclxuXHJcbiAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IHRoaXMuZGF0ZVNlbGVjdGVkOyAvLyB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cclxuICAgIHRoaXMubWludXRlcy5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VsZWN0ZWQsICdtbScpOyAvLyBmb3JjZSB0byB1cGRhdGUgdGhlIGlucHV0IHZhbHVlXHJcbiAgICB0aGlzLnRyaWdnZXJEYXRlU2VsZWN0ZWRDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIGdldCBjYWxlbmRhck1pbnV0ZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGVTZWxlY3RlZCA/PyBuZXcgRGF0ZSgpLCAnbW0nKTtcclxuICB9XHJcblxyXG4gIHNldCBjYWxlbmRhckhvdXJzKGNhbGVuZGFySG91cnM6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmRhdGVTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaG91cnMgPSB0aGlzLmZvcm1hdFRpbWUoY2FsZW5kYXJIb3VycywgMCwgMjMpO1xyXG5cclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLnNldEhvdXJzKGhvdXJzKTtcclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkID0gdGhpcy5kYXRlU2VsZWN0ZWQ7IC8vIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxyXG4gICAgdGhpcy5ob3Vycy5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VsZWN0ZWQsICdISCcpOyAvLyBmb3JjZSB0byB1cGRhdGUgdGhlIGlucHV0IHZhbHVlXHJcbiAgICB0aGlzLnRyaWdnZXJEYXRlU2VsZWN0ZWRDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIGdldCBjYWxlbmRhckhvdXJzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VsZWN0ZWQgPz8gbmV3IERhdGUoKSwgJ0hIJyk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMubGFiZWwgfHwgY2hhbmdlcy50eXBlKSB7XHJcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJMYWJlbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VEYXRlKHNlbGVjdGVkRGF0ZXM6IE53YkRhdGVQaWNrZXJFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5kYXRlU2VsZWN0ZWQpIHtcclxuICAgICAgdGhpcy5kYXRlU2VsZWN0ZWQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdGVkRGF0ZXMuc3RhcnREYXRlLnNldEhvdXJzKHRoaXMuZGF0ZVNlbGVjdGVkLmdldEhvdXJzKCkpO1xyXG4gICAgc2VsZWN0ZWREYXRlcy5zdGFydERhdGUuc2V0TWludXRlcyh0aGlzLmRhdGVTZWxlY3RlZC5nZXRNaW51dGVzKCkpO1xyXG5cclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkID0gc2VsZWN0ZWREYXRlcy5zdGFydERhdGU7XHJcbiAgICB0aGlzLnRyaWdnZXJEYXRlU2VsZWN0ZWRDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJpZ2dlckRhdGVTZWxlY3RlZENoYW5nZSgpIHtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5kYXRlU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLmRhdGVTZWxlY3RlZCk7XHJcbiAgICB0aGlzLnRyaWdnZXJDaGFuZ2Uoe1xyXG4gICAgICBzdGFydERhdGU6IHRoaXMuZGF0ZVNlbGVjdGVkLFxyXG4gICAgICBlbmREYXRlOiB0aGlzLmRhdGVTZWxlY3RlZFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyQ2hhbmdlKGV2ZW50OiB7IHN0YXJ0RGF0ZTogRGF0ZTsgZW5kRGF0ZTogRGF0ZTsgfSkge1xyXG4gICAgdGhpcy5jaGFuZ2VEYXRhLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkNhbGVuZGFyKHZhbHVlID0gbnVsbCkge1xyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodmFsdWUgPT09ICdjbG9zZScpIHtcclxuICAgICAgaWYgKHRoaXMub3Blbikge1xyXG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDYWxlbmRhckxhYmVsKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2VkaXQnICYmIHRoaXMubGFiZWwpIHtcclxuICAgICAgY29uc3Qgc3BsaXRMYWJlbCA9IHRoaXMubGFiZWwuc3BsaXQoJ3t4fScpO1xyXG4gICAgICBpZiAoc3BsaXRMYWJlbC5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydExhYmVsID0gc3BsaXRMYWJlbFswXTtcclxuICAgICAgICB0aGlzLmVuZExhYmVsID0gc3BsaXRMYWJlbFsxXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0YXJ0TGFiZWwgPSB0aGlzLmxhYmVsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmNyZW1lbnRNaW51dGVzKCRldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuY2FsZW5kYXJNaW51dGVzID0gcGFyc2VJbnQodGhpcy5jYWxlbmRhck1pbnV0ZXMsIDEwKSArIDEgKyAnJztcclxuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgZGVjcmVtZW50c01pbnV0ZXMoJGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5jYWxlbmRhck1pbnV0ZXMgPSBwYXJzZUludCh0aGlzLmNhbGVuZGFyTWludXRlcywgMTApIC0gMSArICcnO1xyXG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBpbmNyZW1lbnRIb3VycygkZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmNhbGVuZGFySG91cnMgPSBwYXJzZUludCh0aGlzLmNhbGVuZGFySG91cnMsIDEwKSArIDEgKyAnJztcclxuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgZGVjcmVtZW50SG91cnMoJGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5jYWxlbmRhckhvdXJzID0gcGFyc2VJbnQodGhpcy5jYWxlbmRhckhvdXJzLCAxMCkgLSAxICsgJyc7XHJcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBFbnN1cmUgdGhhdCB0aGUgaW5wdXQgdmFsdWUgaXMgYSBudW1iZXIgYW5kIHRoYXQgaXQgaXMgYmV0d2VlbiBtaW4gYW5kIG1heFxyXG4gICovXHJcbiAgcHJpdmF0ZSBmb3JtYXRUaW1lKHRpbWU6IHN0cmluZyB8IG51bWJlciwgbWluID0gMCwgbWF4ID0gNTkpIHtcclxuICAgIGxldCB0aW1lTnVtYmVyID0gdHlwZW9mIHRpbWUgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQodGltZSwgMTApIDogdGltZTtcclxuICAgIHRpbWVOdW1iZXIgPSB0aW1lTnVtYmVyID4gbWF4ID8gbWluIDogdGltZU51bWJlcjtcclxuICAgIHRpbWVOdW1iZXIgPSB0aW1lTnVtYmVyIDwgbWluID8gbWF4IDogdGltZU51bWJlcjtcclxuICAgIHRpbWVOdW1iZXIgPSBwYXJzZUludCgoJycgKyB0aW1lTnVtYmVyKS5zbGljZSgtMikpOyAvLyBrZWVwcyBvbmx5IHRoZSBsYXN0IDIgZGlnaXRzXHJcbiAgICByZXR1cm4gdGltZU51bWJlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQnVsbWFEYXRlUGlja2VyT3B0aW9ucyhvcHRpb25zOiBSZWFkb25seTxOd2JEYXRlUGlja2VyT3B0aW9ucz4pIHtcclxuICAgIGNvbnN0IGJ1bG1hQ2FsZW5kYXJEYXRlUGlja2VyID0gdGhpcy5kYXRlUGlja2VyWydidWxtYUNhbGVuZGFyJ10uZGF0ZVBpY2tlcjtcclxuICAgIGJ1bG1hQ2FsZW5kYXJEYXRlUGlja2VyLm1pbiA9IG9wdGlvbnMubWluRGF0ZTtcclxuICAgIGJ1bG1hQ2FsZW5kYXJEYXRlUGlja2VyLm1heCA9IG9wdGlvbnMubWF4RGF0ZTtcclxuICAgIGJ1bG1hQ2FsZW5kYXJEYXRlUGlja2VyLnJlZnJlc2goKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNCdWxtYURhdGVQaWNrZXJFeGlzdHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlja2VyICYmIHRoaXMuZGF0ZVBpY2tlclsnYnVsbWFDYWxlbmRhciddICYmIHRoaXMuZGF0ZVBpY2tlclsnYnVsbWFDYWxlbmRhciddLmRhdGVQaWNrZXI7XHJcbiAgfVxyXG5cclxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBtZXRob2RzXHJcblxyXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgb25Ub3VjaDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICB3cml0ZVZhbHVlKGRhdGU6IERhdGUpOiB2b2lkIHtcclxuICAgIGlmICghZGF0ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IGRhdGU7XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSl7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpe1xyXG4gICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwid2FjLWNhbGVuZGFyXCJcclxuICBbbmdDbGFzc109XCJ7XHJcbiAgICAnd2FjLWNhbGVuZGFyLS1pbnB1dCc6IHR5cGUgPT09ICdpbnB1dCcsXHJcbiAgICAnd2FjLWNhbGVuZGFyLS1vbmx5RGF0ZSc6IHR5cGVEYXRlID09PSAnZGF0ZScsXHJcbiAgICAnd2FjLWNhbGVuZGFyLS1lZGl0JzogdHlwZSA9PT0gJ2VkaXQnLFxyXG4gICAgJ3dhYy1jYWxlbmRhci0tc2VsZWN0JzogdHlwZSA9PT0gJ3NlbGVjdCcsXHJcbiAgICAnd2FjLWNhbGVuZGFyLS1uby1tYXJnaW4nOiBub01hcmdpbixcclxuICAgICd3YWMtY2FsZW5kYXItLW9wZW4nOiBvcGVuXHJcbiAgfVwiXHJcbiAgW3pJbmRleFRvZ2dsZV09XCJvcGVuXCJcclxuPlxyXG4gIDxwIFtjbGFzc109XCInd2FjLWNhbGVuZGFyX19sYWJlbCcgKyAoYm9sZExhYmVsID8gJyBib2xkJyA6ICcnKVwiICpuZ0lmPVwibGFiZWwgJiYgKHR5cGUgPT09ICdpbnB1dCcgfHwgdHlwZSA9PT0gJ3NlbGVjdCcpXCIgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCI+e3sgbGFiZWwgfX08L3A+XHJcbiAgPHAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3N0YXJ0TGFiZWxcIiAqbmdJZj1cInR5cGUgPT09ICdlZGl0J1wiPnt7IHN0YXJ0TGFiZWwgfX08L3A+XHJcbiAgPHdhYy1vcHRpb25hbC1kaXNhYmxlLWNvbnRhaW5lciBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2F1dG9IaWRlXCIgd3pBdXRvSGlkZSAoY2xpY2tPdXRzaWRlKT1cIm9wZW5DYWxlbmRhcignY2xvc2UnKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRcIiAqbmdJZj1cInR5cGUgPT09ICdpbnB1dCdcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2lucHV0X19pY29uXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNhbGVuZGFyLWFsdFwiPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRfX2RhdGVcIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRlU2VsZWN0ZWRcIiBAb3BhY2l0eUFuaW1hdGlvbj57eyBkYXRlU2VsZWN0ZWQgfCBkYXRlOiAnZGQvTU0veXl5eSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlci1kYXRlXCIgKm5nSWY9XCIhZGF0ZVNlbGVjdGVkXCIgQG9wYWNpdHlBbmltYXRpb24+e3sgJ3dhYy5EYXRlLlBsYWNlSG9sZGVyLmRkL21tL3l5eXknIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19pbnB1dF9fdGltZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGVTZWxlY3RlZFwiIEBvcGFjaXR5QW5pbWF0aW9uPnt7IGRhdGVTZWxlY3RlZCB8IGRhdGU6ICdISDptbScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGxhY2Vob2xkZXItZGF0ZVwiICpuZ0lmPVwiIWRhdGVTZWxlY3RlZFwiIEBvcGFjaXR5QW5pbWF0aW9uPnt7ICd3YWMuRGF0ZS5QbGFjZUhvbGRlci5ISDptbScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19lZGl0SW5QbGFjZVwiICpuZ0lmPVwidHlwZSA9PT0gJ2VkaXQnXCIgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19lZGl0SW5QbGFjZV9faWNvblwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS1jYWxlbmRhci1hbHRcIj48L2k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2VkaXRJblBsYWNlX19kYXRlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2lucHV0X190aW1lXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRlU2VsZWN0ZWRcIiBAb3BhY2l0eUFuaW1hdGlvbj57eyBkYXRlU2VsZWN0ZWQgfCBkYXRlOiAnZGQvTU0veXl5eSBISDptbScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlci1kYXRlXCIgKm5nSWY9XCIhZGF0ZVNlbGVjdGVkXCIgQG9wYWNpdHlBbmltYXRpb24+e3sgJ3dhYy5EYXRlLlBsYWNlSG9sZGVyLmRkL01NL3l5eXlfSEg6bW0nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX3NlbGVjdFwiICpuZ0lmPVwidHlwZSA9PT0gJ3NlbGVjdCdcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX3NlbGVjdF9faWNvblwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS1jYWxlbmRhci1hbHRcIj48L2k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX3NlbGVjdF9fZGF0ZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGVTZWxlY3RlZFwiIEBvcGFjaXR5QW5pbWF0aW9uPnt7IGRhdGVTZWxlY3RlZCB8IGRhdGU6ICdkZC9NTS95eXl5IEhIOm1tJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlci1kYXRlXCIgKm5nSWY9XCIhZGF0ZVNlbGVjdGVkXCIgQG9wYWNpdHlBbmltYXRpb24+e3sgJ3dhYy5EYXRlLlBsYWNlSG9sZGVyLmRkL01NL3l5eXlfSEg6bW0nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICB0b3A6IHBvc2l0aW9uID09PSAndG9wJyxcclxuICAgICAgICAgIGJvdHRvbTogcG9zaXRpb24gPT09ICdib3R0b20nLFxyXG4gICAgICAgICAgbGVmdDogcG9zaXRpb24gPT09ICdsZWZ0JyxcclxuICAgICAgICAgIHJpZ2h0OiBwb3NpdGlvbiA9PT0gJ3JpZ2h0JyxcclxuICAgICAgICAgICdyaWdodC10b3AnOiBwb3NpdGlvbiA9PT0gJ3JpZ2h0LXRvcCcsXHJcbiAgICAgICAgICAncmlnaHQtYm90dG9tJzogcG9zaXRpb24gPT09ICdyaWdodC1ib3R0b20nLFxyXG4gICAgICAgICAgJ2xlZnQtdG9wJzogcG9zaXRpb24gPT09ICdsZWZ0LXRvcCcsXHJcbiAgICAgICAgICAnbGVmdC1ib3R0b20nOiBwb3NpdGlvbiA9PT0gJ2xlZnQtYm90dG9tJyxcclxuICAgICAgICAgICd3aXRoLXRpbWUnOiB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJyB8fCB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lJ1xyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG53Yi1kYXRlLXBpY2tlciAjZGF0ZVBpY2tlciAoY2hhbmdlKT1cIm9uQ2hhbmdlRGF0ZSgkZXZlbnQpXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiPlxyXG4gICAgICAgICAgPGlucHV0IFtud2JEYXRlcGlja2VyU3RhcnRdPVwiZGF0ZVBpY2tlclwiIHR5cGU9XCJ0ZXh0XCIgW253YkRhdGVUeXBlXT1cIidkYXRlJ1wiIFt2YWx1ZV09XCJkYXRlU2VsZWN0ZWQ/LnRvSVNPU3RyaW5nKClcIiAvPlxyXG4gICAgICAgIDwvbndiLWRhdGUtcGlja2VyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lXCIgKm5nSWY9XCJ0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJyB8fCB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzX19sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9faG91cnNfX2J0blwiIChjbGljayk9XCJpbmNyZW1lbnRIb3VycygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19ob3Vyc19fYnRuXCIgKGNsaWNrKT1cImRlY3JlbWVudEhvdXJzKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbWludXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9faG91cnNfX3JpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgI2hvdXJzIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJjYWxlbmRhckhvdXJzXCIgW3dhY09ubHlOdW1iZXJdPVwidHJ1ZVwiLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19taW51dGVzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX21pbnV0ZXNfX2xlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCAjbWludXRlcyB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiY2FsZW5kYXJNaW51dGVzXCIgW3dhY09ubHlOdW1iZXJdPVwidHJ1ZVwiLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9fbWludXRlc19fcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19taW51dGVzX19idG5cIiAoY2xpY2spPVwiaW5jcmVtZW50TWludXRlcygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19taW51dGVzX19idG5cIiAoY2xpY2spPVwiZGVjcmVtZW50c01pbnV0ZXMoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1taW51c1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvd2FjLW9wdGlvbmFsLWRpc2FibGUtY29udGFpbmVyPlxyXG4gIDxwIGNsYXNzPVwid2FjLWNhbGVuZGFyX19lbmRMYWJlbFwiICpuZ0lmPVwidHlwZSA9PT0gJ2VkaXQnXCI+e3sgZW5kTGFiZWwgfX08L3A+XHJcbjwvZGl2PlxyXG4iXX0=