@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,145 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ /**
3
+ * @packageDocumentation
4
+ * @module utils
5
+ */
6
+ import { FormItemControlDirective } from '@alauda/ui';
7
+ import { CdkPortalOutlet, ComponentPortal, TemplatePortal, } from '@angular/cdk/portal';
8
+ import { ChangeDetectionStrategy, Component, ComponentFactoryResolver, Directive, HostBinding, Input, Optional, Self, TemplateRef, ViewContainerRef, } from '@angular/core';
9
+ import { NgControl, } from '@angular/forms';
10
+ import { Observable, Subject, combineLatest, distinctUntilChanged, filter, map, startWith, takeUntil, } from 'rxjs';
11
+ import { FieldNotAvailablePipe } from '../pipes/field-not-available.pipe';
12
+ import { ObservableInput } from '../utils';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "@angular/forms";
15
+ import * as i2 from "@alauda/ui";
16
+ export class ReadonlyFieldDirective {
17
+ get isHidden() {
18
+ return this.hidden || this.aclReadonlyField;
19
+ }
20
+ constructor(control, cfr, viewContainerRef,
21
+ // 仅考虑当前control,子control无法知晓父FormItemControl元素 ,包裹了多少个control,以及各自处于什么状态,该情况自行处理
22
+ controlDirective) {
23
+ this.control = control;
24
+ this.cfr = cfr;
25
+ this.viewContainerRef = viewContainerRef;
26
+ this.controlDirective = controlDirective;
27
+ this.isControlRequired = false;
28
+ this.templateContext = {};
29
+ this.destroy$ = new Subject();
30
+ }
31
+ setValue(value) {
32
+ if (this.template) {
33
+ Object.assign(this.templateContext, {
34
+ $implicit: value,
35
+ ...this.context,
36
+ });
37
+ }
38
+ else {
39
+ this.spanComponentRef.instance.setData(value);
40
+ }
41
+ }
42
+ ngOnInit() {
43
+ const controlEntity = this.control.control;
44
+ // formControl will compose multi validators to 1, no matter defined in template nor FormBuilder
45
+ const { validator, asyncValidator } = controlEntity;
46
+ this.isControlRequired = this.controlDirective?.required || false;
47
+ const portalOutlet = new CdkPortalOutlet(this.cfr, this.viewContainerRef);
48
+ const portal = this.template
49
+ ? new TemplatePortal(this.template, this.viewContainerRef, this.templateContext)
50
+ : new ComponentPortal(SpanComponent, this.viewContainerRef);
51
+ const containerAttached$ = this.aclReadonlyField$.pipe(distinctUntilChanged(), map(isUpdate => {
52
+ if (!isUpdate) {
53
+ // 重置
54
+ if (this.controlDirective) {
55
+ this.controlDirective.required = this.isControlRequired;
56
+ }
57
+ if (portalOutlet.hasAttached()) {
58
+ portalOutlet.detach();
59
+ }
60
+ this.applyValidators(controlEntity, validator, asyncValidator);
61
+ return false;
62
+ }
63
+ if (this.controlDirective) {
64
+ this.controlDirective.required = false;
65
+ }
66
+ const attachPoint = portalOutlet.attach(portal);
67
+ if (!this.template) {
68
+ this.spanComponentRef = attachPoint;
69
+ }
70
+ this.clearValidators(controlEntity);
71
+ return true;
72
+ }));
73
+ const sourceValue$ = this.control.valueChanges.pipe(startWith(this.control.value));
74
+ combineLatest([sourceValue$, containerAttached$])
75
+ .pipe(takeUntil(this.destroy$), filter(([, attached]) => !!attached))
76
+ .subscribe(([value]) => {
77
+ this.setValue(value);
78
+ });
79
+ }
80
+ applyValidators(control, rawValidator, rawAsyncValidator) {
81
+ if (control.validator === rawValidator &&
82
+ control.asyncValidator === rawAsyncValidator) {
83
+ return;
84
+ }
85
+ control.setValidators(rawValidator);
86
+ control.setAsyncValidators(rawAsyncValidator);
87
+ control.updateValueAndValidity();
88
+ }
89
+ clearValidators(control) {
90
+ // delay checking validators for ngModel
91
+ requestAnimationFrame(() => {
92
+ if (!control.validator && !control.asyncValidator) {
93
+ return;
94
+ }
95
+ control.clearValidators();
96
+ control.clearAsyncValidators();
97
+ control.updateValueAndValidity();
98
+ });
99
+ }
100
+ ngOnDestroy() {
101
+ this.destroy$.next();
102
+ }
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ReadonlyFieldDirective, deps: [{ token: i1.NgControl }, { token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: i2.FormItemControlDirective, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
104
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: ReadonlyFieldDirective, isStandalone: true, selector: "[aclReadonlyField]", inputs: { aclReadonlyField: "aclReadonlyField", hidden: "hidden", template: ["aclReadonlyFieldTemplate", "template"], context: ["aclReadonlyFieldTemplateContext", "context"] }, host: { properties: { "hidden": "this.isHidden" } }, ngImport: i0 }); }
105
+ }
106
+ __decorate([
107
+ ObservableInput(),
108
+ __metadata("design:type", Observable)
109
+ ], ReadonlyFieldDirective.prototype, "aclReadonlyField$", void 0);
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ReadonlyFieldDirective, decorators: [{
111
+ type: Directive,
112
+ args: [{
113
+ selector: '[aclReadonlyField]',
114
+ standalone: true,
115
+ }]
116
+ }], ctorParameters: () => [{ type: i1.NgControl }, { type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: i2.FormItemControlDirective, decorators: [{
117
+ type: Self
118
+ }, {
119
+ type: Optional
120
+ }] }], propDecorators: { aclReadonlyField: [{
121
+ type: Input
122
+ }], aclReadonlyField$: [], hidden: [{
123
+ type: Input
124
+ }], template: [{
125
+ type: Input,
126
+ args: ['aclReadonlyFieldTemplate']
127
+ }], context: [{
128
+ type: Input,
129
+ args: ['aclReadonlyFieldTemplateContext']
130
+ }], isHidden: [{
131
+ type: HostBinding,
132
+ args: ['hidden']
133
+ }] } });
134
+ export class SpanComponent {
135
+ setData(value) {
136
+ this.data = value;
137
+ }
138
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
139
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpanComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `<span>{{ data | aclFieldNotAvailable }}</span>`, isInline: true, styles: ["span{word-break:break-all}\n"], dependencies: [{ kind: "pipe", type: FieldNotAvailablePipe, name: "aclFieldNotAvailable" }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
140
+ }
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpanComponent, decorators: [{
142
+ type: Component,
143
+ args: [{ template: `<span>{{ data | aclFieldNotAvailable }}</span>`, changeDetection: ChangeDetectionStrategy.Default, standalone: true, imports: [FieldNotAvailablePipe], styles: ["span{word-break:break-all}\n"] }]
144
+ }] });
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHktZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2RpcmVjdGl2ZXMvcmVhZG9ubHktZmllbGQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEQsT0FBTyxFQUNMLGVBQWUsRUFDZixlQUFlLEVBQ2YsY0FBYyxHQUNmLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsd0JBQXdCLEVBRXhCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUdMLFFBQVEsRUFDUixJQUFJLEVBQ0osV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsU0FBUyxHQUVWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7O0FBTTNDLE1BQU0sT0FBTyxzQkFBc0I7SUEyQmpDLElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDOUMsQ0FBQztJQUVELFlBQ21CLE9BQWtCLEVBQ2xCLEdBQTZCLEVBQzdCLGdCQUFrQztJQUNuRCxnRkFBZ0Y7SUFHL0QsZ0JBQTBDO1FBTjFDLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFDbEIsUUFBRyxH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LENBQUM7OEdBMUlVLHNCQUFzQjtrR0FBdEIsc0JBQXNCOztBQUtqQztJQURDLGVBQWUsRUFBRTs4QkFDQyxVQUFVO2lFQUFVOzJGQUw1QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFzQ0ksSUFBSTs7MEJBQ0osUUFBUTt5Q0FwQ1gsZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4saUJBQWlCLE1BR2pCLE1BQU07c0JBREwsS0FBSztnQkFhTixRQUFRO3NCQURQLEtBQUs7dUJBQUMsMEJBQTBCO2dCQU1qQyxPQUFPO3NCQUROLEtBQUs7dUJBQUMsaUNBQWlDO2dCQUlwQyxRQUFRO3NCQURYLFdBQVc7dUJBQUMsUUFBUTs7QUFnSXZCLE1BQU0sT0FBTyxhQUFhO0lBR3hCLE9BQU8sQ0FBQyxLQUFRO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7SUFDcEIsQ0FBQzs4R0FMVSxhQUFhO2tHQUFiLGFBQWEsd0VBYmQsZ0RBQWdELGlHQVdoRCxxQkFBcUI7OzJGQUVwQixhQUFhO2tCQWR6QixTQUFTOytCQUNFLGdEQUFnRCxtQkFTekMsdUJBQXVCLENBQUMsT0FBTyxjQUNwQyxJQUFJLFdBQ1AsQ0FBQyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIHV0aWxzXG4gKi9cblxuaW1wb3J0IHsgRm9ybUl0ZW1Db250cm9sRGlyZWN0aXZlIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBDZGtQb3J0YWxPdXRsZXQsXG4gIENvbXBvbmVudFBvcnRhbCxcbiAgVGVtcGxhdGVQb3J0YWwsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQXN5bmNWYWxpZGF0b3JGbixcbiAgTmdDb250cm9sLFxuICBWYWxpZGF0b3JGbixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzdGFydFdpdGgsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZpZWxkTm90QXZhaWxhYmxlUGlwZSB9IGZyb20gJy4uL3BpcGVzL2ZpZWxkLW5vdC1hdmFpbGFibGUucGlwZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlSW5wdXQgfSBmcm9tICcuLi91dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xSZWFkb25seUZpZWxkXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFJlYWRvbmx5RmllbGREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIGFjbFJlYWRvbmx5RmllbGQ6IGJvb2xlYW47XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIGFjbFJlYWRvbmx5RmllbGQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIEBJbnB1dCgpXG4gIGhpZGRlbjogYm9vbGVhbjtcblxuICBwcml2YXRlIGlzQ29udHJvbFJlcXVpcmVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzcGFuQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8U3BhbkNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZUNvbnRleHQgPSB7fTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyDoh6rlrprkuYnmqKHmnb9cbiAgQElucHV0KCdhY2xSZWFkb25seUZpZWxkVGVtcGxhdGUnKVxuICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyDoh6rlrprkuYnmqKHmnb9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdhY2xSZWFkb25seUZpZWxkVGVtcGxhdGVDb250ZXh0JylcbiAgY29udGV4dDogb2JqZWN0O1xuXG4gIEBIb3N0QmluZGluZygnaGlkZGVuJylcbiAgZ2V0IGlzSGlkZGVuKCkge1xuICAgIHJldHVybiB0aGlzLmhpZGRlbiB8fCB0aGlzLmFjbFJlYWRvbmx5RmllbGQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAvLyDku4XogIPomZHlvZPliY1jb250cm9s77yM5a2QY29udHJvbOaXoOazleefpeaZk+eItkZvcm1JdGVtQ29udHJvbOWFg+e0oCDvvIzljIXoo7nkuoblpJrlsJHkuKpjb250cm9s77yM5Lul5Y+K5ZCE6Ieq5aSE5LqO5LuA5LmI54q25oCB77yM6K+l5oOF5Ya16Ieq6KGM5aSE55CGXG4gICAgQFNlbGYoKVxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250cm9sRGlyZWN0aXZlOiBGb3JtSXRlbUNvbnRyb2xEaXJlY3RpdmUsXG4gICkge31cblxuICBwcml2YXRlIHNldFZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgaWYgKHRoaXMudGVtcGxhdGUpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy50ZW1wbGF0ZUNvbnRleHQsIHtcbiAgICAgICAgJGltcGxpY2l0OiB2YWx1ZSxcbiAgICAgICAgLi4udGhpcy5jb250ZXh0LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3BhbkNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXREYXRhKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjb250cm9sRW50aXR5ID0gdGhpcy5jb250cm9sLmNvbnRyb2w7XG4gICAgLy8gZm9ybUNvbnRyb2wgd2lsbCBjb21wb3NlIG11bHRpIHZhbGlkYXRvcnMgdG8gMSwgbm8gbWF0dGVyIGRlZmluZWQgaW4gdGVtcGxhdGUgbm9yIEZvcm1CdWlsZGVyXG4gICAgY29uc3QgeyB2YWxpZGF0b3IsIGFzeW5jVmFsaWRhdG9yIH0gPSBjb250cm9sRW50aXR5O1xuICAgIHRoaXMuaXNDb250cm9sUmVxdWlyZWQgPSB0aGlzLmNvbnRyb2xEaXJlY3RpdmU/LnJlcXVpcmVkIHx8IGZhbHNlO1xuICAgIGNvbnN0IHBvcnRhbE91dGxldCA9IG5ldyBDZGtQb3J0YWxPdXRsZXQodGhpcy5jZnIsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgY29uc3QgcG9ydGFsID0gdGhpcy50ZW1wbGF0ZVxuICAgICAgPyBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZSxcbiAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZUNvbnRleHQsXG4gICAgICAgIClcbiAgICAgIDogbmV3IENvbXBvbmVudFBvcnRhbChTcGFuQ29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuXG4gICAgY29uc3QgY29udGFpbmVyQXR0YWNoZWQkID0gdGhpcy5hY2xSZWFkb25seUZpZWxkJC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIG1hcChpc1VwZGF0ZSA9PiB7XG4gICAgICAgIGlmICghaXNVcGRhdGUpIHtcbiAgICAgICAgICAvLyDph43nva5cbiAgICAgICAgICBpZiAodGhpcy5jb250cm9sRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xEaXJlY3RpdmUucmVxdWlyZWQgPSB0aGlzLmlzQ29udHJvbFJlcXVpcmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocG9ydGFsT3V0bGV0Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICAgIHBvcnRhbE91dGxldC5kZXRhY2goKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hcHBseVZhbGlkYXRvcnMoY29udHJvbEVudGl0eSwgdmFsaWRhdG9yLCBhc3luY1ZhbGlkYXRvcik7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29udHJvbERpcmVjdGl2ZSkge1xuICAgICAgICAgIHRoaXMuY29udHJvbERpcmVjdGl2ZS5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF0dGFjaFBvaW50ID0gcG9ydGFsT3V0bGV0LmF0dGFjaChwb3J0YWwpO1xuICAgICAgICBpZiAoIXRoaXMudGVtcGxhdGUpIHtcbiAgICAgICAgICB0aGlzLnNwYW5Db21wb25lbnRSZWYgPSBhdHRhY2hQb2ludCBhcyBDb21wb25lbnRSZWY8U3BhbkNvbXBvbmVudD47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGVhclZhbGlkYXRvcnMoY29udHJvbEVudGl0eSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IHNvdXJjZVZhbHVlJCA9IHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmNvbnRyb2wudmFsdWUpLFxuICAgICk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtzb3VyY2VWYWx1ZSQsIGNvbnRhaW5lckF0dGFjaGVkJF0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKFssIGF0dGFjaGVkXSkgPT4gISFhdHRhY2hlZCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbdmFsdWVdKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5VmFsaWRhdG9ycyhcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gICAgcmF3VmFsaWRhdG9yPzogVmFsaWRhdG9yRm4sXG4gICAgcmF3QXN5bmNWYWxpZGF0b3I/OiBBc3luY1ZhbGlkYXRvckZuLFxuICApIHtcbiAgICBpZiAoXG4gICAgICBjb250cm9sLnZhbGlkYXRvciA9PT0gcmF3VmFsaWRhdG9yICYmXG4gICAgICBjb250cm9sLmFzeW5jVmFsaWRhdG9yID09PSByYXdBc3luY1ZhbGlkYXRvclxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb250cm9sLnNldFZhbGlkYXRvcnMocmF3VmFsaWRhdG9yKTtcbiAgICBjb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyhyYXdBc3luY1ZhbGlkYXRvcik7XG4gICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVmFsaWRhdG9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICAvLyBkZWxheSBjaGVja2luZyB2YWxpZGF0b3JzIGZvciBuZ01vZGVsXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGlmICghY29udHJvbC52YWxpZGF0b3IgJiYgIWNvbnRyb2wuYXN5bmNWYWxpZGF0b3IpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgIGNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcbiAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgPHNwYW4+e3sgZGF0YSB8IGFjbEZpZWxkTm90QXZhaWxhYmxlIH19PC9zcGFuPmAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIHNwYW4ge1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9wcmVmZXItb24tcHVzaC1jb21wb25lbnQtY2hhbmdlLWRldGVjdGlvblxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGaWVsZE5vdEF2YWlsYWJsZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTcGFuQ29tcG9uZW50PFQgPSB1bmtub3duPiB7XG4gIGRhdGE6IFQ7XG5cbiAgc2V0RGF0YSh2YWx1ZTogVCkge1xuICAgIHRoaXMuZGF0YSA9IHZhbHVlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { observeResizeOn } from '@alauda/ui';
2
+ import { Directive, ElementRef, EventEmitter, Output, } from '@angular/core';
3
+ import { Subject, takeUntil } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class ResizeDirective {
6
+ constructor(element) {
7
+ this.element = element;
8
+ this.resized = new EventEmitter();
9
+ this.destroy$$ = new Subject();
10
+ }
11
+ ngAfterViewInit() {
12
+ observeResizeOn(this.element.nativeElement)
13
+ .pipe(takeUntil(this.destroy$$))
14
+ .subscribe(() => this.onResized());
15
+ }
16
+ onResized() {
17
+ const { clientWidth, clientHeight } = this.element.nativeElement;
18
+ this.resized.emit({
19
+ width: clientWidth,
20
+ height: clientHeight,
21
+ });
22
+ }
23
+ ngOnDestroy() {
24
+ this.destroy$$.next();
25
+ this.destroy$$.complete();
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ResizeDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
28
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: ResizeDirective, isStandalone: true, selector: "[aclResize]", outputs: { resized: "resized" }, ngImport: i0 }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ResizeDirective, decorators: [{
31
+ type: Directive,
32
+ args: [{
33
+ selector: '[aclResize]',
34
+ standalone: true,
35
+ }]
36
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { resized: [{
37
+ type: Output
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZHluYW1pYy1wbHVnaW4tc2hhcmVkL3NyYy9kaXJlY3RpdmVzL3Jlc2l6ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBRVosTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVcxQyxNQUFNLE9BQU8sZUFBZTtJQU0xQixZQUE2QixPQUFtQjtRQUFuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBSmhELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBRXpCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRUUsQ0FBQztJQUVwRCxlQUFlO1FBQ2IsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO2FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9CLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sU0FBUztRQUNmLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsTUFBTSxFQUFFLFlBQVk7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs4R0F6QlUsZUFBZTtrR0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7K0VBR0MsT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb2JzZXJ2ZVJlc2l6ZU9uIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzaXplRXZlbnQge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbFJlc2l6ZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBSZXNpemVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBAT3V0cHV0KClcbiAgcmVzaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzaXplRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgb2JzZXJ2ZVJlc2l6ZU9uKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vblJlc2l6ZWQoKSk7XG4gIH1cblxuICBwcml2YXRlIG9uUmVzaXplZCgpIHtcbiAgICBjb25zdCB7IGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQgfSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMucmVzaXplZC5lbWl0KHtcbiAgICAgIHdpZHRoOiBjbGllbnRXaWR0aCxcbiAgICAgIGhlaWdodDogY2xpZW50SGVpZ2h0LFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,77 @@
1
+ import { observeResizeOn } from '@alauda/ui';
2
+ import { ScrollDispatcher } from '@angular/cdk/overlay';
3
+ import { Directive, EventEmitter, Injector, Input, Output, ViewContainerRef, } from '@angular/core';
4
+ import { debounceTime, fromEvent, map, pairwise, startWith, Subject, takeUntil, merge, } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ const defaultDistance = 60;
7
+ // 监测滚动到边界并触发回调
8
+ export class ScrollBorderObserverDirective {
9
+ constructor(injector) {
10
+ this.scrollBorder = new EventEmitter();
11
+ this.scrollBottomBorder = new EventEmitter();
12
+ this.destroy$$ = new Subject();
13
+ this.scrollDispatcher = injector.get(ScrollDispatcher);
14
+ this.viewContainerRef = injector.get(ViewContainerRef);
15
+ }
16
+ ngOnInit() {
17
+ if (this.option === false) {
18
+ return;
19
+ }
20
+ this.scrollEl =
21
+ this.scrollDispatcher
22
+ .getAncestorScrollContainers(this.viewContainerRef.element.nativeElement)
23
+ .pop()
24
+ ?.getElementRef()?.nativeElement ?? window;
25
+ this.setupScroll();
26
+ }
27
+ ngOnDestroy() {
28
+ this.destroy$$.next();
29
+ this.destroy$$.complete();
30
+ }
31
+ setupScroll() {
32
+ const viewEl = this.scrollEl === window
33
+ ? document.documentElement
34
+ : this.scrollEl;
35
+ merge(observeResizeOn(viewEl), fromEvent(this.scrollEl, 'scroll').pipe(startWith(viewEl.scrollTop)))
36
+ .pipe(debounceTime(50), map(() => viewEl.scrollTop), pairwise(), takeUntil(this.destroy$$))
37
+ .subscribe(([prev, cur]) => {
38
+ let direction;
39
+ const option = typeof this.option === 'number'
40
+ ? {
41
+ topDistance: this.option,
42
+ bottomDistance: this.option,
43
+ }
44
+ : this.option || {};
45
+ if (cur > prev &&
46
+ viewEl.scrollTop >
47
+ viewEl.scrollHeight -
48
+ viewEl.clientHeight -
49
+ (option.bottomDistance || defaultDistance)) {
50
+ direction = 'bottom';
51
+ }
52
+ else if (cur < prev &&
53
+ viewEl.scrollTop < (option.topDistance || defaultDistance)) {
54
+ direction = 'top';
55
+ }
56
+ this.scrollBorder.emit(direction);
57
+ direction === 'bottom' && this.scrollBottomBorder.emit();
58
+ });
59
+ }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ScrollBorderObserverDirective, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
61
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: ScrollBorderObserverDirective, isStandalone: true, selector: "[aclScrollBorderObserver]", inputs: { option: ["aclScrollBorderObserver", "option"] }, outputs: { scrollBorder: "scrollBorder", scrollBottomBorder: "scrollBottomBorder" }, ngImport: i0 }); }
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ScrollBorderObserverDirective, decorators: [{
64
+ type: Directive,
65
+ args: [{
66
+ selector: '[aclScrollBorderObserver]',
67
+ standalone: true,
68
+ }]
69
+ }], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { option: [{
70
+ type: Input,
71
+ args: ['aclScrollBorderObserver']
72
+ }], scrollBorder: [{
73
+ type: Output
74
+ }], scrollBottomBorder: [{
75
+ type: Output
76
+ }] } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWJvcmRlci1vYnNlcnZlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2R5bmFtaWMtcGx1Z2luLXNoYXJlZC9zcmMvZGlyZWN0aXZlcy9zY3JvbGwtYm9yZGVyLW9ic2VydmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBR0wsTUFBTSxFQUNOLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxHQUFHLEVBQ0gsUUFBUSxFQUNSLFNBQVMsRUFDVCxPQUFPLEVBQ1AsU0FBUyxFQUNULEtBQUssR0FDTixNQUFNLE1BQU0sQ0FBQzs7QUFFZCxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFPM0IsZUFBZTtBQUtmLE1BQU0sT0FBTyw2QkFBNkI7SUFleEMsWUFBWSxRQUFrQjtRQVY5QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBR3BELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHL0IsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFLdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzFCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVE7WUFDWCxJQUFJLENBQUMsZ0JBQWdCO2lCQUNsQiwyQkFBMkIsQ0FDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQzVDO2lCQUNBLEdBQUcsRUFBRTtnQkFDTixFQUFFLGFBQWEsRUFBRSxFQUFFLGFBQWEsSUFBSSxNQUFNLENBQUM7UUFFL0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sTUFBTSxHQUNWLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTTtZQUN0QixDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWU7WUFDMUIsQ0FBQyxDQUFFLElBQUksQ0FBQyxRQUF3QixDQUFDO1FBQ3JDLEtBQUssQ0FDSCxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQ3ZCLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQ3JFO2FBQ0UsSUFBSSxDQUNILFlBQVksQ0FBQyxFQUFFLENBQUMsRUFDaEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFDM0IsUUFBUSxFQUFFLEVBQ1YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQ3pCLElBQUksU0FBMkIsQ0FBQztZQUNoQyxNQUFNLE1BQU0sR0FDVixPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUTtnQkFDN0IsQ0FBQyxDQUFDO29CQUNFLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDeEIsY0FBYyxFQUFFLElBQUksQ0FBQyxNQUFNO2lCQUM1QjtnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSyxFQUFhLENBQUM7WUFDcEMsSUFDRSxHQUFHLEdBQUcsSUFBSTtnQkFDVixNQUFNLENBQUMsU0FBUztvQkFDZCxNQUFNLENBQUMsWUFBWTt3QkFDakIsTUFBTSxDQUFDLFlBQVk7d0JBQ25CLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxlQUFlLENBQUMsRUFDOUMsQ0FBQztnQkFDRCxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQ3ZCLENBQUM7aUJBQU0sSUFDTCxHQUFHLEdBQUcsSUFBSTtnQkFDVixNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxlQUFlLENBQUMsRUFDMUQsQ0FBQztnQkFDRCxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsQyxTQUFTLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBakZVLDZCQUE2QjtrR0FBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs2RUFHQyxNQUFNO3NCQURMLEtBQUs7dUJBQUMseUJBQXlCO2dCQUloQyxZQUFZO3NCQURYLE1BQU07Z0JBSVAsa0JBQWtCO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb2JzZXJ2ZVJlc2l6ZU9uIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBTY3JvbGxEaXNwYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBwYWlyd2lzZSxcbiAgc3RhcnRXaXRoLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG4gIG1lcmdlLFxufSBmcm9tICdyeGpzJztcblxuY29uc3QgZGVmYXVsdERpc3RhbmNlID0gNjA7XG5cbmludGVyZmFjZSBPcHRpb24ge1xuICBib3R0b21EaXN0YW5jZT86IG51bWJlcjtcbiAgdG9wRGlzdGFuY2U/OiBudW1iZXI7XG59XG5cbi8vIOebkea1i+a7muWKqOWIsOi+ueeVjOW5tuinpuWPkeWbnuiwg1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbFNjcm9sbEJvcmRlck9ic2VydmVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbEJvcmRlck9ic2VydmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoJ2FjbFNjcm9sbEJvcmRlck9ic2VydmVyJylcbiAgb3B0aW9uOiBPcHRpb24gfCAnJyB8IGZhbHNlIHwgbnVtYmVyO1xuXG4gIEBPdXRwdXQoKVxuICBzY3JvbGxCb3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPCd0b3AnIHwgJ2JvdHRvbSc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHNjcm9sbEJvdHRvbUJvcmRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBzY3JvbGxFbDogSFRNTEVsZW1lbnQgfCBXaW5kb3c7XG4gIHJlYWRvbmx5IGRlc3Ryb3kkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Nyb2xsRGlzcGF0Y2hlcjogU2Nyb2xsRGlzcGF0Y2hlcjtcbiAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlciA9IGluamVjdG9yLmdldChTY3JvbGxEaXNwYXRjaGVyKTtcbiAgICB0aGlzLnZpZXdDb250YWluZXJSZWYgPSBpbmplY3Rvci5nZXQoVmlld0NvbnRhaW5lclJlZik7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5vcHRpb24gPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2Nyb2xsRWwgPVxuICAgICAgdGhpcy5zY3JvbGxEaXNwYXRjaGVyXG4gICAgICAgIC5nZXRBbmNlc3RvclNjcm9sbENvbnRhaW5lcnMoXG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgKVxuICAgICAgICAucG9wKClcbiAgICAgICAgPy5nZXRFbGVtZW50UmVmKCk/Lm5hdGl2ZUVsZW1lbnQgPz8gd2luZG93O1xuXG4gICAgdGhpcy5zZXR1cFNjcm9sbCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwU2Nyb2xsKCkge1xuICAgIGNvbnN0IHZpZXdFbCA9XG4gICAgICB0aGlzLnNjcm9sbEVsID09PSB3aW5kb3dcbiAgICAgICAgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbiAgICAgICAgOiAodGhpcy5zY3JvbGxFbCBhcyBIVE1MRWxlbWVudCk7XG4gICAgbWVyZ2UoXG4gICAgICBvYnNlcnZlUmVzaXplT24odmlld0VsKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLnNjcm9sbEVsLCAnc2Nyb2xsJykucGlwZShzdGFydFdpdGgodmlld0VsLnNjcm9sbFRvcCkpLFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgICBtYXAoKCkgPT4gdmlld0VsLnNjcm9sbFRvcCksXG4gICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbcHJldiwgY3VyXSkgPT4ge1xuICAgICAgICBsZXQgZGlyZWN0aW9uOiAndG9wJyB8ICdib3R0b20nO1xuICAgICAgICBjb25zdCBvcHRpb24gPVxuICAgICAgICAgIHR5cGVvZiB0aGlzLm9wdGlvbiA9PT0gJ251bWJlcidcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHRvcERpc3RhbmNlOiB0aGlzLm9wdGlvbixcbiAgICAgICAgICAgICAgICBib3R0b21EaXN0YW5jZTogdGhpcy5vcHRpb24sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdGhpcy5vcHRpb24gfHwgKHt9IGFzIE9wdGlvbik7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjdXIgPiBwcmV2ICYmXG4gICAgICAgICAgdmlld0VsLnNjcm9sbFRvcCA+XG4gICAgICAgICAgICB2aWV3RWwuc2Nyb2xsSGVpZ2h0IC1cbiAgICAgICAgICAgICAgdmlld0VsLmNsaWVudEhlaWdodCAtXG4gICAgICAgICAgICAgIChvcHRpb24uYm90dG9tRGlzdGFuY2UgfHwgZGVmYXVsdERpc3RhbmNlKVxuICAgICAgICApIHtcbiAgICAgICAgICBkaXJlY3Rpb24gPSAnYm90dG9tJztcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBjdXIgPCBwcmV2ICYmXG4gICAgICAgICAgdmlld0VsLnNjcm9sbFRvcCA8IChvcHRpb24udG9wRGlzdGFuY2UgfHwgZGVmYXVsdERpc3RhbmNlKVxuICAgICAgICApIHtcbiAgICAgICAgICBkaXJlY3Rpb24gPSAndG9wJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjcm9sbEJvcmRlci5lbWl0KGRpcmVjdGlvbik7XG4gICAgICAgIGRpcmVjdGlvbiA9PT0gJ2JvdHRvbScgJiYgdGhpcy5zY3JvbGxCb3R0b21Cb3JkZXIuZW1pdCgpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,126 @@
1
+ import { CdkScrollable } from '@angular/cdk/scrolling';
2
+ import { Directive, ElementRef, HostBinding, HostListener, Input, Optional, } from '@angular/core';
3
+ import { ControlContainer } from '@angular/forms';
4
+ import { fromEvent, debounceTime, startWith, take } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "@angular/cdk/scrolling";
8
+ const FOCUSABLE_TAG_NAMES = ['INPUT', 'TEXTAREA'];
9
+ const NG_INVALID = '.ng-invalid';
10
+ const MARKED_CLASS_NAME = 'acl-scroll-to-first-invalid-marker';
11
+ const SELECTORS = [
12
+ [
13
+ FOCUSABLE_TAG_NAMES.map(tagName => `${tagName}${NG_INVALID}`),
14
+ ...[
15
+ 'aui-number-input',
16
+ 'aui-tags-input',
17
+ 'aui-select',
18
+ 'aui-multi-select',
19
+ 'aui-switch',
20
+ 'aui-tree-select',
21
+ ].map(tagName => `${tagName}${NG_INVALID} input`),
22
+ `aui-radio-group${NG_INVALID}`,
23
+ `.${MARKED_CLASS_NAME}${NG_INVALID}`,
24
+ ].join(','),
25
+ NG_INVALID,
26
+ ];
27
+ export class ScrollToFirstInvalidMarkerDirective {
28
+ constructor() {
29
+ this.aclScrollToFirstInvalidMarker = false;
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ScrollToFirstInvalidMarkerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
32
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: ScrollToFirstInvalidMarkerDirective, selector: "[aclScrollToFirstInvalidMarker]", inputs: { aclScrollToFirstInvalidMarker: "aclScrollToFirstInvalidMarker" }, host: { properties: { "class.acl-scroll-to-first-invalid-marker": "this.aclScrollToFirstInvalidMarker", "class.ng-invalid": "this.aclScrollToFirstInvalidMarker" } }, ngImport: i0 }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ScrollToFirstInvalidMarkerDirective, decorators: [{
35
+ type: Directive,
36
+ args: [{
37
+ selector: '[aclScrollToFirstInvalidMarker]',
38
+ }]
39
+ }], propDecorators: { aclScrollToFirstInvalidMarker: [{
40
+ type: HostBinding,
41
+ args: [`class.${MARKED_CLASS_NAME}`]
42
+ }, {
43
+ type: HostBinding,
44
+ args: ['class.ng-invalid']
45
+ }, {
46
+ type: Input
47
+ }] } });
48
+ export class ScrollToFirstInvalidDirective {
49
+ get containerEl() {
50
+ return this.cdkScrollable?.getElementRef().nativeElement || window;
51
+ }
52
+ onSubmit() {
53
+ requestAnimationFrame(() => {
54
+ if (this.aclScrollToFirstInvalid === ''
55
+ ? this.controlContainer.invalid
56
+ : this.aclScrollToFirstInvalid) {
57
+ this.scrollToFirstInvalid();
58
+ }
59
+ });
60
+ }
61
+ constructor(elRef, controlContainer, cdkScrollable) {
62
+ this.elRef = elRef;
63
+ this.controlContainer = controlContainer;
64
+ this.cdkScrollable = cdkScrollable;
65
+ this.labelOffset = this.cdkScrollable ? 20 : 150;
66
+ }
67
+ scrollToFirstInvalid() {
68
+ const firstInvalidEl = this.getFirstInvalidInput();
69
+ if (!firstInvalidEl) {
70
+ return;
71
+ }
72
+ this.containerEl.scrollTo({
73
+ top: this.getTopOffset(firstInvalidEl),
74
+ behavior: 'smooth',
75
+ });
76
+ if (FOCUSABLE_TAG_NAMES.includes(firstInvalidEl.tagName)) {
77
+ fromEvent(this.containerEl, 'scroll')
78
+ .pipe(startWith(null), debounceTime(100), take(1))
79
+ .subscribe(() => firstInvalidEl.focus());
80
+ }
81
+ }
82
+ getFirstInvalidInput() {
83
+ const el = this.elRef.nativeElement;
84
+ const hiddenEls = Array.from(el.querySelectorAll('[hidden]'));
85
+ for (const selector of SELECTORS) {
86
+ const ctrlEls = Array.from(el.querySelectorAll(selector));
87
+ for (const ctrlEl of ctrlEls) {
88
+ if (hiddenEls.some(hiddenEl => hiddenEl === ctrlEl || hiddenEl.contains(ctrlEl))) {
89
+ continue;
90
+ }
91
+ return ctrlEl;
92
+ }
93
+ }
94
+ }
95
+ getTopOffset(controlEl) {
96
+ const labelOffset = this.labelOffset;
97
+ const controlElTop = controlEl.getBoundingClientRect().top;
98
+ if (this.cdkScrollable) {
99
+ const containerEl = this.containerEl;
100
+ const containerTop = containerEl.getBoundingClientRect().top;
101
+ const absoluteControlElTop = controlElTop + containerEl.scrollTop;
102
+ return absoluteControlElTop - containerTop - labelOffset;
103
+ }
104
+ const absoluteControlElTop = controlElTop + window.scrollY;
105
+ return absoluteControlElTop - labelOffset;
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ScrollToFirstInvalidDirective, deps: [{ token: i0.ElementRef }, { token: i1.ControlContainer }, { token: i2.CdkScrollable, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
108
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: ScrollToFirstInvalidDirective, isStandalone: true, selector: "[aclScrollToFirstInvalid]", inputs: { labelOffset: "labelOffset", aclScrollToFirstInvalid: "aclScrollToFirstInvalid" }, host: { listeners: { "ngSubmit": "onSubmit()" } }, ngImport: i0 }); }
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ScrollToFirstInvalidDirective, decorators: [{
111
+ type: Directive,
112
+ args: [{
113
+ selector: '[aclScrollToFirstInvalid]',
114
+ standalone: true,
115
+ }]
116
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ControlContainer }, { type: i2.CdkScrollable, decorators: [{
117
+ type: Optional
118
+ }] }], propDecorators: { labelOffset: [{
119
+ type: Input
120
+ }], aclScrollToFirstInvalid: [{
121
+ type: Input
122
+ }], onSubmit: [{
123
+ type: HostListener,
124
+ args: ['ngSubmit']
125
+ }] } });
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXRvLWZpcnN0LWludmFsaWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2RpcmVjdGl2ZXMvc2Nyb2xsLXRvLWZpcnN0LWludmFsaWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFDTCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUVoRSxNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQztBQUNqQyxNQUFNLGlCQUFpQixHQUFHLG9DQUFvQyxDQUFDO0FBRS9ELE1BQU0sU0FBUyxHQUFHO0lBQ2hCO1FBQ0UsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0QsR0FBRztZQUNELGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osaUJBQWlCO1NBQ2xCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLEdBQUcsVUFBVSxRQUFRLENBQUM7UUFDakQsa0JBQWtCLFVBQVUsRUFBRTtRQUM5QixJQUFJLGlCQUFpQixHQUFHLFVBQVUsRUFBRTtLQUNyQyxDQUFD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QVM7Z0JBQ1gsQ0FBQztnQkFDRCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsU0FBc0I7UUFDekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFFM0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQTBCLENBQUM7WUFDcEQsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRyxDQUFDO1lBQzdELE1BQU0sb0JBQW9CLEdBQUcsWUFBWSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7WUFDbEUsT0FBTyxvQkFBb0IsR0FBRyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQzNELENBQUM7UUFFRCxNQUFNLG9CQUFvQixHQUFHLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzNELE9BQU8sb0JBQW9CLEdBQUcsV0FBVyxDQUFDO0lBQzVDLENBQUM7OEdBaEZVLDZCQUE2QjtrR0FBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBNEJJLFFBQVE7eUNBekJYLFdBQVc7c0JBRFYsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBUU4sUUFBUTtzQkFEUCxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBkZWJvdW5jZVRpbWUsIHN0YXJ0V2l0aCwgdGFrZSB9IGZyb20gJ3J4anMnO1xuXG5jb25zdCBGT0NVU0FCTEVfVEFHX05BTUVTID0gWydJTlBVVCcsICdURVhUQVJFQSddO1xuY29uc3QgTkdfSU5WQUxJRCA9ICcubmctaW52YWxpZCc7XG5jb25zdCBNQVJLRURfQ0xBU1NfTkFNRSA9ICdhY2wtc2Nyb2xsLXRvLWZpcnN0LWludmFsaWQtbWFya2VyJztcblxuY29uc3QgU0VMRUNUT1JTID0gW1xuICBbXG4gICAgRk9DVVNBQkxFX1RBR19OQU1FUy5tYXAodGFnTmFtZSA9PiBgJHt0YWdOYW1lfSR7TkdfSU5WQUxJRH1gKSxcbiAgICAuLi5bXG4gICAgICAnYXVpLW51bWJlci1pbnB1dCcsXG4gICAgICAnYXVpLXRhZ3MtaW5wdXQnLFxuICAgICAgJ2F1aS1zZWxlY3QnLFxuICAgICAgJ2F1aS1tdWx0aS1zZWxlY3QnLFxuICAgICAgJ2F1aS1zd2l0Y2gnLFxuICAgICAgJ2F1aS10cmVlLXNlbGVjdCcsXG4gICAgXS5tYXAodGFnTmFtZSA9PiBgJHt0YWdOYW1lfSR7TkdfSU5WQUxJRH0gaW5wdXRgKSxcbiAgICBgYXVpLXJhZGlvLWdyb3VwJHtOR19JTlZBTElEfWAsXG4gICAgYC4ke01BUktFRF9DTEFTU19OQU1FfSR7TkdfSU5WQUxJRH1gLFxuICBdLmpvaW4oJywnKSxcbiAgTkdfSU5WQUxJRCxcbl07XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xTY3JvbGxUb0ZpcnN0SW52YWxpZE1hcmtlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBTY3JvbGxUb0ZpcnN0SW52YWxpZE1hcmtlckRpcmVjdGl2ZSB7XG4gIEBIb3N0QmluZGluZyhgY2xhc3MuJHtNQVJLRURfQ0xBU1NfTkFNRX1gKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5nLWludmFsaWQnKVxuICBASW5wdXQoKVxuICBhY2xTY3JvbGxUb0ZpcnN0SW52YWxpZE1hcmtlciA9IGZhbHNlO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsU2Nyb2xsVG9GaXJzdEludmFsaWRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsVG9GaXJzdEludmFsaWREaXJlY3RpdmUge1xuICBASW5wdXQoKVxuICBsYWJlbE9mZnNldCA9IHRoaXMuY2RrU2Nyb2xsYWJsZSA/IDIwIDogMTUwO1xuXG4gIEBJbnB1dCgpXG4gIGFjbFNjcm9sbFRvRmlyc3RJbnZhbGlkOiBib29sZWFuIHwgJyc7XG5cbiAgZ2V0IGNvbnRhaW5lckVsKCkge1xuICAgIHJldHVybiB0aGlzLmNka1Njcm9sbGFibGU/LmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50IHx8IHdpbmRvdztcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ25nU3VibWl0JylcbiAgb25TdWJtaXQoKSB7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5hY2xTY3JvbGxUb0ZpcnN0SW52YWxpZCA9PT0gJydcbiAgICAgICAgICA/IHRoaXMuY29udHJvbENvbnRhaW5lci5pbnZhbGlkXG4gICAgICAgICAgOiB0aGlzLmFjbFNjcm9sbFRvRmlyc3RJbnZhbGlkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0ZpcnN0SW52YWxpZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgY2RrU2Nyb2xsYWJsZTogQ2RrU2Nyb2xsYWJsZSxcbiAgKSB7fVxuXG4gIHNjcm9sbFRvRmlyc3RJbnZhbGlkKCkge1xuICAgIGNvbnN0IGZpcnN0SW52YWxpZEVsID0gdGhpcy5nZXRGaXJzdEludmFsaWRJbnB1dCgpO1xuXG4gICAgaWYgKCFmaXJzdEludmFsaWRFbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY29udGFpbmVyRWwuc2Nyb2xsVG8oe1xuICAgICAgdG9wOiB0aGlzLmdldFRvcE9mZnNldChmaXJzdEludmFsaWRFbCksXG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgfSk7XG5cbiAgICBpZiAoRk9DVVNBQkxFX1RBR19OQU1FUy5pbmNsdWRlcyhmaXJzdEludmFsaWRFbC50YWdOYW1lKSkge1xuICAgICAgZnJvbUV2ZW50KHRoaXMuY29udGFpbmVyRWwsICdzY3JvbGwnKVxuICAgICAgICAucGlwZShzdGFydFdpdGgobnVsbCBhcyB2b2lkKSwgZGVib3VuY2VUaW1lKDEwMCksIHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gZmlyc3RJbnZhbGlkRWwuZm9jdXMoKSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Rmlyc3RJbnZhbGlkSW5wdXQoKSB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgaGlkZGVuRWxzID0gQXJyYXkuZnJvbShlbC5xdWVyeVNlbGVjdG9yQWxsKCdbaGlkZGVuXScpKTtcbiAgICBmb3IgKGNvbnN0IHNlbGVjdG9yIG9mIFNFTEVDVE9SUykge1xuICAgICAgY29uc3QgY3RybEVscyA9IEFycmF5LmZyb20oZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oc2VsZWN0b3IpKTtcbiAgICAgIGZvciAoY29uc3QgY3RybEVsIG9mIGN0cmxFbHMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGhpZGRlbkVscy5zb21lKFxuICAgICAgICAgICAgaGlkZGVuRWwgPT4gaGlkZGVuRWwgPT09IGN0cmxFbCB8fCBoaWRkZW5FbC5jb250YWlucyhjdHJsRWwpLFxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGN0cmxFbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFRvcE9mZnNldChjb250cm9sRWw6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICBjb25zdCBsYWJlbE9mZnNldCA9IHRoaXMubGFiZWxPZmZzZXQ7XG4gICAgY29uc3QgY29udHJvbEVsVG9wID0gY29udHJvbEVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblxuICAgIGlmICh0aGlzLmNka1Njcm9sbGFibGUpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lckVsID0gdGhpcy5jb250YWluZXJFbCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclRvcCA9IGNvbnRhaW5lckVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICAgIGNvbnN0IGFic29sdXRlQ29udHJvbEVsVG9wID0gY29udHJvbEVsVG9wICsgY29udGFpbmVyRWwuc2Nyb2xsVG9wO1xuICAgICAgcmV0dXJuIGFic29sdXRlQ29udHJvbEVsVG9wIC0gY29udGFpbmVyVG9wIC0gbGFiZWxPZmZzZXQ7XG4gICAgfVxuXG4gICAgY29uc3QgYWJzb2x1dGVDb250cm9sRWxUb3AgPSBjb250cm9sRWxUb3AgKyB3aW5kb3cuc2Nyb2xsWTtcbiAgICByZXR1cm4gYWJzb2x1dGVDb250cm9sRWxUb3AgLSBsYWJlbE9mZnNldDtcbiAgfVxufVxuIl19
@@ -0,0 +1,61 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Directive, Host, Inject, Input, } from '@angular/core';
3
+ import { NgControl } from '@angular/forms';
4
+ import { isFunction } from 'lodash-es';
5
+ import { combineLatest, distinctUntilChanged, filter, Observable, startWith, Subject, takeUntil, tap, } from 'rxjs';
6
+ import { ObservableInput } from '../utils';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/forms";
9
+ /**
10
+ *
11
+ * Usage:
12
+ * If you want to trace value with control.
13
+ * The difference between aclValueTrack and ngModelChange is that aclValueTrack carries the first value.
14
+ * So it is not for changes, but for value traces
15
+ * For compatibility and cover the deprecation of ngModelChange, we provide aclValueTrackSkipFirst option
16
+ * eg:
17
+ * <input formControlName="name" [aclValueTrack]="function()">
18
+ *
19
+ */
20
+ export class ControlValueTraceDirective {
21
+ ngOnDestroy() {
22
+ this.destroy$$.next();
23
+ this.destroy$$.complete();
24
+ }
25
+ ngOnInit() {
26
+ combineLatest([
27
+ this.ngControl.valueChanges.pipe(this.aclValueTrackSkipFirst ? tap() : startWith(this.ngControl.value)),
28
+ this.aclValueTrack$.pipe(distinctUntilChanged(), filter(i => isFunction(i))),
29
+ ])
30
+ .pipe(takeUntil(this.destroy$$))
31
+ .subscribe(([value, changeFn]) => changeFn(value));
32
+ }
33
+ constructor(ngControl) {
34
+ this.ngControl = ngControl;
35
+ this.aclValueTrackSkipFirst = false;
36
+ this.destroy$$ = new Subject();
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ControlValueTraceDirective, deps: [{ token: NgControl, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
39
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: ControlValueTraceDirective, isStandalone: true, selector: "[aclValueTrack]", inputs: { aclValueTrackSkipFirst: "aclValueTrackSkipFirst", aclValueTrack: "aclValueTrack" }, ngImport: i0 }); }
40
+ }
41
+ __decorate([
42
+ ObservableInput(),
43
+ __metadata("design:type", Observable)
44
+ ], ControlValueTraceDirective.prototype, "aclValueTrack$", void 0);
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ControlValueTraceDirective, decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ selector: '[aclValueTrack]',
49
+ standalone: true,
50
+ }]
51
+ }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
52
+ type: Inject,
53
+ args: [NgControl]
54
+ }, {
55
+ type: Host
56
+ }] }], propDecorators: { aclValueTrackSkipFirst: [{
57
+ type: Input
58
+ }], aclValueTrack: [{
59
+ type: Input
60
+ }], aclValueTrack$: [] } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtdHJhY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2RpcmVjdGl2ZXMvdmFsdWUtdHJhY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULElBQUksRUFDSixNQUFNLEVBQ04sS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBRTNDOzs7Ozs7Ozs7O0dBVUc7QUFLSCxNQUFNLE9BQU8sMEJBQTBCO0lBUXJDLFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFFBQVE7UUFDTixhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUN0RTtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN0QixvQkFBb0IsRUFBRSxFQUN0QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDM0I7U0FDRixDQUFDO2FBQ0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDL0IsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxZQUM4QyxTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBM0J6RCwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFLeEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUF1QjdCLENBQUM7OEdBN0JPLDBCQUEwQixrQkE0QjNCLFNBQVM7a0dBNUJSLDBCQUEwQjs7QUFJbEI7SUFBbEIsZUFBZSxFQUFFOzhCQUFpQixVQUFVO2tFQUE0QjsyRkFKOUQsMEJBQTBCO2tCQUp0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBNkJJLE1BQU07MkJBQUMsU0FBUzs7MEJBQUcsSUFBSTt5Q0EzQmpCLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNhLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEhvc3QsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgT2JzZXJ2YWJsZSxcbiAgc3RhcnRXaXRoLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGVJbnB1dCB9IGZyb20gJy4uL3V0aWxzJztcblxuLyoqXG4gKlxuICogVXNhZ2U6XG4gKiBJZiB5b3Ugd2FudCB0byB0cmFjZSB2YWx1ZSB3aXRoIGNvbnRyb2wuXG4gKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFjbFZhbHVlVHJhY2sgYW5kIG5nTW9kZWxDaGFuZ2UgaXMgdGhhdCBhY2xWYWx1ZVRyYWNrIGNhcnJpZXMgdGhlIGZpcnN0IHZhbHVlLlxuICogU28gaXQgaXMgbm90IGZvciBjaGFuZ2VzLCBidXQgZm9yIHZhbHVlIHRyYWNlc1xuICogRm9yIGNvbXBhdGliaWxpdHkgYW5kIGNvdmVyIHRoZSBkZXByZWNhdGlvbiBvZiBuZ01vZGVsQ2hhbmdlLCB3ZSBwcm92aWRlIGFjbFZhbHVlVHJhY2tTa2lwRmlyc3Qgb3B0aW9uXG4gKiBlZzpcbiAqIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgW2FjbFZhbHVlVHJhY2tdPVwiZnVuY3Rpb24oKVwiPlxuICpcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbFZhbHVlVHJhY2tdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udHJvbFZhbHVlVHJhY2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGFjbFZhbHVlVHJhY2tTa2lwRmlyc3QgPSBmYWxzZTtcblxuICBASW5wdXQoKSBhY2xWYWx1ZVRyYWNrOiAodmFsdWU/OiB1bmtub3duKSA9PiB2b2lkO1xuICBAT2JzZXJ2YWJsZUlucHV0KCkgYWNsVmFsdWVUcmFjayQ6IE9ic2VydmFibGU8KHZhbHVlPzogdW5rbm93bikgPT4gdm9pZD47XG5cbiAgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIHRoaXMuYWNsVmFsdWVUcmFja1NraXBGaXJzdCA/IHRhcCgpIDogc3RhcnRXaXRoKHRoaXMubmdDb250cm9sLnZhbHVlKSxcbiAgICAgICksXG4gICAgICB0aGlzLmFjbFZhbHVlVHJhY2skLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIGZpbHRlcihpID0+IGlzRnVuY3Rpb24oaSkpLFxuICAgICAgKSxcbiAgICBdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFt2YWx1ZSwgY2hhbmdlRm5dKSA9PiBjaGFuZ2VGbih2YWx1ZSkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChOZ0NvbnRyb2wpIEBIb3N0KCkgcHJpdmF0ZSByZWFkb25seSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgKSB7fVxufVxuIl19