@alauda-fe/dynamic-plugin-shared 0.0.1-alpha.9 → 0.0.3-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/assets/i18n/en/dynamic-plugin-shared.json +3 -0
  2. package/assets/images/overview-banner.svg +1 -0
  3. package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs +3038 -1828
  4. package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs.map +1 -1
  5. package/package.json +15 -17
  6. package/styles/lib.scss +1 -1
  7. package/styles/mixins.scss +1 -210
  8. package/styles/var.scss +1 -26
  9. package/types/alauda-fe-dynamic-plugin-shared.d.ts +5692 -0
  10. package/array-form-table/base-string-map-form.component.d.ts +0 -22
  11. package/array-form-table/form/component.d.ts +0 -106
  12. package/array-form-table/form/index.d.ts +0 -3
  13. package/array-form-table/index.d.ts +0 -10
  14. package/array-form-table/key-value-form/component.d.ts +0 -38
  15. package/array-form-table/key-value-table/component.d.ts +0 -9
  16. package/array-form-table/string-array-form/component.d.ts +0 -41
  17. package/async-data/async-data-loader.d.ts +0 -31
  18. package/async-data/error-page/component.d.ts +0 -30
  19. package/async-data/index.d.ts +0 -13
  20. package/async-data/page-state/component.d.ts +0 -21
  21. package/async-data/types.d.ts +0 -29
  22. package/code-editor/code-display-dialog/component.d.ts +0 -17
  23. package/code-editor/code-editor-configs.d.ts +0 -19
  24. package/code-editor/index.d.ts +0 -10
  25. package/code-editor/k8s-yaml-display-dialog/component.d.ts +0 -16
  26. package/code-editor/resource-yaml-display/component.d.ts +0 -21
  27. package/components/card-section/card-section.component.d.ts +0 -9
  28. package/components/confirm-delete/confirm-delete.component.d.ts +0 -57
  29. package/components/confirm-delete/utils.d.ts +0 -25
  30. package/components/current-time/component.d.ts +0 -14
  31. package/components/custom-columns-setting/component.d.ts +0 -16
  32. package/components/custom-columns-setting/index.d.ts +0 -1
  33. package/components/date-range-picker/component.d.ts +0 -55
  34. package/components/date-range-picker/index.d.ts +0 -3
  35. package/components/date-range-picker/type.d.ts +0 -36
  36. package/components/date-range-picker/util.d.ts +0 -11
  37. package/components/disabled-container/disabled-container.component.d.ts +0 -21
  38. package/components/disabled-container/index.d.ts +0 -7
  39. package/components/field-set/column/component.d.ts +0 -10
  40. package/components/field-set/group/component.d.ts +0 -6
  41. package/components/field-set/index.d.ts +0 -7
  42. package/components/field-set/item/component.d.ts +0 -13
  43. package/components/foldable-block/component.d.ts +0 -17
  44. package/components/foldable-item-in-table/component.d.ts +0 -21
  45. package/components/help-document/component.d.ts +0 -29
  46. package/components/help-document/directive.d.ts +0 -20
  47. package/components/help-document/index.d.ts +0 -8
  48. package/components/help-document/service.d.ts +0 -20
  49. package/components/index.d.ts +0 -32
  50. package/components/loading-mask/loading-mask.component.d.ts +0 -13
  51. package/components/page-guard/component/component.d.ts +0 -40
  52. package/components/page-guard/component/helper-directives.d.ts +0 -17
  53. package/components/page-guard/component/page-guard.type.d.ts +0 -86
  54. package/components/page-guard/index.d.ts +0 -12
  55. package/components/password-input/component.d.ts +0 -39
  56. package/components/pod-status/component.d.ts +0 -25
  57. package/components/pod-status/index.d.ts +0 -3
  58. package/components/pod-status/status.d.ts +0 -4
  59. package/components/pod-status/typings.d.ts +0 -16
  60. package/components/relative-time/component.d.ts +0 -15
  61. package/components/resource-label/component.d.ts +0 -25
  62. package/components/resource-multi-select/component.d.ts +0 -41
  63. package/components/resource-multi-select/util.d.ts +0 -10
  64. package/components/search-panel/component.d.ts +0 -16
  65. package/components/search-panel/helper.directive.d.ts +0 -5
  66. package/components/search-panel/search-item/component.d.ts +0 -7
  67. package/components/select-prefix-label/directive.d.ts +0 -17
  68. package/components/status-icon/status-icon.component.d.ts +0 -16
  69. package/components/tags-label/component.d.ts +0 -56
  70. package/components/terminating-tag/component.d.ts +0 -7
  71. package/components/text-ellipsis/component.d.ts +0 -9
  72. package/components/text-tooltip/directive.d.ts +0 -21
  73. package/components/text-with-url/component.d.ts +0 -12
  74. package/components/upload-file/component.d.ts +0 -32
  75. package/components/workload-status/component.d.ts +0 -37
  76. package/components/workload-status/index.d.ts +0 -1
  77. package/components/zero-state/zero-state.component.d.ts +0 -17
  78. package/constants/common.d.ts +0 -64
  79. package/constants/index.d.ts +0 -6
  80. package/constants/k8s.d.ts +0 -12
  81. package/constants/patterns.d.ts +0 -124
  82. package/constants/resource-definitions.d.ts +0 -414
  83. package/constants/status-icons.d.ts +0 -34
  84. package/constants/timezones.d.ts +0 -6
  85. package/directives/aui-code-editor.directive.d.ts +0 -13
  86. package/directives/click-outside.directive.d.ts +0 -12
  87. package/directives/declare.directive.d.ts +0 -8
  88. package/directives/disabled.directive.d.ts +0 -28
  89. package/directives/effect-directive/coerce-number.directive.d.ts +0 -8
  90. package/directives/effect-directive/e2e-attribute-binding.directive.d.ts +0 -10
  91. package/directives/effect-directive/event.directive.d.ts +0 -47
  92. package/directives/effect-directive/index.d.ts +0 -12
  93. package/directives/effect-directive/min-max.directive.d.ts +0 -30
  94. package/directives/effect-directive/trim.directive.d.ts +0 -7
  95. package/directives/effect-directive/validators.directive.d.ts +0 -12
  96. package/directives/feature-gate.directive.d.ts +0 -31
  97. package/directives/index.d.ts +0 -12
  98. package/directives/last-form-item.directive.d.ts +0 -8
  99. package/directives/readonly-field.directive.d.ts +0 -39
  100. package/directives/resize.directive.d.ts +0 -17
  101. package/directives/scroll-border-observer.directive.d.ts +0 -23
  102. package/directives/scroll-to-first-invalid.directive.d.ts +0 -24
  103. package/directives/value-trace.directive.d.ts +0 -27
  104. package/esm2022/alauda-fe-dynamic-plugin-shared.mjs +0 -5
  105. package/esm2022/array-form-table/base-string-map-form.component.mjs +0 -92
  106. package/esm2022/array-form-table/form/component.mjs +0 -266
  107. package/esm2022/array-form-table/form/index.mjs +0 -13
  108. package/esm2022/array-form-table/index.mjs +0 -11
  109. package/esm2022/array-form-table/key-value-form/component.mjs +0 -135
  110. package/esm2022/array-form-table/key-value-table/component.mjs +0 -24
  111. package/esm2022/array-form-table/string-array-form/component.mjs +0 -168
  112. package/esm2022/async-data/async-data-loader.mjs +0 -63
  113. package/esm2022/async-data/error-page/component.mjs +0 -54
  114. package/esm2022/async-data/index.mjs +0 -18
  115. package/esm2022/async-data/page-state/component.mjs +0 -62
  116. package/esm2022/async-data/types.mjs +0 -6
  117. package/esm2022/code-editor/code-display-dialog/component.mjs +0 -35
  118. package/esm2022/code-editor/code-editor-configs.mjs +0 -66
  119. package/esm2022/code-editor/index.mjs +0 -11
  120. package/esm2022/code-editor/k8s-yaml-display-dialog/component.mjs +0 -26
  121. package/esm2022/code-editor/resource-yaml-display/component.mjs +0 -67
  122. package/esm2022/components/card-section/card-section.component.mjs +0 -24
  123. package/esm2022/components/confirm-delete/confirm-delete.component.mjs +0 -192
  124. package/esm2022/components/confirm-delete/utils.mjs +0 -8
  125. package/esm2022/components/current-time/component.mjs +0 -39
  126. package/esm2022/components/custom-columns-setting/component.mjs +0 -75
  127. package/esm2022/components/custom-columns-setting/index.mjs +0 -2
  128. package/esm2022/components/date-range-picker/component.mjs +0 -215
  129. package/esm2022/components/date-range-picker/index.mjs +0 -4
  130. package/esm2022/components/date-range-picker/type.mjs +0 -2
  131. package/esm2022/components/date-range-picker/util.mjs +0 -57
  132. package/esm2022/components/disabled-container/disabled-container.component.mjs +0 -81
  133. package/esm2022/components/disabled-container/index.mjs +0 -8
  134. package/esm2022/components/field-set/column/component.mjs +0 -25
  135. package/esm2022/components/field-set/group/component.mjs +0 -16
  136. package/esm2022/components/field-set/index.mjs +0 -14
  137. package/esm2022/components/field-set/item/component.mjs +0 -41
  138. package/esm2022/components/foldable-block/component.mjs +0 -60
  139. package/esm2022/components/foldable-item-in-table/component.mjs +0 -56
  140. package/esm2022/components/help-document/component.mjs +0 -69
  141. package/esm2022/components/help-document/directive.mjs +0 -70
  142. package/esm2022/components/help-document/index.mjs +0 -9
  143. package/esm2022/components/help-document/service.mjs +0 -43
  144. package/esm2022/components/index.mjs +0 -33
  145. package/esm2022/components/loading-mask/loading-mask.component.mjs +0 -35
  146. package/esm2022/components/page-guard/component/component.mjs +0 -101
  147. package/esm2022/components/page-guard/component/helper-directives.mjs +0 -51
  148. package/esm2022/components/page-guard/component/page-guard.type.mjs +0 -82
  149. package/esm2022/components/page-guard/index.mjs +0 -19
  150. package/esm2022/components/password-input/component.mjs +0 -143
  151. package/esm2022/components/pod-status/component.mjs +0 -49
  152. package/esm2022/components/pod-status/index.mjs +0 -4
  153. package/esm2022/components/pod-status/status.mjs +0 -84
  154. package/esm2022/components/pod-status/typings.mjs +0 -19
  155. package/esm2022/components/relative-time/component.mjs +0 -58
  156. package/esm2022/components/resource-label/component.mjs +0 -100
  157. package/esm2022/components/resource-multi-select/component.mjs +0 -152
  158. package/esm2022/components/resource-multi-select/util.mjs +0 -24
  159. package/esm2022/components/search-panel/component.mjs +0 -51
  160. package/esm2022/components/search-panel/helper.directive.mjs +0 -14
  161. package/esm2022/components/search-panel/search-item/component.mjs +0 -15
  162. package/esm2022/components/select-prefix-label/directive.mjs +0 -89
  163. package/esm2022/components/status-icon/status-icon.component.mjs +0 -56
  164. package/esm2022/components/tags-label/component.mjs +0 -224
  165. package/esm2022/components/terminating-tag/component.mjs +0 -16
  166. package/esm2022/components/text-ellipsis/component.mjs +0 -28
  167. package/esm2022/components/text-tooltip/directive.mjs +0 -71
  168. package/esm2022/components/text-with-url/component.mjs +0 -40
  169. package/esm2022/components/upload-file/component.mjs +0 -95
  170. package/esm2022/components/workload-status/component.mjs +0 -33
  171. package/esm2022/components/workload-status/index.mjs +0 -2
  172. package/esm2022/components/zero-state/zero-state.component.mjs +0 -56
  173. package/esm2022/constants/common.mjs +0 -86
  174. package/esm2022/constants/index.mjs +0 -7
  175. package/esm2022/constants/k8s.mjs +0 -13
  176. package/esm2022/constants/patterns.mjs +0 -142
  177. package/esm2022/constants/resource-definitions.mjs +0 -424
  178. package/esm2022/constants/status-icons.mjs +0 -65
  179. package/esm2022/constants/timezones.mjs +0 -234
  180. package/esm2022/directives/aui-code-editor.directive.mjs +0 -30
  181. package/esm2022/directives/click-outside.directive.mjs +0 -49
  182. package/esm2022/directives/declare.directive.mjs +0 -27
  183. package/esm2022/directives/disabled.directive.mjs +0 -76
  184. package/esm2022/directives/effect-directive/coerce-number.directive.mjs +0 -54
  185. package/esm2022/directives/effect-directive/e2e-attribute-binding.directive.mjs +0 -57
  186. package/esm2022/directives/effect-directive/event.directive.mjs +0 -129
  187. package/esm2022/directives/effect-directive/index.mjs +0 -21
  188. package/esm2022/directives/effect-directive/min-max.directive.mjs +0 -107
  189. package/esm2022/directives/effect-directive/trim.directive.mjs +0 -40
  190. package/esm2022/directives/effect-directive/validators.directive.mjs +0 -43
  191. package/esm2022/directives/feature-gate.directive.mjs +0 -90
  192. package/esm2022/directives/index.mjs +0 -13
  193. package/esm2022/directives/last-form-item.directive.mjs +0 -18
  194. package/esm2022/directives/readonly-field.directive.mjs +0 -145
  195. package/esm2022/directives/resize.directive.mjs +0 -39
  196. package/esm2022/directives/scroll-border-observer.directive.mjs +0 -77
  197. package/esm2022/directives/scroll-to-first-invalid.directive.mjs +0 -126
  198. package/esm2022/directives/value-trace.directive.mjs +0 -61
  199. package/esm2022/form/base-form-container.mjs +0 -126
  200. package/esm2022/form/base-nested-form-control.mjs +0 -190
  201. package/esm2022/form/errors-mapper/base-errors-mapper.mjs +0 -41
  202. package/esm2022/form/errors-mapper/default-errors-mapper.service.mjs +0 -65
  203. package/esm2022/form/errors-mapper/errors-mapper-component/component.mjs +0 -53
  204. package/esm2022/form/errors-mapper/errors-mapper.directive.mjs +0 -109
  205. package/esm2022/form/errors-mapper/index.mjs +0 -10
  206. package/esm2022/form/errors-mapper/types.mjs +0 -2
  207. package/esm2022/form/index.mjs +0 -6
  208. package/esm2022/form/utils.mjs +0 -61
  209. package/esm2022/form/validators/async-function-validator.directive.mjs +0 -49
  210. package/esm2022/form/validators/dns1123-subdomain.mjs +0 -42
  211. package/esm2022/form/validators/function-validator.directive.mjs +0 -49
  212. package/esm2022/form/validators/index.mjs +0 -10
  213. package/esm2022/form/validators/maxlength-minlength-validator.directive.mjs +0 -71
  214. package/esm2022/form/validators/not-be-validator.directive.mjs +0 -56
  215. package/esm2022/form/validators/one-of-validator.directive.mjs +0 -57
  216. package/esm2022/form/validators/resource-limit.mjs +0 -79
  217. package/esm2022/form/validators/strong-password/index.mjs +0 -4
  218. package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +0 -15
  219. package/esm2022/form/validators/strong-password/strong-password-validator.directive.mjs +0 -171
  220. package/esm2022/form/validators/strong-password/strong-password-validator.module.mjs +0 -36
  221. package/esm2022/form/validators/utils.mjs +0 -155
  222. package/esm2022/index.mjs +0 -15
  223. package/esm2022/k8s-resource-list/footer/component.mjs +0 -161
  224. package/esm2022/k8s-resource-list/index.mjs +0 -18
  225. package/esm2022/k8s-resource-list/k8s-resource-list.mjs +0 -224
  226. package/esm2022/k8s-resource-list/k8s-resource-paged-list.mjs +0 -174
  227. package/esm2022/k8s-resource-list/types.mjs +0 -11
  228. package/esm2022/k8s-resource-list/utils.mjs +0 -84
  229. package/esm2022/k8s-shared/constants.mjs +0 -53
  230. package/esm2022/k8s-shared/index.mjs +0 -12
  231. package/esm2022/k8s-shared/k8s-resource-translate-key.pipe.mjs +0 -31
  232. package/esm2022/k8s-shared/k8s-shared-util.service.mjs +0 -152
  233. package/esm2022/k8s-shared/resource-mark/component.mjs +0 -54
  234. package/esm2022/k8s-shared/resource-mark/util.mjs +0 -137
  235. package/esm2022/k8s-shared/update-description-dialog/component.mjs +0 -66
  236. package/esm2022/k8s-shared/update-display-name-dialog/component.mjs +0 -59
  237. package/esm2022/k8s-shared/update-key-value-dialog/component.mjs +0 -76
  238. package/esm2022/page-deactivate/deactivate.directive.mjs +0 -50
  239. package/esm2022/page-deactivate/deactivate.guard.mjs +0 -41
  240. package/esm2022/page-deactivate/deactivate.service.mjs +0 -78
  241. package/esm2022/page-deactivate/index.mjs +0 -4
  242. package/esm2022/pipes/calc.pipe.mjs +0 -21
  243. package/esm2022/pipes/cron-human-readable.pipe.mjs +0 -30
  244. package/esm2022/pipes/crontab-next.pipe.mjs +0 -67
  245. package/esm2022/pipes/duration.pipe.mjs +0 -51
  246. package/esm2022/pipes/field-not-available.pipe.mjs +0 -25
  247. package/esm2022/pipes/img-header.pipe.mjs +0 -18
  248. package/esm2022/pipes/img-theme.pipe.mjs +0 -38
  249. package/esm2022/pipes/index.mjs +0 -19
  250. package/esm2022/pipes/keyvalue.pipe.mjs +0 -20
  251. package/esm2022/pipes/marked.pipe.mjs +0 -18
  252. package/esm2022/pipes/minimum-format.pipe.mjs +0 -25
  253. package/esm2022/pipes/page-env.pipe.mjs +0 -69
  254. package/esm2022/pipes/parse-json-translate.pipe.mjs +0 -28
  255. package/esm2022/pipes/parse-json.pipe.mjs +0 -22
  256. package/esm2022/pipes/pure.pipe.mjs +0 -26
  257. package/esm2022/pipes/safe.pipe.mjs +0 -49
  258. package/esm2022/pipes/sanitize.pipe.mjs +0 -31
  259. package/esm2022/pipes/time.pipe.mjs +0 -113
  260. package/esm2022/pipes/timezone-display.pipe.mjs +0 -21
  261. package/esm2022/services/form-row-duplicate/form-row-duplicate.service.mjs +0 -280
  262. package/esm2022/services/index.mjs +0 -4
  263. package/esm2022/services/on-resize.service.mjs +0 -52
  264. package/esm2022/services/yaml-util.service.mjs +0 -99
  265. package/esm2022/types/common.mjs +0 -6
  266. package/esm2022/types/helpers.mjs +0 -12
  267. package/esm2022/types/index.mjs +0 -10
  268. package/esm2022/types/k8s/core.mjs +0 -2
  269. package/esm2022/types/k8s/crd.mjs +0 -57
  270. package/esm2022/types/k8s/index.mjs +0 -4
  271. package/esm2022/types/k8s/raw.mjs +0 -77
  272. package/esm2022/types/schema.mjs +0 -2
  273. package/esm2022/utils/browser.mjs +0 -21
  274. package/esm2022/utils/cache-store.mjs +0 -83
  275. package/esm2022/utils/color-helpers.mjs +0 -6
  276. package/esm2022/utils/common.mjs +0 -315
  277. package/esm2022/utils/cron-util.mjs +0 -44
  278. package/esm2022/utils/decorators.mjs +0 -137
  279. package/esm2022/utils/disabled-state.mjs +0 -47
  280. package/esm2022/utils/format-number.mjs +0 -227
  281. package/esm2022/utils/index.mjs +0 -24
  282. package/esm2022/utils/local-storage-constants.mjs +0 -2
  283. package/esm2022/utils/node.mjs +0 -18
  284. package/esm2022/utils/observable.mjs +0 -32
  285. package/esm2022/utils/operators.mjs +0 -38
  286. package/esm2022/utils/request-pool.mjs +0 -37
  287. package/esm2022/utils/resources.mjs +0 -66
  288. package/esm2022/utils/router.mjs +0 -20
  289. package/esm2022/utils/sort-fn.mjs +0 -7
  290. package/esm2022/utils/tree.mjs +0 -79
  291. package/esm2022/utils/unit.mjs +0 -191
  292. package/esm2022/utils/version.mjs +0 -76
  293. package/esm2022/utils/with-load-state.mjs +0 -21
  294. package/esm2022/utils/workload.mjs +0 -183
  295. package/esm2022/utils/workspace.mjs +0 -59
  296. package/esm2022/utils/yaml.mjs +0 -54
  297. package/form/base-form-container.d.ts +0 -41
  298. package/form/base-nested-form-control.d.ts +0 -58
  299. package/form/errors-mapper/base-errors-mapper.d.ts +0 -13
  300. package/form/errors-mapper/default-errors-mapper.service.d.ts +0 -10
  301. package/form/errors-mapper/errors-mapper-component/component.d.ts +0 -19
  302. package/form/errors-mapper/errors-mapper.directive.d.ts +0 -39
  303. package/form/errors-mapper/index.d.ts +0 -6
  304. package/form/errors-mapper/types.d.ts +0 -16
  305. package/form/index.d.ts +0 -5
  306. package/form/utils.d.ts +0 -40
  307. package/form/validators/async-function-validator.directive.d.ts +0 -11
  308. package/form/validators/dns1123-subdomain.d.ts +0 -28
  309. package/form/validators/function-validator.directive.d.ts +0 -11
  310. package/form/validators/index.d.ts +0 -9
  311. package/form/validators/maxlength-minlength-validator.directive.d.ts +0 -20
  312. package/form/validators/not-be-validator.directive.d.ts +0 -12
  313. package/form/validators/one-of-validator.directive.d.ts +0 -12
  314. package/form/validators/resource-limit.d.ts +0 -17
  315. package/form/validators/strong-password/index.d.ts +0 -3
  316. package/form/validators/strong-password/strong-password-tooltip/component.d.ts +0 -6
  317. package/form/validators/strong-password/strong-password-validator.directive.d.ts +0 -34
  318. package/form/validators/strong-password/strong-password-validator.module.d.ts +0 -12
  319. package/form/validators/utils.d.ts +0 -67
  320. package/index.d.ts +0 -14
  321. package/k8s-resource-list/footer/component.d.ts +0 -43
  322. package/k8s-resource-list/index.d.ts +0 -13
  323. package/k8s-resource-list/k8s-resource-list.d.ts +0 -42
  324. package/k8s-resource-list/k8s-resource-paged-list.d.ts +0 -61
  325. package/k8s-resource-list/types.d.ts +0 -70
  326. package/k8s-resource-list/utils.d.ts +0 -19
  327. package/k8s-shared/constants.d.ts +0 -7
  328. package/k8s-shared/index.d.ts +0 -11
  329. package/k8s-shared/k8s-resource-translate-key.pipe.d.ts +0 -9
  330. package/k8s-shared/k8s-shared-util.service.d.ts +0 -48
  331. package/k8s-shared/resource-mark/component.d.ts +0 -16
  332. package/k8s-shared/resource-mark/util.d.ts +0 -2
  333. package/k8s-shared/update-description-dialog/component.d.ts +0 -33
  334. package/k8s-shared/update-display-name-dialog/component.d.ts +0 -27
  335. package/k8s-shared/update-key-value-dialog/component.d.ts +0 -38
  336. package/page-deactivate/deactivate.directive.d.ts +0 -18
  337. package/page-deactivate/deactivate.guard.d.ts +0 -13
  338. package/page-deactivate/deactivate.service.d.ts +0 -28
  339. package/page-deactivate/index.d.ts +0 -3
  340. package/pipes/calc.pipe.d.ts +0 -11
  341. package/pipes/cron-human-readable.pipe.d.ts +0 -9
  342. package/pipes/crontab-next.pipe.d.ts +0 -18
  343. package/pipes/duration.pipe.d.ts +0 -10
  344. package/pipes/field-not-available.pipe.d.ts +0 -13
  345. package/pipes/img-header.pipe.d.ts +0 -7
  346. package/pipes/img-theme.pipe.d.ts +0 -13
  347. package/pipes/index.d.ts +0 -18
  348. package/pipes/keyvalue.pipe.d.ts +0 -9
  349. package/pipes/marked.pipe.d.ts +0 -8
  350. package/pipes/minimum-format.pipe.d.ts +0 -10
  351. package/pipes/page-env.pipe.d.ts +0 -34
  352. package/pipes/parse-json-translate.pipe.d.ts +0 -8
  353. package/pipes/parse-json.pipe.d.ts +0 -7
  354. package/pipes/pure.pipe.d.ts +0 -17
  355. package/pipes/safe.pipe.d.ts +0 -10
  356. package/pipes/sanitize.pipe.d.ts +0 -10
  357. package/pipes/time.pipe.d.ts +0 -40
  358. package/pipes/timezone-display.pipe.d.ts +0 -10
  359. package/services/form-row-duplicate/form-row-duplicate.service.d.ts +0 -45
  360. package/services/index.d.ts +0 -3
  361. package/services/on-resize.service.d.ts +0 -20
  362. package/services/yaml-util.service.d.ts +0 -20
  363. package/styles/global.scss +0 -904
  364. package/types/common.d.ts +0 -42
  365. package/types/helpers.d.ts +0 -35
  366. package/types/index.d.ts +0 -9
  367. package/types/k8s/core.d.ts +0 -100
  368. package/types/k8s/crd.d.ts +0 -497
  369. package/types/k8s/index.d.ts +0 -3
  370. package/types/k8s/raw.d.ts +0 -860
  371. package/types/schema.d.ts +0 -14
  372. package/utils/browser.d.ts +0 -4
  373. package/utils/cache-store.d.ts +0 -35
  374. package/utils/color-helpers.d.ts +0 -4
  375. package/utils/common.d.ts +0 -64
  376. package/utils/cron-util.d.ts +0 -8
  377. package/utils/decorators.d.ts +0 -14
  378. package/utils/disabled-state.d.ts +0 -20
  379. package/utils/format-number.d.ts +0 -11
  380. package/utils/index.d.ts +0 -23
  381. package/utils/local-storage-constants.d.ts +0 -1
  382. package/utils/node.d.ts +0 -8
  383. package/utils/observable.d.ts +0 -5
  384. package/utils/operators.d.ts +0 -22
  385. package/utils/request-pool.d.ts +0 -12
  386. package/utils/resources.d.ts +0 -19
  387. package/utils/router.d.ts +0 -3
  388. package/utils/sort-fn.d.ts +0 -2
  389. package/utils/tree.d.ts +0 -16
  390. package/utils/unit.d.ts +0 -21
  391. package/utils/version.d.ts +0 -39
  392. package/utils/with-load-state.d.ts +0 -11
  393. package/utils/workload.d.ts +0 -66
  394. package/utils/workspace.d.ts +0 -28
  395. package/utils/yaml.d.ts +0 -11
@@ -1,13 +0,0 @@
1
- import { ArrayFormTableComponent, ArrayFormTableFooterDirective, ArrayFormTableHeaderDirective, ArrayFormTableRowControlDirective, ArrayFormTableRowDirective, ArrayFormTableRowErrorDirective, ArrayFormTableZeroStateDirective, ArrayFormTableRowSeparatorDirective, } from './component';
2
- export * from './component';
3
- export const ARRAY_FORM_TABLE_MODULE = [
4
- ArrayFormTableComponent,
5
- ArrayFormTableFooterDirective,
6
- ArrayFormTableHeaderDirective,
7
- ArrayFormTableRowControlDirective,
8
- ArrayFormTableRowDirective,
9
- ArrayFormTableRowErrorDirective,
10
- ArrayFormTableZeroStateDirective,
11
- ArrayFormTableRowSeparatorDirective,
12
- ];
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2R5bmFtaWMtcGx1Z2luLXNoYXJlZC9zcmMvYXJyYXktZm9ybS10YWJsZS9mb3JtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3QixpQ0FBaUMsRUFDakMsMEJBQTBCLEVBQzFCLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsbUNBQW1DLEdBQ3BDLE1BQU0sYUFBYSxDQUFDO0FBRXJCLGNBQWMsYUFBYSxDQUFDO0FBRTVCLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLHVCQUF1QjtJQUN2Qiw2QkFBNkI7SUFDN0IsNkJBQTZCO0lBQzdCLGlDQUFpQztJQUNqQywwQkFBMEI7SUFDMUIsK0JBQStCO0lBQy9CLGdDQUFnQztJQUNoQyxtQ0FBbUM7Q0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50LFxuICBBcnJheUZvcm1UYWJsZUZvb3RlckRpcmVjdGl2ZSxcbiAgQXJyYXlGb3JtVGFibGVIZWFkZXJEaXJlY3RpdmUsXG4gIEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbERpcmVjdGl2ZSxcbiAgQXJyYXlGb3JtVGFibGVSb3dEaXJlY3RpdmUsXG4gIEFycmF5Rm9ybVRhYmxlUm93RXJyb3JEaXJlY3RpdmUsXG4gIEFycmF5Rm9ybVRhYmxlWmVyb1N0YXRlRGlyZWN0aXZlLFxuICBBcnJheUZvcm1UYWJsZVJvd1NlcGFyYXRvckRpcmVjdGl2ZSxcbn0gZnJvbSAnLi9jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBBUlJBWV9GT1JNX1RBQkxFX01PRFVMRSA9IFtcbiAgQXJyYXlGb3JtVGFibGVDb21wb25lbnQsXG4gIEFycmF5Rm9ybVRhYmxlRm9vdGVyRGlyZWN0aXZlLFxuICBBcnJheUZvcm1UYWJsZUhlYWRlckRpcmVjdGl2ZSxcbiAgQXJyYXlGb3JtVGFibGVSb3dDb250cm9sRGlyZWN0aXZlLFxuICBBcnJheUZvcm1UYWJsZVJvd0RpcmVjdGl2ZSxcbiAgQXJyYXlGb3JtVGFibGVSb3dFcnJvckRpcmVjdGl2ZSxcbiAgQXJyYXlGb3JtVGFibGVaZXJvU3RhdGVEaXJlY3RpdmUsXG4gIEFycmF5Rm9ybVRhYmxlUm93U2VwYXJhdG9yRGlyZWN0aXZlLFxuXSBhcyBjb25zdDtcbiJdfQ==
@@ -1,11 +0,0 @@
1
- /**
2
- * @packageDocumentation
3
- * @module array-form-table
4
- * @preferred
5
- */
6
- export * from './form';
7
- export * from './key-value-form/component';
8
- export * from './key-value-table/component';
9
- export * from './string-array-form/component';
10
- export * from './base-string-map-form.component';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2R5bmFtaWMtcGx1Z2luLXNoYXJlZC9zcmMvYXJyYXktZm9ybS10YWJsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIGFycmF5LWZvcm0tdGFibGVcbiAqIEBwcmVmZXJyZWRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0nO1xuZXhwb3J0ICogZnJvbSAnLi9rZXktdmFsdWUtZm9ybS9jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXktdmFsdWUtdGFibGUvY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3RyaW5nLWFycmF5LWZvcm0vY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1zdHJpbmctbWFwLWZvcm0uY29tcG9uZW50JztcbiJdfQ==
@@ -1,135 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { ButtonModule, FormModule, IconModule, InputModule } from '@alauda/ui';
3
- import { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';
4
- import { NgIf, NgTemplateOutlet } from '@angular/common';
5
- import { ChangeDetectionStrategy, Component, Input, TemplateRef, } from '@angular/core';
6
- import { ReactiveFormsModule } from '@angular/forms';
7
- import { sortBy } from 'lodash-es';
8
- import { EFFECT_DIRECTIVE_MODULE } from '../../directives';
9
- import { ERRORS_MAPPER_MODULE } from '../../form/errors-mapper';
10
- import { ValidateRowDuplicateService } from '../../services/form-row-duplicate/form-row-duplicate.service';
11
- import { ValueHook } from '../../utils';
12
- import { BaseStringMapFormComponent } from '../base-string-map-form.component';
13
- import { ARRAY_FORM_TABLE_MODULE } from '../form';
14
- import { ArrayFormTableComponent } from '../form/component';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "../form/component";
17
- import * as i2 from "@angular/forms";
18
- import * as i3 from "@alauda/ui";
19
- import * as i4 from "../../form/errors-mapper/errors-mapper-component/component";
20
- import * as i5 from "../../directives/effect-directive/e2e-attribute-binding.directive";
21
- export class KeyValueFormTableComponent extends BaseStringMapFormComponent {
22
- constructor() {
23
- super(...arguments);
24
- this.validator = {
25
- key: [],
26
- value: [],
27
- };
28
- this.errorMapper = {
29
- key: {},
30
- value: {},
31
- };
32
- this.maxRow = Infinity;
33
- this.minRow = 0;
34
- this.readonlyKeys = [];
35
- }
36
- isReadonly(key) {
37
- return this.readonlyKeys.some(toCheckKey => {
38
- if (!toCheckKey) {
39
- return false;
40
- }
41
- if (typeof toCheckKey === 'string') {
42
- return toCheckKey === key;
43
- }
44
- return toCheckKey.test(key);
45
- });
46
- }
47
- getDataValueByIndex(index) {
48
- return this.form.at(index).at(1).value;
49
- }
50
- adaptResourceModel(resource) {
51
- let newFormModel = Object.entries(resource || {});
52
- // 排序,先按字母排序,再把 readonly 的放前面
53
- newFormModel = sortBy(newFormModel, (arr) => arr[0]);
54
- newFormModel.sort((arr1, arr2) => {
55
- const flag1 = this.isReadonly(arr1[0]);
56
- const flag2 = this.isReadonly(arr2[0]);
57
- if ((flag1 && flag2) || (!flag1 && !flag2)) {
58
- return 0;
59
- }
60
- return flag1 ? -1 : 1;
61
- });
62
- if (newFormModel.length === 0) {
63
- newFormModel = this.getDefaultFormModel();
64
- }
65
- return newFormModel;
66
- }
67
- getKeyValidators() {
68
- return this.validator?.key;
69
- }
70
- getValueValidators() {
71
- return this.validator?.value;
72
- }
73
- isLabelReadonly(index) {
74
- const formArray = this.form.controls[index];
75
- return formArray.valid && this.isReadonly(formArray.controls[0].value);
76
- }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: KeyValueFormTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: KeyValueFormTableComponent, isStandalone: true, selector: "acl-key-value-form-table", inputs: { resourceName: "resourceName", resourceNameTranslated: "resourceNameTranslated", multiLineValue: "multiLineValue", validator: "validator", errorMapper: "errorMapper", placeholder: "placeholder", readonly: "readonly", textKey: "textKey", maxRow: "maxRow", minRow: "minRow", readonlyKeys: "readonlyKeys", zeroStateTemplate: "zeroStateTemplate" }, providers: [ValidateRowDuplicateService], usesInheritance: true, ngImport: i0, template: "<acl-array-form-table\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n (add)=\"add(form.length)\"\n (remove)=\"remove($event)\"\n [rows]=\"form.controls\"\n [formGroup]=\"$any(form)\"\n [readonly]=\"readonly\"\n [maxRow]=\"maxRow\"\n [minRow]=\"minRow\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th style=\"width: 33%\">{{ 'key' | translate }}</th>\n <th style=\"width: 66%\">{{ 'value' | translate }}</th>\n </ng-container>\n\n <!-- Input row -->\n <ng-container\n *aclArrayFormTableRow=\"let control; let index = index\"\n [formGroupName]=\"index\"\n >\n <td>\n <input\n [hidden]=\"textKey\"\n (blur)=\"onBlur()\"\n aui-input\n [readonly]=\"readonly || isLabelReadonly(index)\"\n formControlName=\"0\"\n [placeholder]=\"placeholder?.key || ('key' | translate)\"\n />\n <ng-container *ngIf=\"textKey\">\n {{ control.get('0').value }}\n </ng-container>\n </td>\n\n <td>\n <input\n *ngIf=\"!multiLineValue\"\n (blur)=\"onBlur()\"\n aui-input\n [readonly]=\"readonly || isLabelReadonly(index)\"\n formControlName=\"1\"\n [placeholder]=\"placeholder?.value || ('value' | translate)\"\n />\n <div\n *ngIf=\"multiLineValue\"\n class=\"textarea-wrapper\"\n [attr.data-value]=\"getDataValueByIndex(index)\"\n >\n <textarea\n (blur)=\"onBlur()\"\n [readonly]=\"readonly || isLabelReadonly(index)\"\n aui-input\n formControlName=\"1\"\n rows=\"1\"\n [placeholder]=\"placeholder?.value || ('value' | translate)\"\n ></textarea>\n </div>\n </td>\n </ng-container>\n\n <!-- Input error row -->\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n *ngIf=\"control.invalid\"\n colspan=\"3\"\n class=\"acl-table-form-error-hint\"\n >\n <ng-container *ngIf=\"control.errors?.keyIsMissing\">\n {{ 'k8s_resource_label_key_required' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"control.errors?.duplicateError\">\n {{ 'k8s_resource_label_key_duplicated' | translate }}\n </ng-container>\n\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.errors?.key\"\n [errorsMapper]=\"errorMapper?.key\"\n ></acl-errors-mapper>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.errors?.value\"\n [errorsMapper]=\"errorMapper?.value\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let item; let index = index\">\n <button\n [hidden]=\"readonly || isLabelReadonly(index)\"\n aui-button=\"text\"\n type=\"button\"\n [square]=\"true\"\n [plain]=\"true\"\n (click)=\"remove(index)\"\n >\n <aui-icon icon=\"minus_circle\"></aui-icon>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"zeroStateTemplate\">\n <ng-container *aclArrayFormTableZeroState>\n <ng-template [ngTemplateOutlet]=\"zeroStateTemplate\"></ng-template>\n </ng-container>\n </ng-container>\n</acl-array-form-table>\n", styles: [":host{flex:1}:host .textarea-wrapper{display:grid;align-items:stretch}:host .textarea-wrapper:after,:host .textarea-wrapper textarea{grid-area:1/1;width:auto;padding:3px 5px;font:inherit;resize:none;max-height:252px}:host .textarea-wrapper:after{content:attr(data-value) \" \";visibility:hidden;white-space:pre-wrap}:host .textarea-wrapper textarea{overflow:auto;height:auto!important}:host .textarea-wrapper:focus-within textarea:focus{outline:none}td.acl-table-form-error-hint{padding-top:0;color:rgb(var(--aui-color-red));font-size:12px}\n"], dependencies: [{ kind: "component", type: i1.ArrayFormTableComponent, selector: "acl-array-form-table", inputs: ["rowSeparator", "rows", "resourceName", "resourceNameTranslated", "readonly", "addDisabled", "actionColumnDivider", "showZeroState", "showRowError", "rowBackgroundColorFn", "minRow", "minRowTooltip", "maxRow", "maxRowTooltip"], outputs: ["add", "remove"] }, { kind: "directive", type: i1.ArrayFormTableHeaderDirective, selector: "[aclArrayFormTableHeader]" }, { kind: "directive", type: i1.ArrayFormTableRowControlDirective, selector: "[aclArrayFormTableRowControl]" }, { kind: "directive", type: i1.ArrayFormTableRowDirective, selector: "[aclArrayFormTableRow]" }, { kind: "directive", type: i1.ArrayFormTableRowErrorDirective, selector: "[aclArrayFormTableRowError]" }, { kind: "directive", type: i1.ArrayFormTableZeroStateDirective, selector: "[aclArrayFormTableZeroState]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i3.InputComponent, selector: "input[aui-input],textarea[aui-input]", inputs: ["size", "disabled"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: i4.ErrorsMapperComponent, selector: "acl-errors-mapper", inputs: ["errors", "errorsMapper", "errorsMapperFn", "controlName", "ignoreUnknownError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.ButtonComponent, selector: "button[aui-button]", inputs: ["aui-button", "size", "plain", "loading", "round", "square"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i3.IconComponent, selector: "aui-icon", inputs: ["icon", "light", "dark", "link", "margin", "size", "color", "background", "backgroundColor"] }, { kind: "ngmodule", type: FormModule }, { kind: "directive", type: i3.FormItemErrorDirective, selector: "[auiFormItemError]" }, { kind: "directive", type: i5.E2eAttributeBindingDirective, selector: "[click],[routerLink],a[href],[auiTooltip],[auiDropdown]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
79
- }
80
- __decorate([
81
- ValueHook(null, null, function () {
82
- this.form?.controls.forEach((formArray) => {
83
- const [key, value] = formArray.controls;
84
- key.setValidators(this.getKeyValidators());
85
- value.setValidators(this.getValueValidators());
86
- });
87
- }),
88
- __metadata("design:type", Object)
89
- ], KeyValueFormTableComponent.prototype, "validator", void 0);
90
- __decorate([
91
- ValueHook(Boolean),
92
- __metadata("design:type", Array)
93
- ], KeyValueFormTableComponent.prototype, "readonlyKeys", void 0);
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: KeyValueFormTableComponent, decorators: [{
95
- type: Component,
96
- args: [{ selector: 'acl-key-value-form-table', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
97
- ARRAY_FORM_TABLE_MODULE,
98
- ReactiveFormsModule,
99
- ArrayFormTableComponent,
100
- InputModule,
101
- NgIf,
102
- NgTemplateOutlet,
103
- TranslatePipe,
104
- ERRORS_MAPPER_MODULE,
105
- ButtonModule,
106
- IconModule,
107
- FormModule,
108
- EFFECT_DIRECTIVE_MODULE,
109
- ], standalone: true, providers: [ValidateRowDuplicateService], template: "<acl-array-form-table\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n (add)=\"add(form.length)\"\n (remove)=\"remove($event)\"\n [rows]=\"form.controls\"\n [formGroup]=\"$any(form)\"\n [readonly]=\"readonly\"\n [maxRow]=\"maxRow\"\n [minRow]=\"minRow\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th style=\"width: 33%\">{{ 'key' | translate }}</th>\n <th style=\"width: 66%\">{{ 'value' | translate }}</th>\n </ng-container>\n\n <!-- Input row -->\n <ng-container\n *aclArrayFormTableRow=\"let control; let index = index\"\n [formGroupName]=\"index\"\n >\n <td>\n <input\n [hidden]=\"textKey\"\n (blur)=\"onBlur()\"\n aui-input\n [readonly]=\"readonly || isLabelReadonly(index)\"\n formControlName=\"0\"\n [placeholder]=\"placeholder?.key || ('key' | translate)\"\n />\n <ng-container *ngIf=\"textKey\">\n {{ control.get('0').value }}\n </ng-container>\n </td>\n\n <td>\n <input\n *ngIf=\"!multiLineValue\"\n (blur)=\"onBlur()\"\n aui-input\n [readonly]=\"readonly || isLabelReadonly(index)\"\n formControlName=\"1\"\n [placeholder]=\"placeholder?.value || ('value' | translate)\"\n />\n <div\n *ngIf=\"multiLineValue\"\n class=\"textarea-wrapper\"\n [attr.data-value]=\"getDataValueByIndex(index)\"\n >\n <textarea\n (blur)=\"onBlur()\"\n [readonly]=\"readonly || isLabelReadonly(index)\"\n aui-input\n formControlName=\"1\"\n rows=\"1\"\n [placeholder]=\"placeholder?.value || ('value' | translate)\"\n ></textarea>\n </div>\n </td>\n </ng-container>\n\n <!-- Input error row -->\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n *ngIf=\"control.invalid\"\n colspan=\"3\"\n class=\"acl-table-form-error-hint\"\n >\n <ng-container *ngIf=\"control.errors?.keyIsMissing\">\n {{ 'k8s_resource_label_key_required' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"control.errors?.duplicateError\">\n {{ 'k8s_resource_label_key_duplicated' | translate }}\n </ng-container>\n\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.errors?.key\"\n [errorsMapper]=\"errorMapper?.key\"\n ></acl-errors-mapper>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.errors?.value\"\n [errorsMapper]=\"errorMapper?.value\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let item; let index = index\">\n <button\n [hidden]=\"readonly || isLabelReadonly(index)\"\n aui-button=\"text\"\n type=\"button\"\n [square]=\"true\"\n [plain]=\"true\"\n (click)=\"remove(index)\"\n >\n <aui-icon icon=\"minus_circle\"></aui-icon>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"zeroStateTemplate\">\n <ng-container *aclArrayFormTableZeroState>\n <ng-template [ngTemplateOutlet]=\"zeroStateTemplate\"></ng-template>\n </ng-container>\n </ng-container>\n</acl-array-form-table>\n", styles: [":host{flex:1}:host .textarea-wrapper{display:grid;align-items:stretch}:host .textarea-wrapper:after,:host .textarea-wrapper textarea{grid-area:1/1;width:auto;padding:3px 5px;font:inherit;resize:none;max-height:252px}:host .textarea-wrapper:after{content:attr(data-value) \" \";visibility:hidden;white-space:pre-wrap}:host .textarea-wrapper textarea{overflow:auto;height:auto!important}:host .textarea-wrapper:focus-within textarea:focus{outline:none}td.acl-table-form-error-hint{padding-top:0;color:rgb(var(--aui-color-red));font-size:12px}\n"] }]
110
- }], propDecorators: { resourceName: [{
111
- type: Input
112
- }], resourceNameTranslated: [{
113
- type: Input
114
- }], multiLineValue: [{
115
- type: Input
116
- }], validator: [{
117
- type: Input
118
- }], errorMapper: [{
119
- type: Input
120
- }], placeholder: [{
121
- type: Input
122
- }], readonly: [{
123
- type: Input
124
- }], textKey: [{
125
- type: Input
126
- }], maxRow: [{
127
- type: Input
128
- }], minRow: [{
129
- type: Input
130
- }], readonlyKeys: [{
131
- type: Input
132
- }], zeroStateTemplate: [{
133
- type: Input
134
- }] } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2FycmF5LWZvcm0tdGFibGUva2V5LXZhbHVlLWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2FycmF5LWZvcm0tdGFibGUva2V5LXZhbHVlLWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFFTCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLG1CQUFtQixFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUUzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUs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Z0JBT04sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdXR0b25Nb2R1bGUsIEZvcm1Nb2R1bGUsIEljb25Nb2R1bGUsIElucHV0TW9kdWxlIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGFsYXVkYS1mZS9keW5hbWljLXBsdWdpbi1zZGsnO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgc29ydEJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgRUZGRUNUX0RJUkVDVElWRV9NT0RVTEUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEVSUk9SU19NQVBQRVJfTU9EVUxFIH0gZnJvbSAnLi4vLi4vZm9ybS9lcnJvcnMtbWFwcGVyJztcbmltcG9ydCB7IFZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tcm93LWR1cGxpY2F0ZS9mb3JtLXJvdy1kdXBsaWNhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBTdHJpbmdNYXAgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBWYWx1ZUhvb2sgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBCYXNlU3RyaW5nTWFwRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc3RyaW5nLW1hcC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBUlJBWV9GT1JNX1RBQkxFX01PRFVMRSB9IGZyb20gJy4uL2Zvcm0nO1xuaW1wb3J0IHsgQXJyYXlGb3JtVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtL2NvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1rZXktdmFsdWUtZm9ybS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWydzdHlsZXMuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFSUkFZX0ZPUk1fVEFCTEVfTU9EVUxFLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQXJyYXlGb3JtVGFibGVDb21wb25lbnQsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgTmdJZixcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgRm9ybU1vZHVsZSxcbiAgICBFRkZFQ1RfRElSRUNUSVZFX01PRFVMRSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbVmFsaWRhdGVSb3dEdXBsaWNhdGVTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgS2V5VmFsdWVGb3JtVGFibGVDb21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlU3RyaW5nTWFwRm9ybUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBASW5wdXQoKVxuICByZXNvdXJjZU5hbWU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICByZXNvdXJjZU5hbWVUcmFuc2xhdGVkOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbXVsdGlMaW5lVmFsdWU6IGJvb2xlYW47XG5cbiAgQFZhbHVlSG9vayhudWxsLCBudWxsLCBmdW5jdGlvbiAodGhpczogS2V5VmFsdWVGb3JtVGFibGVDb21wb25lbnQpIHtcbiAgICB0aGlzLmZvcm0/LmNvbnRyb2xzLmZvckVhY2goKGZvcm1BcnJheTogRm9ybUFycmF5KSA9PiB7XG4gICAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBmb3JtQXJyYXkuY29udHJvbHM7XG4gICAgICBrZXkuc2V0VmFsaWRhdG9ycyh0aGlzLmdldEtleVZhbGlkYXRvcnMoKSk7XG4gICAgICB2YWx1ZS5zZXRWYWxpZGF0b3JzKHRoaXMuZ2V0VmFsdWVWYWxpZGF0b3JzKCkpO1xuICAgIH0pO1xuICB9KVxuICBASW5wdXQoKVxuICB2YWxpZGF0b3I6IHtcbiAgICBrZXk/OiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW107XG4gICAgdmFsdWU/OiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW107XG4gIH0gPSB7XG4gICAga2V5OiBbXSxcbiAgICB2YWx1ZTogW10sXG4gIH07XG5cbiAgQElucHV0KClcbiAgZXJyb3JNYXBwZXI6IHtcbiAgICBrZXk/OiBTdHJpbmdNYXA7XG4gICAgdmFsdWU/OiBTdHJpbmdNYXA7XG4gIH0gPSB7XG4gICAga2V5OiB7fSxcbiAgICB2YWx1ZToge30sXG4gIH07XG5cbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXI6IHtcbiAgICBrZXk/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgQElucHV0KClcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgdGV4dEtleTogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBtYXhSb3cgPSBJbmZpbml0eTtcblxuICBASW5wdXQoKVxuICBtaW5Sb3cgPSAwO1xuXG4gIEBWYWx1ZUhvb2s8S2V5VmFsdWVGb3JtVGFibGVDb21wb25lbnQsICdyZWFkb25seUtleXMnPihCb29sZWFuKVxuICBASW5wdXQoKVxuICByZWFkb25seUtleXM6IEFycmF5PHN0cmluZyB8IFJlZ0V4cD4gPSBbXTtcblxuICBASW5wdXQoKVxuICB6ZXJvU3RhdGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBpc1JlYWRvbmx5KGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHlLZXlzLnNvbWUodG9DaGVja0tleSA9PiB7XG4gICAgICBpZiAoIXRvQ2hlY2tLZXkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB0b0NoZWNrS2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdG9DaGVja0tleSA9PT0ga2V5O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdG9DaGVja0tleS50ZXN0KGtleSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXREYXRhVmFsdWVCeUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5hdChpbmRleCkgYXMgRm9ybUFycmF5KS5hdCgxKS52YWx1ZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0UmVzb3VyY2VNb2RlbChyZXNvdXJjZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIGxldCBuZXdGb3JtTW9kZWwgPSBPYmplY3QuZW50cmllcyhyZXNvdXJjZSB8fCB7fSk7XG4gICAgLy8g5o6S5bqP77yM5YWI5oyJ5a2X5q+N5o6S5bqP77yM5YaN5oqKIHJlYWRvbmx5IOeahOaUvuWJjemdolxuICAgIG5ld0Zvcm1Nb2RlbCA9IHNvcnRCeShuZXdGb3JtTW9kZWwsIChhcnI6IFtzdHJpbmcsIHN0cmluZ10pID0+IGFyclswXSk7XG4gICAgbmV3Rm9ybU1vZGVsLnNvcnQoKGFycjE6IFtzdHJpbmcsIHN0cmluZ10sIGFycjI6IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICAgIGNvbnN0IGZsYWcxID0gdGhpcy5pc1JlYWRvbmx5KGFycjFbMF0pO1xuICAgICAgY29uc3QgZmxhZzIgPSB0aGlzLmlzUmVhZG9ubHkoYXJyMlswXSk7XG4gICAgICBpZiAoKGZsYWcxICYmIGZsYWcyKSB8fCAoIWZsYWcxICYmICFmbGFnMikpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmxhZzEgPyAtMSA6IDE7XG4gICAgfSk7XG4gICAgaWYgKG5ld0Zvcm1Nb2RlbC5sZW5ndGggPT09IDApIHtcbiAgICAgIG5ld0Zvcm1Nb2RlbCA9IHRoaXMuZ2V0RGVmYXVsdEZvcm1Nb2RlbCgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdGb3JtTW9kZWw7XG4gIH1cblxuICBvdmVycmlkZSBnZXRLZXlWYWxpZGF0b3JzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRvcj8ua2V5O1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0VmFsdWVWYWxpZGF0b3JzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRvcj8udmFsdWU7XG4gIH1cblxuICBpc0xhYmVsUmVhZG9ubHkoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybS5jb250cm9sc1tpbmRleF0gYXMgRm9ybUFycmF5O1xuICAgIHJldHVybiBmb3JtQXJyYXkudmFsaWQgJiYgdGhpcy5pc1JlYWRvbmx5KGZvcm1BcnJheS5jb250cm9sc1swXS52YWx1ZSk7XG4gIH1cbn1cbiIsIjxhY2wtYXJyYXktZm9ybS10YWJsZVxuICBbcmVzb3VyY2VOYW1lXT1cInJlc291cmNlTmFtZVwiXG4gIFtyZXNvdXJjZU5hbWVUcmFuc2xhdGVkXT1cInJlc291cmNlTmFtZVRyYW5zbGF0ZWRcIlxuICAoYWRkKT1cImFkZChmb3JtLmxlbmd0aClcIlxuICAocmVtb3ZlKT1cInJlbW92ZSgkZXZlbnQpXCJcbiAgW3Jvd3NdPVwiZm9ybS5jb250cm9sc1wiXG4gIFtmb3JtR3JvdXBdPVwiJGFueShmb3JtKVwiXG4gIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gIFttYXhSb3ddPVwibWF4Um93XCJcbiAgW21pblJvd109XCJtaW5Sb3dcIlxuPlxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZUhlYWRlcj5cbiAgICA8dGggc3R5bGU9XCJ3aWR0aDogMzMlXCI+e3sgJ2tleScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgIDx0aCBzdHlsZT1cIndpZHRoOiA2NiVcIj57eyAndmFsdWUnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJbnB1dCByb3cgLS0+XG4gIDxuZy1jb250YWluZXJcbiAgICAqYWNsQXJyYXlGb3JtVGFibGVSb3c9XCJsZXQgY29udHJvbDsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgIFtmb3JtR3JvdXBOYW1lXT1cImluZGV4XCJcbiAgPlxuICAgIDx0ZD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBbaGlkZGVuXT1cInRleHRLZXlcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgaXNMYWJlbFJlYWRvbmx5KGluZGV4KVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIjBcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXI/LmtleSB8fCAoJ2tleScgfCB0cmFuc2xhdGUpXCJcbiAgICAgIC8+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGV4dEtleVwiPlxuICAgICAgICB7eyBjb250cm9sLmdldCgnMCcpLnZhbHVlIH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RkPlxuXG4gICAgPHRkPlxuICAgICAgPGlucHV0XG4gICAgICAgICpuZ0lmPVwiIW11bHRpTGluZVZhbHVlXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5IHx8IGlzTGFiZWxSZWFkb25seShpbmRleClcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCIxXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyPy52YWx1ZSB8fCAoJ3ZhbHVlJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgLz5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJtdWx0aUxpbmVWYWx1ZVwiXG4gICAgICAgIGNsYXNzPVwidGV4dGFyZWEtd3JhcHBlclwiXG4gICAgICAgIFthdHRyLmRhdGEtdmFsdWVdPVwiZ2V0RGF0YVZhbHVlQnlJbmRleChpbmRleClcIlxuICAgICAgPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5IHx8IGlzTGFiZWxSZWFkb25seShpbmRleClcIlxuICAgICAgICAgIGF1aS1pbnB1dFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIjFcIlxuICAgICAgICAgIHJvd3M9XCIxXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXI/LnZhbHVlIHx8ICgndmFsdWUnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgID48L3RleHRhcmVhPlxuICAgICAgPC9kaXY+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJbnB1dCBlcnJvciByb3cgLS0+XG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlUm93RXJyb3I9XCJsZXQgY29udHJvbFwiPlxuICAgIDx0ZFxuICAgICAgKm5nSWY9XCJjb250cm9sLmludmFsaWRcIlxuICAgICAgY29sc3Bhbj1cIjNcIlxuICAgICAgY2xhc3M9XCJhY2wtdGFibGUtZm9ybS1lcnJvci1oaW50XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5lcnJvcnM/LmtleUlzTWlzc2luZ1wiPlxuICAgICAgICB7eyAnazhzX3Jlc291cmNlX2xhYmVsX2tleV9yZXF1aXJlZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5lcnJvcnM/LmR1cGxpY2F0ZUVycm9yXCI+XG4gICAgICAgIHt7ICdrOHNfcmVzb3VyY2VfbGFiZWxfa2V5X2R1cGxpY2F0ZWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICAgICAgW2Vycm9yc109XCJjb250cm9sLmVycm9ycz8ua2V5XCJcbiAgICAgICAgW2Vycm9yc01hcHBlcl09XCJlcnJvck1hcHBlcj8ua2V5XCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgICAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICAgICAgW2Vycm9yc109XCJjb250cm9sLmVycm9ycz8udmFsdWVcIlxuICAgICAgICBbZXJyb3JzTWFwcGVyXT1cImVycm9yTWFwcGVyPy52YWx1ZVwiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZVJvd0NvbnRyb2w9XCJsZXQgaXRlbTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICA8YnV0dG9uXG4gICAgICBbaGlkZGVuXT1cInJlYWRvbmx5IHx8IGlzTGFiZWxSZWFkb25seShpbmRleClcIlxuICAgICAgYXVpLWJ1dHRvbj1cInRleHRcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgKGNsaWNrKT1cInJlbW92ZShpbmRleClcIlxuICAgID5cbiAgICAgIDxhdWktaWNvbiBpY29uPVwibWludXNfY2lyY2xlXCI+PC9hdWktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInplcm9TdGF0ZVRlbXBsYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVaZXJvU3RhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiemVyb1N0YXRlVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYWNsLWFycmF5LWZvcm0tdGFibGU+XG4iXX0=
@@ -1,24 +0,0 @@
1
- import { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';
2
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
- import { PurePipe } from '../../pipes/pure.pipe';
4
- import { ARRAY_FORM_TABLE_MODULE } from '../form';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../form/component";
7
- export class KeyValueTableComponent {
8
- constructor() {
9
- this.entries = (value) => value != null && Object.entries(value);
10
- }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: KeyValueTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: KeyValueTableComponent, isStandalone: true, selector: "acl-key-value-table", inputs: { value: "value", resourceName: "resourceName", resourceNameTranslated: "resourceNameTranslated" }, ngImport: i0, template: "<acl-array-form-table\n [rows]=\"value | pure: entries\"\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n [readonly]=\"true\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th>{{ 'key' | translate }}</th>\n <th>{{ 'value' | translate }}</th>\n </ng-container>\n <ng-container *aclArrayFormTableRow=\"let item\">\n <td>{{ item[0] }}</td>\n <td>{{ item[1] }}</td>\n </ng-container>\n</acl-array-form-table>\n", styles: [":host{width:100%}\n"], dependencies: [{ kind: "component", type: i1.ArrayFormTableComponent, selector: "acl-array-form-table", inputs: ["rowSeparator", "rows", "resourceName", "resourceNameTranslated", "readonly", "addDisabled", "actionColumnDivider", "showZeroState", "showRowError", "rowBackgroundColorFn", "minRow", "minRowTooltip", "maxRow", "maxRowTooltip"], outputs: ["add", "remove"] }, { kind: "directive", type: i1.ArrayFormTableHeaderDirective, selector: "[aclArrayFormTableHeader]" }, { kind: "directive", type: i1.ArrayFormTableRowDirective, selector: "[aclArrayFormTableRow]" }, { kind: "pipe", type: PurePipe, name: "pure" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
- }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: KeyValueTableComponent, decorators: [{
15
- type: Component,
16
- args: [{ selector: 'acl-key-value-table', standalone: true, imports: [ARRAY_FORM_TABLE_MODULE, PurePipe, TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<acl-array-form-table\n [rows]=\"value | pure: entries\"\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n [readonly]=\"true\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th>{{ 'key' | translate }}</th>\n <th>{{ 'value' | translate }}</th>\n </ng-container>\n <ng-container *aclArrayFormTableRow=\"let item\">\n <td>{{ item[0] }}</td>\n <td>{{ item[1] }}</td>\n </ng-container>\n</acl-array-form-table>\n", styles: [":host{width:100%}\n"] }]
17
- }], propDecorators: { value: [{
18
- type: Input
19
- }], resourceName: [{
20
- type: Input
21
- }], resourceNameTranslated: [{
22
- type: Input
23
- }] } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2FycmF5LWZvcm0tdGFibGUva2V5LXZhbHVlLXRhYmxlL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZHluYW1pYy1wbHVnaW4tc2hhcmVkL3NyYy9hcnJheS1mb3JtLXRhYmxlL2tleS12YWx1ZS10YWJsZS90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7QUFnQmxELE1BQU0sT0FBTyxzQkFBc0I7SUFkbkM7UUF3QkUsWUFBTyxHQUFHLENBQUMsS0FBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDaEU7OEdBWFksc0JBQXNCO2tHQUF0QixzQkFBc0IsMkxDcEJuQyxzZEFlQSxrbkJERXFDLFFBQVEsd0NBQUUsYUFBYTs7MkZBRy9DLHNCQUFzQjtrQkFkbEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FTbkIsSUFBSSxXQUNQLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxtQkFDMUMsdUJBQXVCLENBQUMsTUFBTTs4QkFJL0MsS0FBSztzQkFESixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixzQkFBc0I7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGFsYXVkYS1mZS9keW5hbWljLXBsdWdpbi1zZGsnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUHVyZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9wdXJlLnBpcGUnO1xuaW1wb3J0IHsgQVJSQVlfRk9STV9UQUJMRV9NT0RVTEUgfSBmcm9tICcuLi9mb3JtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLWtleS12YWx1ZS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FSUkFZX0ZPUk1fVEFCTEVfTU9EVUxFLCBQdXJlUGlwZSwgVHJhbnNsYXRlUGlwZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBLZXlWYWx1ZVRhYmxlQ29tcG9uZW50PFQ+IHtcbiAgQElucHV0KClcbiAgdmFsdWU6IFQ7XG5cbiAgQElucHV0KClcbiAgcmVzb3VyY2VOYW1lOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcmVzb3VyY2VOYW1lVHJhbnNsYXRlZDogc3RyaW5nO1xuXG4gIGVudHJpZXMgPSAodmFsdWU6IFQpID0+IHZhbHVlICE9IG51bGwgJiYgT2JqZWN0LmVudHJpZXModmFsdWUpO1xufVxuIiwiPGFjbC1hcnJheS1mb3JtLXRhYmxlXG4gIFtyb3dzXT1cInZhbHVlIHwgcHVyZTogZW50cmllc1wiXG4gIFtyZXNvdXJjZU5hbWVdPVwicmVzb3VyY2VOYW1lXCJcbiAgW3Jlc291cmNlTmFtZVRyYW5zbGF0ZWRdPVwicmVzb3VyY2VOYW1lVHJhbnNsYXRlZFwiXG4gIFtyZWFkb25seV09XCJ0cnVlXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVIZWFkZXI+XG4gICAgPHRoPnt7ICdrZXknIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgICA8dGg+e3sgJ3ZhbHVlJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZVJvdz1cImxldCBpdGVtXCI+XG4gICAgPHRkPnt7IGl0ZW1bMF0gfX08L3RkPlxuICAgIDx0ZD57eyBpdGVtWzFdIH19PC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG48L2FjbC1hcnJheS1mb3JtLXRhYmxlPlxuIl19
@@ -1,168 +0,0 @@
1
- import { ButtonModule, IconModule, InputModule, TooltipModule, } from '@alauda/ui';
2
- import { TranslatePipe, TranslateService } from '@alauda-fe/dynamic-plugin-sdk';
3
- import { NgIf } from '@angular/common';
4
- import { ChangeDetectionStrategy, Component, Injector, Input, Optional, } from '@angular/core';
5
- import { ControlContainer, ReactiveFormsModule, } from '@angular/forms';
6
- import { BaseResourceFormComponent } from 'ng-resource-form-util';
7
- import { DisabledContainerComponent } from '../../components/disabled-container';
8
- import { EFFECT_DIRECTIVE_MODULE } from '../../directives';
9
- import { ERRORS_MAPPER_MODULE } from '../../form';
10
- import { DUPLICATE_ERROR_KEY, DUPLICATION_JUSTIFY_STRATEGY, ValidateRowDuplicateService, } from '../../services';
11
- import { ARRAY_FORM_TABLE_MODULE } from '../form';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/forms";
14
- import * as i2 from "../../services";
15
- import * as i3 from "@alauda-fe/dynamic-plugin-sdk";
16
- import * as i4 from "../form/component";
17
- import * as i5 from "@alauda/ui";
18
- import * as i6 from "../../directives/effect-directive/e2e-attribute-binding.directive";
19
- import * as i7 from "../../form/errors-mapper/errors-mapper-component/component";
20
- export class StringArrayFormTableComponent extends BaseResourceFormComponent {
21
- set errorMapper(errorMapper) {
22
- this._errorMapper = {
23
- ...this._errorMapper,
24
- ...errorMapper,
25
- };
26
- }
27
- get errorMapper() {
28
- return this._errorMapper;
29
- }
30
- constructor(injector, controlContainer, rowDup, translate) {
31
- super(injector);
32
- this.injector = injector;
33
- this.controlContainer = controlContainer;
34
- this.rowDup = rowDup;
35
- this.translate = translate;
36
- this.placeholder = '';
37
- this.validators = [];
38
- this.enableDuplicateCheck = false;
39
- this.maxLines = 0;
40
- this.maxLinesTooltip = '';
41
- this.minLines = 0;
42
- this.readonlyItems = [];
43
- this._errorMapper = {
44
- [DUPLICATE_ERROR_KEY]: this.translate.get('value_duplication'),
45
- };
46
- }
47
- get length() {
48
- return this.form.length;
49
- }
50
- ngOnChanges({ validators, enableDuplicateCheck }) {
51
- if (validators?.currentValue && this.form) {
52
- this.form.controls.forEach(formControl => {
53
- formControl.setValidators(validators.currentValue);
54
- // 避免动态增加或者移除 validators 的时候表单校验不生效
55
- formControl.updateValueAndValidity();
56
- });
57
- }
58
- if (enableDuplicateCheck?.currentValue !==
59
- enableDuplicateCheck?.previousValue &&
60
- this.form) {
61
- this.form.controls.forEach(formControl => {
62
- formControl[enableDuplicateCheck?.currentValue
63
- ? 'addValidators'
64
- : 'removeValidators'](this.duplicateValidator);
65
- formControl.updateValueAndValidity();
66
- });
67
- }
68
- }
69
- createForm() {
70
- return this.fb.array([]);
71
- }
72
- adaptResourceModel(resource) {
73
- if (!resource) {
74
- return [];
75
- }
76
- return resource.sort((v1, v2) => {
77
- const isReadonly1 = this.isReadonly(v1);
78
- const isReadonly2 = this.isReadonly(v2);
79
- if (isReadonly1 === isReadonly2) {
80
- return 0;
81
- }
82
- return isReadonly1 ? -1 : 1;
83
- });
84
- }
85
- getDefaultFormModel() {
86
- return [];
87
- }
88
- add(index = this.form.length) {
89
- this.form.insert(index, this.getOnFormArrayResizeFn()());
90
- this.cdr.markForCheck();
91
- }
92
- remove(index) {
93
- this.form.removeAt(index);
94
- this.cdr.markForCheck();
95
- }
96
- getOnFormArrayResizeFn() {
97
- this.duplicateValidator =
98
- this.duplicateValidator ||
99
- (this.enableDuplicateCheck &&
100
- this.rowDup.createFormArrayValidator({
101
- rowKeys: ['0'],
102
- valueMapFn: (value) => value,
103
- formArray: this.form,
104
- strategy: DUPLICATION_JUSTIFY_STRATEGY.FULL,
105
- }));
106
- return () => this.fb.control('', [...(this.validators ?? []), this.duplicateValidator].filter(Boolean));
107
- }
108
- isItemReadonly(index) {
109
- const control = this.form.controls[index];
110
- return control.valid && this.isReadonly(control.value);
111
- }
112
- isReadonly(item) {
113
- return this.readonlyItems.some(checkedItem => {
114
- if (!checkedItem) {
115
- return false;
116
- }
117
- if (typeof checkedItem === 'string') {
118
- return checkedItem === item;
119
- }
120
- return checkedItem.test(item);
121
- });
122
- }
123
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: StringArrayFormTableComponent, deps: [{ token: i0.Injector }, { token: i1.ControlContainer, optional: true }, { token: i2.ValidateRowDuplicateService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
124
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: StringArrayFormTableComponent, isStandalone: true, selector: "acl-string-array-form-table", inputs: { multiLineValue: "multiLineValue", resourceName: "resourceName", resourceNameTranslated: "resourceNameTranslated", placeholder: "placeholder", validators: "validators", enableDuplicateCheck: "enableDuplicateCheck", errorMapper: "errorMapper", maxLines: "maxLines", maxLinesTooltip: "maxLinesTooltip", minLines: "minLines", readonlyItems: "readonlyItems", readonlyTooltip: "readonlyTooltip" }, providers: [ValidateRowDuplicateService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<acl-array-form-table\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n (add)=\"add(form.length)\"\n (remove)=\"remove($event)\"\n [rows]=\"form.controls\"\n>\n <!-- Input row -->\n <ng-container *aclArrayFormTableRow=\"let control; let index = index\">\n <td>\n <input\n *ngIf=\"!multiLineValue\"\n (blur)=\"onBlur()\"\n aui-input\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isItemReadonly(index)\"\n />\n\n <div\n *ngIf=\"multiLineValue\"\n class=\"textarea-wrapper\"\n [attr.data-value]=\"control.value\"\n >\n <textarea\n (blur)=\"onBlur()\"\n [placeholder]=\"placeholder\"\n aui-input\n [formControl]=\"control\"\n [readonly]=\"isItemReadonly(index)\"\n rows=\"1\"\n ></textarea>\n </div>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let control; let index = index\">\n <button\n aui-button=\"text\"\n type=\"button\"\n [square]=\"true\"\n [plain]=\"true\"\n [disabled]=\"(minLines && minLines >= length) || isItemReadonly(index)\"\n (click)=\"remove(index)\"\n >\n <aui-icon\n icon=\"minus_circle\"\n [auiTooltip]=\"isItemReadonly(index) && readonlyTooltip\"\n [auiTooltipDisabled]=\"!isItemReadonly(index)\"\n ></aui-icon>\n </button>\n </ng-container>\n\n <!-- Input error row -->\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n class=\"acl-table-form-error-hint\"\n colspan=\"2\"\n *ngIf=\"control.dirty || $any(controlContainer?.formDirective)?.submitted\"\n >\n <acl-errors-mapper\n [errors]=\"control.errors\"\n [errorsMapper]=\"errorMapper\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableFooter>\n <acl-disabled-container\n [isAllowed]=\"true\"\n [isDisabled]=\"maxLines && length >= maxLines\"\n [tooltip]=\"maxLinesTooltip\"\n >\n <button\n aui-button=\"primary\"\n type=\"button\"\n size=\"mini\"\n [plain]=\"true\"\n (click)=\"add(length)\"\n >\n <aui-icon icon=\"plus_circle\"></aui-icon>\n {{ 'add' | translate }}\n </button>\n </acl-disabled-container>\n </ng-container>\n</acl-array-form-table>\n", styles: [":host{display:block;flex:1}:host .textarea-wrapper{display:grid;align-items:stretch}:host .textarea-wrapper:after,:host .textarea-wrapper textarea{grid-area:1/1;width:auto;padding:3px 5px;font:inherit;resize:none;max-height:252px}:host .textarea-wrapper:after{content:attr(data-value) \" \";visibility:hidden;white-space:pre-wrap}:host .textarea-wrapper textarea{overflow:auto;height:auto!important}:host .textarea-wrapper:focus-within textarea:focus{outline:none}:host acl-disabled-container{flex:1;display:flex}:host ::ng-deep .acl-disabled-container{flex:1;display:flex}\n"], dependencies: [{ kind: "component", type: i4.ArrayFormTableComponent, selector: "acl-array-form-table", inputs: ["rowSeparator", "rows", "resourceName", "resourceNameTranslated", "readonly", "addDisabled", "actionColumnDivider", "showZeroState", "showRowError", "rowBackgroundColorFn", "minRow", "minRowTooltip", "maxRow", "maxRowTooltip"], outputs: ["add", "remove"] }, { kind: "directive", type: i4.ArrayFormTableFooterDirective, selector: "[aclArrayFormTableFooter]" }, { kind: "directive", type: i4.ArrayFormTableRowControlDirective, selector: "[aclArrayFormTableRowControl]" }, { kind: "directive", type: i4.ArrayFormTableRowDirective, selector: "[aclArrayFormTableRow]" }, { kind: "directive", type: i4.ArrayFormTableRowErrorDirective, selector: "[aclArrayFormTableRowError]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i5.InputComponent, selector: "input[aui-input],textarea[aui-input]", inputs: ["size", "disabled"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i5.ButtonComponent, selector: "button[aui-button]", inputs: ["aui-button", "size", "plain", "loading", "round", "square"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i5.IconComponent, selector: "aui-icon", inputs: ["icon", "light", "dark", "link", "margin", "size", "color", "background", "backgroundColor"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.TooltipDirective, selector: "[auiTooltip]", inputs: ["auiTooltip", "auiTooltipContext", "auiTooltipClass", "auiTooltipType", "auiTooltipPosition", "auiTooltipTrigger", "auiTooltipDisabled", "auiTooltipHideOnClick", "auiTooltipAnimType"], outputs: ["auiTooltipVisibleChange"], exportAs: ["auiTooltip"] }, { kind: "component", type: DisabledContainerComponent, selector: "acl-disabled-container", inputs: ["tooltip", "tooltipPosition", "tooltipType", "isAllowed", "isDisabled"] }, { kind: "directive", type: i6.E2eAttributeBindingDirective, selector: "[click],[routerLink],a[href],[auiTooltip],[auiDropdown]" }, { kind: "component", type: i7.ErrorsMapperComponent, selector: "acl-errors-mapper", inputs: ["errors", "errorsMapper", "errorsMapperFn", "controlName", "ignoreUnknownError"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
125
- }
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: StringArrayFormTableComponent, decorators: [{
127
- type: Component,
128
- args: [{ selector: 'acl-string-array-form-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
129
- ARRAY_FORM_TABLE_MODULE,
130
- NgIf,
131
- InputModule,
132
- ReactiveFormsModule,
133
- ButtonModule,
134
- IconModule,
135
- TooltipModule,
136
- DisabledContainerComponent,
137
- EFFECT_DIRECTIVE_MODULE,
138
- ERRORS_MAPPER_MODULE,
139
- TranslatePipe,
140
- ], providers: [ValidateRowDuplicateService], template: "<acl-array-form-table\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n (add)=\"add(form.length)\"\n (remove)=\"remove($event)\"\n [rows]=\"form.controls\"\n>\n <!-- Input row -->\n <ng-container *aclArrayFormTableRow=\"let control; let index = index\">\n <td>\n <input\n *ngIf=\"!multiLineValue\"\n (blur)=\"onBlur()\"\n aui-input\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isItemReadonly(index)\"\n />\n\n <div\n *ngIf=\"multiLineValue\"\n class=\"textarea-wrapper\"\n [attr.data-value]=\"control.value\"\n >\n <textarea\n (blur)=\"onBlur()\"\n [placeholder]=\"placeholder\"\n aui-input\n [formControl]=\"control\"\n [readonly]=\"isItemReadonly(index)\"\n rows=\"1\"\n ></textarea>\n </div>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let control; let index = index\">\n <button\n aui-button=\"text\"\n type=\"button\"\n [square]=\"true\"\n [plain]=\"true\"\n [disabled]=\"(minLines && minLines >= length) || isItemReadonly(index)\"\n (click)=\"remove(index)\"\n >\n <aui-icon\n icon=\"minus_circle\"\n [auiTooltip]=\"isItemReadonly(index) && readonlyTooltip\"\n [auiTooltipDisabled]=\"!isItemReadonly(index)\"\n ></aui-icon>\n </button>\n </ng-container>\n\n <!-- Input error row -->\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n class=\"acl-table-form-error-hint\"\n colspan=\"2\"\n *ngIf=\"control.dirty || $any(controlContainer?.formDirective)?.submitted\"\n >\n <acl-errors-mapper\n [errors]=\"control.errors\"\n [errorsMapper]=\"errorMapper\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableFooter>\n <acl-disabled-container\n [isAllowed]=\"true\"\n [isDisabled]=\"maxLines && length >= maxLines\"\n [tooltip]=\"maxLinesTooltip\"\n >\n <button\n aui-button=\"primary\"\n type=\"button\"\n size=\"mini\"\n [plain]=\"true\"\n (click)=\"add(length)\"\n >\n <aui-icon icon=\"plus_circle\"></aui-icon>\n {{ 'add' | translate }}\n </button>\n </acl-disabled-container>\n </ng-container>\n</acl-array-form-table>\n", styles: [":host{display:block;flex:1}:host .textarea-wrapper{display:grid;align-items:stretch}:host .textarea-wrapper:after,:host .textarea-wrapper textarea{grid-area:1/1;width:auto;padding:3px 5px;font:inherit;resize:none;max-height:252px}:host .textarea-wrapper:after{content:attr(data-value) \" \";visibility:hidden;white-space:pre-wrap}:host .textarea-wrapper textarea{overflow:auto;height:auto!important}:host .textarea-wrapper:focus-within textarea:focus{outline:none}:host acl-disabled-container{flex:1;display:flex}:host ::ng-deep .acl-disabled-container{flex:1;display:flex}\n"] }]
141
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.ControlContainer, decorators: [{
142
- type: Optional
143
- }] }, { type: i2.ValidateRowDuplicateService }, { type: i3.TranslateService }], propDecorators: { multiLineValue: [{
144
- type: Input
145
- }], resourceName: [{
146
- type: Input
147
- }], resourceNameTranslated: [{
148
- type: Input
149
- }], placeholder: [{
150
- type: Input
151
- }], validators: [{
152
- type: Input
153
- }], enableDuplicateCheck: [{
154
- type: Input
155
- }], errorMapper: [{
156
- type: Input
157
- }], maxLines: [{
158
- type: Input
159
- }], maxLinesTooltip: [{
160
- type: Input
161
- }], minLines: [{
162
- type: Input
163
- }], readonlyItems: [{
164
- type: Input
165
- }], readonlyTooltip: [{
166
- type: Input
167
- }] } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2FycmF5LWZvcm0tdGFibGUvc3RyaW5nLWFycmF5LWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2FycmF5LWZvcm0tdGFibGUvc3RyaW5nLWFycmF5LWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFHTCxRQUFRLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixtQkFBbUIsR0FFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQiw0QkFBNEIsRUFDNUIsMkJBQTJCLEdBQzVCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7QUF1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QVE7a0hBakRYLGNBQWM7c0JBRGIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sc0JBQXNCO3NCQURyQixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlGLFdBQVc7c0JBRGQsS0FBSztnQkFZRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFHTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgVG9vbHRpcE1vZHVsZSxcbn0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQGFsYXVkYS1mZS9keW5hbWljLXBsdWdpbi1zZGsnO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sQ29udGFpbmVyLFxuICBGb3JtQXJyYXksXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvckZuLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlUmVzb3VyY2VGb3JtQ29tcG9uZW50IH0gZnJvbSAnbmctcmVzb3VyY2UtZm9ybS11dGlsJztcblxuaW1wb3J0IHsgRGlzYWJsZWRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Rpc2FibGVkLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBFRkZFQ1RfRElSRUNUSVZFX01PRFVMRSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRVJST1JTX01BUFBFUl9NT0RVTEUgfSBmcm9tICcuLi8uLi9mb3JtJztcbmltcG9ydCB7XG4gIERVUExJQ0FURV9FUlJPUl9LRVksXG4gIERVUExJQ0FUSU9OX0pVU1RJRllfU1RSQVRFR1ksXG4gIFZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQVJSQVlfRk9STV9UQUJMRV9NT0RVTEUgfSBmcm9tICcuLi9mb3JtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLXN0cmluZy1hcnJheS1mb3JtLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZXMuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFSUkFZX0ZPUk1fVEFCTEVfTU9EVUxFLFxuICAgIE5nSWYsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIERpc2FibGVkQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIEVGRkVDVF9ESVJFQ1RJVkVfTU9EVUxFLFxuICAgIEVSUk9SU19NQVBQRVJfTU9EVUxFLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1ZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0FycmF5Rm9ybVRhYmxlQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZVJlc291cmNlRm9ybUNvbXBvbmVudDxzdHJpbmdbXSwgc3RyaW5nW10sIEZvcm1BcnJheT5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKVxuICBtdWx0aUxpbmVWYWx1ZTogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICByZXNvdXJjZU5hbWU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICByZXNvdXJjZU5hbWVUcmFuc2xhdGVkOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXIgPSAnJztcblxuICBASW5wdXQoKVxuICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG5cbiAgQElucHV0KClcbiAgZW5hYmxlRHVwbGljYXRlQ2hlY2sgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzZXQgZXJyb3JNYXBwZXIoZXJyb3JNYXBwZXI6IFN0cmluZ01hcCkge1xuICAgIHRoaXMuX2Vycm9yTWFwcGVyID0ge1xuICAgICAgLi4udGhpcy5fZXJyb3JNYXBwZXIsXG4gICAgICAuLi5lcnJvck1hcHBlcixcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGVycm9yTWFwcGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9lcnJvck1hcHBlcjtcbiAgfVxuXG4gIEBJbnB1dCgpIG1heExpbmVzID0gMDtcblxuICBASW5wdXQoKSBtYXhMaW5lc1Rvb2x0aXAgPSAnJztcblxuICBASW5wdXQoKSBtaW5MaW5lcyA9IDA7XG5cbiAgQElucHV0KClcbiAgcmVhZG9ubHlJdGVtczogQXJyYXk8c3RyaW5nIHwgUmVnRXhwPiA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5VG9vbHRpcDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2Vycm9yTWFwcGVyOiBTdHJpbmdNYXAgPSB7XG4gICAgW0RVUExJQ0FURV9FUlJPUl9LRVldOiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ3ZhbHVlX2R1cGxpY2F0aW9uJyksXG4gIH07XG5cbiAgcHJpdmF0ZSBkdXBsaWNhdGVWYWxpZGF0b3I6IFZhbGlkYXRvckZuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvdmVycmlkZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3dEdXA6IFZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgZ2V0IGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmxlbmd0aDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHsgdmFsaWRhdG9ycywgZW5hYmxlRHVwbGljYXRlQ2hlY2sgfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh2YWxpZGF0b3JzPy5jdXJyZW50VmFsdWUgJiYgdGhpcy5mb3JtKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuZm9yRWFjaChmb3JtQ29udHJvbCA9PiB7XG4gICAgICAgIGZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycy5jdXJyZW50VmFsdWUpO1xuICAgICAgICAvLyDpgb/lhY3liqjmgIHlop7liqDmiJbogIXnp7vpmaQgdmFsaWRhdG9ycyDnmoTml7blgJnooajljZXmoKHpqozkuI3nlJ/mlYhcbiAgICAgICAgZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGVuYWJsZUR1cGxpY2F0ZUNoZWNrPy5jdXJyZW50VmFsdWUgIT09XG4gICAgICAgIGVuYWJsZUR1cGxpY2F0ZUNoZWNrPy5wcmV2aW91c1ZhbHVlICYmXG4gICAgICB0aGlzLmZvcm1cbiAgICApIHtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5mb3JFYWNoKGZvcm1Db250cm9sID0+IHtcbiAgICAgICAgZm9ybUNvbnRyb2xbXG4gICAgICAgICAgZW5hYmxlRHVwbGljYXRlQ2hlY2s/LmN1cnJlbnRWYWx1ZVxuICAgICAgICAgICAgPyAnYWRkVmFsaWRhdG9ycydcbiAgICAgICAgICAgIDogJ3JlbW92ZVZhbGlkYXRvcnMnXG4gICAgICAgIF0odGhpcy5kdXBsaWNhdGVWYWxpZGF0b3IpO1xuICAgICAgICBmb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLmZiLmFycmF5KFtdKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0UmVzb3VyY2VNb2RlbChyZXNvdXJjZTogc3RyaW5nW10pIHtcbiAgICBpZiAoIXJlc291cmNlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc291cmNlLnNvcnQoKHYxOiBzdHJpbmcsIHYyOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGlzUmVhZG9ubHkxID0gdGhpcy5pc1JlYWRvbmx5KHYxKTtcbiAgICAgIGNvbnN0IGlzUmVhZG9ubHkyID0gdGhpcy5pc1JlYWRvbmx5KHYyKTtcblxuICAgICAgaWYgKGlzUmVhZG9ubHkxID09PSBpc1JlYWRvbmx5Mikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1JlYWRvbmx5MSA/IC0xIDogMTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldERlZmF1bHRGb3JtTW9kZWwoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGFkZChpbmRleCA9IHRoaXMuZm9ybS5sZW5ndGgpIHtcbiAgICB0aGlzLmZvcm0uaW5zZXJ0KGluZGV4LCB0aGlzLmdldE9uRm9ybUFycmF5UmVzaXplRm4oKSgpKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlbW92ZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5mb3JtLnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldE9uRm9ybUFycmF5UmVzaXplRm4oKSB7XG4gICAgdGhpcy5kdXBsaWNhdGVWYWxpZGF0b3IgPVxuICAgICAgdGhpcy5kdXBsaWNhdGVWYWxpZGF0b3IgfHxcbiAgICAgICh0aGlzLmVuYWJsZUR1cGxpY2F0ZUNoZWNrICYmXG4gICAgICAgIHRoaXMucm93RHVwLmNyZWF0ZUZvcm1BcnJheVZhbGlkYXRvcih7XG4gICAgICAgICAgcm93S2V5czogWycwJ10sXG4gICAgICAgICAgdmFsdWVNYXBGbjogKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlLFxuICAgICAgICAgIGZvcm1BcnJheTogdGhpcy5mb3JtLFxuICAgICAgICAgIHN0cmF0ZWd5OiBEVVBMSUNBVElPTl9KVVNUSUZZX1NUUkFURUdZLkZVTEwsXG4gICAgICAgIH0pKTtcblxuICAgIHJldHVybiAoKSA9PlxuICAgICAgdGhpcy5mYi5jb250cm9sKFxuICAgICAgICAnJyxcbiAgICAgICAgWy4uLih0aGlzLnZhbGlkYXRvcnMgPz8gW10pLCB0aGlzLmR1cGxpY2F0ZVZhbGlkYXRvcl0uZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgKTtcbiAgfVxuXG4gIGlzSXRlbVJlYWRvbmx5KGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW2luZGV4XTtcbiAgICByZXR1cm4gY29udHJvbC52YWxpZCAmJiB0aGlzLmlzUmVhZG9ubHkoY29udHJvbC52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGlzUmVhZG9ubHkoaXRlbTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHlJdGVtcy5zb21lKGNoZWNrZWRJdGVtID0+IHtcbiAgICAgIGlmICghY2hlY2tlZEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBjaGVja2VkSXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGNoZWNrZWRJdGVtID09PSBpdGVtO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hlY2tlZEl0ZW0udGVzdChpdGVtKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGFjbC1hcnJheS1mb3JtLXRhYmxlXG4gIFtyZXNvdXJjZU5hbWVdPVwicmVzb3VyY2VOYW1lXCJcbiAgW3Jlc291cmNlTmFtZVRyYW5zbGF0ZWRdPVwicmVzb3VyY2VOYW1lVHJhbnNsYXRlZFwiXG4gIChhZGQpPVwiYWRkKGZvcm0ubGVuZ3RoKVwiXG4gIChyZW1vdmUpPVwicmVtb3ZlKCRldmVudClcIlxuICBbcm93c109XCJmb3JtLmNvbnRyb2xzXCJcbj5cbiAgPCEtLSBJbnB1dCByb3cgLS0+XG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlUm93PVwibGV0IGNvbnRyb2w7IGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgPHRkPlxuICAgICAgPGlucHV0XG4gICAgICAgICpuZ0lmPVwiIW11bHRpTGluZVZhbHVlXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbcmVhZG9ubHldPVwiaXNJdGVtUmVhZG9ubHkoaW5kZXgpXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJtdWx0aUxpbmVWYWx1ZVwiXG4gICAgICAgIGNsYXNzPVwidGV4dGFyZWEtd3JhcHBlclwiXG4gICAgICAgIFthdHRyLmRhdGEtdmFsdWVdPVwiY29udHJvbC52YWx1ZVwiXG4gICAgICA+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgIGF1aS1pbnB1dFxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiaXNJdGVtUmVhZG9ubHkoaW5kZXgpXCJcbiAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgID48L3RleHRhcmVhPlxuICAgICAgPC9kaXY+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVSb3dDb250cm9sPVwibGV0IGNvbnRyb2w7IGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgPGJ1dHRvblxuICAgICAgYXVpLWJ1dHRvbj1cInRleHRcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgW2Rpc2FibGVkXT1cIihtaW5MaW5lcyAmJiBtaW5MaW5lcyA+PSBsZW5ndGgpIHx8IGlzSXRlbVJlYWRvbmx5KGluZGV4KVwiXG4gICAgICAoY2xpY2spPVwicmVtb3ZlKGluZGV4KVwiXG4gICAgPlxuICAgICAgPGF1aS1pY29uXG4gICAgICAgIGljb249XCJtaW51c19jaXJjbGVcIlxuICAgICAgICBbYXVpVG9vbHRpcF09XCJpc0l0ZW1SZWFkb25seShpbmRleCkgJiYgcmVhZG9ubHlUb29sdGlwXCJcbiAgICAgICAgW2F1aVRvb2x0aXBEaXNhYmxlZF09XCIhaXNJdGVtUmVhZG9ubHkoaW5kZXgpXCJcbiAgICAgID48L2F1aS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IGVycm9yIHJvdyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVSb3dFcnJvcj1cImxldCBjb250cm9sXCI+XG4gICAgPHRkXG4gICAgICBjbGFzcz1cImFjbC10YWJsZS1mb3JtLWVycm9yLWhpbnRcIlxuICAgICAgY29sc3Bhbj1cIjJcIlxuICAgICAgKm5nSWY9XCJjb250cm9sLmRpcnR5IHx8ICRhbnkoY29udHJvbENvbnRhaW5lcj8uZm9ybURpcmVjdGl2ZSk/LnN1Ym1pdHRlZFwiXG4gICAgPlxuICAgICAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgICAgIFtlcnJvcnNdPVwiY29udHJvbC5lcnJvcnNcIlxuICAgICAgICBbZXJyb3JzTWFwcGVyXT1cImVycm9yTWFwcGVyXCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgIDwvdGQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlRm9vdGVyPlxuICAgIDxhY2wtZGlzYWJsZWQtY29udGFpbmVyXG4gICAgICBbaXNBbGxvd2VkXT1cInRydWVcIlxuICAgICAgW2lzRGlzYWJsZWRdPVwibWF4TGluZXMgJiYgbGVuZ3RoID49IG1heExpbmVzXCJcbiAgICAgIFt0b29sdGlwXT1cIm1heExpbmVzVG9vbHRpcFwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBhdWktYnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzaXplPVwibWluaVwiXG4gICAgICAgIFtwbGFpbl09XCJ0cnVlXCJcbiAgICAgICAgKGNsaWNrKT1cImFkZChsZW5ndGgpXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS1pY29uIGljb249XCJwbHVzX2NpcmNsZVwiPjwvYXVpLWljb24+XG4gICAgICAgIHt7ICdhZGQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2FjbC1kaXNhYmxlZC1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9hY2wtYXJyYXktZm9ybS10YWJsZT5cbiJdfQ==
@@ -1,63 +0,0 @@
1
- /**
2
- * @packageDocumentation
3
- * @module async-data
4
- */
5
- import { get } from 'lodash-es';
6
- import { Subject, combineLatest, interval, merge, of, catchError, distinctUntilChanged, filter, map, scan, startWith, switchMap, tap, } from 'rxjs';
7
- import { isEqual, publishRef } from '../utils';
8
- export class AsyncDataLoader {
9
- constructor(config) {
10
- this.reloadAction$$ = new Subject();
11
- this.dataMapper$$ = new Subject();
12
- this.snapshot = {
13
- params: null,
14
- data: null,
15
- loading: false,
16
- error: null,
17
- };
18
- const { params$, params, dataFilter, silent } = config;
19
- const queryParams$ = params$ || of(params || null);
20
- this.loadState$ = combineLatest([
21
- queryParams$,
22
- this.reloadAction$$.pipe(startWith(null)),
23
- ]).pipe(switchMap(([queryParams, startData]) => {
24
- this.snapshot.params = queryParams;
25
- return this.buildFetcher(config)(queryParams).pipe(map(data => ({ data })), catchError((error) => of({ error })), startWith({
26
- data: startData || null,
27
- loading: !startData,
28
- }));
29
- }), map(state => ({
30
- data: null,
31
- loading: false,
32
- error: null,
33
- ...state,
34
- })), publishRef());
35
- this.rawData$ = merge(this.loadState$.pipe(map(state => (prev) => (state.loading && silent ? prev : state.data))), this.dataMapper$$).pipe(scan((acc, mapper) => mapper(acc), null), tap(data => {
36
- this.snapshot.data = data;
37
- }), publishRef());
38
- this.data$ = this.rawData$.pipe(filter(dataFilter ?? (data => !!data)), publishRef());
39
- this.loading$ = this.loadState$.pipe(map(state => state.loading), distinctUntilChanged(), tap(loading => {
40
- this.snapshot.loading = loading;
41
- }), publishRef());
42
- this.error$ = this.loadState$.pipe(map(state => state.error), distinctUntilChanged(), tap(error => {
43
- this.snapshot.error = error;
44
- }), publishRef());
45
- }
46
- reload(data) {
47
- this.reloadAction$$.next(data);
48
- }
49
- mapData(mapper) {
50
- this.dataMapper$$.next(mapper);
51
- }
52
- buildFetcher(config) {
53
- const { fetcher, interval: period, intervalFilter, compare, } = config;
54
- if (!period) {
55
- return fetcher;
56
- }
57
- const compareFn = Array.isArray(compare)
58
- ? (a, b) => isEqual(get(a, compare), get(b, compare))
59
- : compare;
60
- return params => interval(period).pipe(filter(intervalFilter ?? (() => true)), startWith(0), switchMap(() => fetcher(params)), distinctUntilChanged(compareFn));
61
- }
62
- }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtZGF0YS1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2R5bmFtaWMtcGx1Z2luLXNoYXJlZC9zcmMvYXN5bmMtZGF0YS9hc3luYy1kYXRhLWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFFTCxPQUFPLEVBQ1AsYUFBYSxFQUNiLFFBQVEsRUFDUixLQUFLLEVBQ0wsRUFBRSxFQUNGLFVBQVUsRUFDVixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxJQUFJLEVBQ0osU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQWlCL0MsTUFBTSxPQUFPLGVBQWU7SUFvQjFCLFlBQVksTUFBMkQ7UUFqQnRELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVksQ0FBQztRQUN6QyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBRTdELGFBQVEsR0FBK0Q7WUFDckUsTUFBTSxFQUFFLElBQUk7WUFDWixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDO1FBVUEsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUV2RCxNQUFNLFlBQVksR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztZQUM5QixZQUFZO1lBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQVMsQ0FB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TUFBcUI7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLFlBQVksQ0FDbEIsTUFBMkQ7UUFFM0QsTUFBTSxFQUNKLE9BQU8sRUFDUCxRQUFRLEVBQUUsTUFBTSxFQUNoQixjQUFjLEVBQ2QsT0FBTyxHQUNSLEdBQUcsTUFBd0MsQ0FBQztRQUU3QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBSSxFQUFFLENBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMzRCxDQUFDLENBQUMsT0FBTyxDQUFDO1FBRVosT0FBTyxNQUFNLENBQUMsRUFBRSxDQUNkLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ25CLE1BQU0sQ0FBQyxjQUFjLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUN0QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ1osU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUNoQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FDaEMsQ0FBQztJQUNOLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIGFzeW5jLWRhdGFcbiAqL1xuXG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgaW50ZXJ2YWwsXG4gIG1lcmdlLFxuICBvZixcbiAgY2F0Y2hFcnJvcixcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzY2FuLFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgaXNFcXVhbCwgcHVibGlzaFJlZiB9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgRGF0YUVycm9yLFxuICBEYXRhTWFwcGVyLFxuICBEYXRhU3RhdGVBZGFwdGVyLFxuICBGZXRjaGVyLFxuICBMb2FkZXJDb25maWcsXG4gIExvYWRlckNvbmZpZ1dpdGhJbnRlcnZhbCxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXN5bmNMb2FkU3RhdGU8RD4ge1xuICBkYXRhPzogRDtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIGVycm9yPzogRGF0YUVycm9yO1xufVxuXG5leHBvcnQgY2xhc3MgQXN5bmNEYXRhTG9hZGVyPEQgPSB1bmtub3duLCBQID0gU3RyaW5nTWFwPlxuICBpbXBsZW1lbnRzIERhdGFTdGF0ZUFkYXB0ZXI8RD5cbntcbiAgcHJpdmF0ZSByZWFkb25seSByZWxvYWRBY3Rpb24kJCA9IG5ldyBTdWJqZWN0PHZvaWQgfCBEPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFNYXBwZXIkJCA9IG5ldyBTdWJqZWN0PERhdGFNYXBwZXI8RD4+KCk7XG5cbiAgc25hcHNob3Q6IHsgZGF0YTogRDsgcGFyYW1zOiBQOyBsb2FkaW5nOiBib29sZWFuOyBlcnJvcjogRGF0YUVycm9yIH0gPSB7XG4gICAgcGFyYW1zOiBudWxsLFxuICAgIGRhdGE6IG51bGwsXG4gICAgbG9hZGluZzogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gIH07XG5cbiAgbG9hZFN0YXRlJDogT2JzZXJ2YWJsZTxBc3luY0xvYWRTdGF0ZTxEPj47XG5cbiAgcmF3RGF0YSQ6IE9ic2VydmFibGU8RD47XG4gIGRhdGEkOiBPYnNlcnZhYmxlPEQ+O1xuICBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgZXJyb3IkOiBPYnNlcnZhYmxlPERhdGFFcnJvcj47XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBMb2FkZXJDb25maWc8RCwgUD4gfCBMb2FkZXJDb25maWdXaXRoSW50ZXJ2YWw8RCwgUD4pIHtcbiAgICBjb25zdCB7IHBhcmFtcyQsIHBhcmFtcywgZGF0YUZpbHRlciwgc2lsZW50IH0gPSBjb25maWc7XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtcyQgPSBwYXJhbXMkIHx8IG9mKHBhcmFtcyB8fCBudWxsKTtcblxuICAgIHRoaXMubG9hZFN0YXRlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgcXVlcnlQYXJhbXMkLFxuICAgICAgdGhpcy5yZWxvYWRBY3Rpb24kJC5waXBlKHN0YXJ0V2l0aChudWxsIGFzIEQpKSxcbiAgICBdKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbcXVlcnlQYXJhbXMsIHN0YXJ0RGF0YV0pID0+IHtcbiAgICAgICAgdGhpcy5zbmFwc2hvdC5wYXJhbXMgPSBxdWVyeVBhcmFtcztcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRGZXRjaGVyKGNvbmZpZykocXVlcnlQYXJhbXMpLnBpcGUoXG4gICAgICAgICAgbWFwKGRhdGEgPT4gKHsgZGF0YSB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IERhdGFFcnJvcikgPT4gb2YoeyBlcnJvciB9KSksXG4gICAgICAgICAgc3RhcnRXaXRoKHtcbiAgICAgICAgICAgIGRhdGE6IHN0YXJ0RGF0YSB8fCBudWxsLFxuICAgICAgICAgICAgbG9hZGluZzogIXN0YXJ0RGF0YSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKHN0YXRlID0+ICh7XG4gICAgICAgIGRhdGE6IG51bGwsXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICB9KSksXG4gICAgICBwdWJsaXNoUmVmKCksXG4gICAgKTtcblxuICAgIHRoaXMucmF3RGF0YSQgPSBtZXJnZShcbiAgICAgIHRoaXMubG9hZFN0YXRlJC5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgc3RhdGUgPT4gKHByZXY6IEQpID0+IChzdGF0ZS5sb2FkaW5nICYmIHNpbGVudCA/IHByZXYgOiBzdGF0ZS5kYXRhKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICB0aGlzLmRhdGFNYXBwZXIkJCxcbiAgICApLnBpcGUoXG4gICAgICBzY2FuPERhdGFNYXBwZXI8RD4sIEQ+KChhY2MsIG1hcHBlcikgPT4gbWFwcGVyKGFjYyksIG51bGwpLFxuICAgICAgdGFwKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLnNuYXBzaG90LmRhdGEgPSBkYXRhO1xuICAgICAgfSksXG4gICAgICBwdWJsaXNoUmVmKCksXG4gICAgKTtcblxuICAgIHRoaXMuZGF0YSQgPSB0aGlzLnJhd0RhdGEkLnBpcGUoXG4gICAgICBmaWx0ZXIoZGF0YUZpbHRlciA/PyAoZGF0YSA9PiAhIWRhdGEpKSxcbiAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICApO1xuXG4gICAgdGhpcy5sb2FkaW5nJCA9IHRoaXMubG9hZFN0YXRlJC5waXBlKFxuICAgICAgbWFwKHN0YXRlID0+IHN0YXRlLmxvYWRpbmcpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHRhcChsb2FkaW5nID0+IHtcbiAgICAgICAgdGhpcy5zbmFwc2hvdC5sb2FkaW5nID0gbG9hZGluZztcbiAgICAgIH0pLFxuICAgICAgcHVibGlzaFJlZigpLFxuICAgICk7XG5cbiAgICB0aGlzLmVycm9yJCA9IHRoaXMubG9hZFN0YXRlJC5waXBlKFxuICAgICAgbWFwKHN0YXRlID0+IHN0YXRlLmVycm9yKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICB0YXAoZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLnNuYXBzaG90LmVycm9yID0gZXJyb3I7XG4gICAgICB9KSxcbiAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICApO1xuICB9XG5cbiAgcmVsb2FkKGRhdGE/OiBEKSB7XG4gICAgdGhpcy5yZWxvYWRBY3Rpb24kJC5uZXh0KGRhdGEpO1xuICB9XG5cbiAgbWFwRGF0YShtYXBwZXI6IERhdGFNYXBwZXI8RD4pIHtcbiAgICB0aGlzLmRhdGFNYXBwZXIkJC5uZXh0KG1hcHBlcik7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRmV0Y2hlcihcbiAgICBjb25maWc6IExvYWRlckNvbmZpZzxELCBQPiB8IExvYWRlckNvbmZpZ1dpdGhJbnRlcnZhbDxELCBQPixcbiAgKTogRmV0Y2hlcjxELCBQPiB7XG4gICAgY29uc3Qge1xuICAgICAgZmV0Y2hlcixcbiAgICAgIGludGVydmFsOiBwZXJpb2QsXG4gICAgICBpbnRlcnZhbEZpbHRlcixcbiAgICAgIGNvbXBhcmUsXG4gICAgfSA9IGNvbmZpZyBhcyBMb2FkZXJDb25maWdXaXRoSW50ZXJ2YWw8RCwgUD47XG5cbiAgICBpZiAoIXBlcmlvZCkge1xuICAgICAgcmV0dXJuIGZldGNoZXI7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGFyZUZuID0gQXJyYXkuaXNBcnJheShjb21wYXJlKVxuICAgICAgPyAoYTogRCwgYjogRCkgPT4gaXNFcXVhbChnZXQoYSwgY29tcGFyZSksIGdldChiLCBjb21wYXJlKSlcbiAgICAgIDogY29tcGFyZTtcblxuICAgIHJldHVybiBwYXJhbXMgPT5cbiAgICAgIGludGVydmFsKHBlcmlvZCkucGlwZShcbiAgICAgICAgZmlsdGVyKGludGVydmFsRmlsdGVyID8/ICgoKSA9PiB0cnVlKSksXG4gICAgICAgIHN0YXJ0V2l0aCgwKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IGZldGNoZXIocGFyYW1zKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGNvbXBhcmVGbiksXG4gICAgICApO1xuICB9XG59XG4iXX0=