design-angular-kit 1.2.1 → 1.2.2

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 (546) hide show
  1. package/README.md +461 -0
  2. package/esm2022/design-angular-kit.mjs +5 -0
  3. package/esm2022/lib/abstracts/abstract-form.component.mjs +186 -0
  4. package/esm2022/lib/abstracts/abstract.component.mjs +46 -0
  5. package/esm2022/lib/components/core/accordion/accordion.component.mjs +39 -0
  6. package/esm2022/lib/components/core/alert/alert.component.mjs +71 -0
  7. package/esm2022/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.mjs +43 -0
  8. package/esm2022/lib/components/core/avatar/avatar-group/avatar-group.component.mjs +40 -0
  9. package/esm2022/lib/components/core/avatar/avatar.directive.mjs +78 -0
  10. package/esm2022/lib/components/core/avatar/avatar.module.mjs +33 -0
  11. package/esm2022/lib/components/core/badge/badge.directive.mjs +39 -0
  12. package/esm2022/lib/components/core/button/button.directive.mjs +80 -0
  13. package/esm2022/lib/components/core/callout/callout.component.mjs +64 -0
  14. package/esm2022/lib/components/core/card/card.component.mjs +59 -0
  15. package/esm2022/lib/components/core/carousel/carousel/carousel.component.mjs +84 -0
  16. package/esm2022/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +19 -0
  17. package/esm2022/lib/components/core/carousel/carousel.module.mjs +18 -0
  18. package/esm2022/lib/components/core/chip/chip.component.mjs +136 -0
  19. package/esm2022/lib/components/core/collapse/collapse.component.mjs +116 -0
  20. package/esm2022/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +27 -0
  21. package/esm2022/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +11 -0
  22. package/esm2022/lib/components/core/dimmer/dimmer.component.mjs +55 -0
  23. package/esm2022/lib/components/core/dimmer/dimmer.module.mjs +19 -0
  24. package/esm2022/lib/components/core/dropdown/dropdown/dropdown.component.mjs +147 -0
  25. package/esm2022/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +70 -0
  26. package/esm2022/lib/components/core/dropdown/dropdown.module.mjs +18 -0
  27. package/esm2022/lib/components/core/forward/forward.directive.mjs +57 -0
  28. package/esm2022/lib/components/core/link/link.component.mjs +42 -0
  29. package/esm2022/lib/components/core/list/list/list.component.mjs +22 -0
  30. package/esm2022/lib/components/core/list/list-item/list-item.component.mjs +56 -0
  31. package/esm2022/lib/components/core/list/list.module.mjs +18 -0
  32. package/esm2022/lib/components/core/modal/modal.component.mjs +194 -0
  33. package/esm2022/lib/components/core/notifications/notifications.component.mjs +111 -0
  34. package/esm2022/lib/components/core/pagination/pagination.component.mjs +130 -0
  35. package/esm2022/lib/components/core/popover/popover.directive.mjs +176 -0
  36. package/esm2022/lib/components/core/progress-bar/progress-bar.component.mjs +34 -0
  37. package/esm2022/lib/components/core/progress-button/progress-button.component.mjs +25 -0
  38. package/esm2022/lib/components/core/spinner/spinner.component.mjs +30 -0
  39. package/esm2022/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +116 -0
  40. package/esm2022/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +22 -0
  41. package/esm2022/lib/components/core/steppers/steppers.module.mjs +18 -0
  42. package/esm2022/lib/components/core/tab/tab-container/tab-container.component.mjs +97 -0
  43. package/esm2022/lib/components/core/tab/tab-item/tab-item.component.mjs +39 -0
  44. package/esm2022/lib/components/core/tab/tab.module.mjs +18 -0
  45. package/esm2022/lib/components/core/table/sort/sort-header/sort-header.component.mjs +134 -0
  46. package/esm2022/lib/components/core/table/sort/sort.directive.mjs +123 -0
  47. package/esm2022/lib/components/core/table/table.component.mjs +45 -0
  48. package/esm2022/lib/components/core/table/table.module.mjs +19 -0
  49. package/esm2022/lib/components/core/timeline/timeline-item/timeline-item.component.mjs +90 -0
  50. package/esm2022/lib/components/core/timeline/timeline.component.mjs +36 -0
  51. package/esm2022/lib/components/core/timeline/timeline.module.mjs +18 -0
  52. package/esm2022/lib/components/core/tooltip/tooltip.directive.mjs +143 -0
  53. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +112 -0
  54. package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +48 -0
  55. package/esm2022/lib/components/form/form.module.mjs +63 -0
  56. package/esm2022/lib/components/form/input/input.component.mjs +190 -0
  57. package/esm2022/lib/components/form/password-input/password-input.component.mjs +149 -0
  58. package/esm2022/lib/components/form/radio-button/radio-button.component.mjs +60 -0
  59. package/esm2022/lib/components/form/range/range.component.mjs +64 -0
  60. package/esm2022/lib/components/form/rating/rating.component.mjs +50 -0
  61. package/esm2022/lib/components/form/select/select.component.mjs +70 -0
  62. package/esm2022/lib/components/form/textarea/textarea.component.mjs +55 -0
  63. package/esm2022/lib/components/form/transfer/store/transfer.reducers.mjs +191 -0
  64. package/esm2022/lib/components/form/transfer/store/transfer.state.mjs +2 -0
  65. package/esm2022/lib/components/form/transfer/store/transfer.store.mjs +70 -0
  66. package/esm2022/lib/components/form/transfer/transfer-list/transfer-list.component.mjs +72 -0
  67. package/esm2022/lib/components/form/transfer/transfer.component.mjs +149 -0
  68. package/esm2022/lib/components/form/transfer/transfer.model.mjs +6 -0
  69. package/esm2022/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +142 -0
  70. package/esm2022/lib/components/form/upload-file-list/upload-file-list.component.mjs +107 -0
  71. package/esm2022/lib/components/navigation/back-button/back-button.component.mjs +67 -0
  72. package/esm2022/lib/components/navigation/back-to-top/back-to-top.component.mjs +68 -0
  73. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +51 -0
  74. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +21 -0
  75. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.module.mjs +18 -0
  76. package/esm2022/lib/components/navigation/header/header.component.mjs +103 -0
  77. package/esm2022/lib/components/navigation/megamenu/megamenu.component.mjs +27 -0
  78. package/esm2022/lib/components/navigation/navbar/navbar/navbar.component.mjs +49 -0
  79. package/esm2022/lib/components/navigation/navbar/navbar-item/navbar-item.component.mjs +11 -0
  80. package/esm2022/lib/components/navigation/navbar/navbar.module.mjs +18 -0
  81. package/esm2022/lib/components/navigation/navscroll/navscroll-list-item.component.mjs +98 -0
  82. package/esm2022/lib/components/navigation/navscroll/navscroll-list-items.component.mjs +44 -0
  83. package/esm2022/lib/components/navigation/navscroll/navscroll.component.mjs +116 -0
  84. package/esm2022/lib/components/navigation/navscroll/navscroll.model.mjs +2 -0
  85. package/esm2022/lib/components/navigation/navscroll/navscroll.store.mjs +68 -0
  86. package/esm2022/lib/components/navigation/navscroll/navscroll.utils.mjs +23 -0
  87. package/esm2022/lib/components/navigation/sidebar/sidebar.component.mjs +50 -0
  88. package/esm2022/lib/components/navigation/skiplink/skiplink/skiplink.component.mjs +27 -0
  89. package/esm2022/lib/components/navigation/skiplink/skiplink-item/skiplink-item.component.mjs +26 -0
  90. package/esm2022/lib/components/navigation/skiplink/skiplink.module.mjs +18 -0
  91. package/esm2022/lib/components/utils/error-page/error-page.component.mjs +74 -0
  92. package/esm2022/lib/components/utils/icon/icon.component.mjs +63 -0
  93. package/esm2022/lib/components/utils/language-switcher/language-switcher.component.mjs +50 -0
  94. package/esm2022/lib/design-angular-kit.module.mjs +233 -0
  95. package/esm2022/lib/enums/colors.enums.mjs +12 -0
  96. package/esm2022/lib/enums/sizes.enum.mjs +9 -0
  97. package/esm2022/lib/interfaces/core.mjs +16 -0
  98. package/esm2022/lib/interfaces/design-angular-kit-config.mjs +7 -0
  99. package/esm2022/lib/interfaces/form.mjs +2 -0
  100. package/esm2022/lib/interfaces/icon.mjs +168 -0
  101. package/esm2022/lib/interfaces/sortable-table.mjs +6 -0
  102. package/esm2022/lib/interfaces/utils.mjs +2 -0
  103. package/esm2022/lib/pipes/date-ago.pipe.mjs +56 -0
  104. package/esm2022/lib/pipes/duration.pipe.mjs +115 -0
  105. package/esm2022/lib/pipes/mark-matching-text.pipe.mjs +48 -0
  106. package/esm2022/lib/provide-design-angular-kit.mjs +64 -0
  107. package/esm2022/lib/services/notification/notification.service.mjs +120 -0
  108. package/esm2022/lib/utils/coercion.mjs +18 -0
  109. package/esm2022/lib/utils/date-utils.mjs +162 -0
  110. package/esm2022/lib/utils/file-utils.mjs +73 -0
  111. package/esm2022/lib/utils/regex.mjs +35 -0
  112. package/esm2022/lib/validators/it-validators.mjs +156 -0
  113. package/esm2022/public_api.mjs +110 -0
  114. package/fesm2022/design-angular-kit.mjs +6731 -0
  115. package/fesm2022/design-angular-kit.mjs.map +1 -0
  116. package/index.d.ts +5 -0
  117. package/lib/abstracts/abstract-form.component.d.ts +87 -0
  118. package/lib/abstracts/abstract.component.d.ts +30 -0
  119. package/lib/components/core/accordion/accordion.component.d.ts +18 -0
  120. package/lib/components/core/alert/alert.component.d.ts +44 -0
  121. package/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.d.ts +29 -0
  122. package/lib/components/core/avatar/avatar-group/avatar-group.component.d.ts +15 -0
  123. package/lib/components/core/avatar/avatar.directive.d.ts +33 -0
  124. package/lib/components/core/avatar/avatar.module.d.ts +9 -0
  125. package/lib/components/core/badge/badge.directive.d.ts +23 -0
  126. package/lib/components/core/button/button.directive.d.ts +48 -0
  127. package/lib/components/core/callout/callout.component.d.ts +50 -0
  128. package/lib/components/core/card/card.component.d.ts +69 -0
  129. package/lib/components/core/carousel/carousel/carousel.component.d.ts +65 -0
  130. package/lib/components/core/carousel/carousel-item/carousel-item.component.d.ts +15 -0
  131. package/lib/components/core/carousel/carousel.module.d.ts +8 -0
  132. package/lib/components/core/chip/chip.component.d.ts +76 -0
  133. package/lib/components/core/collapse/collapse.component.d.ts +67 -0
  134. package/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.d.ts +12 -0
  135. package/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.d.ts +5 -0
  136. package/lib/components/core/dimmer/dimmer.component.d.ts +24 -0
  137. package/lib/components/core/dimmer/dimmer.module.d.ts +9 -0
  138. package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +94 -0
  139. package/lib/components/core/dropdown/dropdown-item/dropdown-item.component.d.ts +46 -0
  140. package/lib/components/core/dropdown/dropdown.module.d.ts +8 -0
  141. package/lib/components/core/forward/forward.directive.d.ts +14 -0
  142. package/lib/components/core/link/link.component.d.ts +35 -0
  143. package/lib/components/core/list/list/list.component.d.ts +24 -0
  144. package/lib/components/core/list/list-item/list-item.component.d.ts +41 -0
  145. package/lib/components/core/list/list.module.d.ts +8 -0
  146. package/lib/components/core/modal/modal.component.d.ts +135 -0
  147. package/lib/components/core/notifications/notifications.component.d.ts +45 -0
  148. package/lib/components/core/pagination/pagination.component.d.ts +92 -0
  149. package/lib/components/core/popover/popover.directive.d.ts +99 -0
  150. package/lib/components/core/progress-bar/progress-bar.component.d.ts +31 -0
  151. package/lib/components/core/progress-button/progress-button.component.d.ts +21 -0
  152. package/lib/components/core/spinner/spinner.component.d.ts +24 -0
  153. package/lib/components/core/steppers/steppers-container/steppers-container.component.d.ts +130 -0
  154. package/lib/components/core/steppers/steppers-item/steppers-item.component.d.ts +24 -0
  155. package/lib/components/core/steppers/steppers.module.d.ts +8 -0
  156. package/lib/components/core/tab/tab-container/tab-container.component.d.ts +60 -0
  157. package/lib/components/core/tab/tab-item/tab-item.component.d.ts +38 -0
  158. package/lib/components/core/tab/tab.module.d.ts +8 -0
  159. package/lib/components/core/table/sort/sort-header/sort-header.component.d.ts +72 -0
  160. package/lib/components/core/table/sort/sort.directive.d.ts +53 -0
  161. package/lib/components/core/table/table.component.d.ts +60 -0
  162. package/lib/components/core/table/table.module.d.ts +9 -0
  163. package/lib/components/core/timeline/timeline-item/timeline-item.component.d.ts +79 -0
  164. package/lib/components/core/timeline/timeline.component.d.ts +21 -0
  165. package/lib/components/core/timeline/timeline.module.d.ts +8 -0
  166. package/lib/components/core/tooltip/tooltip.directive.d.ts +82 -0
  167. package/lib/components/form/autocomplete/autocomplete.component.d.ts +59 -0
  168. package/lib/components/form/checkbox/checkbox.component.d.ts +41 -0
  169. package/lib/components/form/form.module.d.ts +18 -0
  170. package/lib/components/form/input/input.component.d.ts +95 -0
  171. package/lib/components/form/password-input/password-input.component.d.ts +80 -0
  172. package/lib/components/form/radio-button/radio-button.component.d.ts +38 -0
  173. package/lib/components/form/range/range.component.d.ts +42 -0
  174. package/lib/components/form/rating/rating.component.d.ts +24 -0
  175. package/lib/components/form/select/select.component.d.ts +36 -0
  176. package/lib/components/form/textarea/textarea.component.d.ts +34 -0
  177. package/lib/components/form/transfer/store/transfer.reducers.d.ts +103 -0
  178. package/lib/components/form/transfer/store/transfer.state.d.ts +18 -0
  179. package/lib/components/form/transfer/store/transfer.store.d.ts +23 -0
  180. package/lib/components/form/transfer/transfer-list/transfer-list.component.d.ts +48 -0
  181. package/lib/components/form/transfer/transfer.component.d.ts +75 -0
  182. package/{src/lib/components/form/transfer/transfer.model.ts → lib/components/form/transfer/transfer.model.d.ts} +2 -9
  183. package/lib/components/form/upload-drag-drop/upload-drag-drop.component.d.ts +60 -0
  184. package/lib/components/form/upload-file-list/upload-file-list.component.d.ts +62 -0
  185. package/lib/components/navigation/back-button/back-button.component.d.ts +47 -0
  186. package/lib/components/navigation/back-to-top/back-to-top.component.d.ts +50 -0
  187. package/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +28 -0
  188. package/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.d.ts +23 -0
  189. package/lib/components/navigation/breadcrumbs/breadcrumbs.module.d.ts +8 -0
  190. package/lib/components/navigation/header/header.component.d.ts +38 -0
  191. package/lib/components/navigation/megamenu/megamenu.component.d.ts +22 -0
  192. package/lib/components/navigation/navbar/navbar/navbar.component.d.ts +19 -0
  193. package/lib/components/navigation/navbar/navbar-item/navbar-item.component.d.ts +5 -0
  194. package/lib/components/navigation/navbar/navbar.module.d.ts +8 -0
  195. package/lib/components/navigation/navscroll/navscroll-list-item.component.d.ts +16 -0
  196. package/lib/components/navigation/navscroll/navscroll-list-items.component.d.ts +7 -0
  197. package/lib/components/navigation/navscroll/navscroll.component.d.ts +47 -0
  198. package/{src/lib/components/navigation/navscroll/navscroll.model.ts → lib/components/navigation/navscroll/navscroll.model.d.ts} +5 -7
  199. package/lib/components/navigation/navscroll/navscroll.store.d.ts +16 -0
  200. package/lib/components/navigation/navscroll/navscroll.utils.d.ts +6 -0
  201. package/lib/components/navigation/sidebar/sidebar.component.d.ts +26 -0
  202. package/lib/components/navigation/skiplink/skiplink/skiplink.component.d.ts +17 -0
  203. package/lib/components/navigation/skiplink/skiplink-item/skiplink-item.component.d.ts +24 -0
  204. package/lib/components/navigation/skiplink/skiplink.module.d.ts +8 -0
  205. package/lib/components/utils/error-page/error-page.component.d.ts +44 -0
  206. package/lib/components/utils/icon/icon.component.d.ts +53 -0
  207. package/lib/components/utils/language-switcher/language-switcher.component.d.ts +27 -0
  208. package/lib/design-angular-kit.module.d.ts +53 -0
  209. package/lib/enums/colors.enums.d.ts +10 -0
  210. package/lib/enums/sizes.enum.d.ts +7 -0
  211. package/{src/lib/interfaces/core.ts → lib/interfaces/core.d.ts} +53 -95
  212. package/lib/interfaces/design-angular-kit-config.d.ts +30 -0
  213. package/lib/interfaces/form.d.ts +67 -0
  214. package/lib/interfaces/icon.d.ts +4 -0
  215. package/lib/interfaces/sortable-table.d.ts +33 -0
  216. package/lib/interfaces/utils.d.ts +10 -0
  217. package/lib/pipes/date-ago.pipe.d.ts +17 -0
  218. package/lib/pipes/duration.pipe.d.ts +35 -0
  219. package/lib/pipes/mark-matching-text.pipe.d.ts +18 -0
  220. package/lib/provide-design-angular-kit.d.ts +7 -0
  221. package/lib/services/notification/notification.service.d.ts +63 -0
  222. package/{src/lib/utils/coercion.ts → lib/utils/coercion.d.ts} +1 -7
  223. package/lib/utils/date-utils.d.ts +79 -0
  224. package/lib/utils/file-utils.d.ts +32 -0
  225. package/lib/utils/regex.d.ts +34 -0
  226. package/lib/validators/it-validators.d.ts +69 -0
  227. package/package.json +14 -9
  228. package/{src/public_api.ts → public_api.d.ts} +0 -43
  229. package/schematics/ng-add/index.d.ts +3 -0
  230. package/schematics/ng-add/index.js +29 -0
  231. package/schematics/ng-add/index.js.map +1 -0
  232. package/schematics/ng-add/index.spec.d.ts +1 -0
  233. package/schematics/ng-add/index.spec.js +43 -0
  234. package/schematics/ng-add/index.spec.js.map +1 -0
  235. package/schematics/ng-add/rules/setup-project/add-animations.d.ts +2 -0
  236. package/schematics/ng-add/rules/setup-project/add-animations.js +11 -0
  237. package/schematics/ng-add/rules/setup-project/add-animations.js.map +1 -0
  238. package/schematics/ng-add/rules/setup-project/add-assets.d.ts +3 -0
  239. package/schematics/ng-add/rules/setup-project/add-assets.js +50 -0
  240. package/schematics/ng-add/rules/setup-project/add-assets.js.map +1 -0
  241. package/schematics/ng-add/rules/setup-project/add-design-angular-kit.d.ts +3 -0
  242. package/schematics/ng-add/rules/setup-project/add-design-angular-kit.js +43 -0
  243. package/schematics/ng-add/rules/setup-project/add-design-angular-kit.js.map +1 -0
  244. package/schematics/ng-add/rules/setup-project/add-http-client.d.ts +2 -0
  245. package/schematics/ng-add/rules/setup-project/add-http-client.js +11 -0
  246. package/schematics/ng-add/rules/setup-project/add-http-client.js.map +1 -0
  247. package/schematics/ng-add/rules/setup-project/add-import-to-style-file.d.ts +11 -0
  248. package/schematics/ng-add/rules/setup-project/add-import-to-style-file.js +112 -0
  249. package/schematics/ng-add/rules/setup-project/add-import-to-style-file.js.map +1 -0
  250. package/schematics/ng-add/rules/setup-project/add-localisation.d.ts +3 -0
  251. package/schematics/ng-add/rules/setup-project/add-localisation.js +50 -0
  252. package/schematics/ng-add/rules/setup-project/add-localisation.js.map +1 -0
  253. package/schematics/ng-add/rules/setup-project/angular-json-helper.d.ts +2 -0
  254. package/schematics/ng-add/rules/setup-project/angular-json-helper.js +13 -0
  255. package/schematics/ng-add/rules/setup-project/angular-json-helper.js.map +1 -0
  256. package/schematics/ng-add/rules/setup-project/exceptions.d.ts +7 -0
  257. package/schematics/ng-add/rules/setup-project/exceptions.js +17 -0
  258. package/schematics/ng-add/rules/setup-project/exceptions.js.map +1 -0
  259. package/schematics/ng-add/rules/setup-project/index.js +23 -0
  260. package/schematics/ng-add/rules/setup-project/index.js.map +1 -0
  261. package/schematics/ng-add/{schema.ts → schema.d.ts} +1 -1
  262. package/schematics/ng-add/schema.js +3 -0
  263. package/schematics/ng-add/schema.js.map +1 -0
  264. package/schematics/ng-add/setup-project.d.ts +3 -0
  265. package/schematics/ng-add/setup-project.js +37 -0
  266. package/schematics/ng-add/setup-project.js.map +1 -0
  267. package/schematics/ng-add/setup-project.spec.d.ts +1 -0
  268. package/schematics/ng-add/setup-project.spec.js +139 -0
  269. package/schematics/ng-add/setup-project.spec.js.map +1 -0
  270. package/schematics/ng-add/utils.d.ts +14 -0
  271. package/schematics/ng-add/utils.js +49 -0
  272. package/schematics/ng-add/utils.js.map +1 -0
  273. package/schematics/ng-add/versions-helper.d.ts +3 -0
  274. package/schematics/ng-add/versions-helper.js +40 -0
  275. package/schematics/ng-add/versions-helper.js.map +1 -0
  276. package/.eslintrc.json +0 -31
  277. package/karma.conf.js +0 -38
  278. package/ng-package.json +0 -9
  279. package/ng-package.prod.json +0 -8
  280. package/schematics/ng-add/index.spec.ts +0 -45
  281. package/schematics/ng-add/index.ts +0 -36
  282. package/schematics/ng-add/rules/setup-project/add-animations.ts +0 -7
  283. package/schematics/ng-add/rules/setup-project/add-assets.ts +0 -45
  284. package/schematics/ng-add/rules/setup-project/add-design-angular-kit.ts +0 -40
  285. package/schematics/ng-add/rules/setup-project/add-http-client.ts +0 -7
  286. package/schematics/ng-add/rules/setup-project/add-import-to-style-file.ts +0 -120
  287. package/schematics/ng-add/rules/setup-project/add-localisation.ts +0 -45
  288. package/schematics/ng-add/rules/setup-project/angular-json-helper.ts +0 -11
  289. package/schematics/ng-add/rules/setup-project/exceptions.ts +0 -13
  290. package/schematics/ng-add/setup-project.spec.ts +0 -166
  291. package/schematics/ng-add/setup-project.ts +0 -31
  292. package/schematics/ng-add/utils.ts +0 -71
  293. package/schematics/ng-add/versions-helper.ts +0 -41
  294. package/src/lib/abstracts/abstract-form.component.ts +0 -200
  295. package/src/lib/abstracts/abstract.component.ts +0 -63
  296. package/src/lib/components/core/accordion/accordion.component.html +0 -27
  297. package/src/lib/components/core/accordion/accordion.component.spec.ts +0 -21
  298. package/src/lib/components/core/accordion/accordion.component.ts +0 -40
  299. package/src/lib/components/core/alert/alert.component.html +0 -19
  300. package/src/lib/components/core/alert/alert.component.scss +0 -3
  301. package/src/lib/components/core/alert/alert.component.spec.ts +0 -62
  302. package/src/lib/components/core/alert/alert.component.ts +0 -75
  303. package/src/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.html +0 -23
  304. package/src/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.scss +0 -17
  305. package/src/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.spec.ts +0 -21
  306. package/src/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.ts +0 -50
  307. package/src/lib/components/core/avatar/avatar-group/avatar-group.component.html +0 -7
  308. package/src/lib/components/core/avatar/avatar-group/avatar-group.component.spec.ts +0 -38
  309. package/src/lib/components/core/avatar/avatar-group/avatar-group.component.ts +0 -25
  310. package/src/lib/components/core/avatar/avatar.directive.ts +0 -73
  311. package/src/lib/components/core/avatar/avatar.module.ts +0 -18
  312. package/src/lib/components/core/badge/badge.directive.spec.ts +0 -59
  313. package/src/lib/components/core/badge/badge.directive.ts +0 -39
  314. package/src/lib/components/core/button/button.directive.spec.ts +0 -96
  315. package/src/lib/components/core/button/button.directive.ts +0 -89
  316. package/src/lib/components/core/callout/callout.component.html +0 -25
  317. package/src/lib/components/core/callout/callout.component.spec.ts +0 -138
  318. package/src/lib/components/core/callout/callout.component.ts +0 -92
  319. package/src/lib/components/core/card/card.component.html +0 -35
  320. package/src/lib/components/core/card/card.component.scss +0 -30
  321. package/src/lib/components/core/card/card.component.spec.ts +0 -21
  322. package/src/lib/components/core/card/card.component.ts +0 -78
  323. package/src/lib/components/core/carousel/carousel/carousel.component.html +0 -29
  324. package/src/lib/components/core/carousel/carousel/carousel.component.scss +0 -1
  325. package/src/lib/components/core/carousel/carousel/carousel.component.spec.ts +0 -21
  326. package/src/lib/components/core/carousel/carousel/carousel.component.ts +0 -119
  327. package/src/lib/components/core/carousel/carousel-item/carousel-item.component.html +0 -3
  328. package/src/lib/components/core/carousel/carousel-item/carousel-item.component.spec.ts +0 -22
  329. package/src/lib/components/core/carousel/carousel-item/carousel-item.component.ts +0 -20
  330. package/src/lib/components/core/carousel/carousel.module.ts +0 -11
  331. package/src/lib/components/core/chip/chip.component.html +0 -26
  332. package/src/lib/components/core/chip/chip.component.spec.ts +0 -87
  333. package/src/lib/components/core/chip/chip.component.ts +0 -154
  334. package/src/lib/components/core/collapse/collapse.component.html +0 -3
  335. package/src/lib/components/core/collapse/collapse.component.spec.ts +0 -21
  336. package/src/lib/components/core/collapse/collapse.component.ts +0 -124
  337. package/src/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.html +0 -3
  338. package/src/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.spec.ts +0 -35
  339. package/src/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.ts +0 -23
  340. package/src/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.html +0 -3
  341. package/src/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.spec.ts +0 -22
  342. package/src/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.ts +0 -10
  343. package/src/lib/components/core/dimmer/dimmer.component.html +0 -7
  344. package/src/lib/components/core/dimmer/dimmer.component.spec.ts +0 -49
  345. package/src/lib/components/core/dimmer/dimmer.component.ts +0 -50
  346. package/src/lib/components/core/dimmer/dimmer.module.ts +0 -12
  347. package/src/lib/components/core/dropdown/dropdown/dropdown.component.html +0 -45
  348. package/src/lib/components/core/dropdown/dropdown/dropdown.component.scss +0 -3
  349. package/src/lib/components/core/dropdown/dropdown/dropdown.component.spec.ts +0 -21
  350. package/src/lib/components/core/dropdown/dropdown/dropdown.component.ts +0 -186
  351. package/src/lib/components/core/dropdown/dropdown-item/dropdown-item.component.html +0 -18
  352. package/src/lib/components/core/dropdown/dropdown-item/dropdown-item.component.scss +0 -4
  353. package/src/lib/components/core/dropdown/dropdown-item/dropdown-item.component.spec.ts +0 -21
  354. package/src/lib/components/core/dropdown/dropdown-item/dropdown-item.component.ts +0 -82
  355. package/src/lib/components/core/dropdown/dropdown.module.ts +0 -11
  356. package/src/lib/components/core/forward/forward.directive.spec.ts +0 -60
  357. package/src/lib/components/core/forward/forward.directive.ts +0 -43
  358. package/src/lib/components/core/link/link.component.html +0 -13
  359. package/src/lib/components/core/link/link.component.spec.ts +0 -21
  360. package/src/lib/components/core/link/link.component.ts +0 -54
  361. package/src/lib/components/core/list/list/list.component.html +0 -13
  362. package/src/lib/components/core/list/list/list.component.spec.ts +0 -21
  363. package/src/lib/components/core/list/list/list.component.ts +0 -30
  364. package/src/lib/components/core/list/list-item/list-item.component.html +0 -42
  365. package/src/lib/components/core/list/list-item/list-item.component.scss +0 -16
  366. package/src/lib/components/core/list/list-item/list-item.component.spec.ts +0 -21
  367. package/src/lib/components/core/list/list-item/list-item.component.ts +0 -75
  368. package/src/lib/components/core/list/list.module.ts +0 -11
  369. package/src/lib/components/core/modal/modal.component.html +0 -36
  370. package/src/lib/components/core/modal/modal.component.scss +0 -3
  371. package/src/lib/components/core/modal/modal.component.spec.ts +0 -21
  372. package/src/lib/components/core/modal/modal.component.ts +0 -218
  373. package/src/lib/components/core/notifications/notifications.component.html +0 -25
  374. package/src/lib/components/core/notifications/notifications.component.scss +0 -3
  375. package/src/lib/components/core/notifications/notifications.component.spec.ts +0 -21
  376. package/src/lib/components/core/notifications/notifications.component.ts +0 -123
  377. package/src/lib/components/core/pagination/pagination.component.html +0 -107
  378. package/src/lib/components/core/pagination/pagination.component.spec.ts +0 -21
  379. package/src/lib/components/core/pagination/pagination.component.ts +0 -157
  380. package/src/lib/components/core/popover/popover.directive.spec.ts +0 -21
  381. package/src/lib/components/core/popover/popover.directive.ts +0 -171
  382. package/src/lib/components/core/progress-bar/progress-bar.component.html +0 -20
  383. package/src/lib/components/core/progress-bar/progress-bar.component.spec.ts +0 -21
  384. package/src/lib/components/core/progress-bar/progress-bar.component.ts +0 -46
  385. package/src/lib/components/core/progress-button/progress-button.component.html +0 -5
  386. package/src/lib/components/core/progress-button/progress-button.component.spec.ts +0 -21
  387. package/src/lib/components/core/progress-button/progress-button.component.ts +0 -39
  388. package/src/lib/components/core/spinner/spinner.component.html +0 -7
  389. package/src/lib/components/core/spinner/spinner.component.spec.ts +0 -80
  390. package/src/lib/components/core/spinner/spinner.component.ts +0 -31
  391. package/src/lib/components/core/steppers/steppers-container/steppers-container.component.html +0 -126
  392. package/src/lib/components/core/steppers/steppers-container/steppers-container.component.spec.ts +0 -21
  393. package/src/lib/components/core/steppers/steppers-container/steppers-container.component.ts +0 -185
  394. package/src/lib/components/core/steppers/steppers-item/steppers-item.component.html +0 -3
  395. package/src/lib/components/core/steppers/steppers-item/steppers-item.component.spec.ts +0 -22
  396. package/src/lib/components/core/steppers/steppers-item/steppers-item.component.ts +0 -33
  397. package/src/lib/components/core/steppers/steppers.module.ts +0 -11
  398. package/src/lib/components/core/tab/tab-container/tab-container.component.html +0 -78
  399. package/src/lib/components/core/tab/tab-container/tab-container.component.spec.ts +0 -21
  400. package/src/lib/components/core/tab/tab-container/tab-container.component.ts +0 -137
  401. package/src/lib/components/core/tab/tab-item/tab-item.component.html +0 -3
  402. package/src/lib/components/core/tab/tab-item/tab-item.component.spec.ts +0 -22
  403. package/src/lib/components/core/tab/tab-item/tab-item.component.ts +0 -50
  404. package/src/lib/components/core/tab/tab.module.ts +0 -11
  405. package/src/lib/components/core/table/sort/sort-header/sort-header.component.html +0 -27
  406. package/src/lib/components/core/table/sort/sort-header/sort-header.component.scss +0 -65
  407. package/src/lib/components/core/table/sort/sort-header/sort-header.component.spec.ts +0 -25
  408. package/src/lib/components/core/table/sort/sort-header/sort-header.component.ts +0 -164
  409. package/src/lib/components/core/table/sort/sort.directive.spec.ts +0 -73
  410. package/src/lib/components/core/table/sort/sort.directive.ts +0 -142
  411. package/src/lib/components/core/table/table.component.html +0 -23
  412. package/src/lib/components/core/table/table.component.scss +0 -7
  413. package/src/lib/components/core/table/table.component.spec.ts +0 -21
  414. package/src/lib/components/core/table/table.component.ts +0 -70
  415. package/src/lib/components/core/table/table.module.ts +0 -12
  416. package/src/lib/components/core/timeline/timeline-item/timeline-item.component.html +0 -47
  417. package/src/lib/components/core/timeline/timeline-item/timeline-item.component.spec.ts +0 -24
  418. package/src/lib/components/core/timeline/timeline-item/timeline-item.component.ts +0 -102
  419. package/src/lib/components/core/timeline/timeline.component.html +0 -21
  420. package/src/lib/components/core/timeline/timeline.component.spec.ts +0 -21
  421. package/src/lib/components/core/timeline/timeline.component.ts +0 -31
  422. package/src/lib/components/core/timeline/timeline.module.ts +0 -11
  423. package/src/lib/components/core/tooltip/tooltip.directive.spec.ts +0 -20
  424. package/src/lib/components/core/tooltip/tooltip.directive.ts +0 -141
  425. package/src/lib/components/form/autocomplete/autocomplete.component.html +0 -58
  426. package/src/lib/components/form/autocomplete/autocomplete.component.spec.ts +0 -21
  427. package/src/lib/components/form/autocomplete/autocomplete.component.ts +0 -130
  428. package/src/lib/components/form/checkbox/checkbox.component.html +0 -67
  429. package/src/lib/components/form/checkbox/checkbox.component.spec.ts +0 -21
  430. package/src/lib/components/form/checkbox/checkbox.component.ts +0 -65
  431. package/src/lib/components/form/form.module.ts +0 -34
  432. package/src/lib/components/form/input/input.component.html +0 -92
  433. package/src/lib/components/form/input/input.component.scss +0 -29
  434. package/src/lib/components/form/input/input.component.spec.ts +0 -21
  435. package/src/lib/components/form/input/input.component.ts +0 -234
  436. package/src/lib/components/form/password-input/password-input.component.html +0 -65
  437. package/src/lib/components/form/password-input/password-input.component.scss +0 -9
  438. package/src/lib/components/form/password-input/password-input.component.spec.ts +0 -21
  439. package/src/lib/components/form/password-input/password-input.component.ts +0 -171
  440. package/src/lib/components/form/radio-button/radio-button.component.html +0 -50
  441. package/src/lib/components/form/radio-button/radio-button.component.scss +0 -14
  442. package/src/lib/components/form/radio-button/radio-button.component.spec.ts +0 -21
  443. package/src/lib/components/form/radio-button/radio-button.component.ts +0 -82
  444. package/src/lib/components/form/range/range.component.html +0 -17
  445. package/src/lib/components/form/range/range.component.scss +0 -17
  446. package/src/lib/components/form/range/range.component.spec.ts +0 -21
  447. package/src/lib/components/form/range/range.component.ts +0 -100
  448. package/src/lib/components/form/rating/rating.component.html +0 -24
  449. package/src/lib/components/form/rating/rating.component.spec.ts +0 -21
  450. package/src/lib/components/form/rating/rating.component.ts +0 -52
  451. package/src/lib/components/form/select/select.component.html +0 -54
  452. package/src/lib/components/form/select/select.component.scss +0 -3
  453. package/src/lib/components/form/select/select.component.spec.ts +0 -22
  454. package/src/lib/components/form/select/select.component.ts +0 -91
  455. package/src/lib/components/form/textarea/textarea.component.html +0 -28
  456. package/src/lib/components/form/textarea/textarea.component.scss +0 -12
  457. package/src/lib/components/form/textarea/textarea.component.spec.ts +0 -21
  458. package/src/lib/components/form/textarea/textarea.component.ts +0 -61
  459. package/src/lib/components/form/transfer/store/transfer.reducers.ts +0 -242
  460. package/src/lib/components/form/transfer/store/transfer.state.ts +0 -20
  461. package/src/lib/components/form/transfer/store/transfer.store.ts +0 -88
  462. package/src/lib/components/form/transfer/transfer-list/transfer-list.component.html +0 -42
  463. package/src/lib/components/form/transfer/transfer-list/transfer-list.component.spec.ts +0 -33
  464. package/src/lib/components/form/transfer/transfer-list/transfer-list.component.ts +0 -93
  465. package/src/lib/components/form/transfer/transfer.component.html +0 -52
  466. package/src/lib/components/form/transfer/transfer.component.spec.ts +0 -27
  467. package/src/lib/components/form/transfer/transfer.component.ts +0 -159
  468. package/src/lib/components/form/upload-drag-drop/upload-drag-drop.component.html +0 -36
  469. package/src/lib/components/form/upload-drag-drop/upload-drag-drop.component.spec.ts +0 -21
  470. package/src/lib/components/form/upload-drag-drop/upload-drag-drop.component.ts +0 -170
  471. package/src/lib/components/form/upload-file-list/upload-file-list.component.html +0 -46
  472. package/src/lib/components/form/upload-file-list/upload-file-list.component.spec.ts +0 -22
  473. package/src/lib/components/form/upload-file-list/upload-file-list.component.ts +0 -120
  474. package/src/lib/components/navigation/back-button/back-button.component.html +0 -25
  475. package/src/lib/components/navigation/back-button/back-button.component.spec.ts +0 -91
  476. package/src/lib/components/navigation/back-button/back-button.component.ts +0 -67
  477. package/src/lib/components/navigation/back-to-top/back-to-top.component.html +0 -11
  478. package/src/lib/components/navigation/back-to-top/back-to-top.component.spec.ts +0 -21
  479. package/src/lib/components/navigation/back-to-top/back-to-top.component.ts +0 -80
  480. package/src/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.html +0 -23
  481. package/src/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.spec.ts +0 -21
  482. package/src/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.ts +0 -68
  483. package/src/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.html +0 -3
  484. package/src/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.spec.ts +0 -22
  485. package/src/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.ts +0 -29
  486. package/src/lib/components/navigation/breadcrumbs/breadcrumbs.module.ts +0 -11
  487. package/src/lib/components/navigation/header/header.component.html +0 -102
  488. package/src/lib/components/navigation/header/header.component.scss +0 -3
  489. package/src/lib/components/navigation/header/header.component.spec.ts +0 -21
  490. package/src/lib/components/navigation/header/header.component.ts +0 -107
  491. package/src/lib/components/navigation/megamenu/megamenu.component.html +0 -34
  492. package/src/lib/components/navigation/megamenu/megamenu.component.scss +0 -5
  493. package/src/lib/components/navigation/megamenu/megamenu.component.ts +0 -30
  494. package/src/lib/components/navigation/navbar/navbar/navbar.component.html +0 -28
  495. package/src/lib/components/navigation/navbar/navbar/navbar.component.ts +0 -45
  496. package/src/lib/components/navigation/navbar/navbar-item/navbar-item.component.html +0 -3
  497. package/src/lib/components/navigation/navbar/navbar-item/navbar-item.component.ts +0 -10
  498. package/src/lib/components/navigation/navbar/navbar.module.ts +0 -11
  499. package/src/lib/components/navigation/navscroll/navscroll-list-item.component.ts +0 -95
  500. package/src/lib/components/navigation/navscroll/navscroll-list-items.component.ts +0 -27
  501. package/src/lib/components/navigation/navscroll/navscroll.component.html +0 -101
  502. package/src/lib/components/navigation/navscroll/navscroll.component.scss +0 -9
  503. package/src/lib/components/navigation/navscroll/navscroll.component.ts +0 -143
  504. package/src/lib/components/navigation/navscroll/navscroll.store.ts +0 -96
  505. package/src/lib/components/navigation/navscroll/navscroll.utils.ts +0 -28
  506. package/src/lib/components/navigation/sidebar/sidebar.component.html +0 -11
  507. package/src/lib/components/navigation/sidebar/sidebar.component.spec.ts +0 -21
  508. package/src/lib/components/navigation/sidebar/sidebar.component.ts +0 -39
  509. package/src/lib/components/navigation/skiplink/skiplink/skiplink.component.html +0 -15
  510. package/src/lib/components/navigation/skiplink/skiplink/skiplink.component.ts +0 -27
  511. package/src/lib/components/navigation/skiplink/skiplink-item/skiplink-item.component.html +0 -15
  512. package/src/lib/components/navigation/skiplink/skiplink-item/skiplink-item.component.ts +0 -38
  513. package/src/lib/components/navigation/skiplink/skiplink.module.ts +0 -11
  514. package/src/lib/components/utils/error-page/error-page.component.html +0 -33
  515. package/src/lib/components/utils/error-page/error-page.component.spec.ts +0 -21
  516. package/src/lib/components/utils/error-page/error-page.component.ts +0 -79
  517. package/src/lib/components/utils/icon/icon.component.html +0 -6
  518. package/src/lib/components/utils/icon/icon.component.spec.ts +0 -21
  519. package/src/lib/components/utils/icon/icon.component.ts +0 -95
  520. package/src/lib/components/utils/language-switcher/language-switcher.component.html +0 -21
  521. package/src/lib/components/utils/language-switcher/language-switcher.component.spec.ts +0 -21
  522. package/src/lib/components/utils/language-switcher/language-switcher.component.ts +0 -56
  523. package/src/lib/design-angular-kit.module.ts +0 -131
  524. package/src/lib/enums/colors.enums.ts +0 -10
  525. package/src/lib/enums/sizes.enum.ts +0 -7
  526. package/src/lib/interfaces/design-angular-kit-config.ts +0 -34
  527. package/src/lib/interfaces/form.ts +0 -78
  528. package/src/lib/interfaces/icon.ts +0 -176
  529. package/src/lib/interfaces/sortable-table.ts +0 -42
  530. package/src/lib/interfaces/utils.ts +0 -11
  531. package/src/lib/pipes/date-ago.pipe.ts +0 -57
  532. package/src/lib/pipes/duration.pipe.ts +0 -112
  533. package/src/lib/pipes/mark-matching-text.pipe.ts +0 -43
  534. package/src/lib/provide-design-angular-kit.ts +0 -73
  535. package/src/lib/services/notification/notification.service.spec.ts +0 -16
  536. package/src/lib/services/notification/notification.service.ts +0 -119
  537. package/src/lib/utils/date-utils.ts +0 -184
  538. package/src/lib/utils/file-utils.ts +0 -80
  539. package/src/lib/utils/regex.ts +0 -44
  540. package/src/lib/validators/it-validators.ts +0 -193
  541. package/src/test.ts +0 -26
  542. package/tsconfig.lib.json +0 -24
  543. package/tsconfig.lib.prod.json +0 -9
  544. package/tsconfig.schematics.json +0 -25
  545. package/tsconfig.spec.json +0 -9
  546. /package/schematics/ng-add/rules/setup-project/{index.ts → index.d.ts} +0 -0
@@ -0,0 +1,18 @@
1
+ import { booleanAttribute } from '@angular/core';
2
+ /**
3
+ * Transforms a value (typically a string) to a boolean.
4
+ * Intended to be used as a transform function of an input.
5
+ *
6
+ * @usageNotes
7
+ * ```typescript
8
+ * @Input({ transform: booleanAttribute }) status?: boolean;
9
+ * ```
10
+ * @param {BooleanInput} value Value to be transformed.
11
+ *
12
+ * @publicApi
13
+ */
14
+ export function inputToBoolean(value) {
15
+ // Wrap `@angular/core` function to force value type, for ide hits
16
+ return booleanAttribute(value);
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi91dGlscy9jb2VyY2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJakQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQW1CO0lBQ2hELGtFQUFrRTtJQUNsRSxPQUFPLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIEJvb2xlYW5JbnB1dCA9ICdmYWxzZScgfCAndHJ1ZScgfCBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRyYW5zZm9ybXMgYSB2YWx1ZSAodHlwaWNhbGx5IGEgc3RyaW5nKSB0byBhIGJvb2xlYW4uXG4gKiBJbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgdHJhbnNmb3JtIGZ1bmN0aW9uIG9mIGFuIGlucHV0LlxuICpcbiAqICBAdXNhZ2VOb3Rlc1xuICogIGBgYHR5cGVzY3JpcHRcbiAqICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc3RhdHVzPzogYm9vbGVhbjtcbiAqICBgYGBcbiAqIEBwYXJhbSB7Qm9vbGVhbklucHV0fSB2YWx1ZSBWYWx1ZSB0byBiZSB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnB1dFRvQm9vbGVhbih2YWx1ZTogQm9vbGVhbklucHV0KTogYm9vbGVhbiB7XG4gIC8vIFdyYXAgYEBhbmd1bGFyL2NvcmVgIGZ1bmN0aW9uIHRvIGZvcmNlIHZhbHVlIHR5cGUsIGZvciBpZGUgaGl0c1xuICByZXR1cm4gYm9vbGVhbkF0dHJpYnV0ZSh2YWx1ZSk7XG59XG4iXX0=
@@ -0,0 +1,162 @@
1
+ import { shareReplay, takeWhile, timer } from 'rxjs';
2
+ import { map } from 'rxjs/operators';
3
+ export class ItDateUtils {
4
+ /**
5
+ * Add seconds to date
6
+ * @param date the date
7
+ * @param seconds seconds to add
8
+ */
9
+ static addSeconds(date, seconds) {
10
+ const newDate = new Date(date.valueOf());
11
+ newDate.setSeconds(date.getSeconds() + seconds);
12
+ return newDate;
13
+ }
14
+ /**
15
+ * Add minutes to date
16
+ * @param date the date
17
+ * @param minutes minutes to add
18
+ */
19
+ static addMinutes(date, minutes) {
20
+ const newDate = new Date(date.valueOf());
21
+ newDate.setMinutes(date.getMinutes() + minutes);
22
+ return newDate;
23
+ }
24
+ /**
25
+ * Add hours to date
26
+ * @param date the date
27
+ * @param hours hours to add
28
+ */
29
+ static addHours(date, hours) {
30
+ const newDate = new Date(date.valueOf());
31
+ newDate.setHours(date.getHours() + hours);
32
+ return newDate;
33
+ }
34
+ /**
35
+ * Add days to date
36
+ * @param date the date
37
+ * @param days days to add
38
+ */
39
+ static addDays(date, days) {
40
+ const newDate = new Date(date.valueOf());
41
+ newDate.setDate(date.getDate() + days);
42
+ return newDate;
43
+ }
44
+ /**
45
+ * Add years to date
46
+ * @param date the date
47
+ * @param months months to add
48
+ */
49
+ static addMonths(date, months) {
50
+ const newDate = new Date(date.valueOf());
51
+ newDate.setMonth(date.getMonth() + months);
52
+ return newDate;
53
+ }
54
+ /**
55
+ * Add years to date
56
+ * @param date the date
57
+ * @param years years to add
58
+ */
59
+ static addYears(date, years) {
60
+ const newDate = new Date(date.valueOf());
61
+ newDate.setFullYear(date.getFullYear() + years);
62
+ return newDate;
63
+ }
64
+ /**
65
+ * Calculate number of days between two date
66
+ * @param startDate
67
+ * @param endDate
68
+ * @param absolute return unsigned result
69
+ */
70
+ static countDays(startDate, endDate, absolute = false) {
71
+ const differenceInTime = endDate.getTime() - startDate.getTime();
72
+ const diff = absolute ? Math.abs(differenceInTime) : differenceInTime;
73
+ return Math.ceil(diff / (1000 * 3600 * 24));
74
+ }
75
+ /**
76
+ * Check if string is a date with iso format
77
+ * @param value the string
78
+ */
79
+ static isIsoString(value) {
80
+ if (!value || !/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(value)) {
81
+ return false;
82
+ }
83
+ const d = new Date(value);
84
+ return !!d && !isNaN(d.getTime()) && d.toISOString() === value;
85
+ }
86
+ /**
87
+ * Convert iso string to Date
88
+ * @param isoString the iso string
89
+ */
90
+ static isoStringToDate(isoString) {
91
+ return isoString ? new Date(Date.parse(isoString)) : null;
92
+ }
93
+ /**
94
+ * Remove time from an iso date string
95
+ * @param isoString the iso string
96
+ */
97
+ static isoStringRemoveTime(isoString) {
98
+ let date = ItDateUtils.isoStringToDate(isoString);
99
+ if (!date) {
100
+ return isoString;
101
+ }
102
+ const offset = date.getTimezoneOffset();
103
+ date = new Date(date.getTime() - offset * 60 * 1000);
104
+ return date.toISOString().substring(0, isoString.indexOf('T'));
105
+ }
106
+ /**
107
+ * Set iso string hours to 0 and format correctly the date (consider timezone offset)
108
+ * @example '2024-03-04T23:00:00.000Z' -> '2024-03-05T00:00:00.000Z'
109
+ * @param isoString the iso string
110
+ */
111
+ static isoStringSetZeroTime(isoString) {
112
+ let date = ItDateUtils.isoStringToDate(isoString);
113
+ if (!date) {
114
+ return isoString;
115
+ }
116
+ const offset = date.getTimezoneOffset();
117
+ date = new Date(date.getTime() - offset * 60 * 1000);
118
+ date.setUTCHours(0, 0, 0, 0);
119
+ return date.toISOString();
120
+ }
121
+ /**
122
+ * Calculate the date time left and return the string format [d h m s]
123
+ * @param endDate
124
+ */
125
+ static timeLeftString(endDate) {
126
+ const endTime = endDate.getTime();
127
+ return timer(0, 1000).pipe(map(() => Math.floor((endTime - new Date().getTime()) / 1000)), takeWhile(delta => delta >= 0), map(delta => {
128
+ const arrayResult = [];
129
+ const days = Math.floor(delta / 60 / 60 / 24);
130
+ if (days > 0) {
131
+ arrayResult.push(days + 'd');
132
+ }
133
+ delta -= days * 60 * 60 * 24;
134
+ const hours = Math.floor(delta / 60 / 60) % 24;
135
+ if (hours > 0) {
136
+ arrayResult.push(hours + 'h');
137
+ }
138
+ delta -= hours * 60 * 60;
139
+ const minutes = Math.floor(delta / 60) % 60;
140
+ arrayResult.push(minutes + 'm');
141
+ delta -= minutes * 60;
142
+ const seconds = delta % 60;
143
+ arrayResult.push(seconds + 's');
144
+ return arrayResult.join(' ');
145
+ }), shareReplay(1));
146
+ }
147
+ /**
148
+ * Calculate the next day of week
149
+ * @param dayOfWeek Day of week 0=Sunday, 1=Monday...4=Thursday...
150
+ * @param hour the specif hour
151
+ * @param minute the specific minute
152
+ */
153
+ static nextWeekDayAndTime(dayOfWeek, hour = 0, minute = 0) {
154
+ const now = new Date();
155
+ const result = new Date(now.getFullYear(), now.getMonth(), now.getDate() + ((7 + dayOfWeek - now.getDay()) % 7), hour, minute, 0, 0);
156
+ if (result < now) {
157
+ result.setDate(result.getDate() + 7);
158
+ }
159
+ return result;
160
+ }
161
+ }
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL3V0aWxzL2RhdGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxNQUFNLE9BQU8sV0FBVztJQUN0Qjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFVLEVBQUUsT0FBZTtRQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN6QyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUNoRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBVSxFQUFFLE9BQWU7UUFDbEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDaEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVUsRUFBRSxLQUFhO1FBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxD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QUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQztRQUN0RSxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXJJLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgdGFrZVdoaWxlLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgSXREYXRlVXRpbHMge1xuICAvKipcbiAgICogQWRkIHNlY29uZHMgdG8gZGF0ZVxuICAgKiBAcGFyYW0gZGF0ZSB0aGUgZGF0ZVxuICAgKiBAcGFyYW0gc2Vjb25kcyBzZWNvbmRzIHRvIGFkZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhZGRTZWNvbmRzKGRhdGU6IERhdGUsIHNlY29uZHM6IG51bWJlcik6IERhdGUge1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gICAgbmV3RGF0ZS5zZXRTZWNvbmRzKGRhdGUuZ2V0U2Vjb25kcygpICsgc2Vjb25kcyk7XG4gICAgcmV0dXJuIG5ld0RhdGU7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG1pbnV0ZXMgdG8gZGF0ZVxuICAgKiBAcGFyYW0gZGF0ZSB0aGUgZGF0ZVxuICAgKiBAcGFyYW0gbWludXRlcyBtaW51dGVzIHRvIGFkZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhZGRNaW51dGVzKGRhdGU6IERhdGUsIG1pbnV0ZXM6IG51bWJlcik6IERhdGUge1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gICAgbmV3RGF0ZS5zZXRNaW51dGVzKGRhdGUuZ2V0TWludXRlcygpICsgbWludXRlcyk7XG4gICAgcmV0dXJuIG5ld0RhdGU7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGhvdXJzIHRvIGRhdGVcbiAgICogQHBhcmFtIGRhdGUgdGhlIGRhdGVcbiAgICogQHBhcmFtIGhvdXJzIGhvdXJzIHRvIGFkZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhZGRIb3VycyhkYXRlOiBEYXRlLCBob3VyczogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBuZXdEYXRlLnNldEhvdXJzKGRhdGUuZ2V0SG91cnMoKSArIGhvdXJzKTtcbiAgICByZXR1cm4gbmV3RGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgZGF5cyB0byBkYXRlXG4gICAqIEBwYXJhbSBkYXRlIHRoZSBkYXRlXG4gICAqIEBwYXJhbSBkYXlzIGRheXMgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFkZERheXMoZGF0ZTogRGF0ZSwgZGF5czogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBuZXdEYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkYXlzKTtcbiAgICByZXR1cm4gbmV3RGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgeWVhcnMgdG8gZGF0ZVxuICAgKiBAcGFyYW0gZGF0ZSB0aGUgZGF0ZVxuICAgKiBAcGFyYW0gbW9udGhzIG1vbnRocyB0byBhZGRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWRkTW9udGhzKGRhdGU6IERhdGUsIG1vbnRoczogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBuZXdEYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG1vbnRocyk7XG4gICAgcmV0dXJuIG5ld0RhdGU7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHllYXJzIHRvIGRhdGVcbiAgICogQHBhcmFtIGRhdGUgdGhlIGRhdGVcbiAgICogQHBhcmFtIHllYXJzIHllYXJzIHRvIGFkZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhZGRZZWFycyhkYXRlOiBEYXRlLCB5ZWFyczogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBuZXdEYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIHllYXJzKTtcbiAgICByZXR1cm4gbmV3RGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgbnVtYmVyIG9mIGRheXMgYmV0d2VlbiB0d28gZGF0ZVxuICAgKiBAcGFyYW0gc3RhcnREYXRlXG4gICAqIEBwYXJhbSBlbmREYXRlXG4gICAqIEBwYXJhbSBhYnNvbHV0ZSByZXR1cm4gdW5zaWduZWQgcmVzdWx0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvdW50RGF5cyhzdGFydERhdGU6IERhdGUsIGVuZERhdGU6IERhdGUsIGFic29sdXRlOiBib29sZWFuID0gZmFsc2UpOiBudW1iZXIge1xuICAgIGNvbnN0IGRpZmZlcmVuY2VJblRpbWUgPSBlbmREYXRlLmdldFRpbWUoKSAtIHN0YXJ0RGF0ZS5nZXRUaW1lKCk7XG4gICAgY29uc3QgZGlmZiA9IGFic29sdXRlID8gTWF0aC5hYnMoZGlmZmVyZW5jZUluVGltZSkgOiBkaWZmZXJlbmNlSW5UaW1lO1xuICAgIHJldHVybiBNYXRoLmNlaWwoZGlmZiAvICgxMDAwICogMzYwMCAqIDI0KSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgc3RyaW5nIGlzIGEgZGF0ZSB3aXRoIGlzbyBmb3JtYXRcbiAgICogQHBhcmFtIHZhbHVlIHRoZSBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJc29TdHJpbmcodmFsdWU6IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoIXZhbHVlIHx8ICEvXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn0uXFxkezN9Wi8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICByZXR1cm4gISFkICYmICFpc05hTihkLmdldFRpbWUoKSkgJiYgZC50b0lTT1N0cmluZygpID09PSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGlzbyBzdHJpbmcgdG8gRGF0ZVxuICAgKiBAcGFyYW0gaXNvU3RyaW5nIHRoZSBpc28gc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzb1N0cmluZ1RvRGF0ZShpc29TdHJpbmc6IHN0cmluZyB8IG51bGwpOiBEYXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlzb1N0cmluZyA/IG5ldyBEYXRlKERhdGUucGFyc2UoaXNvU3RyaW5nKSkgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aW1lIGZyb20gYW4gaXNvIGRhdGUgc3RyaW5nXG4gICAqIEBwYXJhbSBpc29TdHJpbmcgdGhlIGlzbyBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNvU3RyaW5nUmVtb3ZlVGltZShpc29TdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGRhdGUgPSBJdERhdGVVdGlscy5pc29TdHJpbmdUb0RhdGUoaXNvU3RyaW5nKTtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybiBpc29TdHJpbmc7XG4gICAgfVxuICAgIGNvbnN0IG9mZnNldCA9IGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICBkYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSBvZmZzZXQgKiA2MCAqIDEwMDApO1xuICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGlzb1N0cmluZy5pbmRleE9mKCdUJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBpc28gc3RyaW5nIGhvdXJzIHRvIDAgYW5kIGZvcm1hdCBjb3JyZWN0bHkgdGhlIGRhdGUgKGNvbnNpZGVyIHRpbWV6b25lIG9mZnNldClcbiAgICogQGV4YW1wbGUgJzIwMjQtMDMtMDRUMjM6MDA6MDAuMDAwWicgLT4gJzIwMjQtMDMtMDVUMDA6MDA6MDAuMDAwWidcbiAgICogQHBhcmFtIGlzb1N0cmluZyB0aGUgaXNvIHN0cmluZ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc29TdHJpbmdTZXRaZXJvVGltZShpc29TdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGRhdGUgPSBJdERhdGVVdGlscy5pc29TdHJpbmdUb0RhdGUoaXNvU3RyaW5nKTtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybiBpc29TdHJpbmc7XG4gICAgfVxuICAgIGNvbnN0IG9mZnNldCA9IGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICBkYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSBvZmZzZXQgKiA2MCAqIDEwMDApO1xuICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIGRhdGUudG9JU09TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIGRhdGUgdGltZSBsZWZ0IGFuZCByZXR1cm4gdGhlIHN0cmluZyBmb3JtYXQgW2QgaCBtIHNdXG4gICAqIEBwYXJhbSBlbmREYXRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRpbWVMZWZ0U3RyaW5nKGVuZERhdGU6IERhdGUpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGNvbnN0IGVuZFRpbWUgPSBlbmREYXRlLmdldFRpbWUoKTtcbiAgICByZXR1cm4gdGltZXIoMCwgMTAwMCkucGlwZShcbiAgICAgIG1hcCgoKSA9PiBNYXRoLmZsb29yKChlbmRUaW1lIC0gbmV3IERhdGUoKS5nZXRUaW1lKCkpIC8gMTAwMCkpLFxuICAgICAgdGFrZVdoaWxlKGRlbHRhID0+IGRlbHRhID49IDApLFxuICAgICAgbWFwKGRlbHRhID0+IHtcbiAgICAgICAgY29uc3QgYXJyYXlSZXN1bHQ6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICAgICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoZGVsdGEgLyA2MCAvIDYwIC8gMjQpO1xuICAgICAgICBpZiAoZGF5cyA+IDApIHtcbiAgICAgICAgICBhcnJheVJlc3VsdC5wdXNoKGRheXMgKyAnZCcpO1xuICAgICAgICB9XG4gICAgICAgIGRlbHRhIC09IGRheXMgKiA2MCAqIDYwICogMjQ7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihkZWx0YSAvIDYwIC8gNjApICUgMjQ7XG4gICAgICAgIGlmIChob3VycyA+IDApIHtcbiAgICAgICAgICBhcnJheVJlc3VsdC5wdXNoKGhvdXJzICsgJ2gnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbHRhIC09IGhvdXJzICogNjAgKiA2MDtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoZGVsdGEgLyA2MCkgJSA2MDtcbiAgICAgICAgYXJyYXlSZXN1bHQucHVzaChtaW51dGVzICsgJ20nKTtcblxuICAgICAgICBkZWx0YSAtPSBtaW51dGVzICogNjA7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBkZWx0YSAlIDYwO1xuICAgICAgICBhcnJheVJlc3VsdC5wdXNoKHNlY29uZHMgKyAncycpO1xuXG4gICAgICAgIHJldHVybiBhcnJheVJlc3VsdC5qb2luKCcgJyk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIG5leHQgZGF5IG9mIHdlZWtcbiAgICogQHBhcmFtIGRheU9mV2VlayBEYXkgb2Ygd2VlayAwPVN1bmRheSwgMT1Nb25kYXkuLi40PVRodXJzZGF5Li4uXG4gICAqIEBwYXJhbSBob3VyIHRoZSBzcGVjaWYgaG91clxuICAgKiBAcGFyYW0gbWludXRlIHRoZSBzcGVjaWZpYyBtaW51dGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbmV4dFdlZWtEYXlBbmRUaW1lKGRheU9mV2VlazogbnVtYmVyLCBob3VyID0gMCwgbWludXRlID0gMCk6IERhdGUge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpLCBub3cuZ2V0RGF0ZSgpICsgKCg3ICsgZGF5T2ZXZWVrIC0gbm93LmdldERheSgpKSAlIDcpLCBob3VyLCBtaW51dGUsIDAsIDApO1xuXG4gICAgaWYgKHJlc3VsdCA8IG5vdykge1xuICAgICAgcmVzdWx0LnNldERhdGUocmVzdWx0LmdldERhdGUoKSArIDcpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,73 @@
1
+ import { Observable } from 'rxjs';
2
+ export class ItFileUtils {
3
+ /**
4
+ * Return the file size string
5
+ * @param file the file
6
+ * @param decimals decimal to show
7
+ */
8
+ static getFileSizeString(file, decimals = 2) {
9
+ const bytes = file.size;
10
+ if (!+bytes) {
11
+ return '0 Bytes';
12
+ }
13
+ const k = 1024;
14
+ const dm = decimals < 0 ? 0 : decimals;
15
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
16
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
17
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;
18
+ }
19
+ /**
20
+ * Convert a file to base64 string
21
+ * @param file the base64 string
22
+ */
23
+ static fileToBase64(file) {
24
+ const reader = new FileReader();
25
+ reader.readAsDataURL(file);
26
+ return new Observable(observer => {
27
+ reader.onload = e => {
28
+ const target = e.target;
29
+ if (!target?.result || target.result instanceof ArrayBuffer) {
30
+ return observer.error('Error on parse');
31
+ }
32
+ observer.next(target.result);
33
+ observer.complete();
34
+ };
35
+ reader.onerror = error => {
36
+ observer.error(error);
37
+ };
38
+ });
39
+ }
40
+ /**
41
+ * Convert base64 to Blob
42
+ * @param base64 the base64 string
43
+ * @param mimeType the <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types">MIME type</a> (example 'application/pdf')
44
+ */
45
+ static base64ToBlob(base64, mimeType) {
46
+ const byteString = window.atob(base64);
47
+ const arrayBuffer = new ArrayBuffer(byteString.length);
48
+ const int8Array = new Uint8Array(arrayBuffer);
49
+ for (let i = 0; i < byteString.length; i++) {
50
+ int8Array[i] = byteString.charCodeAt(i);
51
+ }
52
+ return new Blob([int8Array], { type: mimeType });
53
+ }
54
+ /**
55
+ * Convert base64 to File
56
+ * @param base64 the base64 string
57
+ * @param mimeType the <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types">MIME type</a> (example 'application/pdf')
58
+ * @param filename the file name
59
+ */
60
+ static base64ToFile(base64, mimeType, filename) {
61
+ const fileBlob = ItFileUtils.base64ToBlob(base64, mimeType);
62
+ return new File([fileBlob], filename, { type: mimeType });
63
+ }
64
+ /**
65
+ * Extract the MIME type from base64 string
66
+ * @param base64 the base64 string
67
+ */
68
+ static getMimeTypeFromBase64(base64) {
69
+ const mime = base64.match(/data:([a-zA-Z0-9]+\/[a-zA-Z0-9-.+]+).*,.*/);
70
+ return mime?.length ? mime[1] : undefined;
71
+ }
72
+ }
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL3V0aWxzL2ZpbGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxNQUFNLE9BQU8sV0FBVztJQUN0Qjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQVUsRUFBRSxRQUFRLEdBQUcsQ0FBQztRQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1osT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNmLE1BQU0sRUFBRSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV4RSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFVO1FBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQixPQUFPLElBQUksVUFBVSxDQUFTLFFBQVEsQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLFlBQVksV0FBVyxFQUFFLENBQUM7b0JBQzVELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUMxQyxDQUFDO2dCQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDdkIsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7UUFDekQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFjLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQjtRQUMzRSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxNQUFjO1FBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUN2RSxPQUFPLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzVDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIEl0RmlsZVV0aWxzIHtcbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZmlsZSBzaXplIHN0cmluZ1xuICAgKiBAcGFyYW0gZmlsZSB0aGUgZmlsZVxuICAgKiBAcGFyYW0gZGVjaW1hbHMgZGVjaW1hbCB0byBzaG93XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldEZpbGVTaXplU3RyaW5nKGZpbGU6IEZpbGUsIGRlY2ltYWxzID0gMik6IHN0cmluZyB7XG4gICAgY29uc3QgYnl0ZXMgPSBmaWxlLnNpemU7XG4gICAgaWYgKCErYnl0ZXMpIHtcbiAgICAgIHJldHVybiAnMCBCeXRlcyc7XG4gICAgfVxuXG4gICAgY29uc3QgayA9IDEwMjQ7XG4gICAgY29uc3QgZG0gPSBkZWNpbWFscyA8IDAgPyAwIDogZGVjaW1hbHM7XG4gICAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG5cbiAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhrKSk7XG4gICAgcmV0dXJuIGAke3BhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKX0gJHtzaXplc1tpXX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBmaWxlIHRvIGJhc2U2NCBzdHJpbmdcbiAgICogQHBhcmFtIGZpbGUgdGhlIGJhc2U2NCBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmlsZVRvQmFzZTY0KGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG5cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8c3RyaW5nPihvYnNlcnZlciA9PiB7XG4gICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICBpZiAoIXRhcmdldD8ucmVzdWx0IHx8IHRhcmdldC5yZXN1bHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgICAgICAgIHJldHVybiBvYnNlcnZlci5lcnJvcignRXJyb3Igb24gcGFyc2UnKTtcbiAgICAgICAgfVxuICAgICAgICBvYnNlcnZlci5uZXh0KHRhcmdldC5yZXN1bHQpO1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgfTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gZXJyb3IgPT4ge1xuICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYmFzZTY0IHRvIEJsb2JcbiAgICogQHBhcmFtIGJhc2U2NCB0aGUgYmFzZTY0IHN0cmluZ1xuICAgKiBAcGFyYW0gbWltZVR5cGUgdGhlIDxhIGhyZWY9XCJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL01JTUVfdHlwZXMvQ29tbW9uX3R5cGVzXCI+TUlNRSB0eXBlPC9hPiAoZXhhbXBsZSAnYXBwbGljYXRpb24vcGRmJylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYmFzZTY0VG9CbG9iKGJhc2U2NDogc3RyaW5nLCBtaW1lVHlwZTogc3RyaW5nKTogQmxvYiB7XG4gICAgY29uc3QgYnl0ZVN0cmluZyA9IHdpbmRvdy5hdG9iKGJhc2U2NCk7XG4gICAgY29uc3QgYXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZVN0cmluZy5sZW5ndGgpO1xuICAgIGNvbnN0IGludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGludDhBcnJheVtpXSA9IGJ5dGVTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBCbG9iKFtpbnQ4QXJyYXldLCB7IHR5cGU6IG1pbWVUeXBlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYmFzZTY0IHRvIEZpbGVcbiAgICogQHBhcmFtIGJhc2U2NCB0aGUgYmFzZTY0IHN0cmluZ1xuICAgKiBAcGFyYW0gbWltZVR5cGUgdGhlIDxhIGhyZWY9XCJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL01JTUVfdHlwZXMvQ29tbW9uX3R5cGVzXCI+TUlNRSB0eXBlPC9hPiAoZXhhbXBsZSAnYXBwbGljYXRpb24vcGRmJylcbiAgICogQHBhcmFtIGZpbGVuYW1lIHRoZSBmaWxlIG5hbWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYmFzZTY0VG9GaWxlKGJhc2U2NDogc3RyaW5nLCBtaW1lVHlwZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogRmlsZSB7XG4gICAgY29uc3QgZmlsZUJsb2IgPSBJdEZpbGVVdGlscy5iYXNlNjRUb0Jsb2IoYmFzZTY0LCBtaW1lVHlwZSk7XG4gICAgcmV0dXJuIG5ldyBGaWxlKFtmaWxlQmxvYl0sIGZpbGVuYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgdGhlIE1JTUUgdHlwZSBmcm9tIGJhc2U2NCBzdHJpbmdcbiAgICogQHBhcmFtIGJhc2U2NCB0aGUgYmFzZTY0IHN0cmluZ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRNaW1lVHlwZUZyb21CYXNlNjQoYmFzZTY0OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1pbWUgPSBiYXNlNjQubWF0Y2goL2RhdGE6KFthLXpBLVowLTldK1xcL1thLXpBLVowLTktLitdKykuKiwuKi8pO1xuICAgIHJldHVybiBtaW1lPy5sZW5ndGggPyBtaW1lWzFdIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,35 @@
1
+ /**
2
+ * General Email Regex (RFC 5322 Official Standard)
3
+ * http://emailregex.com/
4
+ */
5
+ export const EMAIL_REGEX = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/;
6
+ /**
7
+ * Phone number Regex
8
+ */
9
+ export const PHONE_NUMBER_REGEX = /^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{3})(?: *x(\d+))?\s*$/;
10
+ /**
11
+ * URL Regex
12
+ */
13
+ export const URL_REGEX = /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/;
14
+ /**
15
+ * The italian tax code Regex (Codice Fiscale)
16
+ */
17
+ export const ITALIAN_TAX_CODE_REGEX = /^[A-Za-z]{6}[0-9]{2}[A-Za-z]{1}[0-9]{2}[A-Za-z]{1}[0-9]{3}[A-Za-z]{1}$/i;
18
+ /**
19
+ * The VAT number Regex (Partita iva)
20
+ */
21
+ export const VAT_NUMBER_REGEX = /^[0-9]{11}$/;
22
+ /**
23
+ * Italian CAP Regex
24
+ */
25
+ export const CAP_REGEX = /^[0-9]{5}$/;
26
+ /**
27
+ * Italian Plate Regex
28
+ */
29
+ export const PLATE_REGEX = /^[A-Za-z]{2}\d{3}[A-Za-z]{2}$/i;
30
+ /**
31
+ * IBAN Regex
32
+ * https://blog.marketto.it/en/2018/06/validate-any-country-iban/
33
+ */
34
+ export const IBAN_REGEX = /^(?:(?:IT|SM)\d{2}[A-Z]\d{22}|CY\d{2}[A-Z]\d{23}|NL\d{2}[A-Z]{4}\d{10}|LV\d{2}[A-Z]{4}\d{13}|(?:BG|BH|GB|IE)\d{2}[A-Z]{4}\d{14}|GI\d{2}[A-Z]{4}\d{15}|RO\d{2}[A-Z]{4}\d{16}|KW\d{2}[A-Z]{4}\d{22}|MT\d{2}[A-Z]{4}\d{23}|NO\d{13}|(?:DK|FI|GL|FO)\d{16}|MK\d{17}|(?:AT|EE|KZ|LU|XK)\d{18}|(?:BA|HR|LI|CH|CR)\d{19}|(?:GE|DE|LT|ME|RS)\d{20}|IL\d{21}|(?:AD|CZ|ES|MD|SA)\d{22}|PT\d{23}|(?:BE|IS)\d{24}|(?:FR|MR|MC)\d{25}|(?:AL|DO|LB|PL)\d{26}|(?:AZ|HU)\d{27}|(?:GR|MU)\d{28})$/i;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi91dGlscy9yZWdleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQ3RCLDRhQUE0YSxDQUFDO0FBRS9hOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsaUZBQWlGLENBQUM7QUFFcEg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQ3BCLG1OQUFtTixDQUFDO0FBRXROOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcseUVBQXlFLENBQUM7QUFFaEg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFFOUM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDO0FBRXRDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGdDQUFnQyxDQUFDO0FBRTVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FDckIsbWRBQW1kLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYWwgRW1haWwgUmVnZXggKFJGQyA1MzIyIE9mZmljaWFsIFN0YW5kYXJkKVxuICogaHR0cDovL2VtYWlscmVnZXguY29tL1xuICovXG5leHBvcnQgY29uc3QgRU1BSUxfUkVHRVggPVxuICAvKD86W2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlxcLlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKnxcIig/OltcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDIxXFx4MjMtXFx4NWJcXHg1ZC1cXHg3Zl18XFxcXFtcXHgwMS1cXHgwOVxceDBiXFx4MGNcXHgwZS1cXHg3Zl0pKlwiKUAoPzooPzpbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/XFwuKStbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/fFxcWyg/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/fFthLXowLTktXSpbYS16MC05XTooPzpbXFx4MDEtXFx4MDhcXHgwYlxceDBjXFx4MGUtXFx4MWZcXHgyMS1cXHg1YVxceDUzLVxceDdmXXxcXFxcW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBlLVxceDdmXSkrKVxcXSkvO1xuXG4vKipcbiAqIFBob25lIG51bWJlciBSZWdleFxuICovXG5leHBvcnQgY29uc3QgUEhPTkVfTlVNQkVSX1JFR0VYID0gL15cXHMqKD86XFwrPyhcXGR7MSwzfSkpP1stLiAoXSooXFxkezN9KVstLiApXSooXFxkezN9KVstLiBdKihcXGR7M30pKD86ICp4KFxcZCspKT9cXHMqJC87XG5cbi8qKlxuICogVVJMIFJlZ2V4XG4gKi9cbmV4cG9ydCBjb25zdCBVUkxfUkVHRVggPVxuICAvKGh0dHBzPzpcXC9cXC8oPzp3d3dcXC58KD8hd3d3KSlbYS16QS1aMC05XVthLXpBLVowLTktXStbYS16QS1aMC05XVxcLlteXFxzXXsyLH18d3d3XFwuW2EtekEtWjAtOV1bYS16QS1aMC05LV0rW2EtekEtWjAtOV1cXC5bXlxcc117Mix9fGh0dHBzPzpcXC9cXC8oPzp3d3dcXC58KD8hd3d3KSlbYS16QS1aMC05XStcXC5bXlxcc117Mix9fHd3d1xcLlthLXpBLVowLTldK1xcLlteXFxzXXsyLH0pLztcblxuLyoqXG4gKiBUaGUgaXRhbGlhbiB0YXggY29kZSBSZWdleCAoQ29kaWNlIEZpc2NhbGUpXG4gKi9cbmV4cG9ydCBjb25zdCBJVEFMSUFOX1RBWF9DT0RFX1JFR0VYID0gL15bQS1aYS16XXs2fVswLTldezJ9W0EtWmEtel17MX1bMC05XXsyfVtBLVphLXpdezF9WzAtOV17M31bQS1aYS16XXsxfSQvaTtcblxuLyoqXG4gKiBUaGUgVkFUIG51bWJlciBSZWdleCAoUGFydGl0YSBpdmEpXG4gKi9cbmV4cG9ydCBjb25zdCBWQVRfTlVNQkVSX1JFR0VYID0gL15bMC05XXsxMX0kLztcblxuLyoqXG4gKiBJdGFsaWFuIENBUCBSZWdleFxuICovXG5leHBvcnQgY29uc3QgQ0FQX1JFR0VYID0gL15bMC05XXs1fSQvO1xuXG4vKipcbiAqIEl0YWxpYW4gUGxhdGUgUmVnZXhcbiAqL1xuZXhwb3J0IGNvbnN0IFBMQVRFX1JFR0VYID0gL15bQS1aYS16XXsyfVxcZHszfVtBLVphLXpdezJ9JC9pO1xuXG4vKipcbiAqIElCQU4gUmVnZXhcbiAqIGh0dHBzOi8vYmxvZy5tYXJrZXR0by5pdC9lbi8yMDE4LzA2L3ZhbGlkYXRlLWFueS1jb3VudHJ5LWliYW4vXG4gKi9cbmV4cG9ydCBjb25zdCBJQkFOX1JFR0VYID1cbiAgL14oPzooPzpJVHxTTSlcXGR7Mn1bQS1aXVxcZHsyMn18Q1lcXGR7Mn1bQS1aXVxcZHsyM318TkxcXGR7Mn1bQS1aXXs0fVxcZHsxMH18TFZcXGR7Mn1bQS1aXXs0fVxcZHsxM318KD86Qkd8Qkh8R0J8SUUpXFxkezJ9W0EtWl17NH1cXGR7MTR9fEdJXFxkezJ9W0EtWl17NH1cXGR7MTV9fFJPXFxkezJ9W0EtWl17NH1cXGR7MTZ9fEtXXFxkezJ9W0EtWl17NH1cXGR7MjJ9fE1UXFxkezJ9W0EtWl17NH1cXGR7MjN9fE5PXFxkezEzfXwoPzpES3xGSXxHTHxGTylcXGR7MTZ9fE1LXFxkezE3fXwoPzpBVHxFRXxLWnxMVXxYSylcXGR7MTh9fCg/OkJBfEhSfExJfENIfENSKVxcZHsxOX18KD86R0V8REV8TFR8TUV8UlMpXFxkezIwfXxJTFxcZHsyMX18KD86QUR8Q1p8RVN8TUR8U0EpXFxkezIyfXxQVFxcZHsyM318KD86QkV8SVMpXFxkezI0fXwoPzpGUnxNUnxNQylcXGR7MjV9fCg/OkFMfERPfExCfFBMKVxcZHsyNn18KD86QVp8SFUpXFxkezI3fXwoPzpHUnxNVSlcXGR7Mjh9KSQvaTtcbiJdfQ==
@@ -0,0 +1,156 @@
1
+ import { Validators } from '@angular/forms';
2
+ import { CAP_REGEX, EMAIL_REGEX, IBAN_REGEX, ITALIAN_TAX_CODE_REGEX, PHONE_NUMBER_REGEX, PLATE_REGEX, URL_REGEX, VAT_NUMBER_REGEX, } from '../utils/regex';
3
+ export class ItValidators {
4
+ static { this.SpecialCharacterPattern = '!@#$%&*_+=;:|,.'; }
5
+ /**
6
+ * Static pattern validator with custom error
7
+ * @param regex
8
+ * @param error
9
+ */
10
+ static customPattern(regex, error) {
11
+ return (control) => {
12
+ if (!control.value) {
13
+ // if control is empty return no error
14
+ return null;
15
+ }
16
+ // test the value of the control against the regexp supplied
17
+ const valid = regex.test(control.value);
18
+ // if true, return no error (no error), else return error passed in the second parameter
19
+ return valid ? null : error;
20
+ };
21
+ }
22
+ /**
23
+ * Set Validator if the condition is satisfied
24
+ * @param validator the validator to apply if the condition is true
25
+ * @param condition the condition
26
+ */
27
+ static conditional(validator, condition) {
28
+ return formControl => {
29
+ if (!formControl.parent) {
30
+ return null;
31
+ }
32
+ if (condition(formControl)) {
33
+ return validator(formControl);
34
+ }
35
+ return null;
36
+ };
37
+ }
38
+ /**
39
+ * Check whether our password and confirm password are a match
40
+ * @param control
41
+ * @param passwordControlName the password formControlName
42
+ * @param confirmControlName the confirmPassword formControlName
43
+ */
44
+ static passwordMatch(control, passwordControlName = 'password', confirmControlName = 'confirmPassword') {
45
+ const confirmControl = control.get(confirmControlName); // confirmPassword form control
46
+ if (!confirmControl) {
47
+ return null;
48
+ }
49
+ const passwordControl = control.get(passwordControlName); // password form control
50
+ const password = passwordControl?.value; // get password from our password form control
51
+ // compare is the password match
52
+ if ((password && !confirmControl.value) || (confirmControl.value && password !== confirmControl.value)) {
53
+ // if they don't match, set an error in our confirmPassword form control
54
+ confirmControl?.setErrors({ noPasswordMatch: true });
55
+ confirmControl?.markAsTouched();
56
+ return control;
57
+ }
58
+ if (password && passwordControl?.touched) {
59
+ confirmControl?.markAsTouched();
60
+ }
61
+ return null;
62
+ }
63
+ /**
64
+ * Password validator
65
+ * @param minLength minimum password length - default 10
66
+ * @param hasNumber check whether the entered password has a number - default true
67
+ * @param hasCapitalCase check whether the entered password has upper case letter - default true
68
+ * @param hasSmallCase check whether the entered password has a lower-case letter - default true
69
+ * @param hasSpecialCharacters check whether the entered password has a special character - default true
70
+ * @param required the field is required - default true
71
+ */
72
+ static password(minLength = 10, hasNumber = true, hasCapitalCase = true, hasSmallCase = true, hasSpecialCharacters = true, required = true) {
73
+ const validators = [Validators.minLength(minLength)];
74
+ if (hasNumber) {
75
+ validators.push(ItValidators.customPattern(/\d/, { hasNumber }));
76
+ }
77
+ if (hasCapitalCase) {
78
+ validators.push(ItValidators.customPattern(/[A-Z]/, { hasCapitalCase }));
79
+ }
80
+ if (hasSmallCase) {
81
+ validators.push(ItValidators.customPattern(/[a-z]/, { hasSmallCase }));
82
+ }
83
+ if (hasSpecialCharacters) {
84
+ validators.push(ItValidators.customPattern(new RegExp(`[${ItValidators.SpecialCharacterPattern}]`), { hasSpecialCharacters }));
85
+ }
86
+ if (required) {
87
+ validators.push(Validators.required);
88
+ }
89
+ return Validators.compose(validators);
90
+ }
91
+ /**
92
+ * Email validator
93
+ */
94
+ static get email() {
95
+ return Validators.compose([Validators.email, ItValidators.customPattern(EMAIL_REGEX, { invalidEmail: true })]);
96
+ }
97
+ /**
98
+ * Phone number validator
99
+ */
100
+ static get tel() {
101
+ return ItValidators.customPattern(PHONE_NUMBER_REGEX, { invalidTel: true });
102
+ }
103
+ /**
104
+ * URL validator
105
+ */
106
+ static get url() {
107
+ return ItValidators.customPattern(URL_REGEX, { invalidUrl: true });
108
+ }
109
+ /**
110
+ * Italian Tax Code validator
111
+ */
112
+ static get taxCode() {
113
+ return ItValidators.customPattern(ITALIAN_TAX_CODE_REGEX, { invalidTaxCode: true });
114
+ }
115
+ /**
116
+ * VAT Number validator
117
+ */
118
+ static get vatNumber() {
119
+ return ItValidators.customPattern(VAT_NUMBER_REGEX, { invalidVatNumber: true });
120
+ }
121
+ /**
122
+ * Italian Postal Code validator (CAP)
123
+ */
124
+ static get cap() {
125
+ return ItValidators.customPattern(CAP_REGEX, { invalidCap: true });
126
+ }
127
+ /**
128
+ * IBAN validator
129
+ */
130
+ static get iban() {
131
+ return ItValidators.customPattern(IBAN_REGEX, { invalidIban: true });
132
+ }
133
+ /**
134
+ * Italian plate validator
135
+ */
136
+ static get plate() {
137
+ return ItValidators.customPattern(PLATE_REGEX, { invalidPlate: true });
138
+ }
139
+ /**
140
+ * Check if value is a valid RegExp
141
+ */
142
+ static get regExp() {
143
+ return (control) => {
144
+ try {
145
+ if (control?.value) {
146
+ new RegExp(control.value);
147
+ }
148
+ }
149
+ catch (e) {
150
+ return { invalidRegex: true };
151
+ }
152
+ return null;
153
+ };
154
+ }
155
+ }
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXQtdmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL3ZhbGlkYXRvcnMvaXQtdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtELFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsTUFBTSxPQUFPLFlBQVk7YUFDVCw0QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQztJQUUxRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFhLEVBQUUsS0FBdUI7UUFDaEUsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7WUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbkIsc0NBQXNDO2dCQUN0QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCw0REFBNEQ7WUFDNUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFeEMsd0ZBQXdGO1lBQ3hGLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBc0IsRUFBRSxTQUFnRDtRQUNoRyxPQUFPLFdBQVcsQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELElB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LFlBQVksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxLQUFLLE1BQU07UUFDdEIsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7WUFDM0QsSUFBSSxDQUFDO2dCQUNILElBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO29CQUNuQixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQ0FQX1JFR0VYLFxuICBFTUFJTF9SRUdFWCxcbiAgSUJBTl9SRUdFWCxcbiAgSVRBTElBTl9UQVhfQ09ERV9SRUdFWCxcbiAgUEhPTkVfTlVNQkVSX1JFR0VYLFxuICBQTEFURV9SRUdFWCxcbiAgVVJMX1JFR0VYLFxuICBWQVRfTlVNQkVSX1JFR0VYLFxufSBmcm9tICcuLi91dGlscy9yZWdleCc7XG5cbmV4cG9ydCBjbGFzcyBJdFZhbGlkYXRvcnMge1xuICBwdWJsaWMgc3RhdGljIFNwZWNpYWxDaGFyYWN0ZXJQYXR0ZXJuID0gJyFAIyQlJipfKz07OnwsLic7XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBwYXR0ZXJuIHZhbGlkYXRvciB3aXRoIGN1c3RvbSBlcnJvclxuICAgKiBAcGFyYW0gcmVnZXhcbiAgICogQHBhcmFtIGVycm9yXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbVBhdHRlcm4ocmVnZXg6IFJlZ0V4cCwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIHRlc3QgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGFnYWluc3QgdGhlIHJlZ2V4cCBzdXBwbGllZFxuICAgICAgY29uc3QgdmFsaWQgPSByZWdleC50ZXN0KGNvbnRyb2wudmFsdWUpO1xuXG4gICAgICAvLyBpZiB0cnVlLCByZXR1cm4gbm8gZXJyb3IgKG5vIGVycm9yKSwgZWxzZSByZXR1cm4gZXJyb3IgcGFzc2VkIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyXG4gICAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogZXJyb3I7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgVmFsaWRhdG9yIGlmIHRoZSBjb25kaXRpb24gaXMgc2F0aXNmaWVkXG4gICAqIEBwYXJhbSB2YWxpZGF0b3IgdGhlIHZhbGlkYXRvciB0byBhcHBseSBpZiB0aGUgY29uZGl0aW9uIGlzIHRydWVcbiAgICogQHBhcmFtIGNvbmRpdGlvbiB0aGUgY29uZGl0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbmRpdGlvbmFsKHZhbGlkYXRvcjogVmFsaWRhdG9yRm4sIGNvbmRpdGlvbjogKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gYm9vbGVhbik6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gZm9ybUNvbnRyb2wgPT4ge1xuICAgICAgaWYgKCFmb3JtQ29udHJvbC5wYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoY29uZGl0aW9uKGZvcm1Db250cm9sKSkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdG9yKGZvcm1Db250cm9sKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBvdXIgcGFzc3dvcmQgYW5kIGNvbmZpcm0gcGFzc3dvcmQgYXJlIGEgbWF0Y2hcbiAgICogQHBhcmFtIGNvbnRyb2xcbiAgICogQHBhcmFtIHBhc3N3b3JkQ29udHJvbE5hbWUgdGhlIHBhc3N3b3JkIGZvcm1Db250cm9sTmFtZVxuICAgKiBAcGFyYW0gY29uZmlybUNvbnRyb2xOYW1lIHRoZSBjb25maXJtUGFzc3dvcmQgZm9ybUNvbnRyb2xOYW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHBhc3N3b3JkTWF0Y2goXG4gICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICAgIHBhc3N3b3JkQ29udHJvbE5hbWUgPSAncGFzc3dvcmQnLFxuICAgIGNvbmZpcm1Db250cm9sTmFtZSA9ICdjb25maXJtUGFzc3dvcmQnXG4gICk6IEFic3RyYWN0Q29udHJvbCB8IG51bGwge1xuICAgIGNvbnN0IGNvbmZpcm1Db250cm9sID0gY29udHJvbC5nZXQoY29uZmlybUNvbnRyb2xOYW1lKTsgLy8gY29uZmlybVBhc3N3b3JkIGZvcm0gY29udHJvbFxuICAgIGlmICghY29uZmlybUNvbnRyb2wpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHBhc3N3b3JkQ29udHJvbCA9IGNvbnRyb2wuZ2V0KHBhc3N3b3JkQ29udHJvbE5hbWUpOyAvLyBwYXNzd29yZCBmb3JtIGNvbnRyb2xcbiAgICBjb25zdCBwYXNzd29yZCA9IHBhc3N3b3JkQ29udHJvbD8udmFsdWU7IC8vIGdldCBwYXNzd29yZCBmcm9tIG91ciBwYXNzd29yZCBmb3JtIGNvbnRyb2xcblxuICAgIC8vIGNvbXBhcmUgaXMgdGhlIHBhc3N3b3JkIG1hdGNoXG4gICAgaWYgKChwYXNzd29yZCAmJiAhY29uZmlybUNvbnRyb2wudmFsdWUpIHx8IChjb25maXJtQ29udHJvbC52YWx1ZSAmJiBwYXNzd29yZCAhPT0gY29uZmlybUNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAvLyBpZiB0aGV5IGRvbid0IG1hdGNoLCBzZXQgYW4gZXJyb3IgaW4gb3VyIGNvbmZpcm1QYXNzd29yZCBmb3JtIGNvbnRyb2xcbiAgICAgIGNvbmZpcm1Db250cm9sPy5zZXRFcnJvcnMoeyBub1Bhc3N3b3JkTWF0Y2g6IHRydWUgfSk7XG4gICAgICBjb25maXJtQ29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuIGNvbnRyb2w7XG4gICAgfVxuXG4gICAgaWYgKHBhc3N3b3JkICYmIHBhc3N3b3JkQ29udHJvbD8udG91Y2hlZCkge1xuICAgICAgY29uZmlybUNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUGFzc3dvcmQgdmFsaWRhdG9yXG4gICAqIEBwYXJhbSBtaW5MZW5ndGggbWluaW11bSBwYXNzd29yZCBsZW5ndGggLSBkZWZhdWx0IDEwXG4gICAqIEBwYXJhbSBoYXNOdW1iZXIgY2hlY2sgd2hldGhlciB0aGUgZW50ZXJlZCBwYXNzd29yZCBoYXMgYSBudW1iZXIgLSBkZWZhdWx0IHRydWVcbiAgICogQHBhcmFtIGhhc0NhcGl0YWxDYXNlIGNoZWNrIHdoZXRoZXIgdGhlIGVudGVyZWQgcGFzc3dvcmQgaGFzIHVwcGVyIGNhc2UgbGV0dGVyIC0gZGVmYXVsdCB0cnVlXG4gICAqIEBwYXJhbSBoYXNTbWFsbENhc2UgY2hlY2sgd2hldGhlciB0aGUgZW50ZXJlZCBwYXNzd29yZCBoYXMgYSBsb3dlci1jYXNlIGxldHRlciAtIGRlZmF1bHQgdHJ1ZVxuICAgKiBAcGFyYW0gaGFzU3BlY2lhbENoYXJhY3RlcnMgY2hlY2sgd2hldGhlciB0aGUgZW50ZXJlZCBwYXNzd29yZCBoYXMgYSBzcGVjaWFsIGNoYXJhY3RlciAtIGRlZmF1bHQgdHJ1ZVxuICAgKiBAcGFyYW0gcmVxdWlyZWQgdGhlIGZpZWxkIGlzIHJlcXVpcmVkIC0gZGVmYXVsdCB0cnVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHBhc3N3b3JkKFxuICAgIG1pbkxlbmd0aCA9IDEwLFxuICAgIGhhc051bWJlciA9IHRydWUsXG4gICAgaGFzQ2FwaXRhbENhc2UgPSB0cnVlLFxuICAgIGhhc1NtYWxsQ2FzZSA9IHRydWUsXG4gICAgaGFzU3BlY2lhbENoYXJhY3RlcnMgPSB0cnVlLFxuICAgIHJlcXVpcmVkID0gdHJ1ZVxuICApOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgdmFsaWRhdG9yczogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW1ZhbGlkYXRvcnMubWluTGVuZ3RoKG1pbkxlbmd0aCldO1xuICAgIGlmIChoYXNOdW1iZXIpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChJdFZhbGlkYXRvcnMuY3VzdG9tUGF0dGVybigvXFxkLywgeyBoYXNOdW1iZXIgfSkpO1xuICAgIH1cbiAgICBpZiAoaGFzQ2FwaXRhbENhc2UpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChJdFZhbGlkYXRvcnMuY3VzdG9tUGF0dGVybigvW0EtWl0vLCB7IGhhc0NhcGl0YWxDYXNlIH0pKTtcbiAgICB9XG4gICAgaWYgKGhhc1NtYWxsQ2FzZSkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKEl0VmFsaWRhdG9ycy5jdXN0b21QYXR0ZXJuKC9bYS16XS8sIHsgaGFzU21hbGxDYXNlIH0pKTtcbiAgICB9XG4gICAgaWYgKGhhc1NwZWNpYWxDaGFyYWN0ZXJzKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goSXRWYWxpZGF0b3JzLmN1c3RvbVBhdHRlcm4obmV3IFJlZ0V4cChgWyR7SXRWYWxpZGF0b3JzLlNwZWNpYWxDaGFyYWN0ZXJQYXR0ZXJufV1gKSwgeyBoYXNTcGVjaWFsQ2hhcmFjdGVycyB9KSk7XG4gICAgfVxuICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cbiAgICByZXR1cm4gPFZhbGlkYXRvckZuPlZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZGF0b3JzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWFpbCB2YWxpZGF0b3JcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGVtYWlsKCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gPFZhbGlkYXRvckZuPlZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5lbWFpbCwgSXRWYWxpZGF0b3JzLmN1c3RvbVBhdHRlcm4oRU1BSUxfUkVHRVgsIHsgaW52YWxpZEVtYWlsOiB0cnVlIH0pXSk7XG4gIH1cblxuICAvKipcbiAgICogUGhvbmUgbnVtYmVyIHZhbGlkYXRvclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgdGVsKCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gSXRWYWxpZGF0b3JzLmN1c3RvbVBhdHRlcm4oUEhPTkVfTlVNQkVSX1JFR0VYLCB7IGludmFsaWRUZWw6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogVVJMIHZhbGlkYXRvclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgdXJsKCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gSXRWYWxpZGF0b3JzLmN1c3RvbVBhdHRlcm4oVVJMX1JFR0VYLCB7IGludmFsaWRVcmw6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSXRhbGlhbiBUYXggQ29kZSB2YWxpZGF0b3JcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHRheENvZGUoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiBJdFZhbGlkYXRvcnMuY3VzdG9tUGF0dGVybihJVEFMSUFOX1RBWF9DT0RFX1JFR0VYLCB7IGludmFsaWRUYXhDb2RlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZBVCBOdW1iZXIgdmFsaWRhdG9yXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCB2YXROdW1iZXIoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiBJdFZhbGlkYXRvcnMuY3VzdG9tUGF0dGVybihWQVRfTlVNQkVSX1JFR0VYLCB7IGludmFsaWRWYXROdW1iZXI6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSXRhbGlhbiBQb3N0YWwgQ29kZSB2YWxpZGF0b3IgKENBUClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGNhcCgpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIEl0VmFsaWRhdG9ycy5jdXN0b21QYXR0ZXJuKENBUF9SRUdFWCwgeyBpbnZhbGlkQ2FwOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIElCQU4gdmFsaWRhdG9yXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBpYmFuKCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gSXRWYWxpZGF0b3JzLmN1c3RvbVBhdHRlcm4oSUJBTl9SRUdFWCwgeyBpbnZhbGlkSWJhbjogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdGFsaWFuIHBsYXRlIHZhbGlkYXRvclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgcGxhdGUoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiBJdFZhbGlkYXRvcnMuY3VzdG9tUGF0dGVybihQTEFURV9SRUdFWCwgeyBpbnZhbGlkUGxhdGU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdmFsdWUgaXMgYSB2YWxpZCBSZWdFeHBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHJlZ0V4cCgpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoY29udHJvbD8udmFsdWUpIHtcbiAgICAgICAgICBuZXcgUmVnRXhwKGNvbnRyb2wudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB7IGludmFsaWRSZWdleDogdHJ1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxufVxuIl19