@alauda-fe/dynamic-plugin-shared 0.0.1-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 (415) hide show
  1. package/README.md +7 -0
  2. package/array-form-table/base-string-map-form.component.d.ts +22 -0
  3. package/array-form-table/form/component.d.ts +106 -0
  4. package/array-form-table/form/index.d.ts +2 -0
  5. package/array-form-table/index.d.ts +10 -0
  6. package/array-form-table/key-value-form/component.d.ts +38 -0
  7. package/array-form-table/key-value-table/component.d.ts +9 -0
  8. package/array-form-table/string-array-form/component.d.ts +41 -0
  9. package/assets/images/abnormal.svg +1 -0
  10. package/assets/images/dark/disconnected.svg +1 -0
  11. package/assets/images/dark/license-abnormal.svg +1 -0
  12. package/assets/images/dark/network-abnormal.svg +1 -0
  13. package/assets/images/dark/no-data.svg +1 -0
  14. package/assets/images/dark/no-message.svg +1 -0
  15. package/assets/images/dark/no-permission.svg +1 -0
  16. package/assets/images/dark/no_realtime_alarm.svg +1 -0
  17. package/assets/images/dark/not-deployed.svg +1 -0
  18. package/assets/images/dark/not-found.svg +1 -0
  19. package/assets/images/dark/not-supported.svg +1 -0
  20. package/assets/images/dark/system-abnormal.svg +1 -0
  21. package/assets/images/light/disconnected.svg +1 -0
  22. package/assets/images/light/license-abnormal.svg +1 -0
  23. package/assets/images/light/network-abnormal.svg +1 -0
  24. package/assets/images/light/no-data.svg +1 -0
  25. package/assets/images/light/no-message.svg +1 -0
  26. package/assets/images/light/no-permission.svg +1 -0
  27. package/assets/images/light/no_realtime_alarm.svg +1 -0
  28. package/assets/images/light/not-deployed.svg +1 -0
  29. package/assets/images/light/not-found.svg +1 -0
  30. package/assets/images/light/not-supported.svg +1 -0
  31. package/assets/images/light/system-abnormal.svg +1 -0
  32. package/assets/images/no-data.png +0 -0
  33. package/async-data/async-data-loader.d.ts +31 -0
  34. package/async-data/error-page/component.d.ts +30 -0
  35. package/async-data/index.d.ts +13 -0
  36. package/async-data/page-state/component.d.ts +21 -0
  37. package/async-data/types.d.ts +29 -0
  38. package/code-editor/code-display-dialog/component.d.ts +17 -0
  39. package/code-editor/code-editor-configs.d.ts +19 -0
  40. package/code-editor/index.d.ts +10 -0
  41. package/code-editor/k8s-yaml-display-dialog/component.d.ts +16 -0
  42. package/code-editor/resource-yaml-display/component.d.ts +21 -0
  43. package/components/card-section/card-section.component.d.ts +9 -0
  44. package/components/confirm-delete/confirm-delete.component.d.ts +57 -0
  45. package/components/confirm-delete/utils.d.ts +25 -0
  46. package/components/current-time/component.d.ts +14 -0
  47. package/components/custom-columns-setting/component.d.ts +16 -0
  48. package/components/custom-columns-setting/index.d.ts +1 -0
  49. package/components/date-range-picker/component.d.ts +55 -0
  50. package/components/date-range-picker/index.d.ts +3 -0
  51. package/components/date-range-picker/type.d.ts +36 -0
  52. package/components/date-range-picker/util.d.ts +11 -0
  53. package/components/disabled-container/disabled-container.component.d.ts +21 -0
  54. package/components/disabled-container/index.d.ts +7 -0
  55. package/components/field-set/column/component.d.ts +10 -0
  56. package/components/field-set/group/component.d.ts +6 -0
  57. package/components/field-set/index.d.ts +7 -0
  58. package/components/field-set/item/component.d.ts +13 -0
  59. package/components/foldable-block/component.d.ts +17 -0
  60. package/components/foldable-item-in-table/component.d.ts +21 -0
  61. package/components/help-document/component.d.ts +29 -0
  62. package/components/help-document/directive.d.ts +20 -0
  63. package/components/help-document/index.d.ts +8 -0
  64. package/components/help-document/service.d.ts +20 -0
  65. package/components/index.d.ts +31 -0
  66. package/components/loading-mask/loading-mask.component.d.ts +13 -0
  67. package/components/page-guard/component/component.d.ts +40 -0
  68. package/components/page-guard/component/helper-directives.d.ts +17 -0
  69. package/components/page-guard/component/page-guard.type.d.ts +86 -0
  70. package/components/page-guard/index.d.ts +12 -0
  71. package/components/password-input/component.d.ts +39 -0
  72. package/components/pod-status/component.d.ts +25 -0
  73. package/components/pod-status/index.d.ts +3 -0
  74. package/components/pod-status/status.d.ts +4 -0
  75. package/components/pod-status/typings.d.ts +16 -0
  76. package/components/relative-time/component.d.ts +15 -0
  77. package/components/resource-label/component.d.ts +25 -0
  78. package/components/resource-multi-select/component.d.ts +41 -0
  79. package/components/resource-multi-select/util.d.ts +10 -0
  80. package/components/search-panel/component.d.ts +16 -0
  81. package/components/search-panel/helper.directive.d.ts +5 -0
  82. package/components/search-panel/search-item/component.d.ts +7 -0
  83. package/components/select-prefix-label/directive.d.ts +17 -0
  84. package/components/status-icon/status-icon.component.d.ts +16 -0
  85. package/components/tags-label/component.d.ts +56 -0
  86. package/components/terminating-tag/component.d.ts +7 -0
  87. package/components/text-ellipsis/component.d.ts +9 -0
  88. package/components/text-tooltip/directive.d.ts +21 -0
  89. package/components/text-with-url/component.d.ts +12 -0
  90. package/components/upload-file/component.d.ts +32 -0
  91. package/components/zero-state/zero-state.component.d.ts +16 -0
  92. package/constants/common.d.ts +64 -0
  93. package/constants/index.d.ts +6 -0
  94. package/constants/k8s.d.ts +12 -0
  95. package/constants/patterns.d.ts +124 -0
  96. package/constants/resource-definitions.d.ts +414 -0
  97. package/constants/status-icons.d.ts +34 -0
  98. package/constants/timezones.d.ts +6 -0
  99. package/directives/aui-code-editor.directive.d.ts +13 -0
  100. package/directives/click-outside.directive.d.ts +12 -0
  101. package/directives/declare.directive.d.ts +8 -0
  102. package/directives/disabled.directive.d.ts +28 -0
  103. package/directives/effect-directive/coerce-number.directive.d.ts +8 -0
  104. package/directives/effect-directive/e2e-attribute-binding.directive.d.ts +10 -0
  105. package/directives/effect-directive/event.directive.d.ts +47 -0
  106. package/directives/effect-directive/index.d.ts +12 -0
  107. package/directives/effect-directive/min-max.directive.d.ts +30 -0
  108. package/directives/effect-directive/trim.directive.d.ts +7 -0
  109. package/directives/effect-directive/validators.directive.d.ts +12 -0
  110. package/directives/feature-gate.directive.d.ts +31 -0
  111. package/directives/index.d.ts +12 -0
  112. package/directives/last-form-item.directive.d.ts +8 -0
  113. package/directives/readonly-field.directive.d.ts +39 -0
  114. package/directives/resize.directive.d.ts +17 -0
  115. package/directives/scroll-border-observer.directive.d.ts +23 -0
  116. package/directives/scroll-to-first-invalid.directive.d.ts +24 -0
  117. package/directives/value-trace.directive.d.ts +27 -0
  118. package/esm2022/alauda-fe-dynamic-plugin-shared.mjs +5 -0
  119. package/esm2022/array-form-table/base-string-map-form.component.mjs +92 -0
  120. package/esm2022/array-form-table/form/component.mjs +266 -0
  121. package/esm2022/array-form-table/form/index.mjs +12 -0
  122. package/esm2022/array-form-table/index.mjs +11 -0
  123. package/esm2022/array-form-table/key-value-form/component.mjs +135 -0
  124. package/esm2022/array-form-table/key-value-table/component.mjs +24 -0
  125. package/esm2022/array-form-table/string-array-form/component.mjs +168 -0
  126. package/esm2022/async-data/async-data-loader.mjs +63 -0
  127. package/esm2022/async-data/error-page/component.mjs +54 -0
  128. package/esm2022/async-data/index.mjs +18 -0
  129. package/esm2022/async-data/page-state/component.mjs +62 -0
  130. package/esm2022/async-data/types.mjs +6 -0
  131. package/esm2022/code-editor/code-display-dialog/component.mjs +35 -0
  132. package/esm2022/code-editor/code-editor-configs.mjs +66 -0
  133. package/esm2022/code-editor/index.mjs +11 -0
  134. package/esm2022/code-editor/k8s-yaml-display-dialog/component.mjs +26 -0
  135. package/esm2022/code-editor/resource-yaml-display/component.mjs +67 -0
  136. package/esm2022/components/card-section/card-section.component.mjs +24 -0
  137. package/esm2022/components/confirm-delete/confirm-delete.component.mjs +192 -0
  138. package/esm2022/components/confirm-delete/utils.mjs +8 -0
  139. package/esm2022/components/current-time/component.mjs +39 -0
  140. package/esm2022/components/custom-columns-setting/component.mjs +75 -0
  141. package/esm2022/components/custom-columns-setting/index.mjs +2 -0
  142. package/esm2022/components/date-range-picker/component.mjs +215 -0
  143. package/esm2022/components/date-range-picker/index.mjs +4 -0
  144. package/esm2022/components/date-range-picker/type.mjs +2 -0
  145. package/esm2022/components/date-range-picker/util.mjs +57 -0
  146. package/esm2022/components/disabled-container/disabled-container.component.mjs +81 -0
  147. package/esm2022/components/disabled-container/index.mjs +8 -0
  148. package/esm2022/components/field-set/column/component.mjs +25 -0
  149. package/esm2022/components/field-set/group/component.mjs +16 -0
  150. package/esm2022/components/field-set/index.mjs +14 -0
  151. package/esm2022/components/field-set/item/component.mjs +41 -0
  152. package/esm2022/components/foldable-block/component.mjs +60 -0
  153. package/esm2022/components/foldable-item-in-table/component.mjs +56 -0
  154. package/esm2022/components/help-document/component.mjs +69 -0
  155. package/esm2022/components/help-document/directive.mjs +70 -0
  156. package/esm2022/components/help-document/index.mjs +9 -0
  157. package/esm2022/components/help-document/service.mjs +43 -0
  158. package/esm2022/components/index.mjs +32 -0
  159. package/esm2022/components/loading-mask/loading-mask.component.mjs +35 -0
  160. package/esm2022/components/page-guard/component/component.mjs +101 -0
  161. package/esm2022/components/page-guard/component/helper-directives.mjs +51 -0
  162. package/esm2022/components/page-guard/component/page-guard.type.mjs +82 -0
  163. package/esm2022/components/page-guard/index.mjs +19 -0
  164. package/esm2022/components/password-input/component.mjs +143 -0
  165. package/esm2022/components/pod-status/component.mjs +49 -0
  166. package/esm2022/components/pod-status/index.mjs +4 -0
  167. package/esm2022/components/pod-status/status.mjs +84 -0
  168. package/esm2022/components/pod-status/typings.mjs +19 -0
  169. package/esm2022/components/relative-time/component.mjs +58 -0
  170. package/esm2022/components/resource-label/component.mjs +100 -0
  171. package/esm2022/components/resource-multi-select/component.mjs +152 -0
  172. package/esm2022/components/resource-multi-select/util.mjs +24 -0
  173. package/esm2022/components/search-panel/component.mjs +51 -0
  174. package/esm2022/components/search-panel/helper.directive.mjs +14 -0
  175. package/esm2022/components/search-panel/search-item/component.mjs +15 -0
  176. package/esm2022/components/select-prefix-label/directive.mjs +89 -0
  177. package/esm2022/components/status-icon/status-icon.component.mjs +56 -0
  178. package/esm2022/components/tags-label/component.mjs +224 -0
  179. package/esm2022/components/terminating-tag/component.mjs +16 -0
  180. package/esm2022/components/text-ellipsis/component.mjs +28 -0
  181. package/esm2022/components/text-tooltip/directive.mjs +71 -0
  182. package/esm2022/components/text-with-url/component.mjs +40 -0
  183. package/esm2022/components/upload-file/component.mjs +95 -0
  184. package/esm2022/components/zero-state/zero-state.component.mjs +51 -0
  185. package/esm2022/constants/common.mjs +86 -0
  186. package/esm2022/constants/index.mjs +7 -0
  187. package/esm2022/constants/k8s.mjs +13 -0
  188. package/esm2022/constants/patterns.mjs +142 -0
  189. package/esm2022/constants/resource-definitions.mjs +424 -0
  190. package/esm2022/constants/status-icons.mjs +65 -0
  191. package/esm2022/constants/timezones.mjs +234 -0
  192. package/esm2022/directives/aui-code-editor.directive.mjs +30 -0
  193. package/esm2022/directives/click-outside.directive.mjs +49 -0
  194. package/esm2022/directives/declare.directive.mjs +27 -0
  195. package/esm2022/directives/disabled.directive.mjs +76 -0
  196. package/esm2022/directives/effect-directive/coerce-number.directive.mjs +54 -0
  197. package/esm2022/directives/effect-directive/e2e-attribute-binding.directive.mjs +57 -0
  198. package/esm2022/directives/effect-directive/event.directive.mjs +129 -0
  199. package/esm2022/directives/effect-directive/index.mjs +21 -0
  200. package/esm2022/directives/effect-directive/min-max.directive.mjs +107 -0
  201. package/esm2022/directives/effect-directive/trim.directive.mjs +40 -0
  202. package/esm2022/directives/effect-directive/validators.directive.mjs +43 -0
  203. package/esm2022/directives/feature-gate.directive.mjs +90 -0
  204. package/esm2022/directives/index.mjs +13 -0
  205. package/esm2022/directives/last-form-item.directive.mjs +18 -0
  206. package/esm2022/directives/readonly-field.directive.mjs +145 -0
  207. package/esm2022/directives/resize.directive.mjs +39 -0
  208. package/esm2022/directives/scroll-border-observer.directive.mjs +77 -0
  209. package/esm2022/directives/scroll-to-first-invalid.directive.mjs +126 -0
  210. package/esm2022/directives/value-trace.directive.mjs +61 -0
  211. package/esm2022/form/base-form-container.mjs +126 -0
  212. package/esm2022/form/base-nested-form-control.mjs +190 -0
  213. package/esm2022/form/errors-mapper/base-errors-mapper.mjs +41 -0
  214. package/esm2022/form/errors-mapper/default-errors-mapper.service.mjs +65 -0
  215. package/esm2022/form/errors-mapper/errors-mapper-component/component.mjs +53 -0
  216. package/esm2022/form/errors-mapper/errors-mapper.directive.mjs +109 -0
  217. package/esm2022/form/errors-mapper/index.mjs +10 -0
  218. package/esm2022/form/errors-mapper/types.mjs +2 -0
  219. package/esm2022/form/index.mjs +6 -0
  220. package/esm2022/form/utils.mjs +61 -0
  221. package/esm2022/form/validators/async-function-validator.directive.mjs +49 -0
  222. package/esm2022/form/validators/dns1123-subdomain.mjs +42 -0
  223. package/esm2022/form/validators/function-validator.directive.mjs +49 -0
  224. package/esm2022/form/validators/index.mjs +10 -0
  225. package/esm2022/form/validators/maxlength-minlength-validator.directive.mjs +71 -0
  226. package/esm2022/form/validators/not-be-validator.directive.mjs +56 -0
  227. package/esm2022/form/validators/one-of-validator.directive.mjs +57 -0
  228. package/esm2022/form/validators/resource-limit.mjs +79 -0
  229. package/esm2022/form/validators/strong-password/index.mjs +4 -0
  230. package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +15 -0
  231. package/esm2022/form/validators/strong-password/strong-password-validator.directive.mjs +171 -0
  232. package/esm2022/form/validators/strong-password/strong-password-validator.module.mjs +36 -0
  233. package/esm2022/form/validators/utils.mjs +155 -0
  234. package/esm2022/index.mjs +15 -0
  235. package/esm2022/k8s-resource-list/footer/component.mjs +156 -0
  236. package/esm2022/k8s-resource-list/index.mjs +18 -0
  237. package/esm2022/k8s-resource-list/k8s-resource-list.mjs +224 -0
  238. package/esm2022/k8s-resource-list/k8s-resource-paged-list.mjs +174 -0
  239. package/esm2022/k8s-resource-list/types.mjs +11 -0
  240. package/esm2022/k8s-resource-list/utils.mjs +84 -0
  241. package/esm2022/k8s-shared/constants.mjs +53 -0
  242. package/esm2022/k8s-shared/index.mjs +12 -0
  243. package/esm2022/k8s-shared/k8s-resource-translate-key.pipe.mjs +31 -0
  244. package/esm2022/k8s-shared/k8s-shared-util.service.mjs +152 -0
  245. package/esm2022/k8s-shared/resource-mark/component.mjs +54 -0
  246. package/esm2022/k8s-shared/resource-mark/util.mjs +137 -0
  247. package/esm2022/k8s-shared/update-description-dialog/component.mjs +66 -0
  248. package/esm2022/k8s-shared/update-display-name-dialog/component.mjs +59 -0
  249. package/esm2022/k8s-shared/update-key-value-dialog/component.mjs +76 -0
  250. package/esm2022/page-deactivate/deactivate.directive.mjs +50 -0
  251. package/esm2022/page-deactivate/deactivate.guard.mjs +41 -0
  252. package/esm2022/page-deactivate/deactivate.service.mjs +78 -0
  253. package/esm2022/page-deactivate/index.mjs +4 -0
  254. package/esm2022/pipes/calc.pipe.mjs +21 -0
  255. package/esm2022/pipes/cron-human-readable.pipe.mjs +30 -0
  256. package/esm2022/pipes/crontab-next.pipe.mjs +67 -0
  257. package/esm2022/pipes/duration.pipe.mjs +51 -0
  258. package/esm2022/pipes/field-not-available.pipe.mjs +25 -0
  259. package/esm2022/pipes/img-header.pipe.mjs +18 -0
  260. package/esm2022/pipes/img-theme.pipe.mjs +38 -0
  261. package/esm2022/pipes/index.mjs +19 -0
  262. package/esm2022/pipes/keyvalue.pipe.mjs +20 -0
  263. package/esm2022/pipes/marked.pipe.mjs +18 -0
  264. package/esm2022/pipes/minimum-format.pipe.mjs +25 -0
  265. package/esm2022/pipes/page-env.pipe.mjs +69 -0
  266. package/esm2022/pipes/parse-json-translate.pipe.mjs +28 -0
  267. package/esm2022/pipes/parse-json.pipe.mjs +22 -0
  268. package/esm2022/pipes/pure.pipe.mjs +26 -0
  269. package/esm2022/pipes/safe.pipe.mjs +49 -0
  270. package/esm2022/pipes/sanitize.pipe.mjs +31 -0
  271. package/esm2022/pipes/time.pipe.mjs +113 -0
  272. package/esm2022/pipes/timezone-display.pipe.mjs +21 -0
  273. package/esm2022/services/form-row-duplicate/form-row-duplicate.service.mjs +280 -0
  274. package/esm2022/services/index.mjs +4 -0
  275. package/esm2022/services/on-resize.service.mjs +52 -0
  276. package/esm2022/services/yaml-util.service.mjs +99 -0
  277. package/esm2022/types/common.mjs +6 -0
  278. package/esm2022/types/helpers.mjs +12 -0
  279. package/esm2022/types/index.mjs +9 -0
  280. package/esm2022/types/k8s/core.mjs +2 -0
  281. package/esm2022/types/k8s/crd.mjs +57 -0
  282. package/esm2022/types/k8s/index.mjs +4 -0
  283. package/esm2022/types/k8s/raw.mjs +77 -0
  284. package/esm2022/types/schema.mjs +2 -0
  285. package/esm2022/utils/browser.mjs +21 -0
  286. package/esm2022/utils/cache-store.mjs +83 -0
  287. package/esm2022/utils/color-helpers.mjs +6 -0
  288. package/esm2022/utils/common.mjs +315 -0
  289. package/esm2022/utils/cron-util.mjs +44 -0
  290. package/esm2022/utils/decorators.mjs +137 -0
  291. package/esm2022/utils/disabled-state.mjs +47 -0
  292. package/esm2022/utils/format-number.mjs +227 -0
  293. package/esm2022/utils/index.mjs +24 -0
  294. package/esm2022/utils/local-storage-constants.mjs +2 -0
  295. package/esm2022/utils/node.mjs +18 -0
  296. package/esm2022/utils/observable.mjs +32 -0
  297. package/esm2022/utils/operators.mjs +38 -0
  298. package/esm2022/utils/request-pool.mjs +37 -0
  299. package/esm2022/utils/resources.mjs +66 -0
  300. package/esm2022/utils/router.mjs +20 -0
  301. package/esm2022/utils/sort-fn.mjs +7 -0
  302. package/esm2022/utils/tree.mjs +79 -0
  303. package/esm2022/utils/unit.mjs +191 -0
  304. package/esm2022/utils/version.mjs +76 -0
  305. package/esm2022/utils/with-load-state.mjs +21 -0
  306. package/esm2022/utils/workload.mjs +183 -0
  307. package/esm2022/utils/workspace.mjs +59 -0
  308. package/esm2022/utils/yaml.mjs +54 -0
  309. package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs +11151 -0
  310. package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs.map +1 -0
  311. package/form/base-form-container.d.ts +41 -0
  312. package/form/base-nested-form-control.d.ts +58 -0
  313. package/form/errors-mapper/base-errors-mapper.d.ts +13 -0
  314. package/form/errors-mapper/default-errors-mapper.service.d.ts +10 -0
  315. package/form/errors-mapper/errors-mapper-component/component.d.ts +19 -0
  316. package/form/errors-mapper/errors-mapper.directive.d.ts +39 -0
  317. package/form/errors-mapper/index.d.ts +6 -0
  318. package/form/errors-mapper/types.d.ts +16 -0
  319. package/form/index.d.ts +5 -0
  320. package/form/utils.d.ts +40 -0
  321. package/form/validators/async-function-validator.directive.d.ts +11 -0
  322. package/form/validators/dns1123-subdomain.d.ts +28 -0
  323. package/form/validators/function-validator.directive.d.ts +11 -0
  324. package/form/validators/index.d.ts +9 -0
  325. package/form/validators/maxlength-minlength-validator.directive.d.ts +20 -0
  326. package/form/validators/not-be-validator.directive.d.ts +12 -0
  327. package/form/validators/one-of-validator.directive.d.ts +12 -0
  328. package/form/validators/resource-limit.d.ts +17 -0
  329. package/form/validators/strong-password/index.d.ts +3 -0
  330. package/form/validators/strong-password/strong-password-tooltip/component.d.ts +6 -0
  331. package/form/validators/strong-password/strong-password-validator.directive.d.ts +34 -0
  332. package/form/validators/strong-password/strong-password-validator.module.d.ts +12 -0
  333. package/form/validators/utils.d.ts +67 -0
  334. package/index.d.ts +14 -0
  335. package/k8s-resource-list/footer/component.d.ts +42 -0
  336. package/k8s-resource-list/index.d.ts +13 -0
  337. package/k8s-resource-list/k8s-resource-list.d.ts +42 -0
  338. package/k8s-resource-list/k8s-resource-paged-list.d.ts +61 -0
  339. package/k8s-resource-list/types.d.ts +70 -0
  340. package/k8s-resource-list/utils.d.ts +19 -0
  341. package/k8s-shared/constants.d.ts +7 -0
  342. package/k8s-shared/index.d.ts +11 -0
  343. package/k8s-shared/k8s-resource-translate-key.pipe.d.ts +9 -0
  344. package/k8s-shared/k8s-shared-util.service.d.ts +48 -0
  345. package/k8s-shared/resource-mark/component.d.ts +16 -0
  346. package/k8s-shared/resource-mark/util.d.ts +2 -0
  347. package/k8s-shared/update-description-dialog/component.d.ts +33 -0
  348. package/k8s-shared/update-display-name-dialog/component.d.ts +27 -0
  349. package/k8s-shared/update-key-value-dialog/component.d.ts +38 -0
  350. package/package.json +56 -0
  351. package/page-deactivate/deactivate.directive.d.ts +18 -0
  352. package/page-deactivate/deactivate.guard.d.ts +13 -0
  353. package/page-deactivate/deactivate.service.d.ts +28 -0
  354. package/page-deactivate/index.d.ts +3 -0
  355. package/pipes/calc.pipe.d.ts +11 -0
  356. package/pipes/cron-human-readable.pipe.d.ts +9 -0
  357. package/pipes/crontab-next.pipe.d.ts +18 -0
  358. package/pipes/duration.pipe.d.ts +10 -0
  359. package/pipes/field-not-available.pipe.d.ts +13 -0
  360. package/pipes/img-header.pipe.d.ts +7 -0
  361. package/pipes/img-theme.pipe.d.ts +13 -0
  362. package/pipes/index.d.ts +18 -0
  363. package/pipes/keyvalue.pipe.d.ts +9 -0
  364. package/pipes/marked.pipe.d.ts +8 -0
  365. package/pipes/minimum-format.pipe.d.ts +10 -0
  366. package/pipes/page-env.pipe.d.ts +34 -0
  367. package/pipes/parse-json-translate.pipe.d.ts +8 -0
  368. package/pipes/parse-json.pipe.d.ts +7 -0
  369. package/pipes/pure.pipe.d.ts +17 -0
  370. package/pipes/safe.pipe.d.ts +10 -0
  371. package/pipes/sanitize.pipe.d.ts +10 -0
  372. package/pipes/time.pipe.d.ts +40 -0
  373. package/pipes/timezone-display.pipe.d.ts +10 -0
  374. package/services/form-row-duplicate/form-row-duplicate.service.d.ts +45 -0
  375. package/services/index.d.ts +3 -0
  376. package/services/on-resize.service.d.ts +20 -0
  377. package/services/yaml-util.service.d.ts +20 -0
  378. package/styles/ansi-color.scss +131 -0
  379. package/styles/global.scss +904 -0
  380. package/styles/lib.scss +1 -0
  381. package/styles/markdown-body.scss +107 -0
  382. package/styles/mixins.scss +710 -0
  383. package/styles/var.scss +30 -0
  384. package/types/common.d.ts +42 -0
  385. package/types/helpers.d.ts +35 -0
  386. package/types/index.d.ts +8 -0
  387. package/types/k8s/core.d.ts +100 -0
  388. package/types/k8s/crd.d.ts +497 -0
  389. package/types/k8s/index.d.ts +3 -0
  390. package/types/k8s/raw.d.ts +860 -0
  391. package/types/schema.d.ts +14 -0
  392. package/utils/browser.d.ts +4 -0
  393. package/utils/cache-store.d.ts +35 -0
  394. package/utils/color-helpers.d.ts +4 -0
  395. package/utils/common.d.ts +64 -0
  396. package/utils/cron-util.d.ts +8 -0
  397. package/utils/decorators.d.ts +14 -0
  398. package/utils/disabled-state.d.ts +20 -0
  399. package/utils/format-number.d.ts +11 -0
  400. package/utils/index.d.ts +23 -0
  401. package/utils/local-storage-constants.d.ts +1 -0
  402. package/utils/node.d.ts +8 -0
  403. package/utils/observable.d.ts +5 -0
  404. package/utils/operators.d.ts +22 -0
  405. package/utils/request-pool.d.ts +12 -0
  406. package/utils/resources.d.ts +19 -0
  407. package/utils/router.d.ts +3 -0
  408. package/utils/sort-fn.d.ts +2 -0
  409. package/utils/tree.d.ts +16 -0
  410. package/utils/unit.d.ts +21 -0
  411. package/utils/version.d.ts +39 -0
  412. package/utils/with-load-state.d.ts +11 -0
  413. package/utils/workload.d.ts +66 -0
  414. package/utils/workspace.d.ts +28 -0
  415. package/utils/yaml.d.ts +11 -0
@@ -0,0 +1,126 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { NotificationService } from '@alauda/ui';
3
+ import { Location } from '@angular/common';
4
+ import { Directive, Injector, Input, ViewChild } from '@angular/core';
5
+ import { FormBuilder, NgForm } from '@angular/forms';
6
+ import { identity } from 'lodash-es';
7
+ import { Observable } from 'rxjs';
8
+ import { createActions, yamlWriteOptions, } from '../code-editor/code-editor-configs';
9
+ import { InterceptDeactivateService } from '../page-deactivate';
10
+ import { isErrorMessage } from '../types';
11
+ import { ObservableInput } from '../utils';
12
+ import { parseAll, stringify } from '../utils/yaml';
13
+ import * as i0 from "@angular/core";
14
+ /**
15
+ * http://confluence.alauda.cn/display/FRON/Issue-Angular+related
16
+ * 由于formControl存在内存泄漏问题,内部 form 展示-隐藏切换应当采用 hidden 进行控制
17
+ */
18
+ export class BaseFormContainer {
19
+ constructor(injector) {
20
+ this.isUpdate = false;
21
+ this.codeEditorOptions = yamlWriteOptions;
22
+ this.actionsConfig = createActions;
23
+ this.formView = 'UI';
24
+ this.submitting = false;
25
+ this.fillResource = identity;
26
+ this.notification = injector.get(NotificationService);
27
+ this.location = injector.get(Location);
28
+ this.fb = injector.get(FormBuilder);
29
+ this.interceptDeactivate = injector.get(InterceptDeactivateService);
30
+ this.form = this.fb.group({ resource: this.fb.control('') });
31
+ }
32
+ ngOnInit() {
33
+ this.resource = this.initResource;
34
+ this.form.patchValue({
35
+ resource: this.initResource,
36
+ });
37
+ }
38
+ switchFormView(view) {
39
+ let resource;
40
+ if (view === 'UI') {
41
+ try {
42
+ resource = this.yamlToResource(this.yaml);
43
+ this.form.patchValue({
44
+ resource,
45
+ });
46
+ }
47
+ catch (err) {
48
+ console.error(err);
49
+ }
50
+ }
51
+ else {
52
+ resource = this.form.get('resource').value;
53
+ this.originalYaml = this.yaml = this.resourceToYaml(resource);
54
+ }
55
+ this.resource = resource;
56
+ this.formView = view;
57
+ }
58
+ cancel(escape) {
59
+ this.interceptDeactivate.back(escape);
60
+ }
61
+ checkForm() {
62
+ this.ngForm.onSubmit(null);
63
+ if (this.formView === 'UI' && this.ngForm.invalid) {
64
+ return false;
65
+ }
66
+ if (this.formView === 'YAML') {
67
+ try {
68
+ this.resource = this.yamlToResource(this.yaml);
69
+ return true;
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ }
75
+ const resource = this.form.get('resource').value;
76
+ this.resource = this.fillResource(resource);
77
+ return true;
78
+ }
79
+ yamlToResource(yaml) {
80
+ try {
81
+ const all = parseAll(yaml);
82
+ return (Array.isArray(this.resource) ? all : all[0]);
83
+ }
84
+ catch (e) {
85
+ if (isErrorMessage(e)) {
86
+ this.notification.error(e.message);
87
+ }
88
+ throw e;
89
+ }
90
+ }
91
+ resourceToYaml(resource) {
92
+ try {
93
+ if (Array.isArray(resource)) {
94
+ return resource
95
+ .map(r => stringify(r, { blockQuote: 'literal' }))
96
+ .join('\n---\r\n\n');
97
+ }
98
+ return stringify(resource, { blockQuote: 'literal' });
99
+ }
100
+ catch (error) {
101
+ console.error(error);
102
+ return '{}';
103
+ }
104
+ }
105
+ updateResource(resource) {
106
+ this.form.patchValue({ resource });
107
+ this.resource = resource;
108
+ }
109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BaseFormContainer, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
110
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: BaseFormContainer, inputs: { isUpdate: "isUpdate", initResource: "initResource" }, viewQueries: [{ propertyName: "ngForm", first: true, predicate: ["resourceForm"], descendants: true }], ngImport: i0 }); }
111
+ }
112
+ __decorate([
113
+ ObservableInput(),
114
+ __metadata("design:type", Observable)
115
+ ], BaseFormContainer.prototype, "initResource$", void 0);
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BaseFormContainer, decorators: [{
117
+ type: Directive
118
+ }], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { isUpdate: [{
119
+ type: Input
120
+ }], initResource: [{
121
+ type: Input
122
+ }], initResource$: [], ngForm: [{
123
+ type: ViewChild,
124
+ args: ['resourceForm', { static: false }]
125
+ }] } });
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZHluYW1pYy1wbHVnaW4tc2hhcmVkL3NyYy9mb3JtL2Jhc2UtZm9ybS1jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFhLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFcEQ7OztHQUdHO0FBRUgsTUFBTSxPQUFnQixpQkFBaUI7SUFpQ3JDLFlBQVksUUFBa0I7UUEvQjlCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFXakIsc0JBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFDckMsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFDOUIsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFDL0IsZUFBVSxHQUFHLEtBQUssQ0FBQztRQWFULGlCQUFZLEdBQXVCLFFBQVEsQ0FBQztRQUtwRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBbUI7UUFDaEMsSUFBSSxRQUFXLENBQUM7UUFDaEIsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDO2dCQUNILFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7b0JBQ25CLFFBQVE7aUJBQ1QsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWdCO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVTLFNBQVM7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0MsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFVLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVTLGNBQWMsQ0FBQyxJQUFZO1FBQ25DLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFNLENBQUM7UUFDNUQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFUyxjQUFjLENBQUMsUUFBVztRQUNsQyxJQUFJLENBQUM7WUFDSCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxRQUFRO3FCQUNaLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztxQkFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVTLGNBQWMsQ0FBQyxRQUFXO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDOzhHQXZIbUIsaUJBQWlCO2tHQUFqQixpQkFBaUI7O0FBUXJDO0lBREMsZUFBZSxFQUFFOzhCQUNILFVBQVU7d0RBQUk7MkZBUlQsaUJBQWlCO2tCQUR0QyxTQUFTOzZFQUdSLFFBQVE7c0JBRFAsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sYUFBYSxNQUdJLE1BQU07c0JBRHRCLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaWRlbnRpdHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBjcmVhdGVBY3Rpb25zLFxuICB5YW1sV3JpdGVPcHRpb25zLFxufSBmcm9tICcuLi9jb2RlLWVkaXRvci9jb2RlLWVkaXRvci1jb25maWdzJztcbmltcG9ydCB7IEludGVyY2VwdERlYWN0aXZhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vcGFnZS1kZWFjdGl2YXRlJztcbmltcG9ydCB7IGlzRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZUlucHV0IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgcGFyc2VBbGwsIHN0cmluZ2lmeSB9IGZyb20gJy4uL3V0aWxzL3lhbWwnO1xuXG4vKipcbiAqIGh0dHA6Ly9jb25mbHVlbmNlLmFsYXVkYS5jbi9kaXNwbGF5L0ZST04vSXNzdWUtQW5ndWxhcityZWxhdGVkXG4gKiDnlLHkuo5mb3JtQ29udHJvbOWtmOWcqOWGheWtmOazhOa8j+mXrumimO+8jOWGhemDqCBmb3JtIOWxleekui3pmpDol4/liIfmjaLlupTlvZPph4fnlKggaGlkZGVuIOi/m+ihjOaOp+WItlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRm9ybUNvbnRhaW5lcjxUID0gYW55PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGlzVXBkYXRlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgaW5pdFJlc291cmNlOiBUO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBpbml0UmVzb3VyY2UkOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3Jlc291cmNlRm9ybScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIHJlYWRvbmx5IG5nRm9ybTogTmdGb3JtO1xuXG4gIGNvZGVFZGl0b3JPcHRpb25zID0geWFtbFdyaXRlT3B0aW9ucztcbiAgYWN0aW9uc0NvbmZpZyA9IGNyZWF0ZUFjdGlvbnM7XG4gIGZvcm1WaWV3OiAnVUknIHwgJ1lBTUwnID0gJ1VJJztcbiAgc3VibWl0dGluZyA9IGZhbHNlO1xuXG4gIHJlc291cmNlOiBUO1xuICB5YW1sOiBzdHJpbmc7XG4gIC8vIOaUr+aMgeW4piAn5oGi5aSNJyDnmoQgY29kZUVkaXRvclxuICBvcmlnaW5hbFlhbWw6IHN0cmluZztcbiAgZmI6IEZvcm1CdWlsZGVyO1xuICBpbnRlcmNlcHREZWFjdGl2YXRlOiBJbnRlcmNlcHREZWFjdGl2YXRlU2VydmljZTtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgcHJvdGVjdGVkIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIGxvY2F0aW9uOiBMb2NhdGlvbjtcbiAgcHJvdGVjdGVkIGZpbGxSZXNvdXJjZTogKHJlc291cmNlOiBUKSA9PiBUID0gaWRlbnRpdHk7XG5cbiAgYWJzdHJhY3Qgc3VibWl0KHBhcmFtcz86IHVua25vd24pOiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMubm90aWZpY2F0aW9uID0gaW5qZWN0b3IuZ2V0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuICAgIHRoaXMubG9jYXRpb24gPSBpbmplY3Rvci5nZXQoTG9jYXRpb24pO1xuICAgIHRoaXMuZmIgPSBpbmplY3Rvci5nZXQoRm9ybUJ1aWxkZXIpO1xuICAgIHRoaXMuaW50ZXJjZXB0RGVhY3RpdmF0ZSA9IGluamVjdG9yLmdldChJbnRlcmNlcHREZWFjdGl2YXRlU2VydmljZSk7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7IHJlc291cmNlOiB0aGlzLmZiLmNvbnRyb2woJycpIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNvdXJjZSA9IHRoaXMuaW5pdFJlc291cmNlO1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIHJlc291cmNlOiB0aGlzLmluaXRSZXNvdXJjZSxcbiAgICB9KTtcbiAgfVxuXG4gIHN3aXRjaEZvcm1WaWV3KHZpZXc6ICdZQU1MJyB8ICdVSScpIHtcbiAgICBsZXQgcmVzb3VyY2U6IFQ7XG4gICAgaWYgKHZpZXcgPT09ICdVSScpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc291cmNlID0gdGhpcy55YW1sVG9SZXNvdXJjZSh0aGlzLnlhbWwpO1xuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb3VyY2UgPSB0aGlzLmZvcm0uZ2V0KCdyZXNvdXJjZScpLnZhbHVlO1xuICAgICAgdGhpcy5vcmlnaW5hbFlhbWwgPSB0aGlzLnlhbWwgPSB0aGlzLnJlc291cmNlVG9ZYW1sKHJlc291cmNlKTtcbiAgICB9XG4gICAgdGhpcy5yZXNvdXJjZSA9IHJlc291cmNlO1xuICAgIHRoaXMuZm9ybVZpZXcgPSB2aWV3O1xuICB9XG5cbiAgY2FuY2VsKGVzY2FwZT86IGJvb2xlYW4pIHtcbiAgICB0aGlzLmludGVyY2VwdERlYWN0aXZhdGUuYmFjayhlc2NhcGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrRm9ybSgpIHtcbiAgICB0aGlzLm5nRm9ybS5vblN1Ym1pdChudWxsKTtcbiAgICBpZiAodGhpcy5mb3JtVmlldyA9PT0gJ1VJJyAmJiB0aGlzLm5nRm9ybS5pbnZhbGlkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm1WaWV3ID09PSAnWUFNTCcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucmVzb3VyY2UgPSB0aGlzLnlhbWxUb1Jlc291cmNlKHRoaXMueWFtbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVzb3VyY2UgPSB0aGlzLmZvcm0uZ2V0KCdyZXNvdXJjZScpLnZhbHVlIGFzIFQ7XG4gICAgdGhpcy5yZXNvdXJjZSA9IHRoaXMuZmlsbFJlc291cmNlKHJlc291cmNlKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHlhbWxUb1Jlc291cmNlKHlhbWw6IHN0cmluZyk6IFQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhbGwgPSBwYXJzZUFsbCh5YW1sKTtcbiAgICAgIHJldHVybiAoQXJyYXkuaXNBcnJheSh0aGlzLnJlc291cmNlKSA/IGFsbCA6IGFsbFswXSkgYXMgVDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoaXNFcnJvck1lc3NhZ2UoZSkpIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IoZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHJlc291cmNlVG9ZYW1sKHJlc291cmNlOiBUKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc291cmNlKSkge1xuICAgICAgICByZXR1cm4gcmVzb3VyY2VcbiAgICAgICAgICAubWFwKHIgPT4gc3RyaW5naWZ5KHIsIHsgYmxvY2tRdW90ZTogJ2xpdGVyYWwnIH0pKVxuICAgICAgICAgIC5qb2luKCdcXG4tLS1cXHJcXG5cXG4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmdpZnkocmVzb3VyY2UsIHsgYmxvY2tRdW90ZTogJ2xpdGVyYWwnIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHJldHVybiAne30nO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVSZXNvdXJjZShyZXNvdXJjZTogVCkge1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgcmVzb3VyY2UgfSk7XG4gICAgdGhpcy5yZXNvdXJjZSA9IHJlc291cmNlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,190 @@
1
+ import { coerceAttrBoolean } from '@alauda/ui';
2
+ import { ChangeDetectorRef, Directive, inject, Input, QueryList, ViewChildren, } from '@angular/core';
3
+ import { FormGroupDirective, NgControl, NgForm, } from '@angular/forms';
4
+ import { assocPath, identity, mergeDeepRight, path } from 'ramda';
5
+ import { ReplaySubject, startWith, switchMap, Subject, takeUntil, debounceTime, merge, combineLatest, filter, map, tap, take, of, } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ export function createNestedFormControl({ autoEmitChange = false, asyncValidator = false, } = {}) {
8
+ return class NestedFormControl extends BaseNestedFormControl {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.autoEmitChange = autoEmitChange;
12
+ this.asyncValidator = asyncValidator;
13
+ }
14
+ };
15
+ }
16
+ export class BaseNestedFormControl {
17
+ get disabled() {
18
+ return this._disabled;
19
+ }
20
+ set disabled(val) {
21
+ this._disabled = coerceAttrBoolean(val);
22
+ }
23
+ constructor() {
24
+ this._disabled = false;
25
+ this.model = null;
26
+ this.submitted = false;
27
+ this.autoEmitChange = false;
28
+ this.asyncValidator = false;
29
+ this.cdr = inject(ChangeDetectorRef);
30
+ this.destroy$$ = new Subject();
31
+ this.hostForm = inject(NgForm, { optional: true }) ??
32
+ inject(FormGroupDirective, { optional: true });
33
+ if (this.hostForm) {
34
+ this.hostForm.ngSubmit.pipe(takeUntil(this.destroy$$)).subscribe(() => {
35
+ this.submitted = this.hostForm.submitted;
36
+ this.onSubmitted?.();
37
+ this.cdr.markForCheck();
38
+ });
39
+ }
40
+ }
41
+ ngAfterViewInit() {
42
+ this.controls.changes
43
+ .pipe(startWith(this.controls), switchMap((controls) => controls.length
44
+ ? merge(...controls.toArray().map(control => control.statusChanges)).pipe(startWith(null))
45
+ : of(null)), debounceTime(0))
46
+ .subscribe(() => {
47
+ this.onValidatorChange?.();
48
+ });
49
+ if (this.autoEmitChange) {
50
+ this.controls.changes
51
+ .pipe(startWith(this.controls), switchMap((controls) => merge(...controls.toArray().map(control => control.valueChanges))))
52
+ .pipe(debounceTime(0))
53
+ .subscribe(() => {
54
+ this.emitModel(this.model);
55
+ });
56
+ }
57
+ }
58
+ ngOnDestroy() {
59
+ this.destroy$$.next();
60
+ this.destroy$$.complete();
61
+ }
62
+ registerOnValidatorChange(fn) {
63
+ this.onValidatorChange = fn;
64
+ }
65
+ registerOnChange(fn) {
66
+ this.onChange = fn;
67
+ }
68
+ registerOnTouched(fn) {
69
+ this.onTouched = fn;
70
+ }
71
+ setDisabledState(isDisabled) {
72
+ this.disabled = isDisabled;
73
+ this.cdr.markForCheck();
74
+ }
75
+ writeValue(value) {
76
+ this.model = this.valueIn(value);
77
+ this.cdr.markForCheck();
78
+ }
79
+ validate(_control) {
80
+ const getErrors = () => this.controls?.reduce((acc, control) => {
81
+ if (control.errors) {
82
+ return mergeDeepRight(acc, control.name ? { [control.name]: control.errors } : control.errors);
83
+ }
84
+ return acc;
85
+ }, {});
86
+ return this.asyncValidator
87
+ ? combineLatest((this.controls?.toArray() ?? []).map(control => control.statusChanges.pipe(startWith(control.status)))).pipe(debounceTime(0), filter(statuses => statuses.includes('INVALID') || !statuses.includes('PENDING')), take(1), map(() => getErrors()), tap(() => {
88
+ this.cdr.markForCheck();
89
+ }))
90
+ : getErrors();
91
+ }
92
+ emitModel(model = this.model) {
93
+ this.model = model;
94
+ this.emitValue(this.modelOut(this.model));
95
+ }
96
+ emitValue(value) {
97
+ if (this.onChange) {
98
+ this.onChange(value);
99
+ }
100
+ }
101
+ valueIn(value) {
102
+ return value;
103
+ }
104
+ modelOut(model) {
105
+ return model;
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BaseNestedFormControl, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
108
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: BaseNestedFormControl, inputs: { disabled: "disabled" }, viewQueries: [{ propertyName: "controls", predicate: NgControl, descendants: true }], ngImport: i0 }); }
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BaseNestedFormControl, decorators: [{
111
+ type: Directive
112
+ }], ctorParameters: () => [], propDecorators: { controls: [{
113
+ type: ViewChildren,
114
+ args: [NgControl]
115
+ }], disabled: [{
116
+ type: Input
117
+ }] } });
118
+ /**
119
+ * @deprecated use {@link BaseNestedFormControl} instead.
120
+ */
121
+ export class BaseNestedFormControlPure extends BaseNestedFormControl {
122
+ constructor() {
123
+ super();
124
+ this.model$ = new ReplaySubject(1);
125
+ this.model$.subscribe(model => {
126
+ this.model = model;
127
+ this.cdr.markForCheck();
128
+ });
129
+ }
130
+ writeValue(value) {
131
+ this.model$.next(this.valueIn(value));
132
+ }
133
+ emitValue(value) {
134
+ if (this.onChange) {
135
+ this.onChange(value);
136
+ this.writeValue(value);
137
+ }
138
+ }
139
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BaseNestedFormControlPure, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
140
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: BaseNestedFormControlPure, usesInheritance: true, ngImport: i0 }); }
141
+ }
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BaseNestedFormControlPure, decorators: [{
143
+ type: Directive
144
+ }], ctorParameters: () => [] });
145
+ function collectPaths(mapper, parent) {
146
+ return Object.entries(mapper).reduce((acc, [key, value]) => {
147
+ const path = typeof value === 'string' ? value.split('.') : value;
148
+ if (Array.isArray(path)) {
149
+ acc.push([parent.concat(key), path]);
150
+ return acc;
151
+ }
152
+ return acc.concat(collectPaths(path, parent.concat(key)));
153
+ }, []);
154
+ }
155
+ export function dataTransfer(mapper) {
156
+ const tuples = collectPaths(mapper, []);
157
+ let _source;
158
+ let _target = {};
159
+ return [
160
+ source => {
161
+ _source = source;
162
+ return tuples.reduce((acc, [left, right]) => {
163
+ const newValue = path(right, source);
164
+ if (path(left, acc) === newValue) {
165
+ return acc;
166
+ }
167
+ return (_target = assocPath(left, newValue, acc));
168
+ }, _target);
169
+ },
170
+ target => {
171
+ _target = target;
172
+ return tuples.reduce((acc, [left, right]) => {
173
+ const newValue = path(left, target);
174
+ if (path(right, acc) === newValue) {
175
+ return acc;
176
+ }
177
+ return (_source = assocPath(right, newValue, acc));
178
+ }, _source);
179
+ },
180
+ ];
181
+ }
182
+ function parsePath(path) {
183
+ return typeof path === 'string' ? path.split('.') : path;
184
+ }
185
+ export function copyValue(from, to, mapper = identity) {
186
+ const fromPath = parsePath(from);
187
+ const toPath = parsePath(to);
188
+ return (object) => assocPath(toPath, mapper(path(fromPath, object)), object);
189
+ }
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1uZXN0ZWQtZm9ybS1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2Zvcm0vYmFzZS1uZXN0ZWQtZm9ybS1jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGtCQUFrQixFQUNsQixTQUFTLEVBQ1QsTUFBTSxHQUVQLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNsRSxPQUFPLEVBQ0wsYUFBYSxFQUNiLFNBQVMsRUFDVCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLGFBQWEsRUFDYixNQUFNLEVBQ04sR0FBRyxFQUNILEdBQUcsRUFDSCxJQUFJLEVBQ0osRUFBRSxHQUNILE1BQU0sTUFBTSxDQUFDOztBQUVkLE1BQU0sVUFBVSx1QkFBdUIsQ0FBVyxFQUNoRCxjQUFjLEdBQUcsS0FBSyxFQUN0QixjQUFjLEdBQUcsS0FBSyxNQUlwQixFQUFFO0lBRUosT0FBTyxNQUFNLGlCQUFrQixTQUFRLHFCQUEyQjtRQUEzRDs7WUFDYyxtQkFBYyxHQUFHLGNBQWMsQ0FBQztZQUNoQyxtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUNyRCxDQUFDO0tBQUEsQ0FBQztBQUNKLENBQUM7QUFHRCxNQUFNLE9BQU8scUJBQXFCO0lBTWhDLElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsR0FBaUI7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBb0JEO1FBbEJRLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFPMUIsVUFBSyxHQUFNLElBQUksQ0FBQztRQUNoQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRVIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2hDLGFBQVEsR0FDaEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUcvQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO2FBQ2xCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixTQUFTLENBQUMsQ0FBQyxRQUE4QixFQUFFLEVBQUUsQ0FDM0MsUUFBUSxDQUFDLE1BQU07WUFDYixDQUFDLENBQUMsS0FBSyxDQUNILEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FDNUQsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2IsRUFDRCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQ2hCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87aUJBQ2xCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixTQUFTLENBQUMsQ0FBQyxRQUE4QixFQUFFLEVBQUUsQ0FDM0MsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUNsRSxDQUNGO2lCQUNBLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3JCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELHlCQUF5QixDQUFDLEVBQWM7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBa0I7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFRO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRLENBQ04sUUFBMEI7UUFFMUIsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQ3JCLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3JDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQixPQUFPLGNBQWMsQ0FDbkIsR0FBRyxFQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUNuRSxDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQXNCLENBQUMsQ0FBQztRQUU3QixPQUFPLElBQUksQ0FBQyxjQUFjO1lBQ3hCLENBQUMsQ0FBQyxhQUFhLENBQ1gsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUM3QyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQ3RELENBQ0YsQ0FBQyxJQUFJLENBQ0osWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNmLE1BQU0sQ0FDSixRQUFRLENBQUMsRUFBRSxDQUNULFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUNoRSxFQUNELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsRUFDdEIsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUNIO1lBQ0gsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBVyxJQUFJLENBQUMsS0FBSztRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFRO1FBQ2hCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFUyxPQUFPLENBQUMsS0FBUTtRQUN4QixPQUFPLEtBQVksQ0FBQztJQUN0QixDQUFDO0lBRVMsUUFBUSxDQUFDLEtBQVE7UUFDekIsT0FBTyxLQUFZLENBQUM7SUFDdEIsQ0FBQzs4R0F6SlUscUJBQXFCO2tHQUFyQixxQkFBcUIseUZBR2xCLFNBQVM7OzJGQUhaLHFCQUFxQjtrQkFEakMsU0FBUzt3REFLRSxRQUFRO3NCQURqQixZQUFZO3VCQUFDLFNBQVM7Z0JBSW5CLFFBQVE7c0JBRFgsS0FBSzs7QUFzSlI7O0dBRUc7QUFFSCxNQUFNLE9BQU8seUJBQW9DLFNBQVEscUJBR3hEO0lBR0M7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUhWLFdBQU0sR0FBRyxJQUFJLGFBQWEsQ0FBSSxDQUFDLENBQUMsQ0FBQztRQUsvQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVRLFVBQVUsQ0FBQyxLQUFRO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRVEsU0FBUyxDQUFDLEtBQVE7UUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDOzhHQXhCVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsU0FBUzs7QUFvQ1YsU0FBUyxZQUFZLENBQUMsTUFBYyxFQUFFLE1BQWdCO0lBQ3BELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUN6RCxNQUFNLElBQUksR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNsRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4QixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUkxQixNQUFTO0lBQ1QsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QyxJQUFJLE9BQVUsQ0FBQztJQUNmLElBQUksT0FBTyxHQUFNLEVBQU8sQ0FBQztJQUN6QixPQUFPO1FBQ0wsTUFBTSxDQUFDLEVBQUU7WUFDUCxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ2pCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQVUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUU5QyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ2pDLE9BQU8sR0FBRyxDQUFDO2dCQUNiLENBQUM7Z0JBRUQsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQWEsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLENBQUMsRUFBRTtZQUNQLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDakIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7Z0JBQzFDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBVSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRTdDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDbEMsT0FBTyxHQUFHLENBQUM7Z0JBQ2IsQ0FBQztnQkFFRCxPQUFPLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBYSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2QsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBVTtJQUMzQixPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzNELENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUN2QixJQUFVLEVBQ1YsRUFBUSxFQUNSLFNBQTBCLFFBQVE7SUFFbEMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFPLENBQUMsTUFBUyxFQUFFLEVBQUUsQ0FDbkIsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VBdHRyQm9vbGVhbiB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nQ29udHJvbCxcbiAgTmdGb3JtLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBhc3NvY1BhdGgsIGlkZW50aXR5LCBtZXJnZURlZXBSaWdodCwgcGF0aCB9IGZyb20gJ3JhbWRhJztcbmltcG9ydCB7XG4gIFJlcGxheVN1YmplY3QsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG4gIGRlYm91bmNlVGltZSxcbiAgbWVyZ2UsXG4gIE9ic2VydmFibGUsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICB0YXAsXG4gIHRha2UsXG4gIG9mLFxufSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5lc3RlZEZvcm1Db250cm9sPFYsIE0gPSBWPih7XG4gIGF1dG9FbWl0Q2hhbmdlID0gZmFsc2UsXG4gIGFzeW5jVmFsaWRhdG9yID0gZmFsc2UsXG59OiB7XG4gIGF1dG9FbWl0Q2hhbmdlPzogYm9vbGVhbjtcbiAgYXN5bmNWYWxpZGF0b3I/OiBib29sZWFuO1xufSA9IHt9KTogLy8gd29ya2Fyb3VuZDogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zMDM1NVxubmV3ICgpID0+IEJhc2VOZXN0ZWRGb3JtQ29udHJvbDxWLCBNPiB7XG4gIHJldHVybiBjbGFzcyBOZXN0ZWRGb3JtQ29udHJvbCBleHRlbmRzIEJhc2VOZXN0ZWRGb3JtQ29udHJvbDxWLCBNPiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGF1dG9FbWl0Q2hhbmdlID0gYXV0b0VtaXRDaGFuZ2U7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jVmFsaWRhdG9yID0gYXN5bmNWYWxpZGF0b3I7XG4gIH07XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEJhc2VOZXN0ZWRGb3JtQ29udHJvbDxWLCBNID0gVj5cbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIEBWaWV3Q2hpbGRyZW4oTmdDb250cm9sKVxuICBwcm90ZWN0ZWQgY29udHJvbHM6IFF1ZXJ5TGlzdDxOZ0NvbnRyb2w+O1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBzZXQgZGlzYWJsZWQodmFsOiBib29sZWFuIHwgJycpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUF0dHJCb29sZWFuKHZhbCk7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIG9uVmFsaWRhdG9yQ2hhbmdlOiAoKSA9PiB2b2lkO1xuICBvbkNoYW5nZTogKF86IFYpID0+IHZvaWQ7XG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZDtcbiAgb25TdWJtaXR0ZWQ6ICgpID0+IHZvaWQ7XG5cbiAgbW9kZWw6IE0gPSBudWxsO1xuICBzdWJtaXR0ZWQgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgYXV0b0VtaXRDaGFuZ2UgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGFzeW5jVmFsaWRhdG9yID0gZmFsc2U7XG4gIHByb3RlY3RlZCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJvdGVjdGVkIGhvc3RGb3JtID1cbiAgICBpbmplY3QoTmdGb3JtLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/XG4gICAgaW5qZWN0KEZvcm1Hcm91cERpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAodGhpcy5ob3N0Rm9ybSkge1xuICAgICAgdGhpcy5ob3N0Rm9ybS5uZ1N1Ym1pdC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3VibWl0dGVkID0gdGhpcy5ob3N0Rm9ybS5zdWJtaXR0ZWQ7XG4gICAgICAgIHRoaXMub25TdWJtaXR0ZWQ/LigpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNvbnRyb2xzLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5jb250cm9scyksXG4gICAgICAgIHN3aXRjaE1hcCgoY29udHJvbHM6IFF1ZXJ5TGlzdDxOZ0NvbnRyb2w+KSA9PlxuICAgICAgICAgIGNvbnRyb2xzLmxlbmd0aFxuICAgICAgICAgICAgPyBtZXJnZShcbiAgICAgICAgICAgICAgICAuLi5jb250cm9scy50b0FycmF5KCkubWFwKGNvbnRyb2wgPT4gY29udHJvbC5zdGF0dXNDaGFuZ2VzKSxcbiAgICAgICAgICAgICAgKS5waXBlKHN0YXJ0V2l0aChudWxsKSlcbiAgICAgICAgICAgIDogb2YobnVsbCksXG4gICAgICAgICksXG4gICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlPy4oKTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuYXV0b0VtaXRDaGFuZ2UpIHtcbiAgICAgIHRoaXMuY29udHJvbHMuY2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgodGhpcy5jb250cm9scyksXG4gICAgICAgICAgc3dpdGNoTWFwKChjb250cm9sczogUXVlcnlMaXN0PE5nQ29udHJvbD4pID0+XG4gICAgICAgICAgICBtZXJnZSguLi5jb250cm9scy50b0FycmF5KCkubWFwKGNvbnRyb2wgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMpKSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbWl0TW9kZWwodGhpcy5tb2RlbCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBWKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBWKSB7XG4gICAgdGhpcy5tb2RlbCA9IHRoaXMudmFsdWVJbih2YWx1ZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB2YWxpZGF0ZShcbiAgICBfY29udHJvbD86IEFic3RyYWN0Q29udHJvbCxcbiAgKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB7XG4gICAgY29uc3QgZ2V0RXJyb3JzID0gKCkgPT5cbiAgICAgIHRoaXMuY29udHJvbHM/LnJlZHVjZSgoYWNjLCBjb250cm9sKSA9PiB7XG4gICAgICAgIGlmIChjb250cm9sLmVycm9ycykge1xuICAgICAgICAgIHJldHVybiBtZXJnZURlZXBSaWdodChcbiAgICAgICAgICAgIGFjYyxcbiAgICAgICAgICAgIGNvbnRyb2wubmFtZSA/IHsgW2NvbnRyb2wubmFtZV06IGNvbnRyb2wuZXJyb3JzIH0gOiBjb250cm9sLmVycm9ycyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSBhcyBWYWxpZGF0aW9uRXJyb3JzKTtcblxuICAgIHJldHVybiB0aGlzLmFzeW5jVmFsaWRhdG9yXG4gICAgICA/IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgKHRoaXMuY29udHJvbHM/LnRvQXJyYXkoKSA/PyBbXSkubWFwKGNvbnRyb2wgPT5cbiAgICAgICAgICAgIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnN0YXR1cykpLFxuICAgICAgICAgICksXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgc3RhdHVzZXMgPT5cbiAgICAgICAgICAgICAgc3RhdHVzZXMuaW5jbHVkZXMoJ0lOVkFMSUQnKSB8fCAhc3RhdHVzZXMuaW5jbHVkZXMoJ1BFTkRJTkcnKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgbWFwKCgpID0+IGdldEVycm9ycygpKSxcbiAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIDogZ2V0RXJyb3JzKCk7XG4gIH1cblxuICBlbWl0TW9kZWwobW9kZWw6IE0gPSB0aGlzLm1vZGVsKSB7XG4gICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICAgIHRoaXMuZW1pdFZhbHVlKHRoaXMubW9kZWxPdXQodGhpcy5tb2RlbCkpO1xuICB9XG5cbiAgZW1pdFZhbHVlKHZhbHVlOiBWKSB7XG4gICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWx1ZUluKHZhbHVlOiBWKTogTSB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIGFueTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtb2RlbE91dChtb2RlbDogTSk6IFYge1xuICAgIHJldHVybiBtb2RlbCBhcyBhbnk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIEJhc2VOZXN0ZWRGb3JtQ29udHJvbH0gaW5zdGVhZC5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgQmFzZU5lc3RlZEZvcm1Db250cm9sUHVyZTxWLCBNID0gVj4gZXh0ZW5kcyBCYXNlTmVzdGVkRm9ybUNvbnRyb2w8XG4gIFYsXG4gIE1cbj4ge1xuICBtb2RlbCQgPSBuZXcgUmVwbGF5U3ViamVjdDxNPigxKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5tb2RlbCQuc3Vic2NyaWJlKG1vZGVsID0+IHtcbiAgICAgIHRoaXMubW9kZWwgPSBtb2RlbDtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogVikge1xuICAgIHRoaXMubW9kZWwkLm5leHQodGhpcy52YWx1ZUluKHZhbHVlKSk7XG4gIH1cblxuICBvdmVycmlkZSBlbWl0VmFsdWUodmFsdWU6IFYpIHtcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxufVxuXG50eXBlIFBhdGggPSBzdHJpbmcgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xuXG5pbnRlcmZhY2UgTWFwcGVyIHtcbiAgW3g6IHN0cmluZ106IE1hcHBlciB8IFBhdGg7XG59XG5cbnR5cGUgUGF0aFR1cGxlID0gW3N0cmluZ1tdLCBzdHJpbmdbXV07XG5cbmZ1bmN0aW9uIGNvbGxlY3RQYXRocyhtYXBwZXI6IE1hcHBlciwgcGFyZW50OiBzdHJpbmdbXSk6IFBhdGhUdXBsZVtdIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1hcHBlcikucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUuc3BsaXQoJy4nKSA6IHZhbHVlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHBhdGgpKSB7XG4gICAgICBhY2MucHVzaChbcGFyZW50LmNvbmNhdChrZXkpLCBwYXRoXSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICByZXR1cm4gYWNjLmNvbmNhdChjb2xsZWN0UGF0aHMocGF0aCwgcGFyZW50LmNvbmNhdChrZXkpKSk7XG4gIH0sIFtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFUcmFuc2ZlcjxcbiAgUyBleHRlbmRzIG9iamVjdCxcbiAgVCBleHRlbmRzIG9iamVjdCxcbiAgTSBleHRlbmRzIFJlY29yZDxrZXlvZiBULCBQYXRoIHwgTWFwcGVyPiA9IFJlY29yZDxrZXlvZiBULCBQYXRoIHwgTWFwcGVyPixcbj4obWFwcGVyOiBNKTogWyhzb3VyY2U6IFMpID0+IFQsICh0YXJnZXQ6IFQpID0+IFNdIHtcbiAgY29uc3QgdHVwbGVzID0gY29sbGVjdFBhdGhzKG1hcHBlciwgW10pO1xuICBsZXQgX3NvdXJjZTogUztcbiAgbGV0IF90YXJnZXQ6IFQgPSB7fSBhcyBUO1xuICByZXR1cm4gW1xuICAgIHNvdXJjZSA9PiB7XG4gICAgICBfc291cmNlID0gc291cmNlO1xuICAgICAgcmV0dXJuIHR1cGxlcy5yZWR1Y2UoKGFjYywgW2xlZnQsIHJpZ2h0XSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHBhdGg8dW5rbm93bj4ocmlnaHQsIHNvdXJjZSk7XG5cbiAgICAgICAgaWYgKHBhdGgobGVmdCwgYWNjKSA9PT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChfdGFyZ2V0ID0gYXNzb2NQYXRoPHVua25vd24sIFQ+KGxlZnQsIG5ld1ZhbHVlLCBhY2MpKTtcbiAgICAgIH0sIF90YXJnZXQpO1xuICAgIH0sXG4gICAgdGFyZ2V0ID0+IHtcbiAgICAgIF90YXJnZXQgPSB0YXJnZXQ7XG4gICAgICByZXR1cm4gdHVwbGVzLnJlZHVjZSgoYWNjLCBbbGVmdCwgcmlnaHRdKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gcGF0aDx1bmtub3duPihsZWZ0LCB0YXJnZXQpO1xuXG4gICAgICAgIGlmIChwYXRoKHJpZ2h0LCBhY2MpID09PSBuZXdWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKF9zb3VyY2UgPSBhc3NvY1BhdGg8dW5rbm93biwgUz4ocmlnaHQsIG5ld1ZhbHVlLCBhY2MpKTtcbiAgICAgIH0sIF9zb3VyY2UpO1xuICAgIH0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIHBhcnNlUGF0aChwYXRoOiBQYXRoKTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB7XG4gIHJldHVybiB0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycgPyBwYXRoLnNwbGl0KCcuJykgOiBwYXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weVZhbHVlPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBmcm9tOiBQYXRoLFxuICB0bzogUGF0aCxcbiAgbWFwcGVyOiAodjogYW55KSA9PiBhbnkgPSBpZGVudGl0eSxcbikge1xuICBjb25zdCBmcm9tUGF0aCA9IHBhcnNlUGF0aChmcm9tKTtcbiAgY29uc3QgdG9QYXRoID0gcGFyc2VQYXRoKHRvKTtcbiAgcmV0dXJuIChvYmplY3Q6IFQpID0+XG4gICAgYXNzb2NQYXRoKHRvUGF0aCwgbWFwcGVyKHBhdGgoZnJvbVBhdGgsIG9iamVjdCkpLCBvYmplY3QpO1xufVxuIl19
@@ -0,0 +1,41 @@
1
+ import { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';
2
+ import { Directive, Injector } from '@angular/core';
3
+ import { DefaultErrorsMapperService } from './default-errors-mapper.service';
4
+ import * as i0 from "@angular/core";
5
+ export class BaseErrorsMapper {
6
+ getErrorMessage(errors, errorsMapper, errorsMapperFn, namePrefix, ignoreUnknownError = false) {
7
+ const firstError = Object.keys(errors || {})[0];
8
+ if (!firstError) {
9
+ return;
10
+ }
11
+ if (errorsMapper?.[firstError]) {
12
+ return errorsMapper[firstError];
13
+ }
14
+ if (errorsMapperFn) {
15
+ const res = errorsMapperFn(errors);
16
+ if (res) {
17
+ return res;
18
+ }
19
+ }
20
+ // only required error should be modified
21
+ if (namePrefix && firstError === 'required') {
22
+ return this.translate.get('required_item', { name: namePrefix });
23
+ }
24
+ const definedError = this.mapperService.map(firstError, errors[firstError]);
25
+ return definedError
26
+ ? (namePrefix || '') + definedError
27
+ : ignoreUnknownError
28
+ ? ''
29
+ : this.translate.get('the_value_is_invalid');
30
+ }
31
+ constructor(injector) {
32
+ this.translate = injector.get(TranslateService);
33
+ this.mapperService = injector.get(DefaultErrorsMapperService);
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BaseErrorsMapper, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: BaseErrorsMapper, ngImport: i0 }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BaseErrorsMapper, decorators: [{
39
+ type: Directive
40
+ }], ctorParameters: () => [{ type: i0.Injector }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lcnJvcnMtbWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2Zvcm0vZXJyb3JzLW1hcHBlci9iYXNlLWVycm9ycy1tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBSTdFLE1BQU0sT0FBZ0IsZ0JBQWdCO0lBSTFCLGVBQWUsQ0FDdkIsTUFBMkIsRUFDM0IsWUFBd0IsRUFDeEIsY0FBK0IsRUFDL0IsVUFBbUIsRUFDbkIsa0JBQWtCLEdBQUcsS0FBSztRQUUxQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25DLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQztRQUNELHlDQUF5QztRQUN6QyxJQUFJLFVBQVUsSUFBSSxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRTVFLE9BQU8sWUFBWTtZQUNqQixDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEdBQUcsWUFBWTtZQUNuQyxDQUFDLENBQUMsa0JBQWtCO2dCQUNsQixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFBWSxRQUFrQjtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNoRSxDQUFDOzhHQXpDbUIsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRHJDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQGFsYXVkYS1mZS9keW5hbWljLXBsdWdpbi1zZGsnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdHJpbmdNYXAgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IERlZmF1bHRFcnJvcnNNYXBwZXJTZXJ2aWNlIH0gZnJvbSAnLi9kZWZhdWx0LWVycm9ycy1tYXBwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvck1hcHBlckludGVyZmFjZSwgRXJyb3JzTWFwcGVyRm4gfSBmcm9tICcuL3R5cGVzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUVycm9yc01hcHBlciB7XG4gIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZTtcbiAgbWFwcGVyU2VydmljZTogRXJyb3JNYXBwZXJJbnRlcmZhY2U7XG5cbiAgcHJvdGVjdGVkIGdldEVycm9yTWVzc2FnZShcbiAgICBlcnJvcnM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgZXJyb3JzTWFwcGVyPzogU3RyaW5nTWFwLFxuICAgIGVycm9yc01hcHBlckZuPzogRXJyb3JzTWFwcGVyRm4sXG4gICAgbmFtZVByZWZpeD86IHN0cmluZyxcbiAgICBpZ25vcmVVbmtub3duRXJyb3IgPSBmYWxzZSxcbiAgKSB7XG4gICAgY29uc3QgZmlyc3RFcnJvciA9IE9iamVjdC5rZXlzKGVycm9ycyB8fCB7fSlbMF07XG4gICAgaWYgKCFmaXJzdEVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlcnJvcnNNYXBwZXI/LltmaXJzdEVycm9yXSkge1xuICAgICAgcmV0dXJuIGVycm9yc01hcHBlcltmaXJzdEVycm9yXTtcbiAgICB9XG4gICAgaWYgKGVycm9yc01hcHBlckZuKSB7XG4gICAgICBjb25zdCByZXMgPSBlcnJvcnNNYXBwZXJGbihlcnJvcnMpO1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBvbmx5IHJlcXVpcmVkIGVycm9yIHNob3VsZCBiZSBtb2RpZmllZFxuICAgIGlmIChuYW1lUHJlZml4ICYmIGZpcnN0RXJyb3IgPT09ICdyZXF1aXJlZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ3JlcXVpcmVkX2l0ZW0nLCB7IG5hbWU6IG5hbWVQcmVmaXggfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5lZEVycm9yID0gdGhpcy5tYXBwZXJTZXJ2aWNlLm1hcChmaXJzdEVycm9yLCBlcnJvcnNbZmlyc3RFcnJvcl0pO1xuXG4gICAgcmV0dXJuIGRlZmluZWRFcnJvclxuICAgICAgPyAobmFtZVByZWZpeCB8fCAnJykgKyBkZWZpbmVkRXJyb3JcbiAgICAgIDogaWdub3JlVW5rbm93bkVycm9yXG4gICAgICAgID8gJydcbiAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ3RoZV92YWx1ZV9pc19pbnZhbGlkJyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLnRyYW5zbGF0ZSA9IGluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLm1hcHBlclNlcnZpY2UgPSBpbmplY3Rvci5nZXQoRGVmYXVsdEVycm9yc01hcHBlclNlcnZpY2UpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,65 @@
1
+ import { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@alauda-fe/dynamic-plugin-sdk";
5
+ export class DefaultErrorsMapperService {
6
+ constructor(translate) {
7
+ this.translate = translate;
8
+ }
9
+ map(key, error) {
10
+ switch (key) {
11
+ case 'required': {
12
+ return this.translate.get('field_required');
13
+ }
14
+ case 'pattern': {
15
+ return this.translate.get('invalid_pattern');
16
+ }
17
+ case 'minlength': {
18
+ return this.translate.get('warning_min_length', {
19
+ length: error.requiredLength,
20
+ });
21
+ }
22
+ case 'maxlength': {
23
+ return this.translate.get('warning_max_length', {
24
+ length: error.requiredLength,
25
+ });
26
+ }
27
+ case 'min': {
28
+ return this.translate.get('warning_min', {
29
+ value: error.min,
30
+ });
31
+ }
32
+ case 'max': {
33
+ return this.translate.get('warning_max', {
34
+ value: error.max,
35
+ });
36
+ }
37
+ case 'number': {
38
+ return this.translate.get('invalid_number');
39
+ }
40
+ case 'includes': {
41
+ return this.translate.get('option_has_expired');
42
+ }
43
+ case 'dropdown_min_length': {
44
+ return this.translate.get('dropdown_min_length', {
45
+ length: error.minLength,
46
+ });
47
+ }
48
+ case 'dropdown_max_length': {
49
+ return this.translate.get('dropdown_max_length', {
50
+ length: error.maxLength,
51
+ });
52
+ }
53
+ default: {
54
+ return '';
55
+ }
56
+ }
57
+ }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: DefaultErrorsMapperService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
59
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: DefaultErrorsMapperService, providedIn: 'root' }); }
60
+ }
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: DefaultErrorsMapperService, decorators: [{
62
+ type: Injectable,
63
+ args: [{ providedIn: 'root' }]
64
+ }], ctorParameters: () => [{ type: i1.TranslateService }] });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1lcnJvcnMtbWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2R5bmFtaWMtcGx1Z2luLXNoYXJlZC9zcmMvZm9ybS9lcnJvcnMtbWFwcGVyL2RlZmF1bHQtZXJyb3JzLW1hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUszQyxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQTZCLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQUcsQ0FBQztJQUU1RCxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDekIsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNaLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzlDLENBQUM7WUFDRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUU7b0JBQzlDLE1BQU0sRUFBRSxLQUFLLENBQUMsY0FBYztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRTtvQkFDOUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxjQUFjO2lCQUM3QixDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFO29CQUN2QyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUc7aUJBQ2pCLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUU7b0JBQ3ZDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRztpQkFDakIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUNELEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFDRCxLQUFLLHFCQUFxQixDQUFDLENBQUMsQ0FBQztnQkFDM0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRTtvQkFDL0MsTUFBTSxFQUFFLEtBQUssQ0FBQyxTQUFTO2lCQUN4QixDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsS0FBSyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUU7b0JBQy9DLE1BQU0sRUFBRSxLQUFLLENBQUMsU0FBUztpQkFDeEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBbkRVLDBCQUEwQjtrSEFBMUIsMEJBQTBCLGNBRGIsTUFBTTs7MkZBQ25CLDBCQUEwQjtrQkFEdEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQGFsYXVkYS1mZS9keW5hbWljLXBsdWdpbi1zZGsnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFcnJvck1hcHBlckludGVyZmFjZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERlZmF1bHRFcnJvcnNNYXBwZXJTZXJ2aWNlIGltcGxlbWVudHMgRXJyb3JNYXBwZXJJbnRlcmZhY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICBtYXAoa2V5OiBzdHJpbmcsIGVycm9yOiBhbnkpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICBjYXNlICdyZXF1aXJlZCc6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmdldCgnZmllbGRfcmVxdWlyZWQnKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3BhdHRlcm4nOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ2ludmFsaWRfcGF0dGVybicpO1xuICAgICAgfVxuICAgICAgY2FzZSAnbWlubGVuZ3RoJzoge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KCd3YXJuaW5nX21pbl9sZW5ndGgnLCB7XG4gICAgICAgICAgbGVuZ3RoOiBlcnJvci5yZXF1aXJlZExlbmd0aCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjYXNlICdtYXhsZW5ndGgnOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ3dhcm5pbmdfbWF4X2xlbmd0aCcsIHtcbiAgICAgICAgICBsZW5ndGg6IGVycm9yLnJlcXVpcmVkTGVuZ3RoLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ21pbic6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmdldCgnd2FybmluZ19taW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGVycm9yLm1pbixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjYXNlICdtYXgnOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ3dhcm5pbmdfbWF4Jywge1xuICAgICAgICAgIHZhbHVlOiBlcnJvci5tYXgsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KCdpbnZhbGlkX251bWJlcicpO1xuICAgICAgfVxuICAgICAgY2FzZSAnaW5jbHVkZXMnOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ29wdGlvbl9oYXNfZXhwaXJlZCcpO1xuICAgICAgfVxuICAgICAgY2FzZSAnZHJvcGRvd25fbWluX2xlbmd0aCc6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmdldCgnZHJvcGRvd25fbWluX2xlbmd0aCcsIHtcbiAgICAgICAgICBsZW5ndGg6IGVycm9yLm1pbkxlbmd0aCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjYXNlICdkcm9wZG93bl9tYXhfbGVuZ3RoJzoge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KCdkcm9wZG93bl9tYXhfbGVuZ3RoJywge1xuICAgICAgICAgIGxlbmd0aDogZXJyb3IubWF4TGVuZ3RoLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,53 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { AsyncPipe, NgIf } from '@angular/common';
3
+ import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, } from '@angular/core';
4
+ import { Observable, combineLatest, distinctUntilChanged, map, startWith, } from 'rxjs';
5
+ import { ObservableInput, publishRef } from '../../../utils';
6
+ import { BaseErrorsMapper } from '../base-errors-mapper';
7
+ import * as i0 from "@angular/core";
8
+ export class ErrorsMapperComponent extends BaseErrorsMapper {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.ignoreUnknownError = false;
12
+ this.errorMessage$ = combineLatest([
13
+ this.errors$,
14
+ this.errorsMapper$,
15
+ this.errorsMapperFn$,
16
+ this.controlName$.pipe(startWith('')),
17
+ this.translate.locale$,
18
+ ]).pipe(map(([errors, errorsMapper, errorsMapperFn, name]) => this.getErrorMessage(errors, errorsMapper, errorsMapperFn, name, this.ignoreUnknownError)), distinctUntilChanged(), publishRef());
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ErrorsMapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: ErrorsMapperComponent, isStandalone: true, selector: "acl-errors-mapper", inputs: { errors: "errors", errorsMapper: "errorsMapper", errorsMapperFn: "errorsMapperFn", controlName: "controlName", ignoreUnknownError: "ignoreUnknownError" }, usesInheritance: true, ngImport: i0, template: "<span\n *ngIf=\"errors$ | async\"\n class=\"acl-error-hint\"\n>\n {{ errorMessage$ | async }}\n <ng-content></ng-content>\n</span>\n", styles: ["acl-errors-mapper{display:block;color:rgb(var(--aui-color-red));font-size:var(--aui-font-size-s);line-height:var(--aui-line-height-s);font-weight:var(--aui-font-weight-normal)}acl-errors-mapper .acl-error-hint{display:inline-block;margin-top:var(--aui-spacing-s)}.aui-form-item__error-wrapper acl-errors-mapper .acl-error-hint,.aui-form-item__hint-wrapper acl-errors-mapper .acl-error-hint{margin-top:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
22
+ }
23
+ __decorate([
24
+ ObservableInput(),
25
+ __metadata("design:type", Observable)
26
+ ], ErrorsMapperComponent.prototype, "errors$", void 0);
27
+ __decorate([
28
+ ObservableInput(),
29
+ __metadata("design:type", Observable)
30
+ ], ErrorsMapperComponent.prototype, "errorsMapper$", void 0);
31
+ __decorate([
32
+ ObservableInput(),
33
+ __metadata("design:type", Observable)
34
+ ], ErrorsMapperComponent.prototype, "errorsMapperFn$", void 0);
35
+ __decorate([
36
+ ObservableInput(),
37
+ __metadata("design:type", Observable)
38
+ ], ErrorsMapperComponent.prototype, "controlName$", void 0);
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ErrorsMapperComponent, decorators: [{
40
+ type: Component,
41
+ args: [{ selector: 'acl-errors-mapper', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, standalone: true, imports: [AsyncPipe, NgIf], template: "<span\n *ngIf=\"errors$ | async\"\n class=\"acl-error-hint\"\n>\n {{ errorMessage$ | async }}\n <ng-content></ng-content>\n</span>\n", styles: ["acl-errors-mapper{display:block;color:rgb(var(--aui-color-red));font-size:var(--aui-font-size-s);line-height:var(--aui-line-height-s);font-weight:var(--aui-font-weight-normal)}acl-errors-mapper .acl-error-hint{display:inline-block;margin-top:var(--aui-spacing-s)}.aui-form-item__error-wrapper acl-errors-mapper .acl-error-hint,.aui-form-item__hint-wrapper acl-errors-mapper .acl-error-hint{margin-top:0}\n"] }]
42
+ }], propDecorators: { errors: [{
43
+ type: Input
44
+ }], errors$: [], errorsMapper: [{
45
+ type: Input
46
+ }], errorsMapper$: [], errorsMapperFn: [{
47
+ type: Input
48
+ }], errorsMapperFn$: [], controlName: [{
49
+ type: Input
50
+ }], controlName$: [], ignoreUnknownError: [{
51
+ type: Input
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2Zvcm0vZXJyb3JzLW1hcHBlci9lcnJvcnMtbWFwcGVyLWNvbXBvbmVudC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2R5bmFtaWMtcGx1Z2luLXNoYXJlZC9zcmMvZm9ybS9lcnJvcnMtbWFwcGVyL2Vycm9ycy1tYXBwZXItY29tcG9uZW50L3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsVUFBVSxFQUNWLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUdkLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBYXpELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxnQkFBZ0I7SUFWM0Q7O1FBcUNFLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUVsQixrQkFBYSxHQUFHLGFBQWEsQ0FBQztZQUNyQyxJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxhQUFhO1lBQ2xCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87U0FDdkIsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FDbkQsSUFBSSxDQUFDLGVBQWUsQ0FDbEIsTUFBTSxFQUNOLFlBQVksRUFDWixjQUFjLEVBQ2QsSUFBSSxFQUNKLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FDRixFQUNELG9CQUFvQixFQUFFLEVBQ3RCLFVBQVUsRUFBRSxDQUNiLENBQUM7S0FDSDs4R0FoRFkscUJBQXFCO2tHQUFyQixxQkFBcUIsd1FDOUJsQywwSUFPQSwwY0RxQlksU0FBUyw4Q0FBRSxJQUFJOztBQU9oQjtJQURSLGVBQWUsRUFBRTs4QkFDQyxVQUFVO3NEQUEwQjtBQU05QztJQURSLGVBQWUsRUFBRTs4QkFDTyxVQUFVOzREQUFZO0FBTXRDO0lBRFIsZUFBZSxFQUFFOzhCQUNTLFVBQVU7OERBQWlCO0FBTzdDO0lBRFIsZUFBZSxFQUFFOzhCQUNNLFVBQVU7MkRBQVM7MkZBeEJoQyxxQkFBcUI7a0JBVmpDLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksdUJBQ2hCLEtBQUssY0FDZCxJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDOzhCQUkxQixNQUFNO3NCQURMLEtBQUs7Z0JBSUcsT0FBTyxNQUdoQixZQUFZO3NCQURYLEtBQUs7Z0JBSUcsYUFBYSxNQUd0QixjQUFjO3NCQURiLEtBQUs7Z0JBSUcsZUFBZSxNQUl4QixXQUFXO3NCQURWLEtBQUs7Z0JBSUcsWUFBWSxNQUdyQixrQkFBa0I7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIHN0YXJ0V2l0aCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFN0cmluZ01hcCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IE9ic2VydmFibGVJbnB1dCwgcHVibGlzaFJlZiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEJhc2VFcnJvcnNNYXBwZXIgfSBmcm9tICcuLi9iYXNlLWVycm9ycy1tYXBwZXInO1xuaW1wb3J0IHsgRXJyb3JzTWFwcGVyRm4gfSBmcm9tICcuLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1lcnJvcnMtbWFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FzeW5jUGlwZSwgTmdJZl0sXG59KVxuZXhwb3J0IGNsYXNzIEVycm9yc01hcHBlckNvbXBvbmVudCBleHRlbmRzIEJhc2VFcnJvcnNNYXBwZXIge1xuICBASW5wdXQoKVxuICBlcnJvcnM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByZWFkb25seSBlcnJvcnMkITogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj47XG5cbiAgQElucHV0KClcbiAgZXJyb3JzTWFwcGVyOiBTdHJpbmdNYXA7XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIHJlYWRvbmx5IGVycm9yc01hcHBlciQhOiBPYnNlcnZhYmxlPFN0cmluZ01hcD47XG5cbiAgQElucHV0KClcbiAgZXJyb3JzTWFwcGVyRm46IEVycm9yc01hcHBlckZuO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByZWFkb25seSBlcnJvcnNNYXBwZXJGbiQhOiBPYnNlcnZhYmxlPEVycm9yc01hcHBlckZuPjtcblxuICAvLyB1c2VkIHRvIGFkZCBuYW1lIHByZWZpeCBmb3IgbW9zdCB2YWxpZGF0aW9uIHRleHRcbiAgQElucHV0KClcbiAgY29udHJvbE5hbWU6IHN0cmluZztcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgcmVhZG9ubHkgY29udHJvbE5hbWUkITogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIEBJbnB1dCgpXG4gIGlnbm9yZVVua25vd25FcnJvciA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IGVycm9yTWVzc2FnZSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmVycm9ycyQsXG4gICAgdGhpcy5lcnJvcnNNYXBwZXIkLFxuICAgIHRoaXMuZXJyb3JzTWFwcGVyRm4kLFxuICAgIHRoaXMuY29udHJvbE5hbWUkLnBpcGUoc3RhcnRXaXRoKCcnKSksXG4gICAgdGhpcy50cmFuc2xhdGUubG9jYWxlJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtlcnJvcnMsIGVycm9yc01hcHBlciwgZXJyb3JzTWFwcGVyRm4sIG5hbWVdKSA9PlxuICAgICAgdGhpcy5nZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZXJyb3JzTWFwcGVyLFxuICAgICAgICBlcnJvcnNNYXBwZXJGbixcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdGhpcy5pZ25vcmVVbmtub3duRXJyb3IsXG4gICAgICApLFxuICAgICksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG59XG4iLCI8c3BhblxuICAqbmdJZj1cImVycm9ycyQgfCBhc3luY1wiXG4gIGNsYXNzPVwiYWNsLWVycm9yLWhpbnRcIlxuPlxuICB7eyBlcnJvck1lc3NhZ2UkIHwgYXN5bmMgfX1cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9zcGFuPlxuIl19