@updevs/components 1.0.0-alpha.9 → 1.0.0-alpha.90

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 (1151) hide show
  1. package/README.md +1 -1
  2. package/assets/styles/_core.scss +9 -0
  3. package/assets/styles/_debug.scss +49 -0
  4. package/assets/styles/_props.scss +91 -0
  5. package/assets/styles/_updevs.scss +12 -0
  6. package/assets/styles/_utilities-marketing.scss +209 -0
  7. package/assets/styles/_utilities.scss +127 -92
  8. package/assets/styles/_variables-dark.scss +8 -6
  9. package/assets/styles/_variables.scss +326 -257
  10. package/assets/styles/helpers/_index.scss +143 -0
  11. package/assets/styles/layout/_core.scss +3 -2
  12. package/assets/styles/layout/_dark.scss +40 -35
  13. package/assets/styles/layout/_footer.scss +1 -1
  14. package/assets/styles/layout/_navbar.scss +31 -19
  15. package/assets/styles/layout/_page.scss +6 -5
  16. package/assets/styles/layout/_root.scss +26 -34
  17. package/assets/styles/marketing/_browser.scss +67 -0
  18. package/assets/styles/marketing/_core.scss +8 -0
  19. package/assets/styles/marketing/_hero.scss +70 -0
  20. package/assets/styles/marketing/_pricing.scss +111 -0
  21. package/assets/styles/marketing/_sections.scss +124 -0
  22. package/assets/styles/marketing/_shape.scss +31 -0
  23. package/assets/styles/mixins/_functions.scss +53 -0
  24. package/assets/styles/mixins/_mixins.scss +9 -9
  25. package/assets/styles/ui/_accordion.scss +165 -11
  26. package/assets/styles/ui/_alerts.scss +80 -38
  27. package/assets/styles/ui/_avatars.scss +36 -9
  28. package/assets/styles/ui/_badges.scss +47 -13
  29. package/assets/styles/ui/_button-group.scss +1 -1
  30. package/assets/styles/ui/_buttons.scss +33 -37
  31. package/assets/styles/ui/_calendars.scss +2 -2
  32. package/assets/styles/ui/_cards.scss +9 -0
  33. package/assets/styles/ui/_carousel.scss +1 -1
  34. package/assets/styles/ui/_charts.scss +1 -1
  35. package/assets/styles/ui/_chat.scss +38 -0
  36. package/assets/styles/ui/_close.scss +54 -1
  37. package/assets/styles/ui/_datagrid.scss +1 -1
  38. package/assets/styles/ui/_dropdowns.scss +3 -0
  39. package/assets/styles/ui/_empty.scss +0 -5
  40. package/assets/styles/ui/_flags.scss +2 -2
  41. package/assets/styles/ui/_forms.scss +33 -7
  42. package/assets/styles/ui/_grid.scss +1 -1
  43. package/assets/styles/ui/_icons.scss +1 -1
  44. package/assets/styles/ui/_images.scss +4 -0
  45. package/assets/styles/ui/_lists.scss +12 -16
  46. package/assets/styles/ui/_loaders.scss +1 -1
  47. package/assets/styles/ui/_markdown.scss +15 -4
  48. package/assets/styles/ui/_modals.scss +2 -2
  49. package/assets/styles/ui/_nav.scss +17 -3
  50. package/assets/styles/ui/_offcanvas.scss +2 -2
  51. package/assets/styles/ui/_pagination.scss +2 -0
  52. package/assets/styles/ui/_payments.scss +1 -1
  53. package/assets/styles/ui/_placeholder.scss +1 -1
  54. package/assets/styles/ui/_progress.scss +1 -1
  55. package/assets/styles/ui/_ribbons.scss +1 -0
  56. package/assets/styles/ui/_segmented.scss +101 -0
  57. package/assets/styles/ui/_signature.scss +15 -0
  58. package/assets/styles/ui/_social.scss +52 -0
  59. package/assets/styles/ui/_status.scss +1 -1
  60. package/assets/styles/ui/_steps.scss +5 -1
  61. package/assets/styles/ui/_switch-icon.scss +1 -1
  62. package/assets/styles/ui/_tables.scss +27 -1
  63. package/assets/styles/ui/_tags.scss +1 -1
  64. package/assets/styles/ui/_timeline.scss +1 -1
  65. package/assets/styles/ui/_toasts.scss +0 -1
  66. package/assets/styles/ui/_tracking.scss +1 -1
  67. package/assets/styles/ui/_type.scss +169 -8
  68. package/assets/styles/ui/forms/_form-check.scss +1 -1
  69. package/assets/styles/ui/forms/_form-colorinput.scss +1 -1
  70. package/assets/styles/ui/forms/_form-custom.scss +1 -1
  71. package/assets/styles/ui/forms/_form-imagecheck.scss +6 -5
  72. package/assets/styles/ui/forms/_form-selectgroup.scss +2 -2
  73. package/assets/styles/ui/typo/_hr.scss +4 -2
  74. package/assets/styles/utils/_colors.scss +72 -11
  75. package/assets/styles/utils/_opacity.scss +1 -1
  76. package/assets/styles/utils/_scroll.scss +0 -2
  77. package/assets/styles/utils/_sizing.scss +1 -1
  78. package/assets/styles/utils/_text.scss +1 -2
  79. package/assets/styles/vendor/_apexcharts.scss +52 -0
  80. package/assets/styles/vendor/_coloris.scss +72 -0
  81. package/assets/styles/vendor/_dropzone.scss +27 -0
  82. package/assets/styles/vendor/_fslightbox.scss +13 -0
  83. package/assets/styles/vendor/_jsvectormap.scss +47 -0
  84. package/assets/styles/vendor/_litepicker.scss +69 -0
  85. package/assets/styles/vendor/_nouislider.scss +49 -0
  86. package/assets/styles/vendor/_plyr.scss +3 -0
  87. package/assets/styles/vendor/_stars-rating.scss +22 -0
  88. package/assets/styles/vendor/_tom-select.scss +81 -0
  89. package/assets/styles/vendor/_turbo.scss +3 -0
  90. package/assets/styles/vendor/_typed.scss +4 -0
  91. package/assets/styles/vendor/_wysiwyg.scss +46 -0
  92. package/badge/badge-config.model.d.ts +14 -0
  93. package/badge/badge.component.d.ts +23 -0
  94. package/badge/badge.config.d.ts +12 -0
  95. package/badge/upd-badge.module.d.ts +8 -0
  96. package/button/button.component.d.ts +61 -0
  97. package/button/upd-button.module.d.ts +10 -0
  98. package/calendar/calendar.component.d.ts +63 -0
  99. package/calendar/models/calendar-date.model.d.ts +10 -0
  100. package/calendar/models/calendar-month.model.d.ts +7 -0
  101. package/calendar/models/calendar-selected.model.d.ts +5 -0
  102. package/calendar/models/calendar-year.model.d.ts +6 -0
  103. package/calendar/models/date-range.model.d.ts +22 -0
  104. package/calendar/models/enums/calendar-view.enum.d.ts +5 -0
  105. package/calendar/models/public-api.d.ts +7 -0
  106. package/calendar/services/calendar-range-strategy.service.d.ts +35 -0
  107. package/calendar/services/calendar-signals.service.d.ts +24 -0
  108. package/calendar/upd-calendar.module.d.ts +13 -0
  109. package/card/card.component.d.ts +54 -0
  110. package/card/directives/card-actions.directive.d.ts +7 -0
  111. package/card/directives/card-footer.directive.d.ts +7 -0
  112. package/card/directives/card-header.directive.d.ts +7 -0
  113. package/card/directives/card-image.directive.d.ts +7 -0
  114. package/card/public-api.d.ts +4 -0
  115. package/card/upd-card.module.d.ts +14 -0
  116. package/drag-and-drop/drag-and-drop.component.d.ts +26 -0
  117. package/drag-and-drop/models/drag-and-drop-column.config.d.ts +8 -0
  118. package/drag-and-drop/models/drag-and-drop-column.model.d.ts +10 -0
  119. package/drag-and-drop/models/drag-and-drop-item.d.ts +7 -0
  120. package/drag-and-drop/models/drag-and-drop-item.model.d.ts +13 -0
  121. package/drag-and-drop/models/drag-and-drop.config.d.ts +6 -0
  122. package/drag-and-drop/upd-drag-and-drop.module.d.ts +9 -0
  123. package/dropdown/dropdown.component.d.ts +80 -0
  124. package/dropdown/models/dropdown-action-clicked.model.d.ts +6 -0
  125. package/dropdown/models/dropdown-item.d.ts +25 -0
  126. package/dropdown/upd-dropdown.module.d.ts +12 -0
  127. package/esm2022/badge/badge-config.model.mjs +14 -0
  128. package/esm2022/badge/badge.component.mjs +48 -0
  129. package/esm2022/badge/badge.config.mjs +2 -0
  130. package/esm2022/badge/index.mjs +2 -0
  131. package/esm2022/badge/public-api.mjs +4 -0
  132. package/esm2022/badge/upd-badge.module.mjs +24 -0
  133. package/esm2022/badge/updevs-components-badge.mjs +5 -0
  134. package/esm2022/button/button.component.mjs +157 -0
  135. package/esm2022/button/index.mjs +2 -0
  136. package/esm2022/button/public-api.mjs +3 -0
  137. package/esm2022/button/upd-button.module.mjs +32 -0
  138. package/esm2022/button/updevs-components-button.mjs +5 -0
  139. package/esm2022/calendar/calendar.component.mjs +318 -0
  140. package/esm2022/calendar/index.mjs +2 -0
  141. package/esm2022/calendar/models/calendar-date.model.mjs +2 -0
  142. package/esm2022/calendar/models/calendar-month.model.mjs +2 -0
  143. package/esm2022/calendar/models/calendar-selected.model.mjs +2 -0
  144. package/esm2022/calendar/models/calendar-user-event.model.mjs +2 -0
  145. package/esm2022/calendar/models/calendar-year.model.mjs +2 -0
  146. package/esm2022/calendar/models/date-range.model.mjs +18 -0
  147. package/esm2022/calendar/models/enums/calendar-view.enum.mjs +7 -0
  148. package/esm2022/calendar/models/public-api.mjs +8 -0
  149. package/esm2022/calendar/public-api.mjs +6 -0
  150. package/esm2022/calendar/services/calendar-range-strategy.service.mjs +99 -0
  151. package/esm2022/calendar/services/calendar-signals.service.mjs +47 -0
  152. package/esm2022/calendar/services/public-api.mjs +2 -0
  153. package/esm2022/calendar/types/calendar-view.type.mjs +2 -0
  154. package/esm2022/calendar/types/public-api.mjs +2 -0
  155. package/esm2022/calendar/upd-calendar.module.mjs +52 -0
  156. package/esm2022/calendar/updevs-components-calendar.mjs +5 -0
  157. package/esm2022/card/card.component.mjs +136 -0
  158. package/esm2022/card/directives/card-actions.directive.mjs +16 -0
  159. package/esm2022/card/directives/card-footer.directive.mjs +16 -0
  160. package/esm2022/card/directives/card-header.directive.mjs +16 -0
  161. package/esm2022/card/directives/card-image.directive.mjs +16 -0
  162. package/esm2022/card/directives/public-api.mjs +5 -0
  163. package/esm2022/card/index.mjs +2 -0
  164. package/esm2022/card/public-api.mjs +5 -0
  165. package/esm2022/card/types/card-state.type.mjs +2 -0
  166. package/esm2022/card/types/card-style.type.mjs +2 -0
  167. package/esm2022/card/types/hover-effect.type.mjs +2 -0
  168. package/esm2022/card/types/public-api.mjs +6 -0
  169. package/esm2022/card/types/ribbon-style.type.mjs +2 -0
  170. package/esm2022/card/types/status-position.type.mjs +2 -0
  171. package/esm2022/card/upd-card.module.mjs +50 -0
  172. package/esm2022/card/updevs-components-card.mjs +5 -0
  173. package/esm2022/drag-and-drop/drag-and-drop.component.mjs +134 -0
  174. package/esm2022/drag-and-drop/index.mjs +2 -0
  175. package/esm2022/drag-and-drop/models/drag-and-drop-column.config.mjs +2 -0
  176. package/esm2022/drag-and-drop/models/drag-and-drop-column.model.mjs +9 -0
  177. package/esm2022/drag-and-drop/models/drag-and-drop-item.mjs +2 -0
  178. package/esm2022/drag-and-drop/models/drag-and-drop-item.model.mjs +14 -0
  179. package/esm2022/drag-and-drop/models/drag-and-drop.config.mjs +2 -0
  180. package/esm2022/drag-and-drop/models/public-api.mjs +5 -0
  181. package/esm2022/drag-and-drop/public-api.mjs +4 -0
  182. package/esm2022/drag-and-drop/upd-drag-and-drop.module.mjs +28 -0
  183. package/esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs +5 -0
  184. package/esm2022/dropdown/dropdown.component.mjs +203 -0
  185. package/esm2022/dropdown/index.mjs +2 -0
  186. package/esm2022/dropdown/models/dropdown-action-clicked.model.mjs +2 -0
  187. package/esm2022/dropdown/models/dropdown-item.mjs +2 -0
  188. package/esm2022/dropdown/models/dropdown-item.type.mjs +2 -0
  189. package/esm2022/dropdown/models/public-api.mjs +5 -0
  190. package/esm2022/dropdown/models/toolbar.type.mjs +2 -0
  191. package/esm2022/dropdown/public-api.mjs +4 -0
  192. package/esm2022/dropdown/upd-dropdown.module.mjs +40 -0
  193. package/esm2022/dropdown/updevs-components-dropdown.mjs +5 -0
  194. package/esm2022/form/components/dynamic-field/dynamic-field.component.mjs +180 -0
  195. package/esm2022/form/form.component.mjs +180 -0
  196. package/esm2022/form/index.mjs +2 -0
  197. package/esm2022/form/models/attachment-rule.model.mjs +2 -0
  198. package/esm2022/form/models/button-field.model.mjs +2 -0
  199. package/esm2022/form/models/button-group-field.model.mjs +2 -0
  200. package/esm2022/form/models/checkbox-field.model.mjs +2 -0
  201. package/esm2022/form/models/checkbox-group-field.model.mjs +2 -0
  202. package/esm2022/form/models/dynamic-field.model.mjs +2 -0
  203. package/esm2022/form/models/enums/attachment-type.enum.mjs +15 -0
  204. package/esm2022/form/models/enums/dynamic-field.type.mjs +17 -0
  205. package/esm2022/form/models/enums/public-api.mjs +3 -0
  206. package/esm2022/form/models/file-upload-field.model.mjs +2 -0
  207. package/esm2022/form/models/form-config.mjs +2 -0
  208. package/esm2022/form/models/form-row.model.mjs +2 -0
  209. package/esm2022/form/models/form-update-on.type.mjs +2 -0
  210. package/esm2022/form/models/input-field.model.mjs +2 -0
  211. package/esm2022/form/models/masked-input-field.model.mjs +2 -0
  212. package/esm2022/form/models/public-api.mjs +19 -0
  213. package/esm2022/form/models/radio-field.model.mjs +2 -0
  214. package/esm2022/form/models/radio-group-field.model.mjs +2 -0
  215. package/esm2022/form/models/select-field.model.mjs +2 -0
  216. package/esm2022/form/models/single-select-field.model.mjs +2 -0
  217. package/esm2022/form/models/textarea-field.model.mjs +2 -0
  218. package/esm2022/form/models/validator-config.mjs +2 -0
  219. package/esm2022/form/public-api.mjs +4 -0
  220. package/esm2022/form/tools/errors-helper.mjs +54 -0
  221. package/esm2022/form/upd-form.module.mjs +84 -0
  222. package/esm2022/form/updevs-components-form.mjs +5 -0
  223. package/esm2022/form-controls/abstractions/base-control.mjs +99 -0
  224. package/esm2022/form-controls/abstractions/index.mjs +2 -0
  225. package/esm2022/form-controls/abstractions/public-api.mjs +2 -0
  226. package/esm2022/form-controls/abstractions/updevs-components-form-controls-abstractions.mjs +5 -0
  227. package/esm2022/form-controls/checkbox/checkbox.component.mjs +63 -0
  228. package/esm2022/form-controls/checkbox/index.mjs +2 -0
  229. package/esm2022/form-controls/checkbox/public-api.mjs +3 -0
  230. package/esm2022/form-controls/checkbox/upd-checkbox.module.mjs +32 -0
  231. package/esm2022/form-controls/checkbox/updevs-components-form-controls-checkbox.mjs +5 -0
  232. package/esm2022/form-controls/date-picker/date-picker.component.mjs +132 -0
  233. package/esm2022/form-controls/date-picker/index.mjs +2 -0
  234. package/esm2022/form-controls/date-picker/public-api.mjs +3 -0
  235. package/esm2022/form-controls/date-picker/upd-date-picker.module.mjs +40 -0
  236. package/esm2022/form-controls/date-picker/updevs-components-form-controls-date-picker.mjs +5 -0
  237. package/esm2022/form-controls/file-upload/assets/i18n/en.json +15 -0
  238. package/esm2022/form-controls/file-upload/assets/i18n/pt.json +15 -0
  239. package/esm2022/form-controls/file-upload/file-upload-changed.event.mjs +2 -0
  240. package/esm2022/form-controls/file-upload/file-upload.component.mjs +177 -0
  241. package/esm2022/form-controls/file-upload/index.mjs +2 -0
  242. package/esm2022/form-controls/file-upload/public-api.mjs +4 -0
  243. package/esm2022/form-controls/file-upload/upd-file-upload.module.mjs +48 -0
  244. package/esm2022/form-controls/file-upload/updevs-components-form-controls-file-upload.mjs +5 -0
  245. package/esm2022/form-controls/input/directives/input-append.directive.mjs +16 -0
  246. package/esm2022/form-controls/input/directives/input-prepend.directive.mjs +16 -0
  247. package/esm2022/form-controls/input/directives/public-api.mjs +3 -0
  248. package/esm2022/form-controls/input/index.mjs +2 -0
  249. package/esm2022/form-controls/input/input.component.mjs +205 -0
  250. package/esm2022/form-controls/input/public-api.mjs +5 -0
  251. package/esm2022/form-controls/input/types/input.type.mjs +2 -0
  252. package/esm2022/form-controls/input/types/loader-position.type.mjs +2 -0
  253. package/esm2022/form-controls/input/types/public-api.mjs +3 -0
  254. package/esm2022/form-controls/input/upd-input.module.mjs +46 -0
  255. package/esm2022/form-controls/input/updevs-components-form-controls-input.mjs +5 -0
  256. package/esm2022/form-controls/radio/index.mjs +2 -0
  257. package/esm2022/form-controls/radio/public-api.mjs +3 -0
  258. package/esm2022/form-controls/radio/radio.component.mjs +62 -0
  259. package/esm2022/form-controls/radio/upd-radio.module.mjs +32 -0
  260. package/esm2022/form-controls/radio/updevs-components-form-controls-radio.mjs +5 -0
  261. package/esm2022/form-controls/select/components/multiple/select-multiple.component.mjs +109 -0
  262. package/esm2022/form-controls/select/components/single/select.component.mjs +179 -0
  263. package/esm2022/form-controls/select/index.mjs +2 -0
  264. package/esm2022/form-controls/select/models/abstractions/base-select.component.mjs +246 -0
  265. package/esm2022/form-controls/select/models/defaults.mjs +8 -0
  266. package/esm2022/form-controls/select/models/public-api.mjs +4 -0
  267. package/esm2022/form-controls/select/models/select-item.mjs +2 -0
  268. package/esm2022/form-controls/select/models/types.mjs +2 -0
  269. package/esm2022/form-controls/select/public-api.mjs +5 -0
  270. package/esm2022/form-controls/select/upd-select.module.mjs +57 -0
  271. package/esm2022/form-controls/select/updevs-components-form-controls-select.mjs +5 -0
  272. package/esm2022/form-controls/textarea/index.mjs +2 -0
  273. package/esm2022/form-controls/textarea/public-api.mjs +3 -0
  274. package/esm2022/form-controls/textarea/textarea.component.mjs +51 -0
  275. package/esm2022/form-controls/textarea/upd-textarea.module.mjs +24 -0
  276. package/esm2022/form-controls/textarea/updevs-components-form-controls-textarea.mjs +5 -0
  277. package/esm2022/form-controls/time-picker/index.mjs +2 -0
  278. package/esm2022/form-controls/time-picker/public-api.mjs +4 -0
  279. package/esm2022/form-controls/time-picker/time-picker.component.mjs +130 -0
  280. package/esm2022/form-controls/time-picker/time-selector/time-selector.component.mjs +124 -0
  281. package/esm2022/form-controls/time-picker/upd-time-picker.module.mjs +61 -0
  282. package/esm2022/form-controls/time-picker/updevs-components-form-controls-time-picker.mjs +5 -0
  283. package/esm2022/index.mjs +2 -0
  284. package/esm2022/layout/abstractions/base-page.component.mjs +23 -0
  285. package/esm2022/layout/abstractions/base.layout.mjs +31 -0
  286. package/esm2022/layout/abstractions/public-api.mjs +2 -0
  287. package/esm2022/layout/assets/i18n/en.json +27 -0
  288. package/esm2022/layout/assets/i18n/pt.json +27 -0
  289. package/esm2022/layout/index.mjs +2 -0
  290. package/esm2022/layout/layouts/blank-layout/blank-layout.component.mjs +22 -0
  291. package/esm2022/layout/layouts/blank-layout/blank-layout.module.mjs +50 -0
  292. package/esm2022/layout/layouts/public-api.mjs +5 -0
  293. package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.mjs +17 -0
  294. package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.mjs +78 -0
  295. package/esm2022/layout/models/login-page-config.model.mjs +20 -0
  296. package/esm2022/layout/models/login-page.config.mjs +2 -0
  297. package/esm2022/layout/models/public-api.mjs +3 -0
  298. package/esm2022/layout/models/security-layout-config.model.mjs +10 -0
  299. package/esm2022/layout/models/security-layout.config.mjs +2 -0
  300. package/esm2022/layout/models/upd-layout-config.model.mjs +24 -0
  301. package/esm2022/layout/models/upd-layout.config.mjs +2 -0
  302. package/esm2022/layout/pages/auth-flow/auth-flow-routing.module.mjs +28 -0
  303. package/esm2022/layout/pages/auth-flow/auth-flow.module.mjs +73 -0
  304. package/esm2022/layout/pages/auth-flow/logged-out/logged-out.component.mjs +11 -0
  305. package/esm2022/layout/pages/auth-flow/login/login.component.mjs +110 -0
  306. package/esm2022/layout/pages/auth-flow/oauth-callback/oauth-callback.component.mjs +11 -0
  307. package/esm2022/layout/pages/auth-flow/public-api.mjs +6 -0
  308. package/esm2022/layout/pages/public-api.mjs +2 -0
  309. package/esm2022/layout/partials/footer/footer.component.mjs +52 -0
  310. package/esm2022/layout/partials/footer/footer.module.mjs +28 -0
  311. package/esm2022/layout/partials/footer/public-api.mjs +3 -0
  312. package/esm2022/layout/partials/header/header-style.type.mjs +2 -0
  313. package/esm2022/layout/partials/header/header.component.mjs +140 -0
  314. package/esm2022/layout/partials/header/header.module.mjs +40 -0
  315. package/esm2022/layout/partials/header/public-api.mjs +4 -0
  316. package/esm2022/layout/partials/page-header/page-header.component.mjs +15 -0
  317. package/esm2022/layout/partials/page-header/public-api.mjs +2 -0
  318. package/esm2022/layout/partials/public-api.mjs +5 -0
  319. package/esm2022/layout/partials/sidebar/public-api.mjs +2 -0
  320. package/esm2022/layout/partials/sidebar/sidebar.component.mjs +234 -0
  321. package/esm2022/layout/public-api.mjs +8 -0
  322. package/esm2022/layout/services/public-api.mjs +2 -0
  323. package/esm2022/layout/services/upd-layout-config.service.mjs +21 -0
  324. package/esm2022/layout/tools/layout.constants.mjs +15 -0
  325. package/esm2022/layout/upd-layout.module.mjs +47 -0
  326. package/esm2022/layout/updevs-components-layout.mjs +5 -0
  327. package/esm2022/lib/index.mjs +2 -0
  328. package/esm2022/lib/models/public-api.mjs +2 -0
  329. package/esm2022/lib/models/row-column-size.mjs +2 -0
  330. package/esm2022/lib/public-api.mjs +5 -0
  331. package/esm2022/lib/tools/column-size.helper.mjs +12 -0
  332. package/esm2022/lib/tools/public-api.mjs +2 -0
  333. package/esm2022/lib/types/component-size.type.mjs +2 -0
  334. package/esm2022/lib/types/horizontal-vertical.type.mjs +2 -0
  335. package/esm2022/lib/types/public-api.mjs +4 -0
  336. package/esm2022/lib/types/validation-status.type.mjs +2 -0
  337. package/esm2022/lib/upd-components.module.mjs +14 -0
  338. package/esm2022/link/index.mjs +2 -0
  339. package/esm2022/link/link.component.mjs +51 -0
  340. package/esm2022/link/public-api.mjs +4 -0
  341. package/esm2022/link/target.type.mjs +2 -0
  342. package/esm2022/link/upd-link.module.mjs +24 -0
  343. package/esm2022/link/updevs-components-link.mjs +5 -0
  344. package/esm2022/list/index.mjs +2 -0
  345. package/esm2022/list/list.component.mjs +114 -0
  346. package/esm2022/list/models/badge-position.type.mjs +2 -0
  347. package/esm2022/list/models/list-item.mjs +2 -0
  348. package/esm2022/list/models/list-item.model.mjs +20 -0
  349. package/esm2022/list/models/public-api.mjs +3 -0
  350. package/esm2022/list/public-api.mjs +4 -0
  351. package/esm2022/list/upd-list.module.mjs +44 -0
  352. package/esm2022/list/updevs-components-list.mjs +5 -0
  353. package/esm2022/modal/components/modal-container/modal-container.component.mjs +216 -0
  354. package/esm2022/modal/index.mjs +2 -0
  355. package/esm2022/modal/models/base.modal.mjs +14 -0
  356. package/esm2022/modal/models/modal-config.model.mjs +20 -0
  357. package/esm2022/modal/models/modal-ref.mjs +2 -0
  358. package/esm2022/modal/models/modal.config.mjs +2 -0
  359. package/esm2022/modal/models/public-api.mjs +4 -0
  360. package/esm2022/modal/public-api.mjs +4 -0
  361. package/esm2022/modal/services/modal-alert.service.mjs +99 -0
  362. package/esm2022/modal/services/modal.service.mjs +30 -0
  363. package/esm2022/modal/services/public-api.mjs +3 -0
  364. package/esm2022/modal/types/modal-footer-style.type.mjs +2 -0
  365. package/esm2022/modal/types/modal-size.type.mjs +2 -0
  366. package/esm2022/modal/upd-modal.module.mjs +90 -0
  367. package/esm2022/modal/updevs-components-modal.mjs +5 -0
  368. package/esm2022/paginator/index.mjs +2 -0
  369. package/esm2022/paginator/paginator.component.mjs +66 -0
  370. package/esm2022/paginator/public-api.mjs +3 -0
  371. package/esm2022/paginator/upd-paginator.module.mjs +47 -0
  372. package/esm2022/paginator/updevs-components-paginator.mjs +5 -0
  373. package/esm2022/popover/index.mjs +2 -0
  374. package/esm2022/popover/popover.component.mjs +65 -0
  375. package/esm2022/popover/popover.directive.mjs +120 -0
  376. package/esm2022/popover/public-api.mjs +4 -0
  377. package/esm2022/popover/upd-popover.module.mjs +29 -0
  378. package/esm2022/popover/updevs-components-popover.mjs +5 -0
  379. package/esm2022/pricing/index.mjs +2 -0
  380. package/esm2022/pricing/models/price-item-feature.model.mjs +2 -0
  381. package/esm2022/pricing/models/price-item-features-group.model.mjs +2 -0
  382. package/esm2022/pricing/models/price-item-tag.model.mjs +2 -0
  383. package/esm2022/pricing/models/price-item.model.mjs +2 -0
  384. package/esm2022/pricing/models/public-api.mjs +5 -0
  385. package/esm2022/pricing/pricing-cards/pricing-cards.component.mjs +27 -0
  386. package/esm2022/pricing/pricing-table/pricing-table.component.mjs +57 -0
  387. package/esm2022/pricing/public-api.mjs +5 -0
  388. package/esm2022/pricing/upd-pricing.module.mjs +49 -0
  389. package/esm2022/pricing/updevs-components-pricing.mjs +5 -0
  390. package/esm2022/public-api.mjs +2 -0
  391. package/esm2022/table/abstractions/base-column.model.mjs +52 -0
  392. package/esm2022/table/abstractions/base.column.mjs +84 -0
  393. package/esm2022/table/abstractions/filters-operands.service.mjs +3 -0
  394. package/esm2022/table/abstractions/public-api.mjs +3 -0
  395. package/esm2022/table/components/columns/boolean-column/boolean-column.component.mjs +26 -0
  396. package/esm2022/table/components/columns/date-time-column/date-time-column.component.mjs +13 -0
  397. package/esm2022/table/components/columns/number-column/number-column.component.mjs +13 -0
  398. package/esm2022/table/components/columns/text-column/text-column.component.mjs +31 -0
  399. package/esm2022/table/components/columns-manager/columns-manager.component.mjs +36 -0
  400. package/esm2022/table/components/filter-row/filter-row.component.mjs +114 -0
  401. package/esm2022/table/components/save-search/save-search.component.mjs +72 -0
  402. package/esm2022/table/components/search-section/search-section.component.mjs +93 -0
  403. package/esm2022/table/directives/public-api.mjs +2 -0
  404. package/esm2022/table/directives/table-column.directive.mjs +52 -0
  405. package/esm2022/table/index.mjs +2 -0
  406. package/esm2022/table/models/columns/boolean-column.model.mjs +22 -0
  407. package/esm2022/table/models/columns/date-time-column.model.mjs +16 -0
  408. package/esm2022/table/models/columns/guid-column.model.mjs +13 -0
  409. package/esm2022/table/models/columns/image-column.model.mjs +11 -0
  410. package/esm2022/table/models/columns/number-column.model.mjs +17 -0
  411. package/esm2022/table/models/columns/public-api.mjs +7 -0
  412. package/esm2022/table/models/columns/text-column.model.mjs +11 -0
  413. package/esm2022/table/models/enums/column-type.enum.mjs +15 -0
  414. package/esm2022/table/models/enums/public-api.mjs +2 -0
  415. package/esm2022/table/models/filter-item.model.mjs +2 -0
  416. package/esm2022/table/models/filter-operand.config.mjs +2 -0
  417. package/esm2022/table/models/operands-lists/boolean-filter-operands-list.model.mjs +25 -0
  418. package/esm2022/table/models/operands-lists/date-filter-operands-list.model.mjs +25 -0
  419. package/esm2022/table/models/operands-lists/date-or-number-operands-list.config.mjs +31 -0
  420. package/esm2022/table/models/operands-lists/filter-operands-list.config.mjs +31 -0
  421. package/esm2022/table/models/operands-lists/guid-filter-operands-list.model.mjs +16 -0
  422. package/esm2022/table/models/operands-lists/number-filter-operands-list.model.mjs +25 -0
  423. package/esm2022/table/models/operands-lists/string-filter-operands-list.model.mjs +45 -0
  424. package/esm2022/table/models/public-api.mjs +5 -0
  425. package/esm2022/table/models/saved-view.model.mjs +2 -0
  426. package/esm2022/table/models/table-config.model.mjs +29 -0
  427. package/esm2022/table/models/table.config.mjs +2 -0
  428. package/esm2022/table/models/upd-table-config.model.mjs +9 -0
  429. package/esm2022/table/models/upd-table.config.mjs +2 -0
  430. package/esm2022/table/public-api.mjs +6 -0
  431. package/esm2022/table/services/default-filters-operands.service.mjs +60 -0
  432. package/esm2022/table/services/storages/saved-views.storage.mjs +56 -0
  433. package/esm2022/table/services/stores/filters-operands.store.mjs +19 -0
  434. package/esm2022/table/services/upd-table-config.service.mjs +18 -0
  435. package/esm2022/table/table.component.mjs +439 -0
  436. package/esm2022/table/tools/filters.tools.mjs +48 -0
  437. package/esm2022/table/tools/table.constants.mjs +15 -0
  438. package/esm2022/table/upd-table.module.mjs +150 -0
  439. package/esm2022/table/updevs-components-table.mjs +5 -0
  440. package/esm2022/updevs-components.mjs +5 -0
  441. package/fesm2022/updevs-components-badge.mjs +89 -0
  442. package/fesm2022/updevs-components-badge.mjs.map +1 -0
  443. package/fesm2022/updevs-components-button.mjs +193 -0
  444. package/fesm2022/updevs-components-button.mjs.map +1 -0
  445. package/fesm2022/updevs-components-calendar.mjs +582 -0
  446. package/fesm2022/updevs-components-calendar.mjs.map +1 -0
  447. package/fesm2022/updevs-components-card.mjs +238 -0
  448. package/fesm2022/updevs-components-card.mjs.map +1 -0
  449. package/fesm2022/updevs-components-drag-and-drop.mjs +185 -0
  450. package/fesm2022/updevs-components-drag-and-drop.mjs.map +1 -0
  451. package/fesm2022/updevs-components-dropdown.mjs +247 -0
  452. package/fesm2022/updevs-components-dropdown.mjs.map +1 -0
  453. package/fesm2022/updevs-components-form-controls-abstractions.mjs +106 -0
  454. package/fesm2022/updevs-components-form-controls-abstractions.mjs.map +1 -0
  455. package/fesm2022/updevs-components-form-controls-checkbox.mjs +99 -0
  456. package/fesm2022/updevs-components-form-controls-checkbox.mjs.map +1 -0
  457. package/fesm2022/updevs-components-form-controls-date-picker.mjs +175 -0
  458. package/fesm2022/updevs-components-form-controls-date-picker.mjs.map +1 -0
  459. package/fesm2022/updevs-components-form-controls-file-upload.mjs +272 -0
  460. package/fesm2022/updevs-components-form-controls-file-upload.mjs.map +1 -0
  461. package/fesm2022/updevs-components-form-controls-input.mjs +279 -0
  462. package/fesm2022/updevs-components-form-controls-input.mjs.map +1 -0
  463. package/fesm2022/updevs-components-form-controls-radio.mjs +98 -0
  464. package/fesm2022/updevs-components-form-controls-radio.mjs.map +1 -0
  465. package/fesm2022/updevs-components-form-controls-select.mjs +588 -0
  466. package/fesm2022/updevs-components-form-controls-select.mjs.map +1 -0
  467. package/fesm2022/updevs-components-form-controls-textarea.mjs +79 -0
  468. package/fesm2022/updevs-components-form-controls-textarea.mjs.map +1 -0
  469. package/fesm2022/updevs-components-form-controls-time-picker.mjs +345 -0
  470. package/fesm2022/updevs-components-form-controls-time-picker.mjs.map +1 -0
  471. package/fesm2022/updevs-components-form.mjs +562 -0
  472. package/fesm2022/updevs-components-form.mjs.map +1 -0
  473. package/fesm2022/updevs-components-layout.mjs +1052 -0
  474. package/fesm2022/updevs-components-layout.mjs.map +1 -0
  475. package/fesm2022/updevs-components-link.mjs +79 -0
  476. package/fesm2022/updevs-components-link.mjs.map +1 -0
  477. package/fesm2022/updevs-components-list.mjs +212 -0
  478. package/fesm2022/updevs-components-list.mjs.map +1 -0
  479. package/fesm2022/updevs-components-modal.mjs +504 -0
  480. package/fesm2022/updevs-components-modal.mjs.map +1 -0
  481. package/fesm2022/updevs-components-paginator.mjs +160 -0
  482. package/fesm2022/updevs-components-paginator.mjs.map +1 -0
  483. package/fesm2022/updevs-components-popover.mjs +214 -0
  484. package/fesm2022/updevs-components-popover.mjs.map +1 -0
  485. package/fesm2022/updevs-components-pricing.mjs +130 -0
  486. package/fesm2022/updevs-components-pricing.mjs.map +1 -0
  487. package/fesm2022/updevs-components-table.mjs +1754 -0
  488. package/fesm2022/updevs-components-table.mjs.map +1 -0
  489. package/fesm2022/updevs-components.mjs +33 -0
  490. package/fesm2022/updevs-components.mjs.map +1 -0
  491. package/form/components/dynamic-field/dynamic-field.component.d.ts +65 -0
  492. package/form/form.component.d.ts +64 -0
  493. package/form/models/attachment-rule.model.d.ts +35 -0
  494. package/form/models/button-field.model.d.ts +5 -0
  495. package/form/models/button-group-field.model.d.ts +5 -0
  496. package/form/models/checkbox-field.model.d.ts +4 -0
  497. package/form/models/checkbox-group-field.model.d.ts +6 -0
  498. package/form/models/dynamic-field.model.d.ts +56 -0
  499. package/form/models/enums/attachment-type.enum.d.ts +13 -0
  500. package/form/models/enums/dynamic-field.type.d.ts +15 -0
  501. package/form/models/enums/public-api.d.ts +2 -0
  502. package/form/models/file-upload-field.model.d.ts +16 -0
  503. package/form/models/form-config.d.ts +2 -0
  504. package/form/models/form-row.model.d.ts +10 -0
  505. package/form/models/form-update-on.type.d.ts +1 -0
  506. package/form/models/input-field.model.d.ts +9 -0
  507. package/form/models/masked-input-field.model.d.ts +6 -0
  508. package/form/models/public-api.d.ts +18 -0
  509. package/form/models/radio-field.model.d.ts +4 -0
  510. package/form/models/radio-group-field.model.d.ts +6 -0
  511. package/form/models/select-field.model.d.ts +29 -0
  512. package/form/models/single-select-field.model.d.ts +4 -0
  513. package/form/models/textarea-field.model.d.ts +10 -0
  514. package/form/tools/errors-helper.d.ts +11 -0
  515. package/form/upd-form.module.d.ts +22 -0
  516. package/form-controls/abstractions/base-control.d.ts +47 -0
  517. package/form-controls/abstractions/index.d.ts +2 -0
  518. package/form-controls/abstractions/public-api.d.ts +2 -0
  519. package/form-controls/checkbox/checkbox.component.d.ts +21 -0
  520. package/form-controls/checkbox/public-api.d.ts +2 -0
  521. package/form-controls/checkbox/upd-checkbox.module.d.ts +10 -0
  522. package/form-controls/date-picker/date-picker.component.d.ts +66 -0
  523. package/form-controls/date-picker/upd-date-picker.module.d.ts +12 -0
  524. package/form-controls/file-upload/file-upload-changed.event.d.ts +4 -0
  525. package/form-controls/file-upload/file-upload.component.d.ts +48 -0
  526. package/form-controls/file-upload/public-api.d.ts +3 -0
  527. package/form-controls/file-upload/upd-file-upload.module.d.ts +14 -0
  528. package/form-controls/input/directives/input-append.directive.d.ts +7 -0
  529. package/form-controls/input/directives/input-prepend.directive.d.ts +7 -0
  530. package/form-controls/input/input.component.d.ts +69 -0
  531. package/form-controls/input/upd-input.module.d.ts +13 -0
  532. package/form-controls/radio/radio.component.d.ts +20 -0
  533. package/form-controls/radio/upd-radio.module.d.ts +10 -0
  534. package/form-controls/select/components/multiple/select-multiple.component.d.ts +31 -0
  535. package/form-controls/select/components/single/select.component.d.ts +35 -0
  536. package/form-controls/select/models/abstractions/base-select.component.d.ts +88 -0
  537. package/form-controls/select/models/defaults.d.ts +8 -0
  538. package/form-controls/select/models/public-api.d.ts +3 -0
  539. package/form-controls/select/models/select-item.d.ts +25 -0
  540. package/form-controls/select/models/types.d.ts +4 -0
  541. package/form-controls/select/upd-select.module.d.ts +16 -0
  542. package/form-controls/textarea/textarea.component.d.ts +21 -0
  543. package/form-controls/textarea/upd-textarea.module.d.ts +8 -0
  544. package/form-controls/time-picker/time-picker.component.d.ts +78 -0
  545. package/form-controls/time-picker/time-selector/time-selector.component.d.ts +69 -0
  546. package/form-controls/time-picker/upd-time-picker.module.d.ts +17 -0
  547. package/index.d.ts +2 -0
  548. package/layout/abstractions/base-page.component.d.ts +12 -0
  549. package/layout/abstractions/base.layout.d.ts +15 -0
  550. package/layout/layouts/blank-layout/blank-layout.component.d.ts +9 -0
  551. package/layout/layouts/blank-layout/blank-layout.module.d.ts +15 -0
  552. package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.d.ts +6 -0
  553. package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.d.ts +21 -0
  554. package/layout/models/login-page-config.model.d.ts +46 -0
  555. package/layout/models/login-page.config.d.ts +44 -0
  556. package/layout/models/security-layout-config.model.d.ts +12 -0
  557. package/layout/models/security-layout.config.d.ts +10 -0
  558. package/layout/models/upd-layout-config.model.d.ts +48 -0
  559. package/layout/models/upd-layout.config.d.ts +46 -0
  560. package/layout/pages/auth-flow/auth-flow-routing.module.d.ts +12 -0
  561. package/layout/pages/auth-flow/auth-flow.module.d.ts +20 -0
  562. package/layout/pages/auth-flow/logged-out/logged-out.component.d.ts +5 -0
  563. package/layout/pages/auth-flow/login/login.component.d.ts +26 -0
  564. package/layout/pages/auth-flow/oauth-callback/oauth-callback.component.d.ts +5 -0
  565. package/layout/partials/footer/footer.component.d.ts +34 -0
  566. package/layout/partials/footer/footer.module.d.ts +9 -0
  567. package/layout/partials/footer/public-api.d.ts +2 -0
  568. package/layout/partials/header/header.component.d.ts +51 -0
  569. package/layout/partials/header/header.module.d.ts +12 -0
  570. package/layout/partials/header/public-api.d.ts +3 -0
  571. package/layout/partials/page-header/page-header.component.d.ts +7 -0
  572. package/layout/partials/sidebar/sidebar.component.d.ts +46 -0
  573. package/layout/services/upd-layout-config.service.d.ts +15 -0
  574. package/layout/tools/layout.constants.d.ts +15 -0
  575. package/layout/upd-layout.module.d.ts +19 -0
  576. package/lib/index.d.ts +2 -0
  577. package/lib/models/public-api.d.ts +2 -0
  578. package/lib/models/row-column-size.d.ts +23 -0
  579. package/lib/public-api.d.ts +5 -0
  580. package/lib/tools/column-size.helper.d.ts +6 -0
  581. package/lib/tools/public-api.d.ts +2 -0
  582. package/lib/types/component-size.type.d.ts +2 -0
  583. package/lib/types/horizontal-vertical.type.d.ts +2 -0
  584. package/lib/types/public-api.d.ts +4 -0
  585. package/lib/types/validation-status.type.d.ts +2 -0
  586. package/lib/upd-components.module.d.ts +7 -0
  587. package/link/link.component.d.ts +22 -0
  588. package/link/upd-link.module.d.ts +8 -0
  589. package/list/list.component.d.ts +46 -0
  590. package/list/models/list-item.d.ts +21 -0
  591. package/list/models/list-item.model.d.ts +26 -0
  592. package/list/upd-list.module.d.ts +13 -0
  593. package/modal/components/modal-container/modal-container.component.d.ts +74 -0
  594. package/modal/models/base.modal.d.ts +8 -0
  595. package/modal/models/modal-config.model.d.ts +32 -0
  596. package/modal/models/modal-ref.d.ts +6 -0
  597. package/modal/models/modal.config.d.ts +30 -0
  598. package/modal/services/modal-alert.service.d.ts +22 -0
  599. package/modal/services/modal.service.d.ts +12 -0
  600. package/modal/upd-modal.module.d.ts +18 -0
  601. package/package.json +175 -20
  602. package/paginator/paginator.component.d.ts +42 -0
  603. package/paginator/upd-paginator.module.d.ts +14 -0
  604. package/popover/popover.component.d.ts +22 -0
  605. package/popover/popover.directive.d.ts +33 -0
  606. package/popover/upd-popover.module.d.ts +9 -0
  607. package/pricing/models/price-item-feature.model.d.ts +7 -0
  608. package/pricing/models/price-item-features-group.model.d.ts +5 -0
  609. package/pricing/models/price-item-tag.model.d.ts +6 -0
  610. package/pricing/models/price-item.model.d.ts +22 -0
  611. package/pricing/models/public-api.d.ts +4 -0
  612. package/pricing/pricing-cards/pricing-cards.component.d.ts +12 -0
  613. package/pricing/pricing-table/pricing-table.component.d.ts +30 -0
  614. package/pricing/public-api.d.ts +4 -0
  615. package/pricing/upd-pricing.module.d.ts +14 -0
  616. package/public-api.d.ts +2 -0
  617. package/table/abstractions/base-column.model.d.ts +31 -0
  618. package/table/abstractions/base.column.d.ts +26 -0
  619. package/table/abstractions/filters-operands.service.d.ts +8 -0
  620. package/table/components/columns/boolean-column/boolean-column.component.d.ts +9 -0
  621. package/table/components/columns/date-time-column/date-time-column.component.d.ts +7 -0
  622. package/table/components/columns/number-column/number-column.component.d.ts +7 -0
  623. package/table/components/columns/text-column/text-column.component.d.ts +9 -0
  624. package/table/components/columns-manager/columns-manager.component.d.ts +15 -0
  625. package/table/components/filter-row/filter-row.component.d.ts +40 -0
  626. package/table/components/save-search/save-search.component.d.ts +17 -0
  627. package/table/components/search-section/search-section.component.d.ts +36 -0
  628. package/table/directives/table-column.directive.d.ts +14 -0
  629. package/table/models/columns/boolean-column.model.d.ts +15 -0
  630. package/table/models/columns/date-time-column.model.d.ts +8 -0
  631. package/table/models/columns/guid-column.model.d.ts +4 -0
  632. package/table/models/columns/image-column.model.d.ts +6 -0
  633. package/table/models/columns/number-column.model.d.ts +8 -0
  634. package/table/models/columns/text-column.model.d.ts +6 -0
  635. package/table/models/enums/column-type.enum.d.ts +13 -0
  636. package/table/models/filter-item.model.d.ts +6 -0
  637. package/table/models/filter-operand.config.d.ts +9 -0
  638. package/table/models/operands-lists/boolean-filter-operands-list.model.d.ts +6 -0
  639. package/table/models/operands-lists/date-filter-operands-list.model.d.ts +6 -0
  640. package/table/models/operands-lists/date-or-number-operands-list.config.d.ts +5 -0
  641. package/table/models/operands-lists/filter-operands-list.config.d.ts +5 -0
  642. package/table/models/operands-lists/guid-filter-operands-list.model.d.ts +6 -0
  643. package/table/models/operands-lists/number-filter-operands-list.model.d.ts +6 -0
  644. package/table/models/operands-lists/string-filter-operands-list.model.d.ts +6 -0
  645. package/table/models/saved-view.model.d.ts +11 -0
  646. package/table/models/table-config.model.d.ts +33 -0
  647. package/table/models/table.config.d.ts +31 -0
  648. package/table/models/upd-table-config.model.d.ts +6 -0
  649. package/table/models/upd-table.config.d.ts +6 -0
  650. package/table/services/default-filters-operands.service.d.ts +17 -0
  651. package/table/services/storages/saved-views.storage.d.ts +19 -0
  652. package/table/services/stores/filters-operands.store.d.ts +11 -0
  653. package/table/services/upd-table-config.service.d.ts +12 -0
  654. package/table/table.component.d.ts +81 -0
  655. package/table/tools/filters.tools.d.ts +9 -0
  656. package/table/tools/table.constants.d.ts +15 -0
  657. package/table/upd-table.module.d.ts +40 -0
  658. package/.eslintrc.json +0 -39
  659. package/badge/index.ts +0 -1
  660. package/badge/ng-package.json +0 -6
  661. package/badge/src/badge-config.model.ts +0 -21
  662. package/badge/src/badge.component.html +0 -5
  663. package/badge/src/badge.component.scss +0 -1
  664. package/badge/src/badge.component.spec.ts +0 -21
  665. package/badge/src/badge.component.ts +0 -54
  666. package/badge/src/badge.config.ts +0 -13
  667. package/badge/src/upd-badge.module.ts +0 -17
  668. package/button/index.ts +0 -1
  669. package/button/ng-package.json +0 -6
  670. package/button/src/button.component.html +0 -45
  671. package/button/src/button.component.scss +0 -5
  672. package/button/src/button.component.spec.ts +0 -23
  673. package/button/src/button.component.ts +0 -176
  674. package/button/src/upd-button.module.ts +0 -21
  675. package/calendar/index.ts +0 -1
  676. package/calendar/ng-package.json +0 -6
  677. package/calendar/src/calendar.component.html +0 -34
  678. package/calendar/src/calendar.component.scss +0 -1
  679. package/calendar/src/calendar.component.spec.ts +0 -21
  680. package/calendar/src/calendar.component.ts +0 -290
  681. package/calendar/src/components/calendar-body/calendar-body.component.html +0 -75
  682. package/calendar/src/components/calendar-body/calendar-body.component.scss +0 -1
  683. package/calendar/src/components/calendar-body/calendar-body.component.spec.ts +0 -21
  684. package/calendar/src/components/calendar-body/calendar-body.component.ts +0 -665
  685. package/calendar/src/components/calendar-header/calendar-header.component.html +0 -27
  686. package/calendar/src/components/calendar-header/calendar-header.component.scss +0 -1
  687. package/calendar/src/components/calendar-header/calendar-header.component.spec.ts +0 -21
  688. package/calendar/src/components/calendar-header/calendar-header.component.ts +0 -175
  689. package/calendar/src/components/calendar-month-view/calendar-month-view.component.html +0 -19
  690. package/calendar/src/components/calendar-month-view/calendar-month-view.component.scss +0 -1
  691. package/calendar/src/components/calendar-month-view/calendar-month-view.component.spec.ts +0 -21
  692. package/calendar/src/components/calendar-month-view/calendar-month-view.component.ts +0 -540
  693. package/calendar/src/components/calendar-multi-year-view/calendar-multi-year-view.component.html +0 -1
  694. package/calendar/src/components/calendar-multi-year-view/calendar-multi-year-view.component.scss +0 -1
  695. package/calendar/src/components/calendar-multi-year-view/calendar-multi-year-view.component.spec.ts +0 -21
  696. package/calendar/src/components/calendar-multi-year-view/calendar-multi-year-view.component.ts +0 -19
  697. package/calendar/src/components/calendar-year-view/calendar-year-view.component.html +0 -1
  698. package/calendar/src/components/calendar-year-view/calendar-year-view.component.scss +0 -1
  699. package/calendar/src/components/calendar-year-view/calendar-year-view.component.spec.ts +0 -21
  700. package/calendar/src/components/calendar-year-view/calendar-year-view.component.ts +0 -17
  701. package/calendar/src/models/calendar-cell.model.ts +0 -22
  702. package/calendar/src/models/date-range.model.ts +0 -22
  703. package/calendar/src/models/public-api.ts +0 -2
  704. package/calendar/src/services/calendar-range-strategy.service.spec.ts +0 -16
  705. package/calendar/src/services/calendar-range-strategy.service.ts +0 -103
  706. package/calendar/src/services/calendar-signals.service.spec.ts +0 -16
  707. package/calendar/src/services/calendar-signals.service.ts +0 -45
  708. package/calendar/src/services/calendar.service.spec.ts +0 -16
  709. package/calendar/src/services/calendar.service.ts +0 -42
  710. package/calendar/src/tools/events-options.ts +0 -16
  711. package/calendar/src/tools/keyboard-tools.ts +0 -16
  712. package/calendar/src/tools/passive-listeners.ts +0 -36
  713. package/calendar/src/types/calendar-cell-class-function.type.ts +0 -4
  714. package/calendar/src/types/calendar-cell-css-classes.type.ts +0 -1
  715. package/calendar/src/types/modifier-key.type.ts +0 -1
  716. package/calendar/src/upd-calendar.module.ts +0 -48
  717. package/card/index.ts +0 -1
  718. package/card/ng-package.json +0 -6
  719. package/card/src/card.component.html +0 -105
  720. package/card/src/card.component.scss +0 -47
  721. package/card/src/card.component.spec.ts +0 -23
  722. package/card/src/card.component.ts +0 -112
  723. package/card/src/directives/card-actions.directive.spec.ts +0 -8
  724. package/card/src/directives/card-actions.directive.ts +0 -8
  725. package/card/src/directives/card-footer.directive.spec.ts +0 -8
  726. package/card/src/directives/card-footer.directive.ts +0 -8
  727. package/card/src/directives/card-header.directive.spec.ts +0 -8
  728. package/card/src/directives/card-header.directive.ts +0 -8
  729. package/card/src/directives/card-image.directive.spec.ts +0 -8
  730. package/card/src/directives/card-image.directive.ts +0 -8
  731. package/card/src/public-api.ts +0 -3
  732. package/card/src/upd-card.module.ts +0 -32
  733. package/drag-and-drop/index.ts +0 -1
  734. package/drag-and-drop/ng-package.json +0 -6
  735. package/drag-and-drop/src/drag-and-drop.component.html +0 -24
  736. package/drag-and-drop/src/drag-and-drop.component.scss +0 -4
  737. package/drag-and-drop/src/drag-and-drop.component.spec.ts +0 -22
  738. package/drag-and-drop/src/drag-and-drop.component.ts +0 -164
  739. package/drag-and-drop/src/models/drag-and-drop-column.config.ts +0 -10
  740. package/drag-and-drop/src/models/drag-and-drop-column.model.ts +0 -16
  741. package/drag-and-drop/src/models/drag-and-drop-item.model.ts +0 -21
  742. package/drag-and-drop/src/models/drag-and-drop-item.ts +0 -8
  743. package/drag-and-drop/src/models/drag-and-drop.config.ts +0 -7
  744. package/drag-and-drop/src/upd-drag-and-drop.module.ts +0 -19
  745. package/dropdown/index.ts +0 -1
  746. package/dropdown/ng-package.json +0 -6
  747. package/dropdown/src/dropdown.component.html +0 -70
  748. package/dropdown/src/dropdown.component.scss +0 -19
  749. package/dropdown/src/dropdown.component.spec.ts +0 -23
  750. package/dropdown/src/dropdown.component.ts +0 -233
  751. package/dropdown/src/models/dropdown-action-clicked.model.ts +0 -8
  752. package/dropdown/src/models/dropdown-item.ts +0 -26
  753. package/dropdown/src/upd-dropdown.module.ts +0 -25
  754. package/form/index.ts +0 -1
  755. package/form/ng-package.json +0 -6
  756. package/form/src/components/dynamic-field/dynamic-field.component.html +0 -83
  757. package/form/src/components/dynamic-field/dynamic-field.component.scss +0 -1
  758. package/form/src/components/dynamic-field/dynamic-field.component.spec.ts +0 -21
  759. package/form/src/components/dynamic-field/dynamic-field.component.ts +0 -102
  760. package/form/src/form.component.html +0 -26
  761. package/form/src/form.component.scss +0 -1
  762. package/form/src/form.component.spec.ts +0 -21
  763. package/form/src/form.component.ts +0 -110
  764. package/form/src/models/checkbox-field.model.ts +0 -5
  765. package/form/src/models/checkbox-group-field.model.ts +0 -8
  766. package/form/src/models/dynamic-field.model.ts +0 -32
  767. package/form/src/models/enums/dynamic-field.type.ts +0 -12
  768. package/form/src/models/enums/public-api.ts +0 -1
  769. package/form/src/models/form-config.ts +0 -3
  770. package/form/src/models/form-row.model.ts +0 -10
  771. package/form/src/models/public-api.ts +0 -5
  772. package/form/src/models/radio-field.model.ts +0 -5
  773. package/form/src/models/radio-group-field.model.ts +0 -8
  774. package/form/src/models/select-field.model.ts +0 -30
  775. package/form/src/models/single-select-field.model.ts +0 -5
  776. package/form/src/models/textarea-field.model.ts +0 -11
  777. package/form/src/tools/errors-helper.ts +0 -60
  778. package/form/src/upd-form.module.ts +0 -48
  779. package/form-controls/abstractions/index.ts +0 -1
  780. package/form-controls/abstractions/ng-package.json +0 -6
  781. package/form-controls/abstractions/src/base-control.ts +0 -34
  782. package/form-controls/abstractions/src/public-api.ts +0 -1
  783. package/form-controls/checkbox/index.ts +0 -1
  784. package/form-controls/checkbox/ng-package.json +0 -6
  785. package/form-controls/checkbox/src/checkbox.component.html +0 -34
  786. package/form-controls/checkbox/src/checkbox.component.spec.ts +0 -23
  787. package/form-controls/checkbox/src/checkbox.component.ts +0 -60
  788. package/form-controls/checkbox/src/public-api.ts +0 -3
  789. package/form-controls/checkbox/src/upd-checkbox.module.ts +0 -21
  790. package/form-controls/date-picker/index.ts +0 -1
  791. package/form-controls/date-picker/ng-package.json +0 -6
  792. package/form-controls/date-picker/src/date-picker.component.html +0 -36
  793. package/form-controls/date-picker/src/date-picker.component.scss +0 -26
  794. package/form-controls/date-picker/src/date-picker.component.spec.ts +0 -22
  795. package/form-controls/date-picker/src/date-picker.component.ts +0 -177
  796. package/form-controls/date-picker/src/upd-date-picker.module.ts +0 -25
  797. package/form-controls/input/index.ts +0 -1
  798. package/form-controls/input/ng-package.json +0 -6
  799. package/form-controls/input/src/directives/input-append.directive.spec.ts +0 -8
  800. package/form-controls/input/src/directives/input-append.directive.ts +0 -8
  801. package/form-controls/input/src/directives/input-prepend.directive.spec.ts +0 -8
  802. package/form-controls/input/src/directives/input-prepend.directive.ts +0 -8
  803. package/form-controls/input/src/input.component.html +0 -124
  804. package/form-controls/input/src/input.component.scss +0 -13
  805. package/form-controls/input/src/input.component.spec.ts +0 -23
  806. package/form-controls/input/src/input.component.ts +0 -161
  807. package/form-controls/input/src/upd-input.module.ts +0 -29
  808. package/form-controls/radio/index.ts +0 -1
  809. package/form-controls/radio/ng-package.json +0 -6
  810. package/form-controls/radio/src/radio.component.html +0 -35
  811. package/form-controls/radio/src/radio.component.scss +0 -0
  812. package/form-controls/radio/src/radio.component.spec.ts +0 -23
  813. package/form-controls/radio/src/radio.component.ts +0 -42
  814. package/form-controls/radio/src/upd-radio.module.ts +0 -21
  815. package/form-controls/select/index.ts +0 -1
  816. package/form-controls/select/ng-package.json +0 -6
  817. package/form-controls/select/src/components/multiple/select-multiple.component.html +0 -61
  818. package/form-controls/select/src/components/multiple/select-multiple.component.scss +0 -6
  819. package/form-controls/select/src/components/multiple/select-multiple.component.spec.ts +0 -21
  820. package/form-controls/select/src/components/multiple/select-multiple.component.ts +0 -80
  821. package/form-controls/select/src/components/shared.scss +0 -44
  822. package/form-controls/select/src/components/single/select.component.html +0 -118
  823. package/form-controls/select/src/components/single/select.component.scss +0 -3
  824. package/form-controls/select/src/components/single/select.component.spec.ts +0 -23
  825. package/form-controls/select/src/components/single/select.component.ts +0 -75
  826. package/form-controls/select/src/models/abstractions/base-select.component.ts +0 -286
  827. package/form-controls/select/src/models/defaults.ts +0 -9
  828. package/form-controls/select/src/models/public-api.ts +0 -2
  829. package/form-controls/select/src/models/select-item.ts +0 -26
  830. package/form-controls/select/src/upd-select.module.ts +0 -34
  831. package/form-controls/textarea/index.ts +0 -1
  832. package/form-controls/textarea/ng-package.json +0 -6
  833. package/form-controls/textarea/src/textarea.component.html +0 -13
  834. package/form-controls/textarea/src/textarea.component.scss +0 -0
  835. package/form-controls/textarea/src/textarea.component.spec.ts +0 -23
  836. package/form-controls/textarea/src/textarea.component.ts +0 -45
  837. package/form-controls/textarea/src/upd-textarea.module.ts +0 -17
  838. package/form-controls/time-picker/index.ts +0 -1
  839. package/form-controls/time-picker/ng-package.json +0 -6
  840. package/form-controls/time-picker/src/time-picker.component.html +0 -17
  841. package/form-controls/time-picker/src/time-picker.component.scss +0 -10
  842. package/form-controls/time-picker/src/time-picker.component.spec.ts +0 -21
  843. package/form-controls/time-picker/src/time-picker.component.ts +0 -110
  844. package/form-controls/time-picker/src/time-selector/time-selector.component.html +0 -50
  845. package/form-controls/time-picker/src/time-selector/time-selector.component.scss +0 -47
  846. package/form-controls/time-picker/src/time-selector/time-selector.component.spec.ts +0 -21
  847. package/form-controls/time-picker/src/time-selector/time-selector.component.ts +0 -107
  848. package/form-controls/time-picker/src/upd-time-picker.module.ts +0 -39
  849. package/jest.config.ts +0 -22
  850. package/layout/index.ts +0 -1
  851. package/layout/ng-package.json +0 -6
  852. package/layout/src/abstractions/base-page.component.ts +0 -16
  853. package/layout/src/abstractions/base.layout.ts +0 -27
  854. package/layout/src/assets/i18n/en.json +0 -20
  855. package/layout/src/assets/i18n/pt.json +0 -20
  856. package/layout/src/layouts/blank-layout/blank-layout.component.html +0 -1
  857. package/layout/src/layouts/blank-layout/blank-layout.component.scss +0 -0
  858. package/layout/src/layouts/blank-layout/blank-layout.component.spec.ts +0 -23
  859. package/layout/src/layouts/blank-layout/blank-layout.component.ts +0 -10
  860. package/layout/src/layouts/blank-layout/blank-layout.module.ts +0 -17
  861. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.html +0 -16
  862. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.scss +0 -0
  863. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.spec.ts +0 -23
  864. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.ts +0 -30
  865. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.ts +0 -51
  866. package/layout/src/models/login-page-config.model.ts +0 -57
  867. package/layout/src/models/login-page.config.ts +0 -42
  868. package/layout/src/models/security-layout-config.model.ts +0 -16
  869. package/layout/src/models/security-layout.config.ts +0 -11
  870. package/layout/src/models/upd-layout-config.model.ts +0 -69
  871. package/layout/src/models/upd-layout.config.ts +0 -47
  872. package/layout/src/pages/auth-flow/auth-flow-routing.module.ts +0 -21
  873. package/layout/src/pages/auth-flow/auth-flow.module.ts +0 -40
  874. package/layout/src/pages/auth-flow/logged-out/logged-out.component.html +0 -1
  875. package/layout/src/pages/auth-flow/logged-out/logged-out.component.scss +0 -0
  876. package/layout/src/pages/auth-flow/logged-out/logged-out.component.spec.ts +0 -23
  877. package/layout/src/pages/auth-flow/logged-out/logged-out.component.ts +0 -10
  878. package/layout/src/pages/auth-flow/login/login.component.html +0 -103
  879. package/layout/src/pages/auth-flow/login/login.component.scss +0 -0
  880. package/layout/src/pages/auth-flow/login/login.component.spec.ts +0 -23
  881. package/layout/src/pages/auth-flow/login/login.component.ts +0 -97
  882. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.html +0 -1
  883. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.scss +0 -0
  884. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.spec.ts +0 -23
  885. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.ts +0 -10
  886. package/layout/src/partials/footer/footer-copyright.directive.spec.ts +0 -8
  887. package/layout/src/partials/footer/footer-copyright.directive.ts +0 -6
  888. package/layout/src/partials/footer/footer.component.html +0 -35
  889. package/layout/src/partials/footer/footer.component.scss +0 -0
  890. package/layout/src/partials/footer/footer.component.spec.ts +0 -23
  891. package/layout/src/partials/footer/footer.component.ts +0 -64
  892. package/layout/src/partials/footer/public-api.ts +0 -2
  893. package/layout/src/partials/header/header.component.html +0 -173
  894. package/layout/src/partials/header/header.component.scss +0 -0
  895. package/layout/src/partials/header/header.component.spec.ts +0 -23
  896. package/layout/src/partials/header/header.component.ts +0 -82
  897. package/layout/src/partials/header/public-api.ts +0 -2
  898. package/layout/src/partials/page-header/page-header.component.html +0 -23
  899. package/layout/src/partials/page-header/page-header.component.scss +0 -0
  900. package/layout/src/partials/page-header/page-header.component.spec.ts +0 -23
  901. package/layout/src/partials/page-header/page-header.component.ts +0 -11
  902. package/layout/src/partials/sidebar/sidebar.component.html +0 -72
  903. package/layout/src/partials/sidebar/sidebar.component.scss +0 -0
  904. package/layout/src/partials/sidebar/sidebar.component.spec.ts +0 -23
  905. package/layout/src/partials/sidebar/sidebar.component.ts +0 -129
  906. package/layout/src/services/upd-layout-config.service.spec.ts +0 -16
  907. package/layout/src/services/upd-layout-config.service.ts +0 -20
  908. package/layout/src/tools/layout.constants.ts +0 -18
  909. package/layout/src/upd-layout.module.ts +0 -34
  910. package/link/index.ts +0 -1
  911. package/link/ng-package.json +0 -6
  912. package/link/src/link.component.html +0 -3
  913. package/link/src/link.component.scss +0 -3
  914. package/link/src/link.component.spec.ts +0 -23
  915. package/link/src/link.component.ts +0 -48
  916. package/link/src/upd-link.module.ts +0 -17
  917. package/list/index.ts +0 -1
  918. package/list/ng-package.json +0 -6
  919. package/list/src/list.component.html +0 -67
  920. package/list/src/list.component.scss +0 -22
  921. package/list/src/list.component.spec.ts +0 -23
  922. package/list/src/list.component.ts +0 -129
  923. package/list/src/models/list-item.model.ts +0 -36
  924. package/list/src/models/list-item.ts +0 -22
  925. package/list/src/upd-list.module.ts +0 -30
  926. package/modal/index.ts +0 -1
  927. package/modal/ng-package.json +0 -6
  928. package/modal/src/components/modal-container/modal-container.component.html +0 -116
  929. package/modal/src/components/modal-container/modal-container.component.scss +0 -1
  930. package/modal/src/components/modal-container/modal-container.component.spec.ts +0 -22
  931. package/modal/src/components/modal-container/modal-container.component.ts +0 -243
  932. package/modal/src/models/base.modal.ts +0 -9
  933. package/modal/src/models/modal-config.model.ts +0 -39
  934. package/modal/src/models/modal-ref.ts +0 -9
  935. package/modal/src/models/modal.config.ts +0 -32
  936. package/modal/src/services/modal-alert.service.spec.ts +0 -16
  937. package/modal/src/services/modal-alert.service.ts +0 -167
  938. package/modal/src/services/modal.service.spec.ts +0 -16
  939. package/modal/src/services/modal.service.ts +0 -38
  940. package/modal/src/upd-modal.module.ts +0 -74
  941. package/ng-package.json +0 -10
  942. package/paginator/index.ts +0 -1
  943. package/paginator/ng-package.json +0 -6
  944. package/paginator/src/paginator.component.html +0 -83
  945. package/paginator/src/paginator.component.scss +0 -1
  946. package/paginator/src/paginator.component.spec.ts +0 -21
  947. package/paginator/src/paginator.component.ts +0 -62
  948. package/paginator/src/upd-paginator.module.ts +0 -32
  949. package/popover/index.ts +0 -1
  950. package/popover/ng-package.json +0 -6
  951. package/popover/src/popover.component.html +0 -21
  952. package/popover/src/popover.component.scss +0 -8
  953. package/popover/src/popover.component.spec.ts +0 -23
  954. package/popover/src/popover.component.ts +0 -53
  955. package/popover/src/popover.directive.spec.ts +0 -8
  956. package/popover/src/popover.directive.ts +0 -125
  957. package/popover/src/upd-popover.module.ts +0 -20
  958. package/project.json +0 -40
  959. package/src/lib/models/public-api.ts +0 -1
  960. package/src/lib/models/row-column-size.ts +0 -5
  961. package/src/lib/public-api.ts +0 -4
  962. package/src/lib/tools/column-size.helper.ts +0 -19
  963. package/src/lib/tools/public-api.ts +0 -1
  964. package/src/lib/types/component-size.type.ts +0 -1
  965. package/src/lib/types/horizontal-vertical.type.ts +0 -1
  966. package/src/lib/types/public-api.ts +0 -3
  967. package/src/lib/types/validation-status.type.ts +0 -1
  968. package/src/lib/upd-components.module.ts +0 -6
  969. package/src/public-api.ts +0 -1
  970. package/src/test-setup.ts +0 -8
  971. package/table/index.ts +0 -1
  972. package/table/ng-package.json +0 -6
  973. package/table/src/abstractions/base-column.model.ts +0 -69
  974. package/table/src/abstractions/base.column.ts +0 -99
  975. package/table/src/abstractions/filters-operands.service.ts +0 -10
  976. package/table/src/components/columns/boolean-column/boolean-column.component.html +0 -15
  977. package/table/src/components/columns/boolean-column/boolean-column.component.scss +0 -1
  978. package/table/src/components/columns/boolean-column/boolean-column.component.spec.ts +0 -21
  979. package/table/src/components/columns/boolean-column/boolean-column.component.ts +0 -26
  980. package/table/src/components/columns/date-time-column/date-time-column.component.html +0 -1
  981. package/table/src/components/columns/date-time-column/date-time-column.component.scss +0 -1
  982. package/table/src/components/columns/date-time-column/date-time-column.component.spec.ts +0 -21
  983. package/table/src/components/columns/date-time-column/date-time-column.component.ts +0 -11
  984. package/table/src/components/columns/number-column/number-column.component.html +0 -1
  985. package/table/src/components/columns/number-column/number-column.component.scss +0 -1
  986. package/table/src/components/columns/number-column/number-column.component.spec.ts +0 -21
  987. package/table/src/components/columns/number-column/number-column.component.ts +0 -11
  988. package/table/src/components/columns/public-api.ts +0 -0
  989. package/table/src/components/columns/text-column/text-column.component.html +0 -1
  990. package/table/src/components/columns/text-column/text-column.component.scss +0 -1
  991. package/table/src/components/columns/text-column/text-column.component.spec.ts +0 -21
  992. package/table/src/components/columns/text-column/text-column.component.ts +0 -31
  993. package/table/src/components/columns-manager/columns-manager.component.html +0 -3
  994. package/table/src/components/columns-manager/columns-manager.component.scss +0 -1
  995. package/table/src/components/columns-manager/columns-manager.component.spec.ts +0 -21
  996. package/table/src/components/columns-manager/columns-manager.component.ts +0 -37
  997. package/table/src/components/filter-row/filter-row.component.html +0 -29
  998. package/table/src/components/filter-row/filter-row.component.scss +0 -1
  999. package/table/src/components/filter-row/filter-row.component.spec.ts +0 -21
  1000. package/table/src/components/filter-row/filter-row.component.ts +0 -127
  1001. package/table/src/components/public-api.ts +0 -0
  1002. package/table/src/components/save-search/save-search.component.html +0 -16
  1003. package/table/src/components/save-search/save-search.component.scss +0 -1
  1004. package/table/src/components/save-search/save-search.component.spec.ts +0 -21
  1005. package/table/src/components/save-search/save-search.component.ts +0 -73
  1006. package/table/src/components/search-section/search-section.component.html +0 -37
  1007. package/table/src/components/search-section/search-section.component.scss +0 -1
  1008. package/table/src/components/search-section/search-section.component.spec.ts +0 -21
  1009. package/table/src/components/search-section/search-section.component.ts +0 -111
  1010. package/table/src/directives/table-column.directive.spec.ts +0 -8
  1011. package/table/src/directives/table-column.directive.ts +0 -52
  1012. package/table/src/index.ts +0 -1
  1013. package/table/src/models/columns/boolean-column.model.ts +0 -29
  1014. package/table/src/models/columns/date-time-column.model.ts +0 -20
  1015. package/table/src/models/columns/guid-column.model.ts +0 -16
  1016. package/table/src/models/columns/image-column.model.ts +0 -15
  1017. package/table/src/models/columns/number-column.model.ts +0 -19
  1018. package/table/src/models/columns/text-column.model.ts +0 -16
  1019. package/table/src/models/enums/column-type.enum.ts +0 -13
  1020. package/table/src/models/filter-item.model.ts +0 -7
  1021. package/table/src/models/filter-operand.config.ts +0 -10
  1022. package/table/src/models/operands-lists/boolean-filter-operands-list.model.ts +0 -29
  1023. package/table/src/models/operands-lists/date-filter-operands-list.model.ts +0 -28
  1024. package/table/src/models/operands-lists/date-or-number-operands-list.config.ts +0 -35
  1025. package/table/src/models/operands-lists/filter-operands-list.config.ts +0 -35
  1026. package/table/src/models/operands-lists/guid-filter-operands-list.model.ts +0 -19
  1027. package/table/src/models/operands-lists/number-filter-operands-list.model.ts +0 -28
  1028. package/table/src/models/operands-lists/string-filter-operands-list.model.ts +0 -49
  1029. package/table/src/models/saved-view.model.ts +0 -13
  1030. package/table/src/models/table-config.model.ts +0 -32
  1031. package/table/src/models/table.config.ts +0 -24
  1032. package/table/src/models/upd-table-config.model.ts +0 -12
  1033. package/table/src/models/upd-table.config.ts +0 -7
  1034. package/table/src/services/default-filters-operands.service.spec.ts +0 -16
  1035. package/table/src/services/default-filters-operands.service.ts +0 -62
  1036. package/table/src/services/storages/saved-views.storage.spec.ts +0 -16
  1037. package/table/src/services/storages/saved-views.storage.ts +0 -76
  1038. package/table/src/services/stores/filters-operands.store.spec.ts +0 -16
  1039. package/table/src/services/stores/filters-operands.store.ts +0 -17
  1040. package/table/src/services/upd-table-config.service.spec.ts +0 -16
  1041. package/table/src/services/upd-table-config.service.ts +0 -17
  1042. package/table/src/table.component.html +0 -155
  1043. package/table/src/table.component.scss +0 -14
  1044. package/table/src/table.component.spec.ts +0 -21
  1045. package/table/src/table.component.ts +0 -434
  1046. package/table/src/tools/filters.tools.ts +0 -67
  1047. package/table/src/tools/table.constants.ts +0 -18
  1048. package/table/src/upd-table.module.ts +0 -104
  1049. package/tsconfig.json +0 -29
  1050. package/tsconfig.lib.json +0 -18
  1051. package/tsconfig.lib.prod.json +0 -9
  1052. package/tsconfig.spec.json +0 -16
  1053. /package/{form-controls/checkbox/src/checkbox.component.scss → assets/styles/marketing/_filters.scss} +0 -0
  1054. /package/badge/{src/index.ts → index.d.ts} +0 -0
  1055. /package/badge/{src/public-api.ts → public-api.d.ts} +0 -0
  1056. /package/button/{src/index.ts → index.d.ts} +0 -0
  1057. /package/button/{src/public-api.ts → public-api.d.ts} +0 -0
  1058. /package/calendar/{src/index.ts → index.d.ts} +0 -0
  1059. /package/calendar/{src/models/calendar-user-event.model.ts → models/calendar-user-event.model.d.ts} +0 -0
  1060. /package/calendar/{src/public-api.ts → public-api.d.ts} +0 -0
  1061. /package/calendar/{src/services/public-api.ts → services/public-api.d.ts} +0 -0
  1062. /package/calendar/{src/types/calendar-view.type.ts → types/calendar-view.type.d.ts} +0 -0
  1063. /package/calendar/{src/types/public-api.ts → types/public-api.d.ts} +0 -0
  1064. /package/card/{src/directives/public-api.ts → directives/public-api.d.ts} +0 -0
  1065. /package/card/{src/index.ts → index.d.ts} +0 -0
  1066. /package/card/{src/types/card-state.type.ts → types/card-state.type.d.ts} +0 -0
  1067. /package/card/{src/types/card-style.type.ts → types/card-style.type.d.ts} +0 -0
  1068. /package/card/{src/types/hover-effect.type.ts → types/hover-effect.type.d.ts} +0 -0
  1069. /package/card/{src/types/public-api.ts → types/public-api.d.ts} +0 -0
  1070. /package/card/{src/types/ribbon-style.type.ts → types/ribbon-style.type.d.ts} +0 -0
  1071. /package/card/{src/types/status-position.type.ts → types/status-position.type.d.ts} +0 -0
  1072. /package/drag-and-drop/{src/index.ts → index.d.ts} +0 -0
  1073. /package/drag-and-drop/{src/models/public-api.ts → models/public-api.d.ts} +0 -0
  1074. /package/drag-and-drop/{src/public-api.ts → public-api.d.ts} +0 -0
  1075. /package/dropdown/{src/index.ts → index.d.ts} +0 -0
  1076. /package/dropdown/{src/models/dropdown-item.type.ts → models/dropdown-item.type.d.ts} +0 -0
  1077. /package/dropdown/{src/models/public-api.ts → models/public-api.d.ts} +0 -0
  1078. /package/dropdown/{src/models/toolbar.type.ts → models/toolbar.type.d.ts} +0 -0
  1079. /package/dropdown/{src/public-api.ts → public-api.d.ts} +0 -0
  1080. /package/{calendar/src → esm2022/calendar}/assets/i18n/en.json +0 -0
  1081. /package/{calendar/src → esm2022/calendar}/assets/i18n/pt.json +0 -0
  1082. /package/{form/src → esm2022/form}/assets/i18n/en.json +0 -0
  1083. /package/{form/src → esm2022/form}/assets/i18n/pt.json +0 -0
  1084. /package/{form-controls/time-picker/src → esm2022/form-controls/time-picker}/assets/i18n/en.json +0 -0
  1085. /package/{form-controls/time-picker/src → esm2022/form-controls/time-picker}/assets/i18n/pt.json +0 -0
  1086. /package/{list/src → esm2022/list}/assets/i18n/en.json +0 -0
  1087. /package/{list/src → esm2022/list}/assets/i18n/pt.json +0 -0
  1088. /package/{modal/src → esm2022/modal}/assets/i18n/en.json +0 -0
  1089. /package/{modal/src → esm2022/modal}/assets/i18n/pt.json +0 -0
  1090. /package/{paginator/src → esm2022/paginator}/assets/i18n/en.json +0 -0
  1091. /package/{paginator/src → esm2022/paginator}/assets/i18n/pt.json +0 -0
  1092. /package/{table/src → esm2022/table}/assets/i18n/en.json +0 -0
  1093. /package/{table/src → esm2022/table}/assets/i18n/pt.json +0 -0
  1094. /package/form/{src/index.ts → index.d.ts} +0 -0
  1095. /package/form/{src/models/validator-config.ts → models/validator-config.d.ts} +0 -0
  1096. /package/form/{src/public-api.ts → public-api.d.ts} +0 -0
  1097. /package/form-controls/{abstractions/src/index.ts → checkbox/index.d.ts} +0 -0
  1098. /package/form-controls/{checkbox/src/index.ts → date-picker/index.d.ts} +0 -0
  1099. /package/form-controls/date-picker/{src/public-api.ts → public-api.d.ts} +0 -0
  1100. /package/form-controls/{date-picker/src/index.ts → file-upload/index.d.ts} +0 -0
  1101. /package/form-controls/input/{src/directives/public-api.ts → directives/public-api.d.ts} +0 -0
  1102. /package/form-controls/input/{src/index.ts → index.d.ts} +0 -0
  1103. /package/form-controls/input/{src/public-api.ts → public-api.d.ts} +0 -0
  1104. /package/form-controls/input/{src/types/input.type.ts → types/input.type.d.ts} +0 -0
  1105. /package/form-controls/input/{src/types/loader-position.type.ts → types/loader-position.type.d.ts} +0 -0
  1106. /package/form-controls/input/{src/types/public-api.ts → types/public-api.d.ts} +0 -0
  1107. /package/form-controls/radio/{src/index.ts → index.d.ts} +0 -0
  1108. /package/form-controls/radio/{src/public-api.ts → public-api.d.ts} +0 -0
  1109. /package/form-controls/select/{src/index.ts → index.d.ts} +0 -0
  1110. /package/form-controls/select/{src/public-api.ts → public-api.d.ts} +0 -0
  1111. /package/form-controls/textarea/{src/index.ts → index.d.ts} +0 -0
  1112. /package/form-controls/textarea/{src/public-api.ts → public-api.d.ts} +0 -0
  1113. /package/form-controls/time-picker/{src/index.ts → index.d.ts} +0 -0
  1114. /package/form-controls/time-picker/{src/public-api.ts → public-api.d.ts} +0 -0
  1115. /package/layout/{src/abstractions/public-api.ts → abstractions/public-api.d.ts} +0 -0
  1116. /package/layout/{src/index.ts → index.d.ts} +0 -0
  1117. /package/layout/{src/layouts/public-api.ts → layouts/public-api.d.ts} +0 -0
  1118. /package/layout/{src/models/public-api.ts → models/public-api.d.ts} +0 -0
  1119. /package/layout/{src/pages/auth-flow/public-api.ts → pages/auth-flow/public-api.d.ts} +0 -0
  1120. /package/layout/{src/pages/public-api.ts → pages/public-api.d.ts} +0 -0
  1121. /package/layout/{src/partials/header/header-style.type.ts → partials/header/header-style.type.d.ts} +0 -0
  1122. /package/layout/{src/partials/page-header/public-api.ts → partials/page-header/public-api.d.ts} +0 -0
  1123. /package/layout/{src/partials/public-api.ts → partials/public-api.d.ts} +0 -0
  1124. /package/layout/{src/partials/sidebar/public-api.ts → partials/sidebar/public-api.d.ts} +0 -0
  1125. /package/layout/{src/public-api.ts → public-api.d.ts} +0 -0
  1126. /package/layout/{src/services/public-api.ts → services/public-api.d.ts} +0 -0
  1127. /package/link/{src/index.ts → index.d.ts} +0 -0
  1128. /package/link/{src/public-api.ts → public-api.d.ts} +0 -0
  1129. /package/link/{src/target.type.ts → target.type.d.ts} +0 -0
  1130. /package/list/{src/index.ts → index.d.ts} +0 -0
  1131. /package/list/{src/models/badge-position.type.ts → models/badge-position.type.d.ts} +0 -0
  1132. /package/list/{src/models/public-api.ts → models/public-api.d.ts} +0 -0
  1133. /package/list/{src/public-api.ts → public-api.d.ts} +0 -0
  1134. /package/modal/{src/index.ts → index.d.ts} +0 -0
  1135. /package/modal/{src/models/public-api.ts → models/public-api.d.ts} +0 -0
  1136. /package/modal/{src/public-api.ts → public-api.d.ts} +0 -0
  1137. /package/modal/{src/services/public-api.ts → services/public-api.d.ts} +0 -0
  1138. /package/modal/{src/types/modal-footer-style.type.ts → types/modal-footer-style.type.d.ts} +0 -0
  1139. /package/modal/{src/types/modal-size.type.ts → types/modal-size.type.d.ts} +0 -0
  1140. /package/paginator/{src/index.ts → index.d.ts} +0 -0
  1141. /package/paginator/{src/public-api.ts → public-api.d.ts} +0 -0
  1142. /package/popover/{src/index.ts → index.d.ts} +0 -0
  1143. /package/popover/{src/public-api.ts → public-api.d.ts} +0 -0
  1144. /package/{src/index.ts → pricing/index.d.ts} +0 -0
  1145. /package/table/{src/abstractions/public-api.ts → abstractions/public-api.d.ts} +0 -0
  1146. /package/table/{src/directives/public-api.ts → directives/public-api.d.ts} +0 -0
  1147. /package/{src/lib/index.ts → table/index.d.ts} +0 -0
  1148. /package/table/{src/models/columns/public-api.ts → models/columns/public-api.d.ts} +0 -0
  1149. /package/table/{src/models/enums/public-api.ts → models/enums/public-api.d.ts} +0 -0
  1150. /package/table/{src/models/public-api.ts → models/public-api.d.ts} +0 -0
  1151. /package/table/{src/public-api.ts → public-api.d.ts} +0 -0
@@ -0,0 +1,180 @@
1
+ import { Component, HostBinding, inject, input, Output, EventEmitter, computed, effect } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { TextService } from '@updevs/sdk';
4
+ import { BaseComponent } from '@updevs/sdk/layout';
5
+ import { ColumnSizeHelper } from '@updevs/components';
6
+ import { Defaults as SelectDefaults } from '@updevs/components/form-controls/select';
7
+ import { ErrorsHelper } from '../../tools/errors-helper';
8
+ import { DynamicFieldType } from '../../models/enums/dynamic-field.type';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@updevs/components/button";
11
+ import * as i2 from "@updevs/components/form-controls/input";
12
+ import * as i3 from "@updevs/components/form-controls/checkbox";
13
+ import * as i4 from "@updevs/components/form-controls/radio";
14
+ import * as i5 from "@updevs/components/form-controls/select";
15
+ import * as i6 from "@updevs/components/form-controls/textarea";
16
+ import * as i7 from "@updevs/components/form-controls/file-upload";
17
+ export class DynamicFieldComponent extends BaseComponent {
18
+ get hostClasses() {
19
+ return this.wrapperClasses();
20
+ }
21
+ get formControl() {
22
+ return this.formGroup().controls[this.field().name];
23
+ }
24
+ get inputField() {
25
+ return this.field();
26
+ }
27
+ get checkboxField() {
28
+ return this.field();
29
+ }
30
+ get checkboxGroupField() {
31
+ return this.field();
32
+ }
33
+ get radioField() {
34
+ return this.field();
35
+ }
36
+ get radioGroupField() {
37
+ return this.field();
38
+ }
39
+ get selectField() {
40
+ return this.field();
41
+ }
42
+ get singleSelectField() {
43
+ return this.field();
44
+ }
45
+ get textareaField() {
46
+ return this.field();
47
+ }
48
+ get fileUploadField() {
49
+ return this.field();
50
+ }
51
+ get maskedField() {
52
+ return this.field();
53
+ }
54
+ get buttonField() {
55
+ return this.field();
56
+ }
57
+ get buttonGroupField() {
58
+ return this.field();
59
+ }
60
+ get checkboxGroupOptionsKeys() {
61
+ return Object.keys(this.checkboxGroupField.options);
62
+ }
63
+ get radioGroupOptionsKeys() {
64
+ return Object.keys(this.radioGroupField.options);
65
+ }
66
+ get fileNameControl() {
67
+ return !!this.fileUploadField.fileNameFormProperty
68
+ ? this.formGroup().controls[this.fileUploadField.fileNameFormProperty]
69
+ : undefined;
70
+ }
71
+ constructor() {
72
+ super();
73
+ this.submitForm = new EventEmitter();
74
+ this.DynamicFieldType = DynamicFieldType;
75
+ this.SelectDefaults = SelectDefaults;
76
+ this.formGroup = input.required();
77
+ this.field = input.required();
78
+ this.layout = input.required();
79
+ this.validationStatusDescriptions = [];
80
+ this.textService = inject(TextService);
81
+ this.wrapperClasses = computed(() => {
82
+ const isVisible = this.field().isVisible?.() ?? true;
83
+ const columnClasses = ColumnSizeHelper.getSizeClasses(this.field().colSize);
84
+ return `${columnClasses} ${isVisible ? '' : 'd-none'}`;
85
+ });
86
+ this.errorsHelper = inject(ErrorsHelper);
87
+ effect(() => {
88
+ const control = this.formControl;
89
+ const isVisible = this.field().isVisible?.() ?? true;
90
+ // If a field is not visible, we should remove its validators and restore if it becomes visible again.
91
+ if (!!control) {
92
+ if (isVisible) {
93
+ const fieldConfig = this.field();
94
+ const originalValidators = fieldConfig.validators || [];
95
+ const finalValidators = [...originalValidators];
96
+ if (fieldConfig.isRequired && !originalValidators.includes(Validators.required)) {
97
+ finalValidators.push(Validators.required);
98
+ }
99
+ control.setValidators(finalValidators);
100
+ }
101
+ else {
102
+ control.clearValidators();
103
+ }
104
+ control.updateValueAndValidity({ emitEvent: false });
105
+ }
106
+ });
107
+ }
108
+ ngOnInit() {
109
+ if (!!this.formControl) {
110
+ const statusSub = this.formControl.statusChanges.subscribe(status => {
111
+ this.updateValidationDisplay();
112
+ this.field().onValidationStatusChanged?.(status);
113
+ });
114
+ const valueSub = this.formControl.valueChanges.subscribe(value => this.field().onValueChanged?.(value));
115
+ this.addSubscriptions(statusSub, valueSub);
116
+ }
117
+ }
118
+ onBlur() {
119
+ if (!!this.formControl) {
120
+ this.formControl.markAsTouched();
121
+ this.updateValidationDisplay();
122
+ this.field().onBlur?.();
123
+ this.field().onTouched?.();
124
+ }
125
+ }
126
+ onFocus() {
127
+ this.field().onFocus?.();
128
+ }
129
+ onInput(event) {
130
+ const value = event.target?.value;
131
+ this.field().onInput?.(value);
132
+ }
133
+ setControlValue(value) {
134
+ this.formControl.setValue(value);
135
+ this.formControl.markAsDirty();
136
+ }
137
+ getText(textModel) {
138
+ return this.textService.getText(textModel);
139
+ }
140
+ getOptionDescription(key, type) {
141
+ return type === 'checkbox' ?
142
+ this.checkboxGroupField.options[key] : this.radioGroupField.options[key];
143
+ }
144
+ handleFileSelected(event) {
145
+ this.formControl.setValue(!!this.fileUploadField.saveAsDataUrl ? event?.dataUrl : event?.file);
146
+ this.formControl.markAsDirty();
147
+ if (!!this.fileUploadField.fileNameFormProperty) {
148
+ this.fileNameControl.setValue(event?.file.name);
149
+ }
150
+ }
151
+ onInputEnter() {
152
+ if (!!this.inputField.shouldSubmitOnEnter) {
153
+ this.submitForm.next();
154
+ }
155
+ this.field().onEnter?.();
156
+ }
157
+ updateValidationDisplay() {
158
+ if (this.formControl && this.formControl.invalid && this.formControl.touched) {
159
+ this.validationStatusDescriptions = this.errorsHelper.getMessages(this.formControl)
160
+ .map(t => ({ text: t, isTranslated: true }));
161
+ this.validationStatus = 'invalid';
162
+ }
163
+ else {
164
+ this.validationStatusDescriptions = [];
165
+ this.validationStatus = this.field().showValidStatus && this.formControl?.touched ? 'valid' : undefined;
166
+ }
167
+ }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
169
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: DynamicFieldComponent, selector: "upd-dynamic-field", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { submitForm: "submitForm" }, host: { properties: { "class": "this.hostClasses" } }, usesInheritance: true, ngImport: i0, template: "@switch (field().type) {\n @case (DynamicFieldType.Input) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\" [isDisabled]=\"field().isDisabled || false\"\n [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\" [value]=\"formControl.value\"\n (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\" (focus)=\"onFocus()\"\n (input)=\"onInput($event)\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n @case (DynamicFieldType.Checkbox) {\n <upd-checkbox [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isDisabled]=\"field().isDisabled || false\" [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n [isSwitch]=\"checkboxField.isSwitch || false\" (changed)=\"setControlValue($event)\" (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"></upd-checkbox>\n }\n @case (DynamicFieldType.CheckboxGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of checkboxGroupOptionsKeys; track option) {\n <upd-checkbox [name]=\"field().name\" [label]=\"getOptionDescription(option, 'checkbox')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\" [isSwitch]=\"checkboxField.isSwitch || false\"\n (changed)=\"setControlValue(option)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"></upd-checkbox>\n }\n }\n @case (DynamicFieldType.Radio) {\n <upd-radio [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isChecked]=\"formControl.value\" [isDisabled]=\"field().isDisabled || false\" [isInline]=\"radioField.isInline || false\"\n (selected)=\"setControlValue($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\n </upd-radio>\n }\n @case (DynamicFieldType.RadioGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of radioGroupOptionsKeys; track option) {\n <upd-radio [name]=\"field().name\" [label]=\"getOptionDescription(option, 'radio')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n (selected)=\"setControlValue(option)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"></upd-radio>\n }\n }\n @case (DynamicFieldType.Select) {\n <upd-select [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\"\n [useSystemStyle]=\"singleSelectField.useSystemStyle || false\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n [shouldTruncateSelectedText]=\"selectField.shouldTruncateSelectedText\" [parentValue]=\"selectField.parentValue\"\n [value]=\"formControl.value\" (selectedItem)=\"setControlValue($event?.value)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"></upd-select>\n }\n @case (DynamicFieldType.SelectMultiple) {\n <upd-select-multiple [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\" [parentValue]=\"selectField.parentValue\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n [selectedValues]=\"formControl.value\" (selectedIds)=\"setControlValue($event)\" (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"></upd-select-multiple>\n }\n @case (DynamicFieldType.Label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n @case (DynamicFieldType.TextArea) {\n <upd-textarea [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [value]=\"formControl.value\" [customClasses]=\"textareaField.customClasses\" [wrapperClasses]=\"textareaField.wrapperClasses\"\n [maxLength]=\"textareaField.maxLength\" [rows]=\"textareaField.rows\"\n [displayCharactersCount]=\"textareaField.displayCharactersCount || false\" (valueChange)=\"setControlValue($event)\"\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (input)=\"onInput($event)\" (keydown.enter)=\"onInputEnter()\">\n </upd-textarea>\n }\n @case (DynamicFieldType.FileUpload) {\n <upd-file-upload [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [isDisabled]=\"field().isDisabled || false\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [fileName]=\"fileNameControl?.value\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [allowFilesDrop]=\"fileUploadField.allowFilesDrop || false\"\n [title]=\"fileUploadField.title\" [labelColSize]=\"field().labelColSize\" [minFileSize]=\"fileUploadField.minFileSize\"\n [isMultiple]=\"fileUploadField.isMultiple || false\" [allowedExtensions]=\"fileUploadField.allowedExtensions || '*'\"\n [maxFileSize]=\"fileUploadField.maxFileSize\" [layout]=\"layout()\" (fileChanged)=\"handleFileSelected($event)\" (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"></upd-file-upload>\n }\n @case (DynamicFieldType.MaskedInput) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [mask]=\"maskedField.mask\"\n [maskConfig]=\"maskedField.maskConfig\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\"\n [isDisabled]=\"field().isDisabled || false\" [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\"\n [value]=\"formControl.value\" (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\"\n (focus)=\"onFocus()\" (input)=\"onInput($event)\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n @case (DynamicFieldType.Button) {\n <upd-button [text]=\"field().label\" [isDisabled]=\"field().isDisabled || false\" [model]=\"buttonField.model\" />\n }\n @case (DynamicFieldType.ButtonGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n <div class=\"btn-group\" role=\"group\">\n @for (btn of buttonGroupField.buttons; track btn) {\n <upd-button [model]=\"btn\" [isDisabled]=\"field().isDisabled || false\" />\n }\n </div>\n }\n}\n", styles: [""], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i2.InputComponent, selector: "upd-input", inputs: ["type", "mask", "maskConfig", "value", "size", "customClasses", "wrapperClasses", "maxLength", "isPlainText", "isReadOnly", "isLoading", "isRound", "isFlush", "isInputGroupFlat", "isPrependButton", "isAppendButton", "isFloating", "loaderPosition", "prependIconModel", "appendIconModel", "isValidationStatusLight", "layout"], outputs: ["valueChange", "blurred", "keyDown", "keyDownEsc", "keyUpEnter"] }, { kind: "directive", type: i2.InputAppendDirective, selector: "ng-template[updInputAppend]" }, { kind: "directive", type: i2.InputPrependDirective, selector: "ng-template[updInputPrepend]" }, { kind: "component", type: i3.CheckboxComponent, selector: "upd-checkbox", inputs: ["wrapperClasses", "value", "customClasses", "isChecked", "isInline", "isSwitch", "isIndeterminate"], outputs: ["changed", "isCheckedChange", "isIndeterminateChange"] }, { kind: "component", type: i4.RadioComponent, selector: "upd-radio", inputs: ["wrapperClasses", "value", "customClasses", "isChecked", "isInline"], outputs: ["selected"] }, { kind: "component", type: i5.SelectComponent, selector: "upd-select", inputs: ["useSystemStyle", "shouldShowClearButton", "shouldTruncateSelectedText", "isCompact", "value"], outputs: ["valueChange", "selectedItem"] }, { kind: "component", type: i5.SelectMultipleComponent, selector: "upd-select-multiple", inputs: ["selectedValues"], outputs: ["selectedItems", "selectedIds"] }, { kind: "component", type: i6.TextareaComponent, selector: "upd-textarea", inputs: ["value", "customClasses", "wrapperClasses", "maxLength", "rows", "displayCharactersCount"], outputs: ["valueChange"] }, { kind: "component", type: i7.FileUploadComponent, selector: "upd-file-upload", inputs: ["fileName", "title", "allowFilesDrop", "isMultiple", "allowedExtensions", "minFileSize", "maxFileSize", "layout"], outputs: ["fileChanged"] }] }); }
170
+ }
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicFieldComponent, decorators: [{
172
+ type: Component,
173
+ args: [{ selector: 'upd-dynamic-field', template: "@switch (field().type) {\n @case (DynamicFieldType.Input) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\" [isDisabled]=\"field().isDisabled || false\"\n [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\" [value]=\"formControl.value\"\n (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\" (focus)=\"onFocus()\"\n (input)=\"onInput($event)\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n @case (DynamicFieldType.Checkbox) {\n <upd-checkbox [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isDisabled]=\"field().isDisabled || false\" [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n [isSwitch]=\"checkboxField.isSwitch || false\" (changed)=\"setControlValue($event)\" (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"></upd-checkbox>\n }\n @case (DynamicFieldType.CheckboxGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of checkboxGroupOptionsKeys; track option) {\n <upd-checkbox [name]=\"field().name\" [label]=\"getOptionDescription(option, 'checkbox')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\" [isSwitch]=\"checkboxField.isSwitch || false\"\n (changed)=\"setControlValue(option)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"></upd-checkbox>\n }\n }\n @case (DynamicFieldType.Radio) {\n <upd-radio [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isChecked]=\"formControl.value\" [isDisabled]=\"field().isDisabled || false\" [isInline]=\"radioField.isInline || false\"\n (selected)=\"setControlValue($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\n </upd-radio>\n }\n @case (DynamicFieldType.RadioGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of radioGroupOptionsKeys; track option) {\n <upd-radio [name]=\"field().name\" [label]=\"getOptionDescription(option, 'radio')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n (selected)=\"setControlValue(option)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"></upd-radio>\n }\n }\n @case (DynamicFieldType.Select) {\n <upd-select [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\"\n [useSystemStyle]=\"singleSelectField.useSystemStyle || false\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n [shouldTruncateSelectedText]=\"selectField.shouldTruncateSelectedText\" [parentValue]=\"selectField.parentValue\"\n [value]=\"formControl.value\" (selectedItem)=\"setControlValue($event?.value)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"></upd-select>\n }\n @case (DynamicFieldType.SelectMultiple) {\n <upd-select-multiple [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\" [parentValue]=\"selectField.parentValue\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n [selectedValues]=\"formControl.value\" (selectedIds)=\"setControlValue($event)\" (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"></upd-select-multiple>\n }\n @case (DynamicFieldType.Label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n @case (DynamicFieldType.TextArea) {\n <upd-textarea [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [value]=\"formControl.value\" [customClasses]=\"textareaField.customClasses\" [wrapperClasses]=\"textareaField.wrapperClasses\"\n [maxLength]=\"textareaField.maxLength\" [rows]=\"textareaField.rows\"\n [displayCharactersCount]=\"textareaField.displayCharactersCount || false\" (valueChange)=\"setControlValue($event)\"\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (input)=\"onInput($event)\" (keydown.enter)=\"onInputEnter()\">\n </upd-textarea>\n }\n @case (DynamicFieldType.FileUpload) {\n <upd-file-upload [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [isDisabled]=\"field().isDisabled || false\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [fileName]=\"fileNameControl?.value\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [allowFilesDrop]=\"fileUploadField.allowFilesDrop || false\"\n [title]=\"fileUploadField.title\" [labelColSize]=\"field().labelColSize\" [minFileSize]=\"fileUploadField.minFileSize\"\n [isMultiple]=\"fileUploadField.isMultiple || false\" [allowedExtensions]=\"fileUploadField.allowedExtensions || '*'\"\n [maxFileSize]=\"fileUploadField.maxFileSize\" [layout]=\"layout()\" (fileChanged)=\"handleFileSelected($event)\" (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"></upd-file-upload>\n }\n @case (DynamicFieldType.MaskedInput) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [mask]=\"maskedField.mask\"\n [maskConfig]=\"maskedField.maskConfig\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\"\n [isDisabled]=\"field().isDisabled || false\" [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\"\n [value]=\"formControl.value\" (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\"\n (focus)=\"onFocus()\" (input)=\"onInput($event)\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n @case (DynamicFieldType.Button) {\n <upd-button [text]=\"field().label\" [isDisabled]=\"field().isDisabled || false\" [model]=\"buttonField.model\" />\n }\n @case (DynamicFieldType.ButtonGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n <div class=\"btn-group\" role=\"group\">\n @for (btn of buttonGroupField.buttons; track btn) {\n <upd-button [model]=\"btn\" [isDisabled]=\"field().isDisabled || false\" />\n }\n </div>\n }\n}\n" }]
174
+ }], ctorParameters: () => [], propDecorators: { hostClasses: [{
175
+ type: HostBinding,
176
+ args: ['class']
177
+ }], submitForm: [{
178
+ type: Output
179
+ }] } });
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvY29tcG9uZW50cy9keW5hbWljLWZpZWxkL2R5bmFtaWMtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm0vc3JjL2NvbXBvbmVudHMvZHluYW1pYy1maWVsZC9keW5hbWljLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFFLE1BQU0sRUFBZSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBdUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFhLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFnRCxNQUFNLG9CQUFvQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxRQUFRLElBQUksY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFNckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7QUFpQnpFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxhQUFhO0lBQ3BELElBQTBCLFdBQVc7UUFDakMsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQWFELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENB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LENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNFLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2lCQUM5RSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsNEJBQTRCLEdBQUcsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM1RyxDQUFDO0lBQ0wsQ0FBQzs4R0E5S1EscUJBQXFCO2tHQUFyQixxQkFBcUIsOGlCQzlCbEMsMDFVQWdKQTs7MkZEbEhhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDSSxtQkFBbUI7d0RBS0gsV0FBVztzQkFBcEMsV0FBVzt1QkFBQyxPQUFPO2dCQUlELFVBQVU7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdEJpbmRpbmcsIGluamVjdCwgSW5wdXRTaWduYWwsIGlucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUZXh0TW9kZWwsIFRleHRTZXJ2aWNlIH0gZnJvbSAnQHVwZGV2cy9zZGsnO1xuaW1wb3J0IHsgT3B0aW9uYWxUeXBlIH0gZnJvbSAnQHVwZGV2cy9zZGsvdHlwZXMnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ0B1cGRldnMvc2RrL2xheW91dCc7XG5pbXBvcnQgeyBDb2x1bW5TaXplSGVscGVyLCBIb3Jpem9udGFsVmVydGljYWxUeXBlLCBWYWxpZGF0aW9uU3RhdHVzVHlwZSB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEZWZhdWx0cyBhcyBTZWxlY3REZWZhdWx0cyB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cy9mb3JtLWNvbnRyb2xzL3NlbGVjdCc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQHVwZGV2cy9jb21wb25lbnRzL2Zvcm0tY29udHJvbHMvZmlsZS11cGxvYWQnO1xuXG5pbXBvcnQgeyBGaWxlVXBsb2FkRmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9maWxlLXVwbG9hZC1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBJbnB1dEZpZWxkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5wdXQtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgTWFza2VkSW5wdXRGaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21hc2tlZC1pbnB1dC1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBFcnJvcnNIZWxwZXIgfSBmcm9tICcuLi8uLi90b29scy9lcnJvcnMtaGVscGVyJztcbmltcG9ydCB7IER5bmFtaWNGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW51bXMvZHluYW1pYy1maWVsZC50eXBlJztcbmltcG9ydCB7IER5bmFtaWNGaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2R5bmFtaWMtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgQ2hlY2tib3hGaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoZWNrYm94LWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IFJhZGlvRmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9yYWRpby1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3RGaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlbGVjdC1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBTaW5nbGVTZWxlY3RGaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NpbmdsZS1zZWxlY3QtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgQ2hlY2tib3hHcm91cEZpZWxkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hlY2tib3gtZ3JvdXAtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgUmFkaW9Hcm91cEZpZWxkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmFkaW8tZ3JvdXAtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgVGV4dGFyZWFGaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RleHRhcmVhLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEJ1dHRvbkZpZWxkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvYnV0dG9uLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEJ1dHRvbkdyb3VwRmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9idXR0b24tZ3JvdXAtZmllbGQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1keW5hbWljLWZpZWxkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2R5bmFtaWMtZmllbGQuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGaWVsZENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgaG9zdENsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud3JhcHBlckNsYXNzZXMoKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc3VibWl0Rm9ybSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIER5bmFtaWNGaWVsZFR5cGUgPSBEeW5hbWljRmllbGRUeXBlO1xuICAgIFNlbGVjdERlZmF1bHRzID0gU2VsZWN0RGVmYXVsdHM7XG5cbiAgICBmb3JtR3JvdXA6IElucHV0U2lnbmFsPEZvcm1Hcm91cD4gPSBpbnB1dC5yZXF1aXJlZCgpO1xuICAgIGZpZWxkOiBJbnB1dFNpZ25hbDxEeW5hbWljRmllbGRNb2RlbD4gPSBpbnB1dC5yZXF1aXJlZCgpO1xuICAgIGxheW91dDogSW5wdXRTaWduYWw8SG9yaXpvbnRhbFZlcnRpY2FsVHlwZT4gPSBpbnB1dC5yZXF1aXJlZCgpO1xuICAgIHZhbGlkYXRpb25TdGF0dXM/OiBWYWxpZGF0aW9uU3RhdHVzVHlwZTtcbiAgICB2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zOiBUZXh0TW9kZWxbXSA9IFtdO1xuXG4gICAgZ2V0IGZvcm1Db250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwKCkuY29udHJvbHNbdGhpcy5maWVsZCgpLm5hbWVdIGFzIEZvcm1Db250cm9sO1xuICAgIH1cbiAgICBnZXQgaW5wdXRGaWVsZCgpOiBJbnB1dEZpZWxkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCgpIGFzIElucHV0RmllbGRNb2RlbDtcbiAgICB9XG4gICAgZ2V0IGNoZWNrYm94RmllbGQoKTogQ2hlY2tib3hGaWVsZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQoKSBhcyBDaGVja2JveEZpZWxkTW9kZWw7XG4gICAgfVxuICAgIGdldCBjaGVja2JveEdyb3VwRmllbGQoKTogQ2hlY2tib3hHcm91cEZpZWxkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCgpIGFzIENoZWNrYm94R3JvdXBGaWVsZE1vZGVsO1xuICAgIH1cbiAgICBnZXQgcmFkaW9GaWVsZCgpOiBDaGVja2JveEZpZWxkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCgpIGFzIFJhZGlvRmllbGRNb2RlbDtcbiAgICB9XG4gICAgZ2V0IHJhZGlvR3JvdXBGaWVsZCgpOiBSYWRpb0dyb3VwRmllbGRNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkKCkgYXMgUmFkaW9Hcm91cEZpZWxkTW9kZWw7XG4gICAgfVxuICAgIGdldCBzZWxlY3RGaWVsZCgpOiBTZWxlY3RGaWVsZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQoKSBhcyBTZWxlY3RGaWVsZE1vZGVsO1xuICAgIH1cbiAgICBnZXQgc2luZ2xlU2VsZWN0RmllbGQoKTogU2luZ2xlU2VsZWN0RmllbGRNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkKCkgYXMgU2luZ2xlU2VsZWN0RmllbGRNb2RlbDtcbiAgICB9XG4gICAgZ2V0IHRleHRhcmVhRmllbGQoKTogVGV4dGFyZWFGaWVsZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQoKSBhcyBUZXh0YXJlYUZpZWxkTW9kZWw7XG4gICAgfVxuICAgIGdldCBmaWxlVXBsb2FkRmllbGQoKTogRmlsZVVwbG9hZEZpZWxkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCgpIGFzIEZpbGVVcGxvYWRGaWVsZE1vZGVsO1xuICAgIH1cbiAgICBnZXQgbWFza2VkRmllbGQoKTogTWFza2VkSW5wdXRGaWVsZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQoKSBhcyBNYXNrZWRJbnB1dEZpZWxkTW9kZWw7XG4gICAgfVxuICAgIGdldCBidXR0b25GaWVsZCgpOiBCdXR0b25GaWVsZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQoKSBhcyBCdXR0b25GaWVsZE1vZGVsO1xuICAgIH1cbiAgICBnZXQgYnV0dG9uR3JvdXBGaWVsZCgpOiBCdXR0b25Hcm91cEZpZWxkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCgpIGFzIEJ1dHRvbkdyb3VwRmllbGRNb2RlbDtcbiAgICB9XG4gICAgZ2V0IGNoZWNrYm94R3JvdXBPcHRpb25zS2V5cygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNoZWNrYm94R3JvdXBGaWVsZC5vcHRpb25zKTtcbiAgICB9XG4gICAgZ2V0IHJhZGlvR3JvdXBPcHRpb25zS2V5cygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnJhZGlvR3JvdXBGaWVsZC5vcHRpb25zKTtcbiAgICB9XG4gICAgZ2V0IGZpbGVOYW1lQ29udHJvbCgpOiBPcHRpb25hbFR5cGU8Rm9ybUNvbnRyb2w+IHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5maWxlVXBsb2FkRmllbGQuZmlsZU5hbWVGb3JtUHJvcGVydHlcbiAgICAgICAgICAgID8gdGhpcy5mb3JtR3JvdXAoKS5jb250cm9sc1t0aGlzLmZpbGVVcGxvYWRGaWVsZC5maWxlTmFtZUZvcm1Qcm9wZXJ0eV0gYXMgRm9ybUNvbnRyb2xcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IHRleHRTZXJ2aWNlID0gaW5qZWN0KFRleHRTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgd3JhcHBlckNsYXNzZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IHRoaXMuZmllbGQoKS5pc1Zpc2libGU/LigpID8/IHRydWU7XG4gICAgICAgIGNvbnN0IGNvbHVtbkNsYXNzZXMgPSBDb2x1bW5TaXplSGVscGVyLmdldFNpemVDbGFzc2VzKHRoaXMuZmllbGQoKS5jb2xTaXplKTtcblxuICAgICAgICByZXR1cm4gYCR7Y29sdW1uQ2xhc3Nlc30gJHtpc1Zpc2libGUgPyAnJyA6ICdkLW5vbmUnfWA7XG4gICAgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvcnNIZWxwZXIgPSBpbmplY3QoRXJyb3JzSGVscGVyKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUNvbnRyb2w7XG4gICAgICAgICAgICBjb25zdCBpc1Zpc2libGUgPSB0aGlzLmZpZWxkKCkuaXNWaXNpYmxlPy4oKSA/PyB0cnVlO1xuXG4gICAgICAgICAgICAvLyBJZiBhIGZpZWxkIGlzIG5vdCB2aXNpYmxlLCB3ZSBzaG91bGQgcmVtb3ZlIGl0cyB2YWxpZGF0b3JzIGFuZCByZXN0b3JlIGlmIGl0IGJlY29tZXMgdmlzaWJsZSBhZ2Fpbi5cbiAgICAgICAgICAgIGlmICghIWNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gdGhpcy5maWVsZCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbFZhbGlkYXRvcnMgPSBmaWVsZENvbmZpZy52YWxpZGF0b3JzIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbLi4ub3JpZ2luYWxWYWxpZGF0b3JzXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRDb25maWcuaXNSZXF1aXJlZCAmJiAhb3JpZ2luYWxWYWxpZGF0b3JzLmluY2x1ZGVzKFZhbGlkYXRvcnMucmVxdWlyZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhmaW5hbFZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1c1N1YiA9IHRoaXMuZm9ybUNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoc3RhdHVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb25EaXNwbGF5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZCgpLm9uVmFsaWRhdGlvblN0YXR1c0NoYW5nZWQ/LihzdGF0dXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZVN1YiA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLmZpZWxkKCkub25WYWx1ZUNoYW5nZWQ/Lih2YWx1ZSkpO1xuXG4gICAgICAgICAgICB0aGlzLmFkZFN1YnNjcmlwdGlvbnMoc3RhdHVzU3ViLCB2YWx1ZVN1Yik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uRGlzcGxheSgpO1xuICAgICAgICAgICAgdGhpcy5maWVsZCgpLm9uQmx1cj8uKCk7XG4gICAgICAgICAgICB0aGlzLmZpZWxkKCkub25Ub3VjaGVkPy4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmllbGQoKS5vbkZvY3VzPy4oKTtcbiAgICB9XG5cbiAgICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LnZhbHVlO1xuICAgICAgICB0aGlzLmZpZWxkKCkub25JbnB1dD8uKHZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXRDb250cm9sVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cblxuICAgIGdldFRleHQodGV4dE1vZGVsPzogVGV4dE1vZGVsKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dFNlcnZpY2UuZ2V0VGV4dCh0ZXh0TW9kZWwpO1xuICAgIH1cblxuICAgIGdldE9wdGlvbkRlc2NyaXB0aW9uKGtleTogc3RyaW5nLCB0eXBlOiAnY2hlY2tib3gnIHwgJ3JhZGlvJyk6IE9wdGlvbmFsVHlwZTxUZXh0TW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHR5cGUgPT09ICdjaGVja2JveCcgP1xuICAgICAgICAgICAgdGhpcy5jaGVja2JveEdyb3VwRmllbGQub3B0aW9uc1trZXldIDogdGhpcy5yYWRpb0dyb3VwRmllbGQub3B0aW9uc1trZXldO1xuICAgIH1cblxuICAgIGhhbmRsZUZpbGVTZWxlY3RlZChldmVudD86IEZpbGVVcGxvYWRDaGFuZ2VkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSghIXRoaXMuZmlsZVVwbG9hZEZpZWxkLnNhdmVBc0RhdGFVcmwgPyBldmVudD8uZGF0YVVybCA6IGV2ZW50Py5maWxlKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuXG4gICAgICAgIGlmICghIXRoaXMuZmlsZVVwbG9hZEZpZWxkLmZpbGVOYW1lRm9ybVByb3BlcnR5KSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVOYW1lQ29udHJvbCEuc2V0VmFsdWUoZXZlbnQ/LmZpbGUubmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0RW50ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuaW5wdXRGaWVsZC5zaG91bGRTdWJtaXRPbkVudGVyKSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm0ubmV4dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWVsZCgpLm9uRW50ZXI/LigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmFsaWRhdGlvbkRpc3BsYXkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sICYmIHRoaXMuZm9ybUNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9ucyA9IHRoaXMuZXJyb3JzSGVscGVyLmdldE1lc3NhZ2VzKHRoaXMuZm9ybUNvbnRyb2wpXG4gICAgICAgICAgICAgICAgLm1hcCh0ID0+ICh7IHRleHQ6IHQsIGlzVHJhbnNsYXRlZDogdHJ1ZSB9KSk7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TdGF0dXMgPSAnaW52YWxpZCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblN0YXR1cyA9IHRoaXMuZmllbGQoKS5zaG93VmFsaWRTdGF0dXMgJiYgdGhpcy5mb3JtQ29udHJvbD8udG91Y2hlZCA/ICd2YWxpZCcgOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAc3dpdGNoIChmaWVsZCgpLnR5cGUpIHtcbiAgICBAY2FzZSAoRHluYW1pY0ZpZWxkVHlwZS5JbnB1dCkge1xuICAgICAgICA8dXBkLWlucHV0IFtuYW1lXT1cImZpZWxkKCkubmFtZVwiIFtsYWJlbF09XCJmaWVsZCgpLmxhYmVsXCIgW3BsYWNlaG9sZGVyXT1cImZpZWxkKCkucGxhY2Vob2xkZXJcIiBbaGludF09XCJmaWVsZCgpLmhpbnRcIlxuICAgICAgICAgICAgW2hpbnRBc1Rvb2x0aXBdPVwiZmllbGQoKS5oaW50QXNUb29sdGlwIHx8IGZhbHNlXCIgW3ZhbGlkYXRpb25TdGF0dXNdPVwidmFsaWRhdGlvblN0YXR1c1wiXG4gICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc109XCJ2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXCIgW2xheW91dF09XCJsYXlvdXQoKVwiIFtpc0Rpc2FibGVkXT1cImZpZWxkKCkuaXNEaXNhYmxlZCB8fCBmYWxzZVwiXG4gICAgICAgICAgICBbdHlwZV09XCJpbnB1dEZpZWxkLmlucHV0VHlwZSB8fCAndGV4dCdcIiBbbGFiZWxDb2xTaXplXT1cImZpZWxkKCkubGFiZWxDb2xTaXplXCIgW3ZhbHVlXT1cImZvcm1Db250cm9sLnZhbHVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZXRDb250cm9sVmFsdWUoJGV2ZW50KVwiIChibHVycmVkKT1cIm9uQmx1cigpXCIgKGtleVVwRW50ZXIpPVwib25JbnB1dEVudGVyKClcIiAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIj5cbiAgICAgICAgICAgIEBpZiAoISFpbnB1dEZpZWxkLnByZWZpeCkge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB1cGRJbnB1dFByZXBlbmQ+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRleHRTZXJ2aWNlLmdldFRleHQoaW5wdXRGaWVsZC5wcmVmaXgpIH19XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmICghIWlucHV0RmllbGQuc3VmZml4KSB7XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHVwZElucHV0QXBwZW5kPlxuICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0U2VydmljZS5nZXRUZXh0KGlucHV0RmllbGQuc3VmZml4KSB9fVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdXBkLWlucHV0PlxuICAgIH1cbiAgICBAY2FzZSAoRHluYW1pY0ZpZWxkVHlwZS5DaGVja2JveCkge1xuICAgICAgICA8dXBkLWNoZWNrYm94IFtuYW1lXT1cImZpZWxkKCkubmFtZVwiIFtsYWJlbF09XCJmaWVsZCgpLmxhYmVsXCIgW2hpbnRdPVwiZmllbGQoKS5oaW50XCIgW2hpbnRBc1Rvb2x0aXBdPVwiZmllbGQoKS5oaW50QXNUb29sdGlwIHx8IGZhbHNlXCJcbiAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzXT1cInZhbGlkYXRpb25TdGF0dXNcIiBbdmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc109XCJ2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXCIgW3ZhbHVlXT1cInRydWVcIlxuICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiZmllbGQoKS5pc0Rpc2FibGVkIHx8IGZhbHNlXCIgW2lzQ2hlY2tlZF09XCJmb3JtQ29udHJvbC52YWx1ZVwiIFtpc0lubGluZV09XCJjaGVja2JveEZpZWxkLmlzSW5saW5lIHx8IGZhbHNlXCJcbiAgICAgICAgICAgIFtpc1N3aXRjaF09XCJjaGVja2JveEZpZWxkLmlzU3dpdGNoIHx8IGZhbHNlXCIgKGNoYW5nZWQpPVwic2V0Q29udHJvbFZhbHVlKCRldmVudClcIiAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCI+PC91cGQtY2hlY2tib3g+XG4gICAgfVxuICAgIEBjYXNlIChEeW5hbWljRmllbGRUeXBlLkNoZWNrYm94R3JvdXApIHtcbiAgICAgICAgQGlmICghIWZpZWxkKCkubGFiZWwpIHtcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyBnZXRUZXh0KGZpZWxkKCkubGFiZWwpIH19PC9sYWJlbD5cbiAgICAgICAgfVxuXG4gICAgICAgIEBmb3IgKG9wdGlvbiBvZiBjaGVja2JveEdyb3VwT3B0aW9uc0tleXM7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgPHVwZC1jaGVja2JveCBbbmFtZV09XCJmaWVsZCgpLm5hbWVcIiBbbGFiZWxdPVwiZ2V0T3B0aW9uRGVzY3JpcHRpb24ob3B0aW9uLCAnY2hlY2tib3gnKVwiIFtoaW50XT1cImZpZWxkKCkuaGludFwiXG4gICAgICAgICAgICAgICAgW2hpbnRBc1Rvb2x0aXBdPVwiZmllbGQoKS5oaW50QXNUb29sdGlwIHx8IGZhbHNlXCIgW3ZhbGlkYXRpb25TdGF0dXNdPVwidmFsaWRhdGlvblN0YXR1c1wiXG4gICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNdPVwidmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIiBbaXNEaXNhYmxlZF09XCJmaWVsZCgpLmlzRGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtpc0NoZWNrZWRdPVwiZm9ybUNvbnRyb2wudmFsdWVcIiBbaXNJbmxpbmVdPVwiY2hlY2tib3hGaWVsZC5pc0lubGluZSB8fCBmYWxzZVwiIFtpc1N3aXRjaF09XCJjaGVja2JveEZpZWxkLmlzU3dpdGNoIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlZCk9XCJzZXRDb250cm9sVmFsdWUob3B0aW9uKVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiPjwvdXBkLWNoZWNrYm94PlxuICAgICAgICB9XG4gICAgfVxuICAgIEBjYXNlIChEeW5hbWljRmllbGRUeXBlLlJhZGlvKSB7XG4gICAgICAgIDx1cGQtcmFkaW8gW25hbWVdPVwiZmllbGQoKS5uYW1lXCIgW2xhYmVsXT1cImZpZWxkKCkubGFiZWxcIiBbaGludF09XCJmaWVsZCgpLmhpbnRcIiBbaGludEFzVG9vbHRpcF09XCJmaWVsZCgpLmhpbnRBc1Rvb2x0aXAgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNdPVwidmFsaWRhdGlvblN0YXR1c1wiIFt2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXT1cInZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNcIiBbdmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaXNDaGVja2VkXT1cImZvcm1Db250cm9sLnZhbHVlXCIgW2lzRGlzYWJsZWRdPVwiZmllbGQoKS5pc0Rpc2FibGVkIHx8IGZhbHNlXCIgW2lzSW5saW5lXT1cInJhZGlvRmllbGQuaXNJbmxpbmUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgKHNlbGVjdGVkKT1cInNldENvbnRyb2xWYWx1ZSgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIm9uQmx1cigpXCI+XG4gICAgICAgIDwvdXBkLXJhZGlvPlxuICAgIH1cbiAgICBAY2FzZSAoRHluYW1pY0ZpZWxkVHlwZS5SYWRpb0dyb3VwKSB7XG4gICAgICAgIEBpZiAoISFmaWVsZCgpLmxhYmVsKSB7XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgZ2V0VGV4dChmaWVsZCgpLmxhYmVsKSB9fTwvbGFiZWw+XG4gICAgICAgIH1cblxuICAgICAgICBAZm9yIChvcHRpb24gb2YgcmFkaW9Hcm91cE9wdGlvbnNLZXlzOyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICAgIDx1cGQtcmFkaW8gW25hbWVdPVwiZmllbGQoKS5uYW1lXCIgW2xhYmVsXT1cImdldE9wdGlvbkRlc2NyaXB0aW9uKG9wdGlvbiwgJ3JhZGlvJylcIiBbaGludF09XCJmaWVsZCgpLmhpbnRcIlxuICAgICAgICAgICAgICAgIFtoaW50QXNUb29sdGlwXT1cImZpZWxkKCkuaGludEFzVG9vbHRpcCB8fCBmYWxzZVwiIFt2YWxpZGF0aW9uU3RhdHVzXT1cInZhbGlkYXRpb25TdGF0dXNcIlxuICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXT1cInZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCIgW2lzRGlzYWJsZWRdPVwiZmllbGQoKS5pc0Rpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBbaXNDaGVja2VkXT1cImZvcm1Db250cm9sLnZhbHVlXCIgW2lzSW5saW5lXT1cImNoZWNrYm94RmllbGQuaXNJbmxpbmUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJzZXRDb250cm9sVmFsdWUob3B0aW9uKVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiPjwvdXBkLXJhZGlvPlxuICAgICAgICB9XG4gICAgfVxuICAgIEBjYXNlIChEeW5hbWljRmllbGRUeXBlLlNlbGVjdCkge1xuICAgICAgICA8dXBkLXNlbGVjdCBbbmFtZV09XCJmaWVsZCgpLm5hbWVcIiBbbGFiZWxdPVwiZmllbGQoKS5sYWJlbFwiIFtoaW50XT1cImZpZWxkKCkuaGludFwiIFtoaW50QXNUb29sdGlwXT1cImZpZWxkKCkuaGludEFzVG9vbHRpcCB8fCBmYWxzZVwiXG4gICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c109XCJ2YWxpZGF0aW9uU3RhdHVzXCIgW3ZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNdPVwidmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc1wiXG4gICAgICAgICAgICBbdXNlU3lzdGVtU3R5bGVdPVwic2luZ2xlU2VsZWN0RmllbGQudXNlU3lzdGVtU3R5bGUgfHwgZmFsc2VcIiBbaXNEaXNhYmxlZF09XCJmaWVsZCgpLmlzRGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cInNlbGVjdEZpZWxkLml0ZW1zXCIgW2xheW91dF09XCJsYXlvdXQoKVwiIFtsYWJlbENvbFNpemVdPVwiZmllbGQoKS5sYWJlbENvbFNpemVcIiBbc3RvcmVdPVwic2VsZWN0RmllbGQuc3RvcmUhXCJcbiAgICAgICAgICAgIFtvYnNlcnZhYmxlXT1cInNlbGVjdEZpZWxkLm9ic2VydmFibGVcIiBbaXRlbUtleV09XCJzZWxlY3RGaWVsZC5pdGVtS2V5XCIgW2l0ZW1WYWx1ZV09XCJzZWxlY3RGaWVsZC5pdGVtVmFsdWVcIlxuICAgICAgICAgICAgW2Ryb3Bkb3duTWF4SGVpZ2h0XT1cInNlbGVjdEZpZWxkLmRyb3Bkb3duTWF4SGVpZ2h0IHx8IFNlbGVjdERlZmF1bHRzLmRyb3Bkb3duTWF4SGVpZ2h0XCJcbiAgICAgICAgICAgIFt0eXBlYWhlYWREZWJvdW5jZV09XCJzZWxlY3RGaWVsZC50eXBlYWhlYWREZWJvdW5jZSB8fCBTZWxlY3REZWZhdWx0cy50eXBlYWhlYWREZWJvdW5jZVwiXG4gICAgICAgICAgICBbc2hvdWxkQXV0b1NlYXJjaF09XCJzZWxlY3RGaWVsZC5zaG91bGRBdXRvU2VhcmNoIHx8IFNlbGVjdERlZmF1bHRzLnNob3VsZEF1dG9TZWFyY2hcIlxuICAgICAgICAgICAgW3Nob3VsZENsb3NlT25PdXRzaWRlQ2xpY2tdPVwic2VsZWN0RmllbGQuc2hvdWxkQ2xvc2VPbk91dHNpZGVDbGljayB8fCBTZWxlY3REZWZhdWx0cy5zaG91bGRDbG9zZU9uT3V0c2lkZUNsaWNrXCJcbiAgICAgICAgICAgIFtzaG91bGRUcnVuY2F0ZVNlbGVjdGVkVGV4dF09XCJzZWxlY3RGaWVsZC5zaG91bGRUcnVuY2F0ZVNlbGVjdGVkVGV4dFwiIFtwYXJlbnRWYWx1ZV09XCJzZWxlY3RGaWVsZC5wYXJlbnRWYWx1ZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZm9ybUNvbnRyb2wudmFsdWVcIiAoc2VsZWN0ZWRJdGVtKT1cInNldENvbnRyb2xWYWx1ZSgkZXZlbnQ/LnZhbHVlKVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiPjwvdXBkLXNlbGVjdD5cbiAgICB9XG4gICAgQGNhc2UgKER5bmFtaWNGaWVsZFR5cGUuU2VsZWN0TXVsdGlwbGUpIHtcbiAgICAgICAgPHVwZC1zZWxlY3QtbXVsdGlwbGUgW25hbWVdPVwiZmllbGQoKS5uYW1lXCIgW2xhYmVsXT1cImZpZWxkKCkubGFiZWxcIiBbaGludF09XCJmaWVsZCgpLmhpbnRcIlxuICAgICAgICAgICAgW2hpbnRBc1Rvb2x0aXBdPVwiZmllbGQoKS5oaW50QXNUb29sdGlwIHx8IGZhbHNlXCIgW3ZhbGlkYXRpb25TdGF0dXNdPVwidmFsaWRhdGlvblN0YXR1c1wiXG4gICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc109XCJ2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXCIgW2lzRGlzYWJsZWRdPVwiZmllbGQoKS5pc0Rpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJzZWxlY3RGaWVsZC5pdGVtc1wiIFtsYXlvdXRdPVwibGF5b3V0KClcIiBbbGFiZWxDb2xTaXplXT1cImZpZWxkKCkubGFiZWxDb2xTaXplXCIgW3N0b3JlXT1cInNlbGVjdEZpZWxkLnN0b3JlIVwiXG4gICAgICAgICAgICBbb2JzZXJ2YWJsZV09XCJzZWxlY3RGaWVsZC5vYnNlcnZhYmxlXCIgW2l0ZW1LZXldPVwic2VsZWN0RmllbGQuaXRlbUtleVwiIFtpdGVtVmFsdWVdPVwic2VsZWN0RmllbGQuaXRlbVZhbHVlXCJcbiAgICAgICAgICAgIFtkcm9wZG93bk1heEhlaWdodF09XCJzZWxlY3RGaWVsZC5kcm9wZG93bk1heEhlaWdodCB8fCBTZWxlY3REZWZhdWx0cy5kcm9wZG93bk1heEhlaWdodFwiXG4gICAgICAgICAgICBbdHlwZWFoZWFkRGVib3VuY2VdPVwic2VsZWN0RmllbGQudHlwZWFoZWFkRGVib3VuY2UgfHwgU2VsZWN0RGVmYXVsdHMudHlwZWFoZWFkRGVib3VuY2VcIlxuICAgICAgICAgICAgW3Nob3VsZEF1dG9TZWFyY2hdPVwic2VsZWN0RmllbGQuc2hvdWxkQXV0b1NlYXJjaCB8fCBTZWxlY3REZWZhdWx0cy5zaG91bGRBdXRvU2VhcmNoXCIgW3BhcmVudFZhbHVlXT1cInNlbGVjdEZpZWxkLnBhcmVudFZhbHVlXCJcbiAgICAgICAgICAgIFtzaG91bGRDbG9zZU9uT3V0c2lkZUNsaWNrXT1cInNlbGVjdEZpZWxkLnNob3VsZENsb3NlT25PdXRzaWRlQ2xpY2sgfHwgU2VsZWN0RGVmYXVsdHMuc2hvdWxkQ2xvc2VPbk91dHNpZGVDbGlja1wiXG4gICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiZm9ybUNvbnRyb2wudmFsdWVcIiAoc2VsZWN0ZWRJZHMpPVwic2V0Q29udHJvbFZhbHVlKCRldmVudClcIiAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCI+PC91cGQtc2VsZWN0LW11bHRpcGxlPlxuICAgIH1cbiAgICBAY2FzZSAoRHluYW1pY0ZpZWxkVHlwZS5MYWJlbCkge1xuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgZ2V0VGV4dChmaWVsZCgpLmxhYmVsKSB9fTwvbGFiZWw+XG4gICAgfVxuICAgIEBjYXNlIChEeW5hbWljRmllbGRUeXBlLlRleHRBcmVhKSB7XG4gICAgICAgIDx1cGQtdGV4dGFyZWEgW25hbWVdPVwiZmllbGQoKS5uYW1lXCIgW2xhYmVsXT1cImZpZWxkKCkubGFiZWxcIiBbcGxhY2Vob2xkZXJdPVwiZmllbGQoKS5wbGFjZWhvbGRlclwiIFtoaW50XT1cImZpZWxkKCkuaGludFwiXG4gICAgICAgICAgICBbaGludEFzVG9vbHRpcF09XCJmaWVsZCgpLmhpbnRBc1Rvb2x0aXAgfHwgZmFsc2VcIiBbdmFsaWRhdGlvblN0YXR1c109XCJ2YWxpZGF0aW9uU3RhdHVzXCJcbiAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXT1cInZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNcIiBbaXNEaXNhYmxlZF09XCJmaWVsZCgpLmlzRGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImZvcm1Db250cm9sLnZhbHVlXCIgW2N1c3RvbUNsYXNzZXNdPVwidGV4dGFyZWFGaWVsZC5jdXN0b21DbGFzc2VzXCIgW3dyYXBwZXJDbGFzc2VzXT1cInRleHRhcmVhRmllbGQud3JhcHBlckNsYXNzZXNcIlxuICAgICAgICAgICAgW21heExlbmd0aF09XCJ0ZXh0YXJlYUZpZWxkLm1heExlbmd0aFwiIFtyb3dzXT1cInRleHRhcmVhRmllbGQucm93c1wiXG4gICAgICAgICAgICBbZGlzcGxheUNoYXJhY3RlcnNDb3VudF09XCJ0ZXh0YXJlYUZpZWxkLmRpc3BsYXlDaGFyYWN0ZXJzQ291bnQgfHwgZmFsc2VcIiAodmFsdWVDaGFuZ2UpPVwic2V0Q29udHJvbFZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIm9uQmx1cigpXCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cIm9uSW5wdXRFbnRlcigpXCI+XG4gICAgICAgIDwvdXBkLXRleHRhcmVhPlxuICAgIH1cbiAgICBAY2FzZSAoRHluYW1pY0ZpZWxkVHlwZS5GaWxlVXBsb2FkKSB7XG4gICAgICAgIDx1cGQtZmlsZS11cGxvYWQgW25hbWVdPVwiZmllbGQoKS5uYW1lXCIgW2xhYmVsXT1cImZpZWxkKCkubGFiZWxcIiBbaGludF09XCJmaWVsZCgpLmhpbnRcIiBbaXNEaXNhYmxlZF09XCJmaWVsZCgpLmlzRGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW2hpbnRBc1Rvb2x0aXBdPVwiZmllbGQoKS5oaW50QXNUb29sdGlwIHx8IGZhbHNlXCIgW3ZhbGlkYXRpb25TdGF0dXNdPVwidmFsaWRhdGlvblN0YXR1c1wiIFtmaWxlTmFtZV09XCJmaWxlTmFtZUNvbnRyb2w/LnZhbHVlXCJcbiAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXT1cInZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNcIiBbYWxsb3dGaWxlc0Ryb3BdPVwiZmlsZVVwbG9hZEZpZWxkLmFsbG93RmlsZXNEcm9wIHx8IGZhbHNlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlVXBsb2FkRmllbGQudGl0bGVcIiBbbGFiZWxDb2xTaXplXT1cImZpZWxkKCkubGFiZWxDb2xTaXplXCIgW21pbkZpbGVTaXplXT1cImZpbGVVcGxvYWRGaWVsZC5taW5GaWxlU2l6ZVwiXG4gICAgICAgICAgICBbaXNNdWx0aXBsZV09XCJmaWxlVXBsb2FkRmllbGQuaXNNdWx0aXBsZSB8fCBmYWxzZVwiIFthbGxvd2VkRXh0ZW5zaW9uc109XCJmaWxlVXBsb2FkRmllbGQuYWxsb3dlZEV4dGVuc2lvbnMgfHwgJyonXCJcbiAgICAgICAgICAgIFttYXhGaWxlU2l6ZV09XCJmaWxlVXBsb2FkRmllbGQubWF4RmlsZVNpemVcIiBbbGF5b3V0XT1cImxheW91dCgpXCIgKGZpbGVDaGFuZ2VkKT1cImhhbmRsZUZpbGVTZWxlY3RlZCgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiPjwvdXBkLWZpbGUtdXBsb2FkPlxuICAgIH1cbiAgICBAY2FzZSAoRHluYW1pY0ZpZWxkVHlwZS5NYXNrZWRJbnB1dCkge1xuICAgICAgICA8dXBkLWlucHV0IFtuYW1lXT1cImZpZWxkKCkubmFtZVwiIFtsYWJlbF09XCJmaWVsZCgpLmxhYmVsXCIgW3BsYWNlaG9sZGVyXT1cImZpZWxkKCkucGxhY2Vob2xkZXJcIiBbaGludF09XCJmaWVsZCgpLmhpbnRcIlxuICAgICAgICAgICAgW2hpbnRBc1Rvb2x0aXBdPVwiZmllbGQoKS5oaW50QXNUb29sdGlwIHx8IGZhbHNlXCIgW3ZhbGlkYXRpb25TdGF0dXNdPVwidmFsaWRhdGlvblN0YXR1c1wiIFttYXNrXT1cIm1hc2tlZEZpZWxkLm1hc2tcIlxuICAgICAgICAgICAgW21hc2tDb25maWddPVwibWFza2VkRmllbGQubWFza0NvbmZpZ1wiIFt2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXT1cInZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNcIiBbbGF5b3V0XT1cImxheW91dCgpXCJcbiAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImZpZWxkKCkuaXNEaXNhYmxlZCB8fCBmYWxzZVwiIFt0eXBlXT1cImlucHV0RmllbGQuaW5wdXRUeXBlIHx8ICd0ZXh0J1wiIFtsYWJlbENvbFNpemVdPVwiZmllbGQoKS5sYWJlbENvbFNpemVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImZvcm1Db250cm9sLnZhbHVlXCIgKHZhbHVlQ2hhbmdlKT1cInNldENvbnRyb2xWYWx1ZSgkZXZlbnQpXCIgKGJsdXJyZWQpPVwib25CbHVyKClcIiAoa2V5VXBFbnRlcik9XCJvbklucHV0RW50ZXIoKVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgQGlmICghIWlucHV0RmllbGQucHJlZml4KSB7XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHVwZElucHV0UHJlcGVuZD5cbiAgICAgICAgICAgICAgICAgICAge3sgdGV4dFNlcnZpY2UuZ2V0VGV4dChpbnB1dEZpZWxkLnByZWZpeCkgfX1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCEhaW5wdXRGaWVsZC5zdWZmaXgpIHtcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdXBkSW5wdXRBcHBlbmQ+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRleHRTZXJ2aWNlLmdldFRleHQoaW5wdXRGaWVsZC5zdWZmaXgpIH19XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91cGQtaW5wdXQ+XG4gICAgfVxuICAgIEBjYXNlIChEeW5hbWljRmllbGRUeXBlLkJ1dHRvbikge1xuICAgICAgICA8dXBkLWJ1dHRvbiBbdGV4dF09XCJmaWVsZCgpLmxhYmVsXCIgW2lzRGlzYWJsZWRdPVwiZmllbGQoKS5pc0Rpc2FibGVkIHx8IGZhbHNlXCIgW21vZGVsXT1cImJ1dHRvbkZpZWxkLm1vZGVsXCIgLz5cbiAgICB9XG4gICAgQGNhc2UgKER5bmFtaWNGaWVsZFR5cGUuQnV0dG9uR3JvdXApIHtcbiAgICAgICAgQGlmICghIWZpZWxkKCkubGFiZWwpIHtcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyBnZXRUZXh0KGZpZWxkKCkubGFiZWwpIH19PC9sYWJlbD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgIEBmb3IgKGJ0biBvZiBidXR0b25Hcm91cEZpZWxkLmJ1dHRvbnM7IHRyYWNrIGJ0bikge1xuICAgICAgICAgICAgICAgIDx1cGQtYnV0dG9uIFttb2RlbF09XCJidG5cIiBbaXNEaXNhYmxlZF09XCJmaWVsZCgpLmlzRGlzYWJsZWQgfHwgZmFsc2VcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,180 @@
1
+ import { Component, effect, EventEmitter, inject, input, model, Output } from '@angular/core';
2
+ import { FormControl, FormGroup, Validators } from '@angular/forms';
3
+ import { TextService } from '@updevs/sdk';
4
+ import { BaseComponent } from '@updevs/sdk/layout';
5
+ import { startWith } from 'rxjs';
6
+ import { DynamicFieldType } from './models/enums/dynamic-field.type';
7
+ import { AttachmentTypeEnum } from './models/enums/attachment-type.enum';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/forms";
10
+ import * as i2 from "@updevs/components/button";
11
+ import * as i3 from "@jsverse/transloco";
12
+ import * as i4 from "./components/dynamic-field/dynamic-field.component";
13
+ export class FormComponent extends BaseComponent {
14
+ get titleText() {
15
+ return this.textService.getText(this.title());
16
+ }
17
+ constructor() {
18
+ super();
19
+ this.initialized = new EventEmitter();
20
+ this.dataLoaded = new EventEmitter(); // TODO: implementar
21
+ this.submitted = new EventEmitter();
22
+ /**
23
+ * Rows to generate the form.
24
+ */
25
+ this.rows = input.required();
26
+ /**
27
+ * Form's layout.
28
+ */
29
+ this.layout = input('vertical');
30
+ /**
31
+ * Title of the form.
32
+ * Optional.
33
+ */
34
+ this.title = input(undefined);
35
+ /**
36
+ * Whether the actions section will be displayed.
37
+ */
38
+ this.hasActionsSection = input(true);
39
+ /**
40
+ * Whether the form is contained in a card.
41
+ * If true, it'll display a card as a form wrapper.
42
+ */
43
+ this.isCard = input(false);
44
+ /**
45
+ * Whether the form is in read only mode, which means no fields can be edited.
46
+ */
47
+ this.isDisabled = input(false, { transform: (val) => typeof val === 'string' ? val === '' : val });
48
+ /**
49
+ * Whether the form is loading.
50
+ */
51
+ this.isLoading = input(false); // TODO: implementar
52
+ /**
53
+ * Whether the form is saving.
54
+ */
55
+ this.isSaving = input(false); // TODO: implementar
56
+ /**
57
+ * Current form data.
58
+ */
59
+ this.formData = model({});
60
+ this.formGroup = model(new FormGroup({}));
61
+ this.textService = inject(TextService);
62
+ effect(() => {
63
+ this.rows();
64
+ this.setupFormGroup();
65
+ });
66
+ }
67
+ ngOnInit() {
68
+ this.setupFormGroup();
69
+ this.initialized.emit();
70
+ const valueChangesSub = this.formGroup().valueChanges.subscribe(() => this.formData.set(this.formGroup().getRawValue()));
71
+ this.addSubscriptions(valueChangesSub);
72
+ }
73
+ submit() {
74
+ this.formGroup().markAllAsTouched();
75
+ this.formGroup().updateValueAndValidity();
76
+ Object.values(this.formGroup().controls).forEach(control => control.updateValueAndValidity());
77
+ if (this.formGroup().valid) {
78
+ this.submitted.emit(this.formGroup().value);
79
+ }
80
+ }
81
+ setupFormGroup() {
82
+ const allFields = this.rows().map(r => r.fields).reduce((acc, fields) => acc.concat(fields), []);
83
+ allFields.forEach(field => {
84
+ const validators = field.validators || [];
85
+ if (field.isRequired && !validators.includes(Validators.required)) {
86
+ validators.push(Validators.required);
87
+ }
88
+ // TODO: handle extra cases, when ready. DateRange, DateTimeRange, TimeRange, etc.
89
+ switch (field.type) {
90
+ case DynamicFieldType.FileUpload:
91
+ this.formGroup().addControl(field.name, new FormControl({
92
+ value: field.initValue,
93
+ disabled: field.isDisabled || this.isDisabled()
94
+ }, { validators: validators }));
95
+ const fileNameFormProp = field.fileNameFormProperty;
96
+ if (!!fileNameFormProp) {
97
+ this.formGroup().addControl(fileNameFormProp, new FormControl({
98
+ value: field.initValue,
99
+ disabled: field.isDisabled || this.isDisabled()
100
+ }, { validators: validators }));
101
+ }
102
+ break;
103
+ // Buttons don't generate values, so they don't need to have a control.
104
+ case DynamicFieldType.Button:
105
+ case DynamicFieldType.ButtonGroup:
106
+ break;
107
+ default:
108
+ this.formGroup().addControl(field.name, new FormControl({
109
+ value: field.initValue,
110
+ disabled: field.isDisabled || this.isDisabled()
111
+ }, { validators: validators, updateOn: field.updateOn || 'blur' }));
112
+ }
113
+ });
114
+ this.bindAttachments(allFields);
115
+ }
116
+ /**
117
+ * Glue the declarative AttachmentRule array to actual FormControls.
118
+ **/
119
+ bindAttachments(fields) {
120
+ fields.forEach(childField => {
121
+ if (!childField.attachments?.length) {
122
+ return;
123
+ }
124
+ const childCtrl = this.formGroup().get(childField.name);
125
+ childField.attachments.forEach((rule) => {
126
+ const parentCtrl = this.formGroup().get(rule.name);
127
+ if (!parentCtrl) {
128
+ console.warn(`[FormComponent] attachment parent '${rule.name}' not found`);
129
+ return;
130
+ }
131
+ const sub = parentCtrl.valueChanges
132
+ .pipe(startWith(parentCtrl.value))
133
+ .subscribe(parentVal => {
134
+ const childVal = childCtrl.value;
135
+ let shouldDisable = false;
136
+ if (rule.type === AttachmentTypeEnum.ParentLoad || rule.disableIfEmpty) {
137
+ shouldDisable = parentVal === null || parentVal === undefined || parentVal === '';
138
+ }
139
+ if (!!rule.disableIf) {
140
+ shouldDisable = rule.disableIf(childVal, parentVal);
141
+ }
142
+ if (shouldDisable) {
143
+ if (rule.clearValueIfDisabled && childCtrl.enabled) {
144
+ childCtrl.setValue(null, { emitEvent: false });
145
+ }
146
+ childField.parentValue = undefined;
147
+ childCtrl.disable({ emitEvent: false });
148
+ }
149
+ else {
150
+ childField.parentValue = parentVal;
151
+ if (childCtrl.disabled) {
152
+ childCtrl.enable({ emitEvent: false });
153
+ }
154
+ if (rule.clearValueIfEmpty && !parentVal) {
155
+ childCtrl.setValue(null, { emitEvent: false });
156
+ }
157
+ }
158
+ if (rule.visibleIf) {
159
+ const visible = rule.visibleIf(childVal, parentVal);
160
+ childField.isHidden = !visible;
161
+ }
162
+ });
163
+ this.addSubscriptions(sub);
164
+ });
165
+ });
166
+ }
167
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
168
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FormComponent, selector: "upd-form", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, hasActionsSection: { classPropertyName: "hasActionsSection", publicName: "hasActionsSection", isSignal: true, isRequired: false, transformFunction: null }, isCard: { classPropertyName: "isCard", publicName: "isCard", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isSaving: { classPropertyName: "isSaving", publicName: "isSaving", isSignal: true, isRequired: false, transformFunction: null }, formData: { classPropertyName: "formData", publicName: "formData", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { initialized: "initialized", dataLoaded: "dataLoaded", submitted: "submitted", formData: "formDataChange", formGroup: "formGroupChange" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title col-12\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n @if (!field.isHidden) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i4.DynamicFieldComponent, selector: "upd-dynamic-field", inputs: ["formGroup", "field", "layout"], outputs: ["submitForm"] }] }); }
169
+ }
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FormComponent, decorators: [{
171
+ type: Component,
172
+ args: [{ selector: 'upd-form', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title col-12\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n @if (!field.isHidden) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>" }]
173
+ }], ctorParameters: () => [], propDecorators: { initialized: [{
174
+ type: Output
175
+ }], dataLoaded: [{
176
+ type: Output
177
+ }], submitted: [{
178
+ type: Output
179
+ }] } });
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7OztBQVN6RSxNQUFNLE9BQU8sYUFBaUIsU0FBUSxhQUFhO0lBNEMvQyxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFJRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBbERPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQyxDQUFDLG9CQUFvQjtRQUN4RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUVyRDs7V0FFRztRQUNILFNBQUksR0FBZ0Ms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LEVBQUUsQ0FBQyxDQUFDO3dCQUNuRCxDQUFDO29CQUNMLENBQUM7b0JBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO3dCQUNwRCxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBTyxDQUFDO29CQUNuQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0EvTFEsYUFBYTtrR0FBYixhQUFhLHUvQ0NwQjFCLHUxQ0FnQ2U7OzJGRFpGLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0ksVUFBVTt3REFLRCxXQUFXO3NCQUE3QixNQUFNO2dCQUNZLFVBQVU7c0JBQTVCLE1BQU07Z0JBQ1ksU0FBUztzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBtb2RlbCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbFZlcnRpY2FsVHlwZSB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUZXh0TW9kZWwsIFRleHRTZXJ2aWNlIH0gZnJvbSAnQHVwZGV2cy9zZGsnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ0B1cGRldnMvc2RrL2xheW91dCc7XG5pbXBvcnQgeyBPcHRpb25hbFR5cGUgfSBmcm9tICdAdXBkZXZzL3Nkay90eXBlcyc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkVHlwZSB9IGZyb20gJy4vbW9kZWxzL2VudW1zL2R5bmFtaWMtZmllbGQudHlwZSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkRmllbGRNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2ZpbGUtdXBsb2FkLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZvcm1Sb3dNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2Zvcm0tcm93Lm1vZGVsJztcbmltcG9ydCB7IEF0dGFjaG1lbnRUeXBlRW51bSB9IGZyb20gJy4vbW9kZWxzL2VudW1zL2F0dGFjaG1lbnQtdHlwZS5lbnVtJztcbmltcG9ydCB7IEF0dGFjaG1lbnRSdWxlIH0gZnJvbSAnLi9tb2RlbHMvYXR0YWNobWVudC1ydWxlLm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNGaWVsZE1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvZHluYW1pYy1maWVsZC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndXBkLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vZm9ybS5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUNvbXBvbmVudDxUPiBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBpbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgZGF0YUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTsgLy8gVE9ETzogaW1wbGVtZW50YXJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc3VibWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gICAgLyoqXG4gICAgICogUm93cyB0byBnZW5lcmF0ZSB0aGUgZm9ybS5cbiAgICAgKi9cbiAgICByb3dzOiBJbnB1dFNpZ25hbDxGb3JtUm93TW9kZWxbXT4gPSBpbnB1dC5yZXF1aXJlZCgpO1xuICAgIC8qKlxuICAgICAqIEZvcm0ncyBsYXlvdXQuXG4gICAgICovXG4gICAgbGF5b3V0OiBJbnB1dFNpZ25hbDxIb3Jpem9udGFsVmVydGljYWxUeXBlPiA9IGlucHV0PEhvcml6b250YWxWZXJ0aWNhbFR5cGU+KCd2ZXJ0aWNhbCcpO1xuICAgIC8qKlxuICAgICAqIFRpdGxlIG9mIHRoZSBmb3JtLlxuICAgICAqIE9wdGlvbmFsLlxuICAgICAqL1xuICAgIHRpdGxlOiBJbnB1dFNpZ25hbDxPcHRpb25hbFR5cGU8VGV4dE1vZGVsPj4gPSBpbnB1dDxPcHRpb25hbFR5cGU8VGV4dE1vZGVsPj4odW5kZWZpbmVkKTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBhY3Rpb25zIHNlY3Rpb24gd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgaGFzQWN0aW9uc1NlY3Rpb24gPSBpbnB1dCh0cnVlKTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBmb3JtIGlzIGNvbnRhaW5lZCBpbiBhIGNhcmQuXG4gICAgICogSWYgdHJ1ZSwgaXQnbGwgZGlzcGxheSBhIGNhcmQgYXMgYSBmb3JtIHdyYXBwZXIuXG4gICAgICovXG4gICAgaXNDYXJkID0gaW5wdXQoZmFsc2UpO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGZvcm0gaXMgaW4gcmVhZCBvbmx5IG1vZGUsIHdoaWNoIG1lYW5zIG5vIGZpZWxkcyBjYW4gYmUgZWRpdGVkLlxuICAgICAqL1xuICAgIGlzRGlzYWJsZWQgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06ICh2YWw6IGJvb2xlYW4gfCBzdHJpbmcpID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gdmFsID09PSAnJyA6IHZhbCB9KTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBmb3JtIGlzIGxvYWRpbmcuXG4gICAgICovXG4gICAgaXNMb2FkaW5nID0gaW5wdXQoZmFsc2UpOyAvLyBUT0RPOiBpbXBsZW1lbnRhclxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGZvcm0gaXMgc2F2aW5nLlxuICAgICAqL1xuICAgIGlzU2F2aW5nID0gaW5wdXQoZmFsc2UpOyAvLyBUT0RPOiBpbXBsZW1lbnRhclxuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgZm9ybSBkYXRhLlxuICAgICAqL1xuICAgIGZvcm1EYXRhID0gbW9kZWwoe30gYXMgVCk7XG4gICAgZm9ybUdyb3VwID0gbW9kZWwobmV3IEZvcm1Hcm91cCh7fSkpO1xuICAgIGdldCB0aXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dFNlcnZpY2UuZ2V0VGV4dCh0aGlzLnRpdGxlKCkpO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IHRleHRTZXJ2aWNlID0gaW5qZWN0KFRleHRTZXJ2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJvd3MoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0dXBGb3JtR3JvdXAoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0dXBGb3JtR3JvdXAoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZC5lbWl0KCk7XG5cbiAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2VzU3ViID0gdGhpcy5mb3JtR3JvdXAoKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuZm9ybURhdGEuc2V0KHRoaXMuZm9ybUdyb3VwKCkuZ2V0UmF3VmFsdWUoKSBhcyBUKSk7XG5cbiAgICAgICAgdGhpcy5hZGRTdWJzY3JpcHRpb25zKHZhbHVlQ2hhbmdlc1N1Yik7XG4gICAgfVxuXG4gICAgc3VibWl0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cCgpLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAoKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtR3JvdXAoKS5jb250cm9scykuZm9yRWFjaChjb250cm9sID0+IChjb250cm9sIGFzIEZvcm1Db250cm9sKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCkpO1xuXG4gICAgICAgIGlmICh0aGlzLmZvcm1Hcm91cCgpLnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdHRlZC5lbWl0KHRoaXMuZm9ybUdyb3VwKCkudmFsdWUgYXMgVCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRm9ybUdyb3VwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxGaWVsZHMgPSB0aGlzLnJvd3MoKS5tYXAociA9PiByLmZpZWxkcykucmVkdWNlKChhY2MsIGZpZWxkcykgPT4gYWNjLmNvbmNhdChmaWVsZHMpLCBbXSk7XG5cbiAgICAgICAgYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IGZpZWxkLnZhbGlkYXRvcnMgfHwgW107XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5pc1JlcXVpcmVkICYmICF2YWxpZGF0b3JzLmluY2x1ZGVzKFZhbGlkYXRvcnMucmVxdWlyZWQpKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUT0RPOiBoYW5kbGUgZXh0cmEgY2FzZXMsIHdoZW4gcmVhZHkuIERhdGVSYW5nZSwgRGF0ZVRpbWVSYW5nZSwgVGltZVJhbmdlLCBldGMuXG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIER5bmFtaWNGaWVsZFR5cGUuRmlsZVVwbG9hZDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAoKS5hZGRDb250cm9sKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtQ29udHJvbCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkLmluaXRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmllbGQuaXNEaXNhYmxlZCB8fCB0aGlzLmlzRGlzYWJsZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZU5hbWVGb3JtUHJvcCA9IChmaWVsZCBhcyBGaWxlVXBsb2FkRmllbGRNb2RlbCkuZmlsZU5hbWVGb3JtUHJvcGVydHk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEhZmlsZU5hbWVGb3JtUHJvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAoKS5hZGRDb250cm9sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lRm9ybVByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1Db250cm9sKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkLmluaXRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZpZWxkLmlzRGlzYWJsZWQgfHwgdGhpcy5pc0Rpc2FibGVkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7IHZhbGlkYXRvcnM6IHZhbGlkYXRvcnMgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAvLyBCdXR0b25zIGRvbid0IGdlbmVyYXRlIHZhbHVlcywgc28gdGhleSBkb24ndCBuZWVkIHRvIGhhdmUgYSBjb250cm9sLlxuICAgICAgICAgICAgICAgIGNhc2UgRHluYW1pY0ZpZWxkVHlwZS5CdXR0b246XG4gICAgICAgICAgICAgICAgY2FzZSBEeW5hbWljRmllbGRUeXBlLkJ1dHRvbkdyb3VwOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cCgpLmFkZENvbnRyb2woXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1Db250cm9sKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmllbGQuaW5pdFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmaWVsZC5pc0Rpc2FibGVkIHx8IHRoaXMuaXNEaXNhYmxlZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7IHZhbGlkYXRvcnM6IHZhbGlkYXRvcnMsIHVwZGF0ZU9uOiBmaWVsZC51cGRhdGVPbiB8fCAnYmx1cicgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5iaW5kQXR0YWNobWVudHMoYWxsRmllbGRzKTtcbiAgICB9XG5cbiAgICAvKiogXG4gICAgICogR2x1ZSB0aGUgZGVjbGFyYXRpdmUgQXR0YWNobWVudFJ1bGUgYXJyYXkgdG8gYWN0dWFsIEZvcm1Db250cm9scy5cbiAgICAgKiovXG4gICAgcHJpdmF0ZSBiaW5kQXR0YWNobWVudHMoZmllbGRzOiBEeW5hbWljRmllbGRNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKGNoaWxkRmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKCFjaGlsZEZpZWxkLmF0dGFjaG1lbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkQ3RybCA9IHRoaXMuZm9ybUdyb3VwKCkuZ2V0KGNoaWxkRmllbGQubmFtZSkgYXMgRm9ybUNvbnRyb2w7XG5cbiAgICAgICAgICAgIGNoaWxkRmllbGQuYXR0YWNobWVudHMuZm9yRWFjaCgocnVsZTogQXR0YWNobWVudFJ1bGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRDdHJsID0gdGhpcy5mb3JtR3JvdXAoKS5nZXQocnVsZS5uYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmICghcGFyZW50Q3RybCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFtGb3JtQ29tcG9uZW50XSBhdHRhY2htZW50IHBhcmVudCAnJHtydWxlLm5hbWV9JyBub3QgZm91bmRgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN1YiA9IHBhcmVudEN0cmwudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aChwYXJlbnRDdHJsLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShwYXJlbnRWYWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRWYWwgPSBjaGlsZEN0cmwudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2hvdWxkRGlzYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS50eXBlID09PSBBdHRhY2htZW50VHlwZUVudW0uUGFyZW50TG9hZCB8fCBydWxlLmRpc2FibGVJZkVtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRGlzYWJsZSA9IHBhcmVudFZhbCA9PT0gbnVsbCB8fCBwYXJlbnRWYWwgPT09IHVuZGVmaW5lZCB8fCBwYXJlbnRWYWwgPT09ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFydWxlLmRpc2FibGVJZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZERpc2FibGUgPSBydWxlLmRpc2FibGVJZihjaGlsZFZhbCwgcGFyZW50VmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZERpc2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5jbGVhclZhbHVlSWZEaXNhYmxlZCAmJiBjaGlsZEN0cmwuZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEN0cmwuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRmllbGQucGFyZW50VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRDdHJsLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEZpZWxkLnBhcmVudFZhbHVlID0gcGFyZW50VmFsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkQ3RybC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEN0cmwuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5jbGVhclZhbHVlSWZFbXB0eSAmJiAhcGFyZW50VmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkQ3RybC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS52aXNpYmxlSWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aXNpYmxlID0gcnVsZS52aXNpYmxlSWYoY2hpbGRWYWwsIHBhcmVudFZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRGaWVsZC5pc0hpZGRlbiA9ICF2aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuYWRkU3Vic2NyaXB0aW9ucyhzdWIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyBwcmVmaXg6ICdVcERldnMuRm9ybSdcIj5cbiAgICA8ZGl2IFtjbGFzcy5jYXJkXT1cImlzQ2FyZCgpXCI+XG4gICAgICAgIEBpZiAoISF0aXRsZVRleHQpIHtcbiAgICAgICAgICAgIDxkaXYgW2NsYXNzLmNhcmQtaGVhZGVyXT1cImlzQ2FyZCgpXCI+XG4gICAgICAgICAgICAgICAgPGgzIFtjbGFzcy5jYXJkLXRpdGxlXT1cImlzQ2FyZCgpXCI+e3sgdGl0bGVUZXh0IH19PC9oMz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgW2NsYXNzLmNhcmQtYm9keV09XCJpc0NhcmQoKVwiPlxuICAgICAgICAgICAgQGZvciAocm93IG9mIHJvd3MoKTsgdHJhY2sgcm93OyBsZXQgaXNGaXJzdCA9ICRmaXJzdCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBbY2xhc3MubXQtNF09XCIhaXNGaXJzdFwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCEhcm93LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBjb2wtMTJcIj57eyB0ZXh0U2VydmljZS5nZXRUZXh0KHJvdy50aXRsZSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIHJvdy5maWVsZHM7IHRyYWNrIGZpZWxkLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWZpZWxkLmlzSGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwZC1keW5hbWljLWZpZWxkIFtsYXlvdXRdPVwibGF5b3V0KClcIiBbZmllbGRdPVwiZmllbGRcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cCgpXCIgKHN1Ym1pdEZvcm0pPVwic3VibWl0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VwZC1keW5hbWljLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoaGFzQWN0aW9uc1NlY3Rpb24oKSkge1xuICAgICAgICAgICAgPGRpdiBbY2xhc3MuY2FyZC1mb290ZXJdPVwiaXNDYXJkKClcIiBbY2xhc3MubXQtNF09XCIhaXNDYXJkKClcIj5cbiAgICAgICAgICAgICAgICA8dXBkLWJ1dHRvbiBjb2xvclN0eWxlPVwicHJpbWFyeVwiIChjbGlja2VkKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ1N1Ym1pdCcpIH19XG4gICAgICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1ydWxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm0vc3JjL21vZGVscy9hdHRhY2htZW50LXJ1bGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dGFjaG1lbnRUeXBlRW51bSB9IGZyb20gJy4vZW51bXMvYXR0YWNobWVudC10eXBlLmVudW0nO1xuXG4vKipcbiAqIERlY2xhcmF0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR3byBkeW5hbWljIGZpZWxkcy5cbiAqIFAgPSBwYXJlbnQgdmFsdWUgdHlwZSwgQyA9IGNoaWxkIHZhbHVlIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudFJ1bGU8UCA9IGFueSwgQyA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlICpwYXJlbnQqIGNvbnRyb2wgaW5zaWRlIHRoZSBzYW1lIEZvcm1Hcm91cC5cbiAgICAgKiovXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogS2luZCBvZiBpbnRlcmFjdGlvbiAoZGVmYXVsdCA9IERpc2FibGVkKS5cbiAgICAgKiovXG4gICAgdHlwZT86IEF0dGFjaG1lbnRUeXBlRW51bTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSAqY2hpbGQqIG11c3QgYmUgZGlzYWJsZWQuXG4gICAgICoqL1xuICAgIGRpc2FibGVJZj86IChjaGlsZFZhbHVlOiBDLCBwYXJlbnRWYWx1ZTogUCkgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERpc2FibGUgd2hlbiB0aGUgcGFyZW50IGlzIGVtcHR5L251bGwvJycuXG4gICAgICoqL1xuICAgIGRpc2FibGVJZkVtcHR5PzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIENsZWFyIHRoZSBjaGlsZOKAmXMgdmFsdWUgdGhlIG1vbWVudCBpdCBiZWNvbWVzIGRpc2FibGVkLlxuICAgICAqKi9cbiAgICBjbGVhclZhbHVlSWZEaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciB0aGUgY2hpbGQgd2hlbiB0aGUgcGFyZW50IHR1cm5zIGVtcHR5LlxuICAgICAqKi9cbiAgICBjbGVhclZhbHVlSWZFbXB0eT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gZmFsc2UgdG8gSElERSB0aGUgY2hpbGQ7IHRydWUg4oaSIHNob3cuXG4gICAgICoqL1xuICAgIHZpc2libGVJZj86IChjaGlsZFZhbHVlOiBDLCBwYXJlbnRWYWx1ZTogUCkgPT4gYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWZpZWxkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm0vc3JjL21vZGVscy9idXR0b24tZmllbGQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1dHRvbk1vZGVsIH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcblxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkTW9kZWwgfSBmcm9tICcuL2R5bmFtaWMtZmllbGQubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbkZpZWxkTW9kZWwgZXh0ZW5kcyBEeW5hbWljRmllbGRNb2RlbCB7XG4gICAgbW9kZWw6IEJ1dHRvbk1vZGVsO1xufSJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWdyb3VwLWZpZWxkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm0vc3JjL21vZGVscy9idXR0b24tZ3JvdXAtZmllbGQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1dHRvbk1vZGVsIH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcblxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkTW9kZWwgfSBmcm9tICcuL2R5bmFtaWMtZmllbGQubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbkdyb3VwRmllbGRNb2RlbCBleHRlbmRzIER5bmFtaWNGaWVsZE1vZGVsIHtcbiAgICBidXR0b25zOiBCdXR0b25Nb2RlbFtdO1xufSJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvbW9kZWxzL2NoZWNrYm94LWZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSYWRpb0ZpZWxkTW9kZWwgfSBmcm9tICcuL3JhZGlvLWZpZWxkLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGVja2JveEZpZWxkTW9kZWwgZXh0ZW5kcyBSYWRpb0ZpZWxkTW9kZWwge1xuICAgIGlzU3dpdGNoPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAtZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvbW9kZWxzL2NoZWNrYm94LWdyb3VwLWZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5VHlwZSB9IGZyb20gJ0B1cGRldnMvc2RrL3R5cGVzJztcbmltcG9ydCB7IFRleHRNb2RlbCB9IGZyb20gJ0B1cGRldnMvc2RrJztcblxuaW1wb3J0IHsgQ2hlY2tib3hGaWVsZE1vZGVsIH0gZnJvbSAnLi9jaGVja2JveC1maWVsZC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tib3hHcm91cEZpZWxkTW9kZWwgZXh0ZW5kcyBDaGVja2JveEZpZWxkTW9kZWwge1xuICAgIG9wdGlvbnM6IERpY3Rpb25hcnlUeXBlPFRleHRNb2RlbD47XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3JtL3NyYy9tb2RlbHMvZHluYW1pYy1maWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUNvbnRyb2xTdGF0dXMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0TW9kZWwgfSBmcm9tICdAdXBkZXZzL3Nkayc7XG5pbXBvcnQgeyBSb3dDb2x1bW5TaXplIH0gZnJvbSAnQHVwZGV2cy9jb21wb25lbnRzJztcbmltcG9ydCB7IFJlcXVpcmVkUGVybWlzc2lvbnNNb2RlbCB9IGZyb20gJ0B1cGRldnMvc2RrL3NlY3VyaXR5JztcblxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkVHlwZSB9IGZyb20gJy4vZW51bXMvZHluYW1pYy1maWVsZC50eXBlJztcbmltcG9ydCB7IEF0dGFjaG1lbnRSdWxlIH0gZnJvbSAnLi9hdHRhY2htZW50LXJ1bGUubW9kZWwnO1xuaW1wb3J0IHsgRm9ybVVwZGF0ZU9uIH0gZnJvbSAnLi9mb3JtLXVwZGF0ZS1vbi50eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRmllbGRNb2RlbCB7XG4gICAgdHlwZTogRHluYW1pY0ZpZWxkVHlwZTtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSWYgdGhlIGZpZWxkIGlzIHZhbGlkIGl0IHdpbGwgYmUgbWFya2VkIGFzIHN1Y2gsIGluc3RlYWQgb2YganVzdCBtYWludGFpbmluZyB0aGUgZGVmYXVsdCBzdGF0ZS5cbiAgICAgKi9cbiAgICBzaG93VmFsaWRTdGF0dXM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEluaXRpYWwgdmFsdWUuXG4gICAgICovXG4gICAgaW5pdFZhbHVlPzogYW55O1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hlbiB0aGUgY29udHJvbCB2YWxpZGF0aW9uIGlzIHRyaWdnZXJlZC5cbiAgICAgKiAnY2hhbmdlJyAoZGVmYXVsdCksICdibHVyJywgb3IgJ3N1Ym1pdCcuXG4gICAgICovXG4gICAgdXBkYXRlT24/OiBGb3JtVXBkYXRlT247XG4gICAgcGxhY2Vob2xkZXI/OiBUZXh0TW9kZWw7XG4gICAgbGFiZWw/OiBUZXh0TW9kZWw7XG4gICAgaGludD86IFRleHRNb2RlbDtcbiAgICBoaW50QXNUb29sdGlwPzogYm9vbGVhbjtcbiAgICBjb2xTaXplPzogUm93Q29sdW1uU2l6ZTtcbiAgICBsYWJlbENvbFNpemU/OiBSb3dDb2x1bW5TaXplO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JGbltdO1xuICAgIHJlcXVpcmVkUGVybWlzc2lvbnM/OiBSZXF1aXJlZFBlcm1pc3Npb25zTW9kZWw7XG4gICAgLyoqXG4gICAgICogQ3Jvc3MtZmllbGQgZGVwZW5kZW5jaWVzIChvcHRpb25hbCkuXG4gICAgICoqL1xuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudFJ1bGVbXTtcbiAgICBpc0hpZGRlbj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVmFsdWUgY29taW5nIGZyb20gYSBwYXJlbnQgZmllbGQgd2hlbiB0aGUgcnVsZSBgQXR0YWNobWVudFR5cGVFbnVtLlBhcmVudExvYWRgIGlzIGFjdGl2ZS5cbiAgICAgKiBgdXBkLXNlbGVjdGAgY2FuIHVzZSBpdCB0byBmZXRjaCB0aGUgZGVwZW5kZW50IGxpc3QuXG4gICAgICovXG4gICAgcGFyZW50VmFsdWU/OiBhbnk7XG4gICAgLyoqXG4gICAgICogQSBzaWduYWwgdG8gY29udHJvbCB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmllbGQuXG4gICAgICovXG4gICAgaXNWaXNpYmxlPzogU2lnbmFsPGJvb2xlYW4+O1xuICAgIG9uVmFsdWVDaGFuZ2VkPzogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG4gICAgb25CbHVyPzogKCkgPT4gdm9pZDtcbiAgICBvbkZvY3VzPzogKCkgPT4gdm9pZDtcbiAgICBvblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuICAgIG9uSW5wdXQ/OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcbiAgICBvbkVudGVyPzogKCkgPT4gdm9pZDtcbiAgICBvblZhbGlkYXRpb25TdGF0dXNDaGFuZ2VkPzogKHN0YXR1czogRm9ybUNvbnRyb2xTdGF0dXMpID0+IHZvaWQ7XG59XG4iXX0=
@@ -0,0 +1,15 @@
1
+ /**
2
+ * How a parent field influences its child.
3
+ **/
4
+ export var AttachmentTypeEnum;
5
+ (function (AttachmentTypeEnum) {
6
+ /**
7
+ * Enable / disable behaviour (default).
8
+ **/
9
+ AttachmentTypeEnum["Disabled"] = "disabled";
10
+ /**
11
+ * Child waits for the parent to have a value and (re)loads afterwards.
12
+ **/
13
+ AttachmentTypeEnum["ParentLoad"] = "parentLoad";
14
+ })(AttachmentTypeEnum || (AttachmentTypeEnum = {}));
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC10eXBlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvbW9kZWxzL2VudW1zL2F0dGFjaG1lbnQtdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztJQUVJO0FBQ0osTUFBTSxDQUFOLElBQVksa0JBVVg7QUFWRCxXQUFZLGtCQUFrQjtJQUMxQjs7UUFFSTtJQUNKLDJDQUFxQixDQUFBO0lBRXJCOztRQUVJO0lBQ0osK0NBQXlCLENBQUE7QUFDN0IsQ0FBQyxFQVZXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFVN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogXG4gKiBIb3cgYSBwYXJlbnQgZmllbGQgaW5mbHVlbmNlcyBpdHMgY2hpbGQuXG4gKiovXG5leHBvcnQgZW51bSBBdHRhY2htZW50VHlwZUVudW0ge1xuICAgIC8qKiBcbiAgICAgKiBFbmFibGUgLyBkaXNhYmxlIGJlaGF2aW91ciAoZGVmYXVsdCkuXG4gICAgICoqL1xuICAgIERpc2FibGVkID0gJ2Rpc2FibGVkJyxcblxuICAgIC8qKiBcbiAgICAgKiBDaGlsZCB3YWl0cyBmb3IgdGhlIHBhcmVudCB0byBoYXZlIGEgdmFsdWUgYW5kIChyZSlsb2FkcyBhZnRlcndhcmRzLlxuICAgICAqKi9cbiAgICBQYXJlbnRMb2FkID0gJ3BhcmVudExvYWQnXG59Il19