@mediusinc/mng-commons 6.0.0-rc.5 → 6.0.0-rc.6

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 (386) hide show
  1. package/core/components/notification/notification-wrapper.component.d.ts +4 -4
  2. package/core/error/error.model.d.ts +4 -4
  3. package/core/helpers/notification.d.ts +2 -2
  4. package/core/provide.d.ts +3 -3
  5. package/core/styles/style-constants.d.ts +9 -8
  6. package/core/styles/style.model.d.ts +2 -1
  7. package/fesm2022/mediusinc-mng-commons-core.mjs +91 -104
  8. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  9. package/fesm2022/mediusinc-mng-commons-form-api.mjs +8 -9
  10. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  11. package/fesm2022/mediusinc-mng-commons-form.mjs +149 -49
  12. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  13. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-DTSBP9WQ.mjs +31 -0
  14. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-DTSBP9WQ.mjs.map +1 -0
  15. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-JZpyiDIL.mjs +2118 -0
  16. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-JZpyiDIL.mjs.map +1 -0
  17. package/fesm2022/mediusinc-mng-commons-table.mjs +1 -2154
  18. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  19. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +97 -49
  20. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  21. package/fesm2022/mediusinc-mng-commons-tableview.mjs +326 -290
  22. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  23. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  24. package/form/api/index.d.ts +1 -0
  25. package/form/api/models/empty-value.model.d.ts +7 -0
  26. package/form/components/autocomplete/autocomplete.component.d.ts +1 -2
  27. package/form/components/date-range/date-range.component.d.ts +4 -3
  28. package/form/components/dropdown/dropdown.component.d.ts +3 -2
  29. package/form/components/number-range/number-range.component.d.ts +3 -2
  30. package/form/directives/input-empty-value.directive.d.ts +40 -0
  31. package/form/directives/input-trim.directive.d.ts +3 -5
  32. package/form/index.d.ts +1 -0
  33. package/i18n/en.json +57 -8
  34. package/i18n/sl.json +1 -3
  35. package/package.json +16 -42
  36. package/provide.d.ts +2 -2
  37. package/table/components/column-toggle/column-toggle.component.d.ts +12 -0
  38. package/table/components/filter/filter-form/filter-form.component.d.ts +2 -2
  39. package/table/components/table/table.component.d.ts +0 -1
  40. package/table/helpers/filters.d.ts +3 -2
  41. package/table/helpers/notification.d.ts +2 -2
  42. package/table/services/table-metadata.service.d.ts +3 -3
  43. package/tableview/action/components/action/action.component.d.ts +1 -0
  44. package/tableview/action/components/editor/action-editor.component.d.ts +1 -1
  45. package/tableview/action/components/table/action-table.component.d.ts +2 -1
  46. package/tableview/action/helpers/notification.d.ts +3 -3
  47. package/tableview/action/models/execution/action-context.model.d.ts +2 -2
  48. package/tableview/action/services/action-executor.service.d.ts +1 -1
  49. package/tableview/api/action/models/execution/action-context.model.d.ts +2 -2
  50. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +5 -0
  51. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +14 -10
  52. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +10 -0
  53. package/tableview/api/editor/descriptors/field.descriptor.d.ts +36 -9
  54. package/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.d.ts +1 -1
  55. package/tableview/api/editor/models/field-action-context.model.d.ts +1 -1
  56. package/tableview/api/editor/models/field.model.d.ts +1 -2
  57. package/tableview/api/editor/models/form-editor.interface.d.ts +2 -2
  58. package/tableview/api/editor/models/formly-custom-field.model.d.ts +1 -1
  59. package/tableview/api/editor/models/formly-field.model.d.ts +2 -2
  60. package/tableview/editor/components/editor/form-editor.component.d.ts +2 -2
  61. package/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.d.ts +1 -1
  62. package/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.d.ts +2 -1
  63. package/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +4 -6
  64. package/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +0 -2
  65. package/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +2 -2
  66. package/tableview/editor/components/formly/fields/formly-field-type.abstract.component.d.ts +8 -15
  67. package/tableview/editor/components/formly/fields/formly-group-type.abstract.component.d.ts +7 -0
  68. package/tableview/editor/components/formly/fields/formly-type.abstract.component.d.ts +20 -0
  69. package/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +11 -4
  70. package/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +2 -1
  71. package/tableview/editor/helpers/formly-config.d.ts +1 -1
  72. package/tableview/editor/helpers/notification.d.ts +3 -3
  73. package/tableview/editor/models/formly-config.model.d.ts +10 -1
  74. package/tableview/editor/models/formly.model.d.ts +23 -0
  75. package/tableview/editor/services/form-editor.service.d.ts +2 -2
  76. package/tableview/tableview/router/tableview-route-builder.d.ts +10 -3
  77. package/tableview/tableview/services/tableview-feature-config.token.d.ts +1 -1
  78. package/version-info.json +3 -3
  79. package/esm2022/core/action/action-data.model.mjs +0 -2
  80. package/esm2022/core/action/action-parameters.model.mjs +0 -2
  81. package/esm2022/core/components/notification/notification-wrapper.component.mjs +0 -50
  82. package/esm2022/core/data-list/data-list-params-helpers.mjs +0 -465
  83. package/esm2022/core/data-list/data-list.model.mjs +0 -2
  84. package/esm2022/core/data-list/filter-match.model.mjs +0 -105
  85. package/esm2022/core/data-list/filter-metadata.model.mjs +0 -2
  86. package/esm2022/core/data-providers/base.data-provider.mjs +0 -16
  87. package/esm2022/core/data-providers/lookup.data-provider.mjs +0 -2
  88. package/esm2022/core/descriptors/action.descriptor.mjs +0 -2
  89. package/esm2022/core/descriptors/column.descriptor.mjs +0 -2
  90. package/esm2022/core/descriptors/editor.descriptor.mjs +0 -2
  91. package/esm2022/core/descriptors/enum.descriptor.mjs +0 -2
  92. package/esm2022/core/descriptors/filter.descriptor.mjs +0 -2
  93. package/esm2022/core/descriptors/lookup.descriptor.mjs +0 -2
  94. package/esm2022/core/descriptors/model.descriptor.mjs +0 -2
  95. package/esm2022/core/descriptors/table.descriptor.mjs +0 -2
  96. package/esm2022/core/descriptors/tableview.descriptor.mjs +0 -2
  97. package/esm2022/core/directives/component.directive.mjs +0 -75
  98. package/esm2022/core/directives/rerender.directive.mjs +0 -25
  99. package/esm2022/core/directives/template.directive.mjs +0 -29
  100. package/esm2022/core/enum/enum-helpers.mjs +0 -90
  101. package/esm2022/core/enum/enum.model.mjs +0 -2
  102. package/esm2022/core/error/error-handler.mjs +0 -20
  103. package/esm2022/core/error/error-helpers.mjs +0 -273
  104. package/esm2022/core/error/error.model.mjs +0 -33
  105. package/esm2022/core/helpers/coercion.mjs +0 -55
  106. package/esm2022/core/helpers/date.mjs +0 -119
  107. package/esm2022/core/helpers/notification.mjs +0 -21
  108. package/esm2022/core/helpers/number.mjs +0 -19
  109. package/esm2022/core/helpers/object.mjs +0 -152
  110. package/esm2022/core/helpers/route.mjs +0 -58
  111. package/esm2022/core/helpers/string.mjs +0 -57
  112. package/esm2022/core/helpers/templates.mjs +0 -4
  113. package/esm2022/core/helpers/type-helpers.mjs +0 -2
  114. package/esm2022/core/i18n/i18n-common.mjs +0 -24
  115. package/esm2022/core/i18n/i18n-error.mjs +0 -29
  116. package/esm2022/core/i18n/i18n-type.mjs +0 -46
  117. package/esm2022/core/index.mjs +0 -107
  118. package/esm2022/core/log/log-publisher-console.service.mjs +0 -40
  119. package/esm2022/core/log/log.model.mjs +0 -10
  120. package/esm2022/core/log/logger.service.mjs +0 -131
  121. package/esm2022/core/mediusinc-mng-commons-core.mjs +0 -5
  122. package/esm2022/core/models/class-attribute.model.mjs +0 -2
  123. package/esm2022/core/models/class-service.model.mjs +0 -2
  124. package/esm2022/core/models/getter.model.mjs +0 -2
  125. package/esm2022/core/models/i18n.model.mjs +0 -2
  126. package/esm2022/core/models/menu.model.mjs +0 -2
  127. package/esm2022/core/models/user.model.mjs +0 -2
  128. package/esm2022/core/models/version.model.mjs +0 -2
  129. package/esm2022/core/pipes/boolean.pipe.mjs +0 -34
  130. package/esm2022/core/pipes/class-map.pipe.mjs +0 -23
  131. package/esm2022/core/pipes/enum.pipe.mjs +0 -38
  132. package/esm2022/core/pipes/enumerate-async.pipe.mjs +0 -36
  133. package/esm2022/core/pipes/enumerate.pipe.mjs +0 -49
  134. package/esm2022/core/pipes/getter.pipe.mjs +0 -21
  135. package/esm2022/core/pipes/i18n-property.pipe.mjs +0 -19
  136. package/esm2022/core/pipes/json-path.pipe.mjs +0 -25
  137. package/esm2022/core/pipes/parametrize.pipe.mjs +0 -86
  138. package/esm2022/core/pipes/template.pipe.mjs +0 -25
  139. package/esm2022/core/provide.mjs +0 -79
  140. package/esm2022/core/reactivity/effect.mjs +0 -22
  141. package/esm2022/core/reflect/type-enum-decorator.mjs +0 -12
  142. package/esm2022/core/reflect/type-enum-metadata.mjs +0 -62
  143. package/esm2022/core/registry/registry.model.mjs +0 -2
  144. package/esm2022/core/registry/type-registry.mjs +0 -106
  145. package/esm2022/core/router/route-builder.mjs +0 -431
  146. package/esm2022/core/router/router.model.mjs +0 -2
  147. package/esm2022/core/router/routes-builder.mjs +0 -52
  148. package/esm2022/core/rxjs/map-data-list-result-operator.mjs +0 -22
  149. package/esm2022/core/security/permission-helpers.mjs +0 -14
  150. package/esm2022/core/security/permission.guard.mjs +0 -15
  151. package/esm2022/core/security/permission.service.mjs +0 -101
  152. package/esm2022/core/security/permissions.model.mjs +0 -93
  153. package/esm2022/core/services/commons-configuration.service.mjs +0 -189
  154. package/esm2022/core/services/commons-init.service.mjs +0 -111
  155. package/esm2022/core/services/commons-router.service.mjs +0 -181
  156. package/esm2022/core/services/commons-storage.service.mjs +0 -31
  157. package/esm2022/core/services/commons.service.mjs +0 -324
  158. package/esm2022/core/services/providers/commons-init.provider.mjs +0 -4
  159. package/esm2022/core/services/tokens/browser-storage.token.mjs +0 -3
  160. package/esm2022/core/services/tokens/commons-init.token.mjs +0 -3
  161. package/esm2022/core/services/tokens/log-publisher.token.mjs +0 -3
  162. package/esm2022/core/services/tokens/module-config.token.mjs +0 -3
  163. package/esm2022/core/styles/style-constants.mjs +0 -11
  164. package/esm2022/core/styles/style.model.mjs +0 -20
  165. package/esm2022/filter/descriptors/filter-generic.descriptor.mjs +0 -31
  166. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +0 -168
  167. package/esm2022/filter/descriptors/filter.descriptor.mjs +0 -421
  168. package/esm2022/filter/index.mjs +0 -8
  169. package/esm2022/filter/mediusinc-mng-commons-filter.mjs +0 -5
  170. package/esm2022/filter/models/filter-generic-property.model.mjs +0 -2
  171. package/esm2022/filter/models/filter.model.mjs +0 -20
  172. package/esm2022/form/api/data-providers/lookup-data-provider.factory.mjs +0 -15
  173. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +0 -15
  174. package/esm2022/form/api/descriptors/action-button.descriptor.mjs +0 -56
  175. package/esm2022/form/api/descriptors/button-style.builder.mjs +0 -153
  176. package/esm2022/form/api/index.mjs +0 -10
  177. package/esm2022/form/api/mediusinc-mng-commons-form-api.mjs +0 -5
  178. package/esm2022/form/api/models/button.model.mjs +0 -2
  179. package/esm2022/form/api/models/trim.model.mjs +0 -2
  180. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +0 -436
  181. package/esm2022/form/components/date-range/date-range.component.mjs +0 -147
  182. package/esm2022/form/components/dropdown/dropdown.component.mjs +0 -372
  183. package/esm2022/form/components/number-range/number-range.component.mjs +0 -123
  184. package/esm2022/form/directives/input-trim.directive.mjs +0 -50
  185. package/esm2022/form/index.mjs +0 -8
  186. package/esm2022/form/mediusinc-mng-commons-form.mjs +0 -5
  187. package/esm2022/index.mjs +0 -2
  188. package/esm2022/mediusinc-mng-commons.mjs +0 -5
  189. package/esm2022/model/class/data-providers/base-from-class-data-provider.factory.mjs +0 -5
  190. package/esm2022/model/class/descriptors/model-class.descriptor.mjs +0 -28
  191. package/esm2022/model/class/descriptors/type-class.descriptor.mjs +0 -6
  192. package/esm2022/model/class/helpers/model.mjs +0 -53
  193. package/esm2022/model/class/index.mjs +0 -8
  194. package/esm2022/model/class/mediusinc-mng-commons-model-class.mjs +0 -5
  195. package/esm2022/model/data-providers/base-from-type-data-provider.factory.mjs +0 -13
  196. package/esm2022/model/descriptors/enum.descriptor.mjs +0 -28
  197. package/esm2022/model/descriptors/model.descriptor.mjs +0 -53
  198. package/esm2022/model/descriptors/type.descriptor.mjs +0 -7
  199. package/esm2022/model/helpers/i18n.mjs +0 -47
  200. package/esm2022/model/index.mjs +0 -9
  201. package/esm2022/model/mediusinc-mng-commons-model.mjs +0 -5
  202. package/esm2022/provide.mjs +0 -6
  203. package/esm2022/table/api/class/class-table-attribute-converter.mjs +0 -80
  204. package/esm2022/table/api/class/class-table-attribute.model.mjs +0 -2
  205. package/esm2022/table/api/class/class-table-data-provider.factory.mjs +0 -5
  206. package/esm2022/table/api/class/class-table-descriptor-helpers.mjs +0 -99
  207. package/esm2022/table/api/class/class-table-descriptor.factory.mjs +0 -21
  208. package/esm2022/table/api/class/index.mjs +0 -6
  209. package/esm2022/table/api/class/mediusinc-mng-commons-table-api-class.mjs +0 -5
  210. package/esm2022/table/api/data-providers/table-data-provider.factory.mjs +0 -15
  211. package/esm2022/table/api/data-providers/table.data-provider.mjs +0 -33
  212. package/esm2022/table/api/descriptors/column.descriptor.mjs +0 -475
  213. package/esm2022/table/api/descriptors/sort.descriptor.mjs +0 -67
  214. package/esm2022/table/api/descriptors/table-descriptor.factory.mjs +0 -22
  215. package/esm2022/table/api/descriptors/table.descriptor.mjs +0 -1116
  216. package/esm2022/table/api/helpers/column-converter.mjs +0 -25
  217. package/esm2022/table/api/helpers/table-data-provider-descriptor-convert.mjs +0 -7
  218. package/esm2022/table/api/index.mjs +0 -19
  219. package/esm2022/table/api/mediusinc-mng-commons-table-api.mjs +0 -5
  220. package/esm2022/table/api/models/column-value.model.mjs +0 -2
  221. package/esm2022/table/api/models/column.model.mjs +0 -21
  222. package/esm2022/table/api/models/row-expandable-component.model.mjs +0 -2
  223. package/esm2022/table/api/models/table-columns.model.mjs +0 -2
  224. package/esm2022/table/api/models/table-event.model.mjs +0 -2
  225. package/esm2022/table/api/models/table.model.mjs +0 -21
  226. package/esm2022/table/components/column-filter/column-filter.component.mjs +0 -389
  227. package/esm2022/table/components/column-value/column-value.component.mjs +0 -78
  228. package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +0 -55
  229. package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +0 -226
  230. package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +0 -219
  231. package/esm2022/table/components/table/table.component.mjs +0 -319
  232. package/esm2022/table/helpers/filters.mjs +0 -312
  233. package/esm2022/table/helpers/notification.mjs +0 -21
  234. package/esm2022/table/helpers/table-layout-prefs.mjs +0 -10
  235. package/esm2022/table/helpers/table.mjs +0 -24
  236. package/esm2022/table/index.mjs +0 -24
  237. package/esm2022/table/mediusinc-mng-commons-table.mjs +0 -5
  238. package/esm2022/table/models/column-preferences.model.mjs +0 -2
  239. package/esm2022/table/models/filter.model.mjs +0 -2
  240. package/esm2022/table/pipes/filter-value.pipe.mjs +0 -77
  241. package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +0 -27
  242. package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +0 -25
  243. package/esm2022/table/provide.mjs +0 -19
  244. package/esm2022/table/services/table-data.service.mjs +0 -194
  245. package/esm2022/table/services/table-feature-config.token.mjs +0 -3
  246. package/esm2022/table/services/table-metadata.service.mjs +0 -136
  247. package/esm2022/table/services/table-preferences.service.mjs +0 -142
  248. package/esm2022/tableview/action/components/action/action.component.mjs +0 -277
  249. package/esm2022/tableview/action/components/editor/action-editor.component.mjs +0 -86
  250. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +0 -428
  251. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +0 -35
  252. package/esm2022/tableview/action/components/route/action-route.component.mjs +0 -146
  253. package/esm2022/tableview/action/components/table/action-table.component.mjs +0 -102
  254. package/esm2022/tableview/action/guards/unsaved-changes.guard.mjs +0 -4
  255. package/esm2022/tableview/action/helpers/action-execution.mjs +0 -25
  256. package/esm2022/tableview/action/helpers/i18n.mjs +0 -102
  257. package/esm2022/tableview/action/helpers/notification.mjs +0 -78
  258. package/esm2022/tableview/action/helpers/styles.mjs +0 -32
  259. package/esm2022/tableview/action/models/action-editor-dialog-data.model.mjs +0 -2
  260. package/esm2022/tableview/action/models/can-component-deactivate.model.mjs +0 -2
  261. package/esm2022/tableview/action/models/execution/action-context.model.mjs +0 -64
  262. package/esm2022/tableview/action/models/execution/action-instance.model.mjs +0 -169
  263. package/esm2022/tableview/action/services/action-error-mapper.service.mjs +0 -20
  264. package/esm2022/tableview/action/services/action-executor.service.mjs +0 -772
  265. package/esm2022/tableview/action/services/component-action-executor.service.mjs +0 -19
  266. package/esm2022/tableview/action/services/data-provider-executor.service.mjs +0 -41
  267. package/esm2022/tableview/action/services/navigation.service.mjs +0 -53
  268. package/esm2022/tableview/action/services/providers/provide-action-executor.mjs +0 -9
  269. package/esm2022/tableview/action/services/providers/provide-view-container.mjs +0 -17
  270. package/esm2022/tableview/action/services/root-action-executor.service.mjs +0 -18
  271. package/esm2022/tableview/action/services/tokens/action-editor.token.mjs +0 -3
  272. package/esm2022/tableview/action/services/view-container.service.mjs +0 -40
  273. package/esm2022/tableview/api/action/descriptors/action-descriptor.factory.mjs +0 -28
  274. package/esm2022/tableview/api/action/descriptors/action-editor-descriptor.factory.mjs +0 -30
  275. package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +0 -223
  276. package/esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.mjs +0 -32
  277. package/esm2022/tableview/api/action/descriptors/action-link.descriptor.mjs +0 -74
  278. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +0 -302
  279. package/esm2022/tableview/api/action/descriptors/editor-action-descriptor.factory.mjs +0 -21
  280. package/esm2022/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.mjs +0 -21
  281. package/esm2022/tableview/api/action/descriptors/table-action-descriptor.factory.mjs +0 -37
  282. package/esm2022/tableview/api/action/descriptors/table-action-editor-descriptor.factory.mjs +0 -40
  283. package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +0 -100
  284. package/esm2022/tableview/api/action/models/action-component.model.mjs +0 -2
  285. package/esm2022/tableview/api/action/models/action-confirmation.model.mjs +0 -2
  286. package/esm2022/tableview/api/action/models/action-descriptor.types.mjs +0 -2
  287. package/esm2022/tableview/api/action/models/action-editor.model.mjs +0 -2
  288. package/esm2022/tableview/api/action/models/action-error.model.mjs +0 -14
  289. package/esm2022/tableview/api/action/models/action.type.mjs +0 -26
  290. package/esm2022/tableview/api/action/models/execution/action-context-validation.model.mjs +0 -2
  291. package/esm2022/tableview/api/action/models/execution/action-context.model.mjs +0 -2
  292. package/esm2022/tableview/api/action/models/execution/action-execution-error.model.mjs +0 -2
  293. package/esm2022/tableview/api/action/models/execution/action-instance-state.model.mjs +0 -32
  294. package/esm2022/tableview/api/action/models/execution/action-instance.model.mjs +0 -2
  295. package/esm2022/tableview/api/action/models/execution/view-container.model.mjs +0 -2
  296. package/esm2022/tableview/api/action/models/tableview-action-default-categories.model.mjs +0 -11
  297. package/esm2022/tableview/api/action/services/data-provider-executor.service.mjs +0 -28
  298. package/esm2022/tableview/api/action/services/tokens/data-language-dropdown.token.mjs +0 -3
  299. package/esm2022/tableview/api/class/editor/class-editor-attribute-converter.mjs +0 -85
  300. package/esm2022/tableview/api/class/editor/class-editor-attribute.model.mjs +0 -2
  301. package/esm2022/tableview/api/class/editor/class-editor-data-provider.factory.mjs +0 -5
  302. package/esm2022/tableview/api/class/editor/class-editor-descriptor-helpers.mjs +0 -95
  303. package/esm2022/tableview/api/class/editor/class-editor-descriptor.factory.mjs +0 -21
  304. package/esm2022/tableview/api/class/index.mjs +0 -13
  305. package/esm2022/tableview/api/class/mediusinc-mng-commons-tableview-api-class.mjs +0 -5
  306. package/esm2022/tableview/api/class/tableview/class-tableview-attribute-converter.mjs +0 -35
  307. package/esm2022/tableview/api/class/tableview/class-tableview-attribute.model.mjs +0 -2
  308. package/esm2022/tableview/api/class/tableview/class-tableview-data-provider.factory.mjs +0 -5
  309. package/esm2022/tableview/api/class/tableview/class-tableview-descriptor-helpers.mjs +0 -111
  310. package/esm2022/tableview/api/class/tableview/class-tableview-descriptor.factory.mjs +0 -26
  311. package/esm2022/tableview/api/editor/data-providers/editor-data-provider.factory.mjs +0 -15
  312. package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +0 -114
  313. package/esm2022/tableview/api/editor/descriptors/editor-descriptor.factory.mjs +0 -15
  314. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +0 -437
  315. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +0 -51
  316. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +0 -314
  317. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +0 -103
  318. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +0 -211
  319. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +0 -142
  320. package/esm2022/tableview/api/editor/descriptors/field-validation.descriptor.mjs +0 -25
  321. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +0 -402
  322. package/esm2022/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.mjs +0 -51
  323. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +0 -2
  324. package/esm2022/tableview/api/editor/models/editor.model.mjs +0 -9
  325. package/esm2022/tableview/api/editor/models/field-action-context.model.mjs +0 -2
  326. package/esm2022/tableview/api/editor/models/field-image-preview.model.mjs +0 -2
  327. package/esm2022/tableview/api/editor/models/field-validation.model.mjs +0 -2
  328. package/esm2022/tableview/api/editor/models/field.model.mjs +0 -57
  329. package/esm2022/tableview/api/editor/models/form-editor.event.mjs +0 -28
  330. package/esm2022/tableview/api/editor/models/form-editor.interface.mjs +0 -2
  331. package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +0 -70
  332. package/esm2022/tableview/api/editor/models/formly-field.model.mjs +0 -2
  333. package/esm2022/tableview/api/editor/models/formly-options.model.mjs +0 -2
  334. package/esm2022/tableview/api/editor/models/radio.model.mjs +0 -2
  335. package/esm2022/tableview/api/index.mjs +0 -76
  336. package/esm2022/tableview/api/mediusinc-mng-commons-tableview-api.mjs +0 -5
  337. package/esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.mjs +0 -18
  338. package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +0 -84
  339. package/esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.mjs +0 -34
  340. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +0 -377
  341. package/esm2022/tableview/api/tableview/helpers/files-export.mjs +0 -34
  342. package/esm2022/tableview/api/tableview/helpers/tableview-create.mjs +0 -26
  343. package/esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.mjs +0 -7
  344. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +0 -324
  345. package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +0 -319
  346. package/esm2022/tableview/api/tableview/models/tableview-descriptor-fields-manage-helper.type.mjs +0 -2
  347. package/esm2022/tableview/api/tableview/models/tableview-descriptor-helper.type.mjs +0 -2
  348. package/esm2022/tableview/api/tableview/models/tableview-input.model.mjs +0 -2
  349. package/esm2022/tableview/api/tableview/models/tableview-route.model.mjs +0 -2
  350. package/esm2022/tableview/editor/components/editor/auto-save-status/auto-save-status.component.mjs +0 -82
  351. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +0 -480
  352. package/esm2022/tableview/editor/components/formly/constants.mjs +0 -2
  353. package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +0 -66
  354. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +0 -47
  355. package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +0 -39
  356. package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +0 -165
  357. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +0 -42
  358. package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +0 -34
  359. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +0 -211
  360. package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +0 -23
  361. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +0 -195
  362. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +0 -239
  363. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +0 -205
  364. package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -28
  365. package/esm2022/tableview/editor/components/formly/fields/formly-field-type.abstract.component.mjs +0 -46
  366. package/esm2022/tableview/editor/components/formly/pipes/formly-field-label.pipe.mjs +0 -19
  367. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +0 -33
  368. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +0 -59
  369. package/esm2022/tableview/editor/helpers/editor-autosave.mjs +0 -49
  370. package/esm2022/tableview/editor/helpers/editor-field.mjs +0 -39
  371. package/esm2022/tableview/editor/helpers/editor-formly.mjs +0 -388
  372. package/esm2022/tableview/editor/helpers/editor-validators.mjs +0 -25
  373. package/esm2022/tableview/editor/helpers/field-create.mjs +0 -21
  374. package/esm2022/tableview/editor/helpers/formly-config.mjs +0 -260
  375. package/esm2022/tableview/editor/helpers/notification.mjs +0 -11
  376. package/esm2022/tableview/editor/models/editor-auto-save-preview.model.mjs +0 -2
  377. package/esm2022/tableview/editor/models/formly-config.model.mjs +0 -2
  378. package/esm2022/tableview/editor/services/form-editor.service.mjs +0 -96
  379. package/esm2022/tableview/editor/services/formly-config.provider.mjs +0 -31
  380. package/esm2022/tableview/index.mjs +0 -67
  381. package/esm2022/tableview/mediusinc-mng-commons-tableview.mjs +0 -5
  382. package/esm2022/tableview/provide.mjs +0 -105
  383. package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +0 -15
  384. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +0 -59
  385. package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +0 -175
  386. package/esm2022/tableview/tableview/services/tableview-feature-config.token.mjs +0 -3
@@ -1,211 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, LOCALE_ID, inject } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
4
- import { FormlyModule } from '@ngx-formly/core';
5
- import { TranslateModule, TranslateService } from '@ngx-translate/core';
6
- import { FileUploadModule } from 'primeng/fileupload';
7
- import { TimesIcon } from 'primeng/icons/times';
8
- import { ImageModule } from 'primeng/image';
9
- import { InputMaskModule } from 'primeng/inputmask';
10
- import { InputNumberModule } from 'primeng/inputnumber';
11
- import { InputSwitchModule } from 'primeng/inputswitch';
12
- import { InputTextModule } from 'primeng/inputtext';
13
- import { InputTextareaModule } from 'primeng/inputtextarea';
14
- import { RadioButtonModule } from 'primeng/radiobutton';
15
- import { RippleModule } from 'primeng/ripple';
16
- import { distinctUntilChanged } from 'rxjs';
17
- import { startWith } from 'rxjs/operators';
18
- import { ComponentDirective } from '@mediusinc/mng-commons/core';
19
- import { InputTrimDirective } from '@mediusinc/mng-commons/form';
20
- import { FieldInputTypeEnum, FormFieldEventComponentSubtype, FormFieldEventTypeEnum } from '@mediusinc/mng-commons/tableview/api';
21
- import { getFormEditorWarningMessage } from '../../../../helpers/notification';
22
- import { FormlyFieldLabelPipe } from '../../pipes/formly-field-label.pipe';
23
- import { ACommonsFormlyFieldType } from '../formly-field-type.abstract.component';
24
- import * as i0 from "@angular/core";
25
- import * as i1 from "primeng/inputnumber";
26
- import * as i2 from "primeng/api";
27
- import * as i3 from "@angular/forms";
28
- import * as i4 from "@ngx-formly/core";
29
- import * as i5 from "@ngx-translate/core";
30
- import * as i6 from "primeng/inputswitch";
31
- import * as i7 from "primeng/radiobutton";
32
- import * as i8 from "primeng/inputmask";
33
- import * as i9 from "primeng/fileupload";
34
- import * as i10 from "primeng/button";
35
- import * as i11 from "primeng/image";
36
- import * as i12 from "primeng/inputtextarea";
37
- import * as i13 from "primeng/inputtext";
38
- import * as i14 from "primeng/ripple";
39
- export class FormlyFieldInputComponent extends ACommonsFormlyFieldType {
40
- constructor() {
41
- super(...arguments);
42
- this.NUMBER_MIN_SAFE = Number.MIN_SAFE_INTEGER;
43
- this.NUMBER_MAX_SAFE = Number.MAX_SAFE_INTEGER;
44
- this.DESC_INPUT_TYPE_IMAGE_FILE = FieldInputTypeEnum.ImageFile;
45
- this.applicationLocale = inject(LOCALE_ID);
46
- this.formBuilder = inject(FormBuilder);
47
- this.translateService = inject(TranslateService);
48
- this.numberFieldMode = 'decimal';
49
- this.files = [];
50
- this.imageFormArray = this.formBuilder.array([]);
51
- }
52
- ngOnInit() {
53
- super.ngOnInit();
54
- this.iFormControl = this.formControl;
55
- this.props.fieldComponent = this;
56
- this.formEditorComponent = this.props.formEditorComponent;
57
- if (this.descriptor.fieldType === FieldInputTypeEnum.Currency) {
58
- this.numberFieldMode = 'currency';
59
- if (this.descriptor.currencyFromProperty) {
60
- this.iFormControl
61
- .get(this.descriptor.currencyFromProperty)
62
- .valueChanges.pipe(takeUntilDestroyed(this.destroyRef), startWith(this.model[this.descriptor.currencyFromProperty]), distinctUntilChanged())
63
- .subscribe(c => {
64
- this.currency = c;
65
- });
66
- }
67
- else {
68
- this.currency = this.descriptor.currency ?? 'EUR';
69
- }
70
- }
71
- // emit lifecycle event
72
- this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {
73
- eventSubtype: FormFieldEventComponentSubtype.ON_INIT
74
- });
75
- this.formControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef), startWith(this.formControl.value), distinctUntilChanged()).subscribe(v => {
76
- this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {
77
- value: v
78
- });
79
- this.props.onValueChange?.(this.field, v);
80
- });
81
- if (this.props.type === 'imageUrl') {
82
- const startValue = this.iFormControl.value;
83
- if (this.descriptor.fileMultiple) {
84
- if (Array.isArray(startValue) && startValue.length > 0) {
85
- startValue.forEach(v => this.addImageUrl(v));
86
- }
87
- else if (typeof startValue === 'string' && startValue.length > 0) {
88
- this.addImageUrl(startValue);
89
- }
90
- else {
91
- this.addImageUrl();
92
- }
93
- }
94
- else {
95
- if (typeof startValue === 'string' && startValue.length > 0) {
96
- this.addImageUrl(startValue);
97
- }
98
- else {
99
- this.addImageUrl();
100
- }
101
- }
102
- this.imageFormArray.valueChanges.pipe(takeUntilDestroyed(this.destroyRef), distinctUntilChanged()).subscribe(v => {
103
- const fcv = v.filter((i) => !!i && typeof i === 'string' && i.length > 0);
104
- this.iFormControl.setValue(fcv.length > 0 ? (this.descriptor.fileMultiple ? fcv : fcv[0]) : undefined);
105
- this.iFormControl.updateValueAndValidity();
106
- });
107
- }
108
- }
109
- ngOnDestroy() {
110
- // warning: formly calls on destroy before on init
111
- // emit lifecycle event
112
- this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {
113
- eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY
114
- });
115
- }
116
- onFileSelect(event) {
117
- const files = event.files;
118
- if (this.descriptor.fileMultiple) {
119
- this.files = [...this.files, ...files];
120
- }
121
- else {
122
- this.files = [...files];
123
- }
124
- this.updateFileFormControl();
125
- }
126
- onFileRemove(event) {
127
- const file = event.file;
128
- this.files = this.files.filter(f => f !== file);
129
- this.updateFileFormControl();
130
- }
131
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
132
- onFileClear(event) {
133
- this.files = [];
134
- this.updateFileFormControl();
135
- }
136
- addImageUrl(value = null) {
137
- const validators = [];
138
- validators.push(Validators.pattern(/^(http|https):\/\/[^ "]+$/));
139
- validators.push(Validators.minLength(1));
140
- this.imageFormArray.push(this.formBuilder.control(value, validators));
141
- }
142
- removeImageUrlAt(idx) {
143
- this.imageFormArray.removeAt(idx);
144
- }
145
- onImageUrlLoadError() {
146
- if (this.formEditorComponent) {
147
- const message = getFormEditorWarningMessage(this.translateService, 'general.error', 'mngEditor.imageLoadError');
148
- this.formEditorComponent.formMessages.set([...this.formEditorComponent.formMessages(), message]);
149
- }
150
- }
151
- updateFileFormControl() {
152
- const value = this.files.length > 0 ? [...this.files] : null;
153
- this.iFormControl.setValue(value);
154
- if (typeof this.descriptor.fileOnSelectHandler === 'function') {
155
- this.descriptor.fileOnSelectHandler(value, this.iFormControl);
156
- }
157
- }
158
- isUrlSvgImage(url) {
159
- return url.endsWith('.svg');
160
- }
161
- isFileImageSvg(file) {
162
- return /^image\/svg/.test(file.type);
163
- }
164
- getFileDocumentTypeIcon(file) {
165
- if (/^video\//.test(file.type)) {
166
- return 'pi-video';
167
- }
168
- if (/^audio\//.test(file.type)) {
169
- return 'pi-volume-up';
170
- }
171
- switch (file.type) {
172
- case 'application/pdf':
173
- return 'pi-file-pdf';
174
- case 'application/msword':
175
- case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':
176
- case 'application/vnd.oasis.opendocument.presentation':
177
- return 'pi-file-word';
178
- case 'application/vnd.oasis.opendocument.spreadsheet':
179
- case 'application/vnd.ms-excel':
180
- case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':
181
- return 'pi-file-excel';
182
- default:
183
- return 'pi-file';
184
- }
185
- }
186
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FormlyFieldInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: FormlyFieldInputComponent, isStandalone: true, selector: "mng-formly-field-input", usesInheritance: true, ngImport: i0, template: "@switch (props.type) {\n @case ('number') {\n <p-inputNumber\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"descriptor.numberAutoCorrect ? (descriptor.numberMin ?? NUMBER_MIN_SAFE) : undefined\"\n [max]=\"descriptor.numberAutoCorrect ? (descriptor.numberMax ?? NUMBER_MAX_SAFE) : undefined\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-number'\"\n [locale]=\"descriptor.locale ?? applicationLocale\"\n [mode]=\"numberFieldMode\"\n [prefix]=\"descriptor.numberPrefix\"\n [suffix]=\"descriptor.numberSuffix\"\n [currency]=\"currency\"\n [currencyDisplay]=\"descriptor.currencyDisplay\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\">\n </p-inputNumber>\n }\n @case ('switch') {\n <div class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName ?? ''\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n <p-inputSwitch\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-switch'\"></p-inputSwitch>\n @if (showError) {\n <small class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n </div>\n }\n @case ('radio') {\n @for (option of descriptor.radioOptions; track option) {\n <div [id]=\"key\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-radio'\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + (descriptor.labelClassName ?? '')\">{{ option.title | translate }}</label>\n </div>\n }\n }\n @case ('textarea') {\n <textarea\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-textarea'\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\">\n </textarea>\n }\n @case ('mask') {\n <p-inputMask\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"descriptor.mask\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-mask'\">\n </p-inputMask>\n }\n @case ('file') {\n <p-fileUpload\n #fileUploadInput\n [id]=\"$any(key)\"\n [disabled]=\"iFormControl.disabled\"\n [multiple]=\"descriptor.fileMultiple ?? false\"\n [accept]=\"descriptor.fileAccept ?? (descriptor.fieldType === DESC_INPUT_TYPE_IMAGE_FILE ? 'image/*' : undefined)\"\n [maxFileSize]=\"descriptor.fileMaxFileSize ?? 500000\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n <ng-template let-file let-idx=\"index\" pTemplate=\"file\">\n <div class=\"p-fileupload-row\">\n <div>\n @if (fileUploadInput.isImage(file)) {\n @if (descriptor.imagePreview) {\n @if (descriptor.imagePreviewComponent) {\n <ng-container\n [mngComponent]=\"descriptor.imagePreviewComponent\"\n [inputs]=\"{\n imageUrl: file.objectURL\n }\">\n </ng-container>\n } @else if (!isFileImageSvg(file) || descriptor.imagePreviewAllowSvg) {\n <img [src]=\"file.objectURL\" [width]=\"fileUploadInput.previewWidth\" (error)=\"fileUploadInput.imageError($event)\" />\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i [class]=\"'pi ' + getFileDocumentTypeIcon(file) + ' text-2xl'\"></i>\n </span>\n }\n </div>\n <div class=\"p-fileupload-filename\">{{ file.name }}</div>\n <div>{{ fileUploadInput.formatSize(file.size) }}</div>\n <div>\n <button\n type=\"button\"\n pButton\n (click)=\"fileUploadInput.remove($event, idx)\"\n [disabled]=\"fileUploadInput.uploading\"\n class=\"p-button-icon-only\"\n [class]=\"fileUploadInput.removeStyleClass\">\n @if (!fileUploadInput.cancelIconTemplate) {\n <TimesIcon />\n }\n </button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files>\n @if (files.length === 0) {\n <div class=\"text-gray-300 dropdown-area\">\n <span><i class=\"pi pi-file-import mr-2\"></i>{{ 'fileUpload.dragAndDrop' | translate }}</span>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n }\n @case ('imageUrl') {\n <div>\n @if (descriptor.imagePreview) {\n <div class=\"flex flex-wrap justify-content-start\">\n @for (image of imageFormArray.controls; track image; let idx = $index) {\n @if (imageFormArray.at(idx).valid && imageFormArray.at(idx).value) {\n @if (descriptor.imagePreviewComponent) {\n <ng-container\n [mngComponent]=\"descriptor.imagePreviewComponent\"\n [inputs]=\"{\n imageUrl: imageFormArray.at(idx).value\n }\">\n </ng-container>\n } @else if (!isUrlSvgImage(imageFormArray.at(idx).value) || descriptor.imagePreviewAllowSvg) {\n <p-image [src]=\"imageFormArray.at(idx).value\" [preview]=\"true\" (onImageError)=\"onImageUrlLoadError()\" styleClass=\"mng-image m-2\"></p-image>\n } @else {\n <span class=\"mng-image m-2 p-image-preview-container no-image\">\n <div class=\"p-image-preview-indicator\">\n <i class=\"p-image-preview-icon pi ban\"></i>\n </div>\n </span>\n }\n }\n }\n </div>\n }\n @if (!descriptor.imagePreview || descriptor.imageUrlInputVisibleOnDisabled || !iFormControl.disabled) {\n @for (imageCtrlName of imageFormArray.controls; track imageCtrlName; let idx = $index) {\n <div class=\"p-inputgroup\">\n <input\n pInputText\n [placeholder]=\"'mngEditor.imageUrlPlaceholder' | translate\"\n [id]=\"$any(key)\"\n type=\"text\"\n [formControl]=\"$any(imageFormArray.at(idx))\"\n [formlyAttributes]=\"field\" />\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button type=\"button\" pButton pRipple icon=\"pi pi-minus\" (click)=\"removeImageUrlAt(idx)\"></button>\n }\n </div>\n }\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button\n type=\"button\"\n pButton\n pRipple\n icon=\"pi pi-plus\"\n class=\"p-button-primary w-auto\"\n [label]=\"'mngEditor.imageUrlAdd' | translate\"\n (click)=\"addImageUrl()\"></button>\n }\n }\n </div>\n }\n @default {\n <input\n pInputText\n [id]=\"$any(key)\"\n [type]=\"props.type || 'text'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mngInputTrim]=\"descriptor.trimOption\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\" />\n }\n}\n", dependencies: [{ kind: "ngmodule", type: InputNumberModule }, { kind: "component", type: i1.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "component", type: i4.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: InputSwitchModule }, { kind: "component", type: i6.InputSwitch, selector: "p-inputSwitch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabel", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: i7.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "variant", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: InputMaskModule }, { kind: "component", type: i8.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "variant", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autofocus", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i9.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "directive", type: i10.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: ImageModule }, { kind: "component", type: i11.Image, selector: "p-image", inputs: ["imageClass", "imageStyle", "styleClass", "style", "src", "srcSet", "sizes", "previewImageSrc", "previewImageSrcSet", "previewImageSizes", "alt", "width", "height", "loading", "appendTo", "preview", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide", "onImageError"] }, { kind: "ngmodule", type: InputTextareaModule }, { kind: "directive", type: i12.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i13.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i14.Ripple, selector: "[pRipple]" }, { kind: "component", type: TimesIcon, selector: "TimesIcon" }, { kind: "directive", type: InputTrimDirective, selector: "[mngInputTrim]", inputs: ["mngInputTrim"] }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "pipe", type: FormlyFieldLabelPipe, name: "mngFormlyFieldLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
188
- }
189
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FormlyFieldInputComponent, decorators: [{
190
- type: Component,
191
- args: [{ standalone: true, selector: 'mng-formly-field-input', imports: [
192
- InputNumberModule,
193
- ReactiveFormsModule,
194
- FormlyModule,
195
- TranslateModule,
196
- InputSwitchModule,
197
- RadioButtonModule,
198
- InputMaskModule,
199
- FileUploadModule,
200
- ImageModule,
201
- InputTextareaModule,
202
- InputTextModule,
203
- RippleModule,
204
- TimesIcon,
205
- InputTrimDirective,
206
- ComponentDirective,
207
- InputTrimDirective,
208
- FormlyFieldLabelPipe
209
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@switch (props.type) {\n @case ('number') {\n <p-inputNumber\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"descriptor.numberAutoCorrect ? (descriptor.numberMin ?? NUMBER_MIN_SAFE) : undefined\"\n [max]=\"descriptor.numberAutoCorrect ? (descriptor.numberMax ?? NUMBER_MAX_SAFE) : undefined\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-number'\"\n [locale]=\"descriptor.locale ?? applicationLocale\"\n [mode]=\"numberFieldMode\"\n [prefix]=\"descriptor.numberPrefix\"\n [suffix]=\"descriptor.numberSuffix\"\n [currency]=\"currency\"\n [currencyDisplay]=\"descriptor.currencyDisplay\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\">\n </p-inputNumber>\n }\n @case ('switch') {\n <div class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName ?? ''\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n <p-inputSwitch\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-switch'\"></p-inputSwitch>\n @if (showError) {\n <small class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n </div>\n }\n @case ('radio') {\n @for (option of descriptor.radioOptions; track option) {\n <div [id]=\"key\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-radio'\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + (descriptor.labelClassName ?? '')\">{{ option.title | translate }}</label>\n </div>\n }\n }\n @case ('textarea') {\n <textarea\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-textarea'\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\">\n </textarea>\n }\n @case ('mask') {\n <p-inputMask\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"descriptor.mask\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-mask'\">\n </p-inputMask>\n }\n @case ('file') {\n <p-fileUpload\n #fileUploadInput\n [id]=\"$any(key)\"\n [disabled]=\"iFormControl.disabled\"\n [multiple]=\"descriptor.fileMultiple ?? false\"\n [accept]=\"descriptor.fileAccept ?? (descriptor.fieldType === DESC_INPUT_TYPE_IMAGE_FILE ? 'image/*' : undefined)\"\n [maxFileSize]=\"descriptor.fileMaxFileSize ?? 500000\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n <ng-template let-file let-idx=\"index\" pTemplate=\"file\">\n <div class=\"p-fileupload-row\">\n <div>\n @if (fileUploadInput.isImage(file)) {\n @if (descriptor.imagePreview) {\n @if (descriptor.imagePreviewComponent) {\n <ng-container\n [mngComponent]=\"descriptor.imagePreviewComponent\"\n [inputs]=\"{\n imageUrl: file.objectURL\n }\">\n </ng-container>\n } @else if (!isFileImageSvg(file) || descriptor.imagePreviewAllowSvg) {\n <img [src]=\"file.objectURL\" [width]=\"fileUploadInput.previewWidth\" (error)=\"fileUploadInput.imageError($event)\" />\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i [class]=\"'pi ' + getFileDocumentTypeIcon(file) + ' text-2xl'\"></i>\n </span>\n }\n </div>\n <div class=\"p-fileupload-filename\">{{ file.name }}</div>\n <div>{{ fileUploadInput.formatSize(file.size) }}</div>\n <div>\n <button\n type=\"button\"\n pButton\n (click)=\"fileUploadInput.remove($event, idx)\"\n [disabled]=\"fileUploadInput.uploading\"\n class=\"p-button-icon-only\"\n [class]=\"fileUploadInput.removeStyleClass\">\n @if (!fileUploadInput.cancelIconTemplate) {\n <TimesIcon />\n }\n </button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files>\n @if (files.length === 0) {\n <div class=\"text-gray-300 dropdown-area\">\n <span><i class=\"pi pi-file-import mr-2\"></i>{{ 'fileUpload.dragAndDrop' | translate }}</span>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n }\n @case ('imageUrl') {\n <div>\n @if (descriptor.imagePreview) {\n <div class=\"flex flex-wrap justify-content-start\">\n @for (image of imageFormArray.controls; track image; let idx = $index) {\n @if (imageFormArray.at(idx).valid && imageFormArray.at(idx).value) {\n @if (descriptor.imagePreviewComponent) {\n <ng-container\n [mngComponent]=\"descriptor.imagePreviewComponent\"\n [inputs]=\"{\n imageUrl: imageFormArray.at(idx).value\n }\">\n </ng-container>\n } @else if (!isUrlSvgImage(imageFormArray.at(idx).value) || descriptor.imagePreviewAllowSvg) {\n <p-image [src]=\"imageFormArray.at(idx).value\" [preview]=\"true\" (onImageError)=\"onImageUrlLoadError()\" styleClass=\"mng-image m-2\"></p-image>\n } @else {\n <span class=\"mng-image m-2 p-image-preview-container no-image\">\n <div class=\"p-image-preview-indicator\">\n <i class=\"p-image-preview-icon pi ban\"></i>\n </div>\n </span>\n }\n }\n }\n </div>\n }\n @if (!descriptor.imagePreview || descriptor.imageUrlInputVisibleOnDisabled || !iFormControl.disabled) {\n @for (imageCtrlName of imageFormArray.controls; track imageCtrlName; let idx = $index) {\n <div class=\"p-inputgroup\">\n <input\n pInputText\n [placeholder]=\"'mngEditor.imageUrlPlaceholder' | translate\"\n [id]=\"$any(key)\"\n type=\"text\"\n [formControl]=\"$any(imageFormArray.at(idx))\"\n [formlyAttributes]=\"field\" />\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button type=\"button\" pButton pRipple icon=\"pi pi-minus\" (click)=\"removeImageUrlAt(idx)\"></button>\n }\n </div>\n }\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button\n type=\"button\"\n pButton\n pRipple\n icon=\"pi pi-plus\"\n class=\"p-button-primary w-auto\"\n [label]=\"'mngEditor.imageUrlAdd' | translate\"\n (click)=\"addImageUrl()\"></button>\n }\n }\n </div>\n }\n @default {\n <input\n pInputText\n [id]=\"$any(key)\"\n [type]=\"props.type || 'text'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mngInputTrim]=\"descriptor.trimOption\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\" />\n }\n}\n" }]
210
- }] });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtaW5wdXQvZm9ybWx5LWZpZWxkLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtaW5wdXQvZm9ybWx5LWZpZWxkLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFZLFdBQVcsRUFBZSxtQkFBbUIsRUFBZSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0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QkFDTCxpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixTQUFTO3dCQUNULGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLG9CQUFvQjtxQkFDdkIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIExPQ0FMRV9JRCwgT25EZXN0cm95LCBPbkluaXQsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGb3JtbHlNb2R1bGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtGaWxlVXBsb2FkTW9kdWxlfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xuaW1wb3J0IHtUaW1lc0ljb259IGZyb20gJ3ByaW1lbmcvaWNvbnMvdGltZXMnO1xuaW1wb3J0IHtJbWFnZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbWFnZSc7XG5pbXBvcnQge0lucHV0TWFza01vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dG1hc2snO1xuaW1wb3J0IHtJbnB1dE51bWJlck1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dG51bWJlcic7XG5pbXBvcnQge0lucHV0U3dpdGNoTW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0c3dpdGNoJztcbmltcG9ydCB7SW5wdXRUZXh0TW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQge0lucHV0VGV4dGFyZWFNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0YXJlYSc7XG5pbXBvcnQge1JhZGlvQnV0dG9uTW9kdWxlfSBmcm9tICdwcmltZW5nL3JhZGlvYnV0dG9uJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7Q29tcG9uZW50RGlyZWN0aXZlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJbnB1dFRyaW1EaXJlY3RpdmV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZm9ybSc7XG5pbXBvcnQge0ZpZWxkSW5wdXREZXNjcmlwdG9yLCBGaWVsZElucHV0VHlwZUVudW0sIEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZSwgRm9ybUZpZWxkRXZlbnRUeXBlRW51bSwgSUZvcm1FZGl0b3JDb21wb25lbnR9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7Z2V0Rm9ybUVkaXRvcldhcm5pbmdNZXNzYWdlfSBmcm9tICcuLi8uLi8uLi8uLi9oZWxwZXJzL25vdGlmaWNhdGlvbic7XG5pbXBvcnQge0Zvcm1seUZpZWxkTGFiZWxQaXBlfSBmcm9tICcuLi8uLi9waXBlcy9mb3JtbHktZmllbGQtbGFiZWwucGlwZSc7XG5pbXBvcnQge0FDb21tb25zRm9ybWx5RmllbGRUeXBlfSBmcm9tICcuLi9mb3JtbHktZmllbGQtdHlwZS5hYnN0cmFjdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm1seS1maWVsZC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBJbnB1dE51bWJlck1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRm9ybWx5TW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIElucHV0U3dpdGNoTW9kdWxlLFxuICAgICAgICBSYWRpb0J1dHRvbk1vZHVsZSxcbiAgICAgICAgSW5wdXRNYXNrTW9kdWxlLFxuICAgICAgICBGaWxlVXBsb2FkTW9kdWxlLFxuICAgICAgICBJbWFnZU1vZHVsZSxcbiAgICAgICAgSW5wdXRUZXh0YXJlYU1vZHVsZSxcbiAgICAgICAgSW5wdXRUZXh0TW9kdWxlLFxuICAgICAgICBSaXBwbGVNb2R1bGUsXG4gICAgICAgIFRpbWVzSWNvbixcbiAgICAgICAgSW5wdXRUcmltRGlyZWN0aXZlLFxuICAgICAgICBDb21wb25lbnREaXJlY3RpdmUsXG4gICAgICAgIElucHV0VHJpbURpcmVjdGl2ZSxcbiAgICAgICAgRm9ybWx5RmllbGRMYWJlbFBpcGVcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1seUZpZWxkSW5wdXRDb21wb25lbnQ8RVQ+IGV4dGVuZHMgQUNvbW1vbnNGb3JtbHlGaWVsZFR5cGU8YW55LCBFVCwgRmllbGRJbnB1dERlc2NyaXB0b3I8RVQ+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgTlVNQkVSX01JTl9TQUZFID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7XG4gICAgcHVibGljIHJlYWRvbmx5IE5VTUJFUl9NQVhfU0FGRSA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICAgIHB1YmxpYyByZWFkb25seSBERVNDX0lOUFVUX1RZUEVfSU1BR0VfRklMRSA9IEZpZWxkSW5wdXRUeXBlRW51bS5JbWFnZUZpbGU7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXBwbGljYXRpb25Mb2NhbGUgPSBpbmplY3QoTE9DQUxFX0lEKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgICBwdWJsaWMgaUZvcm1Db250cm9sITogRm9ybUNvbnRyb2w7XG4gICAgcHVibGljIG51bWJlckZpZWxkTW9kZTogJ2RlY2ltYWwnIHwgJ2N1cnJlbmN5JyA9ICdkZWNpbWFsJztcbiAgICBwdWJsaWMgY3VycmVuY3k/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGZpbGVzOiBGaWxlW10gPSBbXTtcbiAgICBwdWJsaWMgaW1hZ2VGb3JtQXJyYXk6IEZvcm1BcnJheSA9IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pO1xuXG4gICAgcHVibGljIGZvcm1FZGl0b3JDb21wb25lbnQ/OiBJRm9ybUVkaXRvckNvbXBvbmVudDxFVCwgYW55PjtcblxuICAgIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmlGb3JtQ29udHJvbCA9IHRoaXMuZm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2w7XG5cbiAgICAgICAgdGhpcy5wcm9wcy5maWVsZENvbXBvbmVudCA9IHRoaXM7XG4gICAgICAgIHRoaXMuZm9ybUVkaXRvckNvbXBvbmVudCA9IHRoaXMucHJvcHMuZm9ybUVkaXRvckNvbXBvbmVudDtcblxuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLmZpZWxkVHlwZSA9PT0gRmllbGRJbnB1dFR5cGVFbnVtLkN1cnJlbmN5KSB7XG4gICAgICAgICAgICB0aGlzLm51bWJlckZpZWxkTW9kZSA9ICdjdXJyZW5jeSc7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuY3VycmVuY3lGcm9tUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlGb3JtQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuZGVzY3JpcHRvci5jdXJyZW5jeUZyb21Qcm9wZXJ0eSkhXG4gICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSwgc3RhcnRXaXRoKHRoaXMubW9kZWxbdGhpcy5kZXNjcmlwdG9yLmN1cnJlbmN5RnJvbVByb3BlcnR5XSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoYyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbmN5ID0gYztcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY3kgPSB0aGlzLmRlc2NyaXB0b3IuY3VycmVuY3kgPz8gJ0VVUic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUuT05fSU5JVFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvcm1Db250cm9sIS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSwgc3RhcnRXaXRoKHRoaXMuZm9ybUNvbnRyb2whLnZhbHVlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChGb3JtRmllbGRFdmVudFR5cGVFbnVtLlZhbHVlQ2hhbmdlLCB0aGlzLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vblZhbHVlQ2hhbmdlPy4odGhpcy5maWVsZCwgdik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnR5cGUgPT09ICdpbWFnZVVybCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0VmFsdWUgPSB0aGlzLmlGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuZmlsZU11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3RhcnRWYWx1ZSkgJiYgc3RhcnRWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VmFsdWUuZm9yRWFjaCh2ID0+IHRoaXMuYWRkSW1hZ2VVcmwodikpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHN0YXJ0VmFsdWUgPT09ICdzdHJpbmcnICYmIHN0YXJ0VmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEltYWdlVXJsKHN0YXJ0VmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSW1hZ2VVcmwoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhcnRWYWx1ZSA9PT0gJ3N0cmluZycgJiYgc3RhcnRWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSW1hZ2VVcmwoc3RhcnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJbWFnZVVybCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pbWFnZUZvcm1BcnJheSEudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmY3YgPSB2LmZpbHRlcigoaTogdW5rbm93bikgPT4gISFpICYmIHR5cGVvZiBpID09PSAnc3RyaW5nJyAmJiBpLmxlbmd0aCA+IDApO1xuICAgICAgICAgICAgICAgIHRoaXMuaUZvcm1Db250cm9sLnNldFZhbHVlKGZjdi5sZW5ndGggPiAwID8gKHRoaXMuZGVzY3JpcHRvci5maWxlTXVsdGlwbGUgPyBmY3YgOiBmY3ZbMF0pIDogdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyB3YXJuaW5nOiBmb3JtbHkgY2FsbHMgb24gZGVzdHJveSBiZWZvcmUgb24gaW5pdFxuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvcj8ubmV4dEV2ZW50KEZvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9ERVNUUk9ZXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpbGVTZWxlY3QoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBmaWxlcyA9IGV2ZW50LmZpbGVzIGFzIEZpbGVbXTtcbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5maWxlTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlcywgLi4uZmlsZXNdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IFsuLi5maWxlc107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVGaWxlRm9ybUNvbnRyb2woKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaWxlUmVtb3ZlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IGV2ZW50LmZpbGUgYXMgRmlsZTtcbiAgICAgICAgdGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuZmlsdGVyKGYgPT4gZiAhPT0gZmlsZSk7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsZUZvcm1Db250cm9sKCk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHB1YmxpYyBvbkZpbGVDbGVhcihldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbGVGb3JtQ29udHJvbCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJbWFnZVVybCh2YWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKGh0dHB8aHR0cHMpOlxcL1xcL1teIFwiXSskLykpO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgoMSkpO1xuICAgICAgICB0aGlzLmltYWdlRm9ybUFycmF5LnB1c2godGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHZhbHVlLCB2YWxpZGF0b3JzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUltYWdlVXJsQXQoaWR4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5pbWFnZUZvcm1BcnJheS5yZW1vdmVBdChpZHgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkltYWdlVXJsTG9hZEVycm9yKCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtRWRpdG9yQ29tcG9uZW50KSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZ2V0Rm9ybUVkaXRvcldhcm5pbmdNZXNzYWdlKHRoaXMudHJhbnNsYXRlU2VydmljZSwgJ2dlbmVyYWwuZXJyb3InLCAnbW5nRWRpdG9yLmltYWdlTG9hZEVycm9yJyk7XG4gICAgICAgICAgICB0aGlzLmZvcm1FZGl0b3JDb21wb25lbnQuZm9ybU1lc3NhZ2VzLnNldChbLi4udGhpcy5mb3JtRWRpdG9yQ29tcG9uZW50LmZvcm1NZXNzYWdlcygpLCBtZXNzYWdlXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUZpbGVGb3JtQ29udHJvbCgpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmZpbGVzLmxlbmd0aCA+IDAgPyBbLi4udGhpcy5maWxlc10gOiBudWxsO1xuICAgICAgICB0aGlzLmlGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdG9yLmZpbGVPblNlbGVjdEhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5maWxlT25TZWxlY3RIYW5kbGVyKHZhbHVlLCB0aGlzLmlGb3JtQ29udHJvbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNVcmxTdmdJbWFnZSh1cmw6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdXJsLmVuZHNXaXRoKCcuc3ZnJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRmlsZUltYWdlU3ZnKGZpbGU6IEZpbGUpIHtcbiAgICAgICAgcmV0dXJuIC9eaW1hZ2VcXC9zdmcvLnRlc3QoZmlsZS50eXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsZURvY3VtZW50VHlwZUljb24oZmlsZTogRmlsZSkge1xuICAgICAgICBpZiAoL152aWRlb1xcLy8udGVzdChmaWxlLnR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3BpLXZpZGVvJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoL15hdWRpb1xcLy8udGVzdChmaWxlLnR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3BpLXZvbHVtZS11cCc7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChmaWxlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3BkZic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwaS1maWxlLXBkZic7XG4gICAgICAgICAgICBjYXNlICdhcHBsaWNhdGlvbi9tc3dvcmQnOlxuICAgICAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiAncGktZmlsZS13b3JkJztcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQnOlxuICAgICAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJzpcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BpLWZpbGUtZXhjZWwnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BpLWZpbGUnO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQHN3aXRjaCAocHJvcHMudHlwZSkge1xuICAgIEBjYXNlICgnbnVtYmVyJykge1xuICAgICAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICAgICAgW2lkXT1cIiRhbnkoa2V5KVwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaUZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgICAgIFttaW5dPVwiZGVzY3JpcHRvci5udW1iZXJBdXRvQ29ycmVjdCA/IChkZXNjcmlwdG9yLm51bWJlck1pbiA/PyBOVU1CRVJfTUlOX1NBRkUpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIFttYXhdPVwiZGVzY3JpcHRvci5udW1iZXJBdXRvQ29ycmVjdCA/IChkZXNjcmlwdG9yLm51bWJlck1heCA/PyBOVU1CRVJfTUFYX1NBRkUpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIFtzdGVwXT1cIiRhbnkoZGVzY3JpcHRvci5udW1iZXJTdGVwKVwiXG4gICAgICAgICAgICBbdXNlR3JvdXBpbmddPVwiZGVzY3JpcHRvci5udW1iZXJVc2VHcm91cGluZ1wiXG4gICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZGVzY3JpcHRvci5udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cyB8fCAwXCJcbiAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJkZXNjcmlwdG9yLm51bWJlck1heEZyYWN0aW9uRGlnaXRzIHx8IDBcIlxuICAgICAgICAgICAgW2lucHV0U3R5bGVDbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lID8/ICdtbmctZm9ybWx5LWZpZWxkLWlucHV0IG1uZy1mb3JtbHktZmllbGQtaW5wdXQtbnVtYmVyJ1wiXG4gICAgICAgICAgICBbbG9jYWxlXT1cImRlc2NyaXB0b3IubG9jYWxlID8/IGFwcGxpY2F0aW9uTG9jYWxlXCJcbiAgICAgICAgICAgIFttb2RlXT1cIm51bWJlckZpZWxkTW9kZVwiXG4gICAgICAgICAgICBbcHJlZml4XT1cImRlc2NyaXB0b3IubnVtYmVyUHJlZml4XCJcbiAgICAgICAgICAgIFtzdWZmaXhdPVwiZGVzY3JpcHRvci5udW1iZXJTdWZmaXhcIlxuICAgICAgICAgICAgW2N1cnJlbmN5XT1cImN1cnJlbmN5XCJcbiAgICAgICAgICAgIFtjdXJyZW5jeURpc3BsYXldPVwiZGVzY3JpcHRvci5jdXJyZW5jeURpc3BsYXlcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRlc2NyaXB0b3IucGxhY2Vob2xkZXIgPz8gJycgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxuICAgIH1cbiAgICBAY2FzZSAoJ3N3aXRjaCcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGZsZXggZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImtleVwiIFtjbGFzc109XCJkZXNjcmlwdG9yLmxhYmVsQ2xhc3NOYW1lID8/ICcnXCJcbiAgICAgICAgICAgICAgICA+e3sgZGVzY3JpcHRvciB8IG1uZ0Zvcm1seUZpZWxkTGFiZWw6IGVkaXRvckRlc2NyaXB0b3IgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnJlcXVpcmVkICYmIHByb3BzWydoaWRlUmVxdWlyZWRNYXJrZXInXSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8cC1pbnB1dFN3aXRjaFxuICAgICAgICAgICAgICAgIFtpZF09XCIkYW55KGtleSlcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVDbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lID8/ICdtbmctZm9ybWx5LWZpZWxkLWlucHV0IG1uZy1mb3JtbHktZmllbGQtaW5wdXQtc3dpdGNoJ1wiPjwvcC1pbnB1dFN3aXRjaD5cbiAgICAgICAgICAgIEBpZiAoc2hvd0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwicC1lcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICA8Zm9ybWx5LXZhbGlkYXRpb24tbWVzc2FnZSBbZmllbGRdPVwiZmllbGRcIj48L2Zvcm1seS12YWxpZGF0aW9uLW1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBjYXNlICgncmFkaW8nKSB7XG4gICAgICAgIEBmb3IgKG9wdGlvbiBvZiBkZXNjcmlwdG9yLnJhZGlvT3B0aW9uczsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgICAgICA8ZGl2IFtpZF09XCJrZXlcIiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJGFueShrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cImRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWUgPz8gJ21uZy1mb3JtbHktZmllbGQtaW5wdXQgbW5nLWZvcm1seS1maWVsZC1pbnB1dC1yYWRpbydcIj48L3AtcmFkaW9CdXR0b24+XG4gICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwib3B0aW9uLnZhbHVlXCIgW2NsYXNzXT1cIidtbmctcmFkaW8tYnV0dG9uLWxhYmVsICcgKyAoZGVzY3JpcHRvci5sYWJlbENsYXNzTmFtZSA/PyAnJylcIj57eyBvcHRpb24udGl0bGUgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGNhc2UgKCd0ZXh0YXJlYScpIHtcbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBbaWRdPVwiJGFueShrZXkpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICAgICAgW3Jvd3NdPVwiZGVzY3JpcHRvci5yb3dzID8/IDNcIlxuICAgICAgICAgICAgcElucHV0VGV4dGFyZWFcbiAgICAgICAgICAgIFtjbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lID8/ICdtbmctZm9ybWx5LWZpZWxkLWlucHV0IG1uZy1mb3JtbHktZmllbGQtaW5wdXQtdGV4dGFyZWEnXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkZXNjcmlwdG9yLnBsYWNlaG9sZGVyID8/ICcnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgIDwvdGV4dGFyZWE+XG4gICAgfVxuICAgIEBjYXNlICgnbWFzaycpIHtcbiAgICAgICAgPHAtaW5wdXRNYXNrXG4gICAgICAgICAgICBbaWRdPVwiJGFueShrZXkpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICAgICAgW21hc2tdPVwiZGVzY3JpcHRvci5tYXNrXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkZXNjcmlwdG9yLnBsYWNlaG9sZGVyID8/ICcnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtzbG90Q2hhcl09XCIkYW55KGRlc2NyaXB0b3Iuc2xvdENoYXIpXCJcbiAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cImRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWUgPz8gJ21uZy1mb3JtbHktZmllbGQtaW5wdXQgbW5nLWZvcm1seS1maWVsZC1pbnB1dC1tYXNrJ1wiPlxuICAgICAgICA8L3AtaW5wdXRNYXNrPlxuICAgIH1cbiAgICBAY2FzZSAoJ2ZpbGUnKSB7XG4gICAgICAgIDxwLWZpbGVVcGxvYWRcbiAgICAgICAgICAgICNmaWxlVXBsb2FkSW5wdXRcbiAgICAgICAgICAgIFtpZF09XCIkYW55KGtleSlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlGb3JtQ29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwiZGVzY3JpcHRvci5maWxlTXVsdGlwbGUgPz8gZmFsc2VcIlxuICAgICAgICAgICAgW2FjY2VwdF09XCJkZXNjcmlwdG9yLmZpbGVBY2NlcHQgPz8gKGRlc2NyaXB0b3IuZmllbGRUeXBlID09PSBERVNDX0lOUFVUX1RZUEVfSU1BR0VfRklMRSA/ICdpbWFnZS8qJyA6IHVuZGVmaW5lZClcIlxuICAgICAgICAgICAgW21heEZpbGVTaXplXT1cImRlc2NyaXB0b3IuZmlsZU1heEZpbGVTaXplID8/IDUwMDAwMFwiXG4gICAgICAgICAgICBbc2hvd1VwbG9hZEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAob25TZWxlY3QpPVwib25GaWxlU2VsZWN0KCRldmVudClcIlxuICAgICAgICAgICAgKG9uUmVtb3ZlKT1cIm9uRmlsZVJlbW92ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbkNsZWFyKT1cIm9uRmlsZUNsZWFyKCRldmVudClcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZmlsZSBsZXQtaWR4PVwiaW5kZXhcIiBwVGVtcGxhdGU9XCJmaWxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmlsZXVwbG9hZC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsZVVwbG9hZElucHV0LmlzSW1hZ2UoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRlc2NyaXB0b3IuaW1hZ2VQcmV2aWV3KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGVzY3JpcHRvci5pbWFnZVByZXZpZXdDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW5nQ29tcG9uZW50XT1cImRlc2NyaXB0b3IuaW1hZ2VQcmV2aWV3Q29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VVcmw6IGZpbGUub2JqZWN0VVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKCFpc0ZpbGVJbWFnZVN2ZyhmaWxlKSB8fCBkZXNjcmlwdG9yLmltYWdlUHJldmlld0FsbG93U3ZnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZmlsZS5vYmplY3RVUkxcIiBbd2lkdGhdPVwiZmlsZVVwbG9hZElucHV0LnByZXZpZXdXaWR0aFwiIChlcnJvcik9XCJmaWxlVXBsb2FkSW5wdXQuaW1hZ2VFcnJvcigkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWltYWdlIHRleHQtMnhsXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1pbWFnZSB0ZXh0LTJ4bFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ3BpICcgKyBnZXRGaWxlRG9jdW1lbnRUeXBlSWNvbihmaWxlKSArICcgdGV4dC0yeGwnXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZpbGV1cGxvYWQtZmlsZW5hbWVcIj57eyBmaWxlLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBmaWxlVXBsb2FkSW5wdXQuZm9ybWF0U2l6ZShmaWxlLnNpemUpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaWxlVXBsb2FkSW5wdXQucmVtb3ZlKCRldmVudCwgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpbGVVcGxvYWRJbnB1dC51cGxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZmlsZVVwbG9hZElucHV0LnJlbW92ZVN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFmaWxlVXBsb2FkSW5wdXQuY2FuY2VsSWNvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUaW1lc0ljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiBsZXQtZmlsZXM+XG4gICAgICAgICAgICAgICAgQGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS0zMDAgZHJvcGRvd24tYXJlYVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9XCJwaSBwaS1maWxlLWltcG9ydCBtci0yXCI+PC9pPnt7ICdmaWxlVXBsb2FkLmRyYWdBbmREcm9wJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9wLWZpbGVVcGxvYWQ+XG4gICAgfVxuICAgIEBjYXNlICgnaW1hZ2VVcmwnKSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICBAaWYgKGRlc2NyaXB0b3IuaW1hZ2VQcmV2aWV3KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpbWFnZSBvZiBpbWFnZUZvcm1BcnJheS5jb250cm9sczsgdHJhY2sgaW1hZ2U7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaW1hZ2VGb3JtQXJyYXkuYXQoaWR4KS52YWxpZCAmJiBpbWFnZUZvcm1BcnJheS5hdChpZHgpLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkZXNjcmlwdG9yLmltYWdlUHJldmlld0NvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW5nQ29tcG9uZW50XT1cImRlc2NyaXB0b3IuaW1hZ2VQcmV2aWV3Q29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dHNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiBpbWFnZUZvcm1BcnJheS5hdChpZHgpLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKCFpc1VybFN2Z0ltYWdlKGltYWdlRm9ybUFycmF5LmF0KGlkeCkudmFsdWUpIHx8IGRlc2NyaXB0b3IuaW1hZ2VQcmV2aWV3QWxsb3dTdmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW1hZ2UgW3NyY109XCJpbWFnZUZvcm1BcnJheS5hdChpZHgpLnZhbHVlXCIgW3ByZXZpZXddPVwidHJ1ZVwiIChvbkltYWdlRXJyb3IpPVwib25JbWFnZVVybExvYWRFcnJvcigpXCIgc3R5bGVDbGFzcz1cIm1uZy1pbWFnZSBtLTJcIj48L3AtaW1hZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW5nLWltYWdlIG0tMiBwLWltYWdlLXByZXZpZXctY29udGFpbmVyIG5vLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1pbWFnZS1wcmV2aWV3LWluZGljYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicC1pbWFnZS1wcmV2aWV3LWljb24gcGkgYmFuXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoIWRlc2NyaXB0b3IuaW1hZ2VQcmV2aWV3IHx8IGRlc2NyaXB0b3IuaW1hZ2VVcmxJbnB1dFZpc2libGVPbkRpc2FibGVkIHx8ICFpRm9ybUNvbnRyb2wuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBAZm9yIChpbWFnZUN0cmxOYW1lIG9mIGltYWdlRm9ybUFycmF5LmNvbnRyb2xzOyB0cmFjayBpbWFnZUN0cmxOYW1lOyBsZXQgaWR4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWlucHV0Z3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ21uZ0VkaXRvci5pbWFnZVVybFBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIiRhbnkoa2V5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KGltYWdlRm9ybUFycmF5LmF0KGlkeCkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRlc2NyaXB0b3IuZmlsZU11bHRpcGxlICYmICFpRm9ybUNvbnRyb2wuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLW1pbnVzXCIgKGNsaWNrKT1cInJlbW92ZUltYWdlVXJsQXQoaWR4KVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChkZXNjcmlwdG9yLmZpbGVNdWx0aXBsZSAmJiAhaUZvcm1Db250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBsdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1wcmltYXJ5IHctYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ21uZ0VkaXRvci5pbWFnZVVybEFkZCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEltYWdlVXJsKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAZGVmYXVsdCB7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgW2lkXT1cIiRhbnkoa2V5KVwiXG4gICAgICAgICAgICBbdHlwZV09XCJwcm9wcy50eXBlIHx8ICd0ZXh0J1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaUZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgICAgIFttbmdJbnB1dFRyaW1dPVwiZGVzY3JpcHRvci50cmltT3B0aW9uXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkZXNjcmlwdG9yLnBsYWNlaG9sZGVyID8/ICcnIHwgdHJhbnNsYXRlXCIgLz5cbiAgICB9XG59XG4iXX0=
@@ -1,23 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';
2
- import { ACommonsFormlyFieldType } from '../formly-field-type.abstract.component';
3
- import * as i0 from "@angular/core";
4
- export class FormlyFieldLabelComponent extends ACommonsFormlyFieldType {
5
- constructor() {
6
- super(...arguments);
7
- this.className = 'hidden';
8
- }
9
- ngOnInit() {
10
- super.ngOnInit();
11
- this.formControl?.patchValue(this.descriptor.label);
12
- }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FormlyFieldLabelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: FormlyFieldLabelComponent, isStandalone: true, selector: "mng-formly-field-label", host: { properties: { "class": "this.className" } }, usesInheritance: true, ngImport: i0, template: "", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15
- }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FormlyFieldLabelComponent, decorators: [{
17
- type: Component,
18
- args: [{ standalone: true, selector: 'mng-formly-field-label', changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
19
- }], propDecorators: { className: [{
20
- type: HostBinding,
21
- args: ['class']
22
- }] } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWxhYmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtbGFiZWwvZm9ybWx5LWZpZWxkLWxhYmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtbGFiZWwvZm9ybWx5LWZpZWxkLWxhYmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBSXRGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDOztBQVFoRixNQUFNLE9BQU8seUJBQTBCLFNBQVEsdUJBQTREO0lBTjNHOztRQU9pQyxjQUFTLEdBQUcsUUFBUSxDQUFDO0tBT3JEO0lBTG1CLFFBQVE7UUFDcEIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQzsrR0FQUSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw4SkNadEMsRUFBQTs7NEZEWWEseUJBQXlCO2tCQU5yQyxTQUFTO2lDQUNNLElBQUksWUFDTix3QkFBd0IsbUJBRWpCLHVCQUF1QixDQUFDLE1BQU07OEJBR2xCLFNBQVM7c0JBQXJDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7RmllbGRJbnB1dERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7QUNvbW1vbnNGb3JtbHlGaWVsZFR5cGV9IGZyb20gJy4uL2Zvcm1seS1maWVsZC10eXBlLmFic3RyYWN0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctZm9ybWx5LWZpZWxkLWxhYmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LWZpZWxkLWxhYmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlGaWVsZExhYmVsQ29tcG9uZW50IGV4dGVuZHMgQUNvbW1vbnNGb3JtbHlGaWVsZFR5cGU8YW55LCBhbnksIEZpZWxkSW5wdXREZXNjcmlwdG9yPGFueT4+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHVibGljIGNsYXNzTmFtZSA9ICdoaWRkZW4nO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2w/LnBhdGNoVmFsdWUodGhpcy5kZXNjcmlwdG9yLmxhYmVsKTtcbiAgICB9XG59XG4iLCIiXX0=