@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.
- package/README.md +7 -0
- package/array-form-table/base-string-map-form.component.d.ts +22 -0
- package/array-form-table/form/component.d.ts +106 -0
- package/array-form-table/form/index.d.ts +2 -0
- package/array-form-table/index.d.ts +10 -0
- package/array-form-table/key-value-form/component.d.ts +38 -0
- package/array-form-table/key-value-table/component.d.ts +9 -0
- package/array-form-table/string-array-form/component.d.ts +41 -0
- package/assets/images/abnormal.svg +1 -0
- package/assets/images/dark/disconnected.svg +1 -0
- package/assets/images/dark/license-abnormal.svg +1 -0
- package/assets/images/dark/network-abnormal.svg +1 -0
- package/assets/images/dark/no-data.svg +1 -0
- package/assets/images/dark/no-message.svg +1 -0
- package/assets/images/dark/no-permission.svg +1 -0
- package/assets/images/dark/no_realtime_alarm.svg +1 -0
- package/assets/images/dark/not-deployed.svg +1 -0
- package/assets/images/dark/not-found.svg +1 -0
- package/assets/images/dark/not-supported.svg +1 -0
- package/assets/images/dark/system-abnormal.svg +1 -0
- package/assets/images/light/disconnected.svg +1 -0
- package/assets/images/light/license-abnormal.svg +1 -0
- package/assets/images/light/network-abnormal.svg +1 -0
- package/assets/images/light/no-data.svg +1 -0
- package/assets/images/light/no-message.svg +1 -0
- package/assets/images/light/no-permission.svg +1 -0
- package/assets/images/light/no_realtime_alarm.svg +1 -0
- package/assets/images/light/not-deployed.svg +1 -0
- package/assets/images/light/not-found.svg +1 -0
- package/assets/images/light/not-supported.svg +1 -0
- package/assets/images/light/system-abnormal.svg +1 -0
- package/assets/images/no-data.png +0 -0
- package/async-data/async-data-loader.d.ts +31 -0
- package/async-data/error-page/component.d.ts +30 -0
- package/async-data/index.d.ts +13 -0
- package/async-data/page-state/component.d.ts +21 -0
- package/async-data/types.d.ts +29 -0
- package/code-editor/code-display-dialog/component.d.ts +17 -0
- package/code-editor/code-editor-configs.d.ts +19 -0
- package/code-editor/index.d.ts +10 -0
- package/code-editor/k8s-yaml-display-dialog/component.d.ts +16 -0
- package/code-editor/resource-yaml-display/component.d.ts +21 -0
- package/components/card-section/card-section.component.d.ts +9 -0
- package/components/confirm-delete/confirm-delete.component.d.ts +57 -0
- package/components/confirm-delete/utils.d.ts +25 -0
- package/components/current-time/component.d.ts +14 -0
- package/components/custom-columns-setting/component.d.ts +16 -0
- package/components/custom-columns-setting/index.d.ts +1 -0
- package/components/date-range-picker/component.d.ts +55 -0
- package/components/date-range-picker/index.d.ts +3 -0
- package/components/date-range-picker/type.d.ts +36 -0
- package/components/date-range-picker/util.d.ts +11 -0
- package/components/disabled-container/disabled-container.component.d.ts +21 -0
- package/components/disabled-container/index.d.ts +7 -0
- package/components/field-set/column/component.d.ts +10 -0
- package/components/field-set/group/component.d.ts +6 -0
- package/components/field-set/index.d.ts +7 -0
- package/components/field-set/item/component.d.ts +13 -0
- package/components/foldable-block/component.d.ts +17 -0
- package/components/foldable-item-in-table/component.d.ts +21 -0
- package/components/help-document/component.d.ts +29 -0
- package/components/help-document/directive.d.ts +20 -0
- package/components/help-document/index.d.ts +8 -0
- package/components/help-document/service.d.ts +20 -0
- package/components/index.d.ts +31 -0
- package/components/loading-mask/loading-mask.component.d.ts +13 -0
- package/components/page-guard/component/component.d.ts +40 -0
- package/components/page-guard/component/helper-directives.d.ts +17 -0
- package/components/page-guard/component/page-guard.type.d.ts +86 -0
- package/components/page-guard/index.d.ts +12 -0
- package/components/password-input/component.d.ts +39 -0
- package/components/pod-status/component.d.ts +25 -0
- package/components/pod-status/index.d.ts +3 -0
- package/components/pod-status/status.d.ts +4 -0
- package/components/pod-status/typings.d.ts +16 -0
- package/components/relative-time/component.d.ts +15 -0
- package/components/resource-label/component.d.ts +25 -0
- package/components/resource-multi-select/component.d.ts +41 -0
- package/components/resource-multi-select/util.d.ts +10 -0
- package/components/search-panel/component.d.ts +16 -0
- package/components/search-panel/helper.directive.d.ts +5 -0
- package/components/search-panel/search-item/component.d.ts +7 -0
- package/components/select-prefix-label/directive.d.ts +17 -0
- package/components/status-icon/status-icon.component.d.ts +16 -0
- package/components/tags-label/component.d.ts +56 -0
- package/components/terminating-tag/component.d.ts +7 -0
- package/components/text-ellipsis/component.d.ts +9 -0
- package/components/text-tooltip/directive.d.ts +21 -0
- package/components/text-with-url/component.d.ts +12 -0
- package/components/upload-file/component.d.ts +32 -0
- package/components/zero-state/zero-state.component.d.ts +16 -0
- package/constants/common.d.ts +64 -0
- package/constants/index.d.ts +6 -0
- package/constants/k8s.d.ts +12 -0
- package/constants/patterns.d.ts +124 -0
- package/constants/resource-definitions.d.ts +414 -0
- package/constants/status-icons.d.ts +34 -0
- package/constants/timezones.d.ts +6 -0
- package/directives/aui-code-editor.directive.d.ts +13 -0
- package/directives/click-outside.directive.d.ts +12 -0
- package/directives/declare.directive.d.ts +8 -0
- package/directives/disabled.directive.d.ts +28 -0
- package/directives/effect-directive/coerce-number.directive.d.ts +8 -0
- package/directives/effect-directive/e2e-attribute-binding.directive.d.ts +10 -0
- package/directives/effect-directive/event.directive.d.ts +47 -0
- package/directives/effect-directive/index.d.ts +12 -0
- package/directives/effect-directive/min-max.directive.d.ts +30 -0
- package/directives/effect-directive/trim.directive.d.ts +7 -0
- package/directives/effect-directive/validators.directive.d.ts +12 -0
- package/directives/feature-gate.directive.d.ts +31 -0
- package/directives/index.d.ts +12 -0
- package/directives/last-form-item.directive.d.ts +8 -0
- package/directives/readonly-field.directive.d.ts +39 -0
- package/directives/resize.directive.d.ts +17 -0
- package/directives/scroll-border-observer.directive.d.ts +23 -0
- package/directives/scroll-to-first-invalid.directive.d.ts +24 -0
- package/directives/value-trace.directive.d.ts +27 -0
- package/esm2022/alauda-fe-dynamic-plugin-shared.mjs +5 -0
- package/esm2022/array-form-table/base-string-map-form.component.mjs +92 -0
- package/esm2022/array-form-table/form/component.mjs +266 -0
- package/esm2022/array-form-table/form/index.mjs +12 -0
- package/esm2022/array-form-table/index.mjs +11 -0
- package/esm2022/array-form-table/key-value-form/component.mjs +135 -0
- package/esm2022/array-form-table/key-value-table/component.mjs +24 -0
- package/esm2022/array-form-table/string-array-form/component.mjs +168 -0
- package/esm2022/async-data/async-data-loader.mjs +63 -0
- package/esm2022/async-data/error-page/component.mjs +54 -0
- package/esm2022/async-data/index.mjs +18 -0
- package/esm2022/async-data/page-state/component.mjs +62 -0
- package/esm2022/async-data/types.mjs +6 -0
- package/esm2022/code-editor/code-display-dialog/component.mjs +35 -0
- package/esm2022/code-editor/code-editor-configs.mjs +66 -0
- package/esm2022/code-editor/index.mjs +11 -0
- package/esm2022/code-editor/k8s-yaml-display-dialog/component.mjs +26 -0
- package/esm2022/code-editor/resource-yaml-display/component.mjs +67 -0
- package/esm2022/components/card-section/card-section.component.mjs +24 -0
- package/esm2022/components/confirm-delete/confirm-delete.component.mjs +192 -0
- package/esm2022/components/confirm-delete/utils.mjs +8 -0
- package/esm2022/components/current-time/component.mjs +39 -0
- package/esm2022/components/custom-columns-setting/component.mjs +75 -0
- package/esm2022/components/custom-columns-setting/index.mjs +2 -0
- package/esm2022/components/date-range-picker/component.mjs +215 -0
- package/esm2022/components/date-range-picker/index.mjs +4 -0
- package/esm2022/components/date-range-picker/type.mjs +2 -0
- package/esm2022/components/date-range-picker/util.mjs +57 -0
- package/esm2022/components/disabled-container/disabled-container.component.mjs +81 -0
- package/esm2022/components/disabled-container/index.mjs +8 -0
- package/esm2022/components/field-set/column/component.mjs +25 -0
- package/esm2022/components/field-set/group/component.mjs +16 -0
- package/esm2022/components/field-set/index.mjs +14 -0
- package/esm2022/components/field-set/item/component.mjs +41 -0
- package/esm2022/components/foldable-block/component.mjs +60 -0
- package/esm2022/components/foldable-item-in-table/component.mjs +56 -0
- package/esm2022/components/help-document/component.mjs +69 -0
- package/esm2022/components/help-document/directive.mjs +70 -0
- package/esm2022/components/help-document/index.mjs +9 -0
- package/esm2022/components/help-document/service.mjs +43 -0
- package/esm2022/components/index.mjs +32 -0
- package/esm2022/components/loading-mask/loading-mask.component.mjs +35 -0
- package/esm2022/components/page-guard/component/component.mjs +101 -0
- package/esm2022/components/page-guard/component/helper-directives.mjs +51 -0
- package/esm2022/components/page-guard/component/page-guard.type.mjs +82 -0
- package/esm2022/components/page-guard/index.mjs +19 -0
- package/esm2022/components/password-input/component.mjs +143 -0
- package/esm2022/components/pod-status/component.mjs +49 -0
- package/esm2022/components/pod-status/index.mjs +4 -0
- package/esm2022/components/pod-status/status.mjs +84 -0
- package/esm2022/components/pod-status/typings.mjs +19 -0
- package/esm2022/components/relative-time/component.mjs +58 -0
- package/esm2022/components/resource-label/component.mjs +100 -0
- package/esm2022/components/resource-multi-select/component.mjs +152 -0
- package/esm2022/components/resource-multi-select/util.mjs +24 -0
- package/esm2022/components/search-panel/component.mjs +51 -0
- package/esm2022/components/search-panel/helper.directive.mjs +14 -0
- package/esm2022/components/search-panel/search-item/component.mjs +15 -0
- package/esm2022/components/select-prefix-label/directive.mjs +89 -0
- package/esm2022/components/status-icon/status-icon.component.mjs +56 -0
- package/esm2022/components/tags-label/component.mjs +224 -0
- package/esm2022/components/terminating-tag/component.mjs +16 -0
- package/esm2022/components/text-ellipsis/component.mjs +28 -0
- package/esm2022/components/text-tooltip/directive.mjs +71 -0
- package/esm2022/components/text-with-url/component.mjs +40 -0
- package/esm2022/components/upload-file/component.mjs +95 -0
- package/esm2022/components/zero-state/zero-state.component.mjs +51 -0
- package/esm2022/constants/common.mjs +86 -0
- package/esm2022/constants/index.mjs +7 -0
- package/esm2022/constants/k8s.mjs +13 -0
- package/esm2022/constants/patterns.mjs +142 -0
- package/esm2022/constants/resource-definitions.mjs +424 -0
- package/esm2022/constants/status-icons.mjs +65 -0
- package/esm2022/constants/timezones.mjs +234 -0
- package/esm2022/directives/aui-code-editor.directive.mjs +30 -0
- package/esm2022/directives/click-outside.directive.mjs +49 -0
- package/esm2022/directives/declare.directive.mjs +27 -0
- package/esm2022/directives/disabled.directive.mjs +76 -0
- package/esm2022/directives/effect-directive/coerce-number.directive.mjs +54 -0
- package/esm2022/directives/effect-directive/e2e-attribute-binding.directive.mjs +57 -0
- package/esm2022/directives/effect-directive/event.directive.mjs +129 -0
- package/esm2022/directives/effect-directive/index.mjs +21 -0
- package/esm2022/directives/effect-directive/min-max.directive.mjs +107 -0
- package/esm2022/directives/effect-directive/trim.directive.mjs +40 -0
- package/esm2022/directives/effect-directive/validators.directive.mjs +43 -0
- package/esm2022/directives/feature-gate.directive.mjs +90 -0
- package/esm2022/directives/index.mjs +13 -0
- package/esm2022/directives/last-form-item.directive.mjs +18 -0
- package/esm2022/directives/readonly-field.directive.mjs +145 -0
- package/esm2022/directives/resize.directive.mjs +39 -0
- package/esm2022/directives/scroll-border-observer.directive.mjs +77 -0
- package/esm2022/directives/scroll-to-first-invalid.directive.mjs +126 -0
- package/esm2022/directives/value-trace.directive.mjs +61 -0
- package/esm2022/form/base-form-container.mjs +126 -0
- package/esm2022/form/base-nested-form-control.mjs +190 -0
- package/esm2022/form/errors-mapper/base-errors-mapper.mjs +41 -0
- package/esm2022/form/errors-mapper/default-errors-mapper.service.mjs +65 -0
- package/esm2022/form/errors-mapper/errors-mapper-component/component.mjs +53 -0
- package/esm2022/form/errors-mapper/errors-mapper.directive.mjs +109 -0
- package/esm2022/form/errors-mapper/index.mjs +10 -0
- package/esm2022/form/errors-mapper/types.mjs +2 -0
- package/esm2022/form/index.mjs +6 -0
- package/esm2022/form/utils.mjs +61 -0
- package/esm2022/form/validators/async-function-validator.directive.mjs +49 -0
- package/esm2022/form/validators/dns1123-subdomain.mjs +42 -0
- package/esm2022/form/validators/function-validator.directive.mjs +49 -0
- package/esm2022/form/validators/index.mjs +10 -0
- package/esm2022/form/validators/maxlength-minlength-validator.directive.mjs +71 -0
- package/esm2022/form/validators/not-be-validator.directive.mjs +56 -0
- package/esm2022/form/validators/one-of-validator.directive.mjs +57 -0
- package/esm2022/form/validators/resource-limit.mjs +79 -0
- package/esm2022/form/validators/strong-password/index.mjs +4 -0
- package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +15 -0
- package/esm2022/form/validators/strong-password/strong-password-validator.directive.mjs +171 -0
- package/esm2022/form/validators/strong-password/strong-password-validator.module.mjs +36 -0
- package/esm2022/form/validators/utils.mjs +155 -0
- package/esm2022/index.mjs +15 -0
- package/esm2022/k8s-resource-list/footer/component.mjs +156 -0
- package/esm2022/k8s-resource-list/index.mjs +18 -0
- package/esm2022/k8s-resource-list/k8s-resource-list.mjs +224 -0
- package/esm2022/k8s-resource-list/k8s-resource-paged-list.mjs +174 -0
- package/esm2022/k8s-resource-list/types.mjs +11 -0
- package/esm2022/k8s-resource-list/utils.mjs +84 -0
- package/esm2022/k8s-shared/constants.mjs +53 -0
- package/esm2022/k8s-shared/index.mjs +12 -0
- package/esm2022/k8s-shared/k8s-resource-translate-key.pipe.mjs +31 -0
- package/esm2022/k8s-shared/k8s-shared-util.service.mjs +152 -0
- package/esm2022/k8s-shared/resource-mark/component.mjs +54 -0
- package/esm2022/k8s-shared/resource-mark/util.mjs +137 -0
- package/esm2022/k8s-shared/update-description-dialog/component.mjs +66 -0
- package/esm2022/k8s-shared/update-display-name-dialog/component.mjs +59 -0
- package/esm2022/k8s-shared/update-key-value-dialog/component.mjs +76 -0
- package/esm2022/page-deactivate/deactivate.directive.mjs +50 -0
- package/esm2022/page-deactivate/deactivate.guard.mjs +41 -0
- package/esm2022/page-deactivate/deactivate.service.mjs +78 -0
- package/esm2022/page-deactivate/index.mjs +4 -0
- package/esm2022/pipes/calc.pipe.mjs +21 -0
- package/esm2022/pipes/cron-human-readable.pipe.mjs +30 -0
- package/esm2022/pipes/crontab-next.pipe.mjs +67 -0
- package/esm2022/pipes/duration.pipe.mjs +51 -0
- package/esm2022/pipes/field-not-available.pipe.mjs +25 -0
- package/esm2022/pipes/img-header.pipe.mjs +18 -0
- package/esm2022/pipes/img-theme.pipe.mjs +38 -0
- package/esm2022/pipes/index.mjs +19 -0
- package/esm2022/pipes/keyvalue.pipe.mjs +20 -0
- package/esm2022/pipes/marked.pipe.mjs +18 -0
- package/esm2022/pipes/minimum-format.pipe.mjs +25 -0
- package/esm2022/pipes/page-env.pipe.mjs +69 -0
- package/esm2022/pipes/parse-json-translate.pipe.mjs +28 -0
- package/esm2022/pipes/parse-json.pipe.mjs +22 -0
- package/esm2022/pipes/pure.pipe.mjs +26 -0
- package/esm2022/pipes/safe.pipe.mjs +49 -0
- package/esm2022/pipes/sanitize.pipe.mjs +31 -0
- package/esm2022/pipes/time.pipe.mjs +113 -0
- package/esm2022/pipes/timezone-display.pipe.mjs +21 -0
- package/esm2022/services/form-row-duplicate/form-row-duplicate.service.mjs +280 -0
- package/esm2022/services/index.mjs +4 -0
- package/esm2022/services/on-resize.service.mjs +52 -0
- package/esm2022/services/yaml-util.service.mjs +99 -0
- package/esm2022/types/common.mjs +6 -0
- package/esm2022/types/helpers.mjs +12 -0
- package/esm2022/types/index.mjs +9 -0
- package/esm2022/types/k8s/core.mjs +2 -0
- package/esm2022/types/k8s/crd.mjs +57 -0
- package/esm2022/types/k8s/index.mjs +4 -0
- package/esm2022/types/k8s/raw.mjs +77 -0
- package/esm2022/types/schema.mjs +2 -0
- package/esm2022/utils/browser.mjs +21 -0
- package/esm2022/utils/cache-store.mjs +83 -0
- package/esm2022/utils/color-helpers.mjs +6 -0
- package/esm2022/utils/common.mjs +315 -0
- package/esm2022/utils/cron-util.mjs +44 -0
- package/esm2022/utils/decorators.mjs +137 -0
- package/esm2022/utils/disabled-state.mjs +47 -0
- package/esm2022/utils/format-number.mjs +227 -0
- package/esm2022/utils/index.mjs +24 -0
- package/esm2022/utils/local-storage-constants.mjs +2 -0
- package/esm2022/utils/node.mjs +18 -0
- package/esm2022/utils/observable.mjs +32 -0
- package/esm2022/utils/operators.mjs +38 -0
- package/esm2022/utils/request-pool.mjs +37 -0
- package/esm2022/utils/resources.mjs +66 -0
- package/esm2022/utils/router.mjs +20 -0
- package/esm2022/utils/sort-fn.mjs +7 -0
- package/esm2022/utils/tree.mjs +79 -0
- package/esm2022/utils/unit.mjs +191 -0
- package/esm2022/utils/version.mjs +76 -0
- package/esm2022/utils/with-load-state.mjs +21 -0
- package/esm2022/utils/workload.mjs +183 -0
- package/esm2022/utils/workspace.mjs +59 -0
- package/esm2022/utils/yaml.mjs +54 -0
- package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs +11151 -0
- package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs.map +1 -0
- package/form/base-form-container.d.ts +41 -0
- package/form/base-nested-form-control.d.ts +58 -0
- package/form/errors-mapper/base-errors-mapper.d.ts +13 -0
- package/form/errors-mapper/default-errors-mapper.service.d.ts +10 -0
- package/form/errors-mapper/errors-mapper-component/component.d.ts +19 -0
- package/form/errors-mapper/errors-mapper.directive.d.ts +39 -0
- package/form/errors-mapper/index.d.ts +6 -0
- package/form/errors-mapper/types.d.ts +16 -0
- package/form/index.d.ts +5 -0
- package/form/utils.d.ts +40 -0
- package/form/validators/async-function-validator.directive.d.ts +11 -0
- package/form/validators/dns1123-subdomain.d.ts +28 -0
- package/form/validators/function-validator.directive.d.ts +11 -0
- package/form/validators/index.d.ts +9 -0
- package/form/validators/maxlength-minlength-validator.directive.d.ts +20 -0
- package/form/validators/not-be-validator.directive.d.ts +12 -0
- package/form/validators/one-of-validator.directive.d.ts +12 -0
- package/form/validators/resource-limit.d.ts +17 -0
- package/form/validators/strong-password/index.d.ts +3 -0
- package/form/validators/strong-password/strong-password-tooltip/component.d.ts +6 -0
- package/form/validators/strong-password/strong-password-validator.directive.d.ts +34 -0
- package/form/validators/strong-password/strong-password-validator.module.d.ts +12 -0
- package/form/validators/utils.d.ts +67 -0
- package/index.d.ts +14 -0
- package/k8s-resource-list/footer/component.d.ts +42 -0
- package/k8s-resource-list/index.d.ts +13 -0
- package/k8s-resource-list/k8s-resource-list.d.ts +42 -0
- package/k8s-resource-list/k8s-resource-paged-list.d.ts +61 -0
- package/k8s-resource-list/types.d.ts +70 -0
- package/k8s-resource-list/utils.d.ts +19 -0
- package/k8s-shared/constants.d.ts +7 -0
- package/k8s-shared/index.d.ts +11 -0
- package/k8s-shared/k8s-resource-translate-key.pipe.d.ts +9 -0
- package/k8s-shared/k8s-shared-util.service.d.ts +48 -0
- package/k8s-shared/resource-mark/component.d.ts +16 -0
- package/k8s-shared/resource-mark/util.d.ts +2 -0
- package/k8s-shared/update-description-dialog/component.d.ts +33 -0
- package/k8s-shared/update-display-name-dialog/component.d.ts +27 -0
- package/k8s-shared/update-key-value-dialog/component.d.ts +38 -0
- package/package.json +56 -0
- package/page-deactivate/deactivate.directive.d.ts +18 -0
- package/page-deactivate/deactivate.guard.d.ts +13 -0
- package/page-deactivate/deactivate.service.d.ts +28 -0
- package/page-deactivate/index.d.ts +3 -0
- package/pipes/calc.pipe.d.ts +11 -0
- package/pipes/cron-human-readable.pipe.d.ts +9 -0
- package/pipes/crontab-next.pipe.d.ts +18 -0
- package/pipes/duration.pipe.d.ts +10 -0
- package/pipes/field-not-available.pipe.d.ts +13 -0
- package/pipes/img-header.pipe.d.ts +7 -0
- package/pipes/img-theme.pipe.d.ts +13 -0
- package/pipes/index.d.ts +18 -0
- package/pipes/keyvalue.pipe.d.ts +9 -0
- package/pipes/marked.pipe.d.ts +8 -0
- package/pipes/minimum-format.pipe.d.ts +10 -0
- package/pipes/page-env.pipe.d.ts +34 -0
- package/pipes/parse-json-translate.pipe.d.ts +8 -0
- package/pipes/parse-json.pipe.d.ts +7 -0
- package/pipes/pure.pipe.d.ts +17 -0
- package/pipes/safe.pipe.d.ts +10 -0
- package/pipes/sanitize.pipe.d.ts +10 -0
- package/pipes/time.pipe.d.ts +40 -0
- package/pipes/timezone-display.pipe.d.ts +10 -0
- package/services/form-row-duplicate/form-row-duplicate.service.d.ts +45 -0
- package/services/index.d.ts +3 -0
- package/services/on-resize.service.d.ts +20 -0
- package/services/yaml-util.service.d.ts +20 -0
- package/styles/ansi-color.scss +131 -0
- package/styles/global.scss +904 -0
- package/styles/lib.scss +1 -0
- package/styles/markdown-body.scss +107 -0
- package/styles/mixins.scss +710 -0
- package/styles/var.scss +30 -0
- package/types/common.d.ts +42 -0
- package/types/helpers.d.ts +35 -0
- package/types/index.d.ts +8 -0
- package/types/k8s/core.d.ts +100 -0
- package/types/k8s/crd.d.ts +497 -0
- package/types/k8s/index.d.ts +3 -0
- package/types/k8s/raw.d.ts +860 -0
- package/types/schema.d.ts +14 -0
- package/utils/browser.d.ts +4 -0
- package/utils/cache-store.d.ts +35 -0
- package/utils/color-helpers.d.ts +4 -0
- package/utils/common.d.ts +64 -0
- package/utils/cron-util.d.ts +8 -0
- package/utils/decorators.d.ts +14 -0
- package/utils/disabled-state.d.ts +20 -0
- package/utils/format-number.d.ts +11 -0
- package/utils/index.d.ts +23 -0
- package/utils/local-storage-constants.d.ts +1 -0
- package/utils/node.d.ts +8 -0
- package/utils/observable.d.ts +5 -0
- package/utils/operators.d.ts +22 -0
- package/utils/request-pool.d.ts +12 -0
- package/utils/resources.d.ts +19 -0
- package/utils/router.d.ts +3 -0
- package/utils/sort-fn.d.ts +2 -0
- package/utils/tree.d.ts +16 -0
- package/utils/unit.d.ts +21 -0
- package/utils/version.d.ts +39 -0
- package/utils/with-load-state.d.ts +11 -0
- package/utils/workload.d.ts +66 -0
- package/utils/workspace.d.ts +28 -0
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZHluYW1pYy1wbHVnaW4tc2hhcmVkL3NyYy9mb3JtL2Jhc2UtZm9ybS1jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFhLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFcEQ7OztHQUdHO0FBRUgsTUFBTSxPQUFnQixpQkFBaUI7SUFpQ3JDLFlBQVksUUFBa0I7UUEvQjlCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFXakIsc0JBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFDckMsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFDOUIsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFDL0IsZUFBVSxHQUFHLEtBQUssQ0FBQztRQWFULGlCQUFZ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OzhHQXZIbUIsaUJBQWlCO2tHQUFqQixpQkFBaUI7O0FBUXJDO0lBREMsZUFBZSxFQUFFOzhCQUNILFVBQVU7d0RBQUk7MkZBUlQsaUJBQWlCO2tCQUR0QyxTQUFTOzZFQUdSLFFBQVE7c0JBRFAsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sYUFBYSxNQUdJLE1BQU07c0JBRHRCLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaWRlbnRpdHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBjcmVhdGVBY3Rpb25zLFxuICB5YW1sV3JpdGVPcHRpb25zLFxufSBmcm9tICcuLi9jb2RlLWVkaXRvci9jb2RlLWVkaXRvci1jb25maWdzJztcbmltcG9ydCB7IEludGVyY2VwdERlYWN0aXZhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vcGFnZS1kZWFjdGl2YXRlJztcbmltcG9ydCB7IGlzRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZUlucHV0IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgcGFyc2VBbGwsIHN0cmluZ2lmeSB9IGZyb20gJy4uL3V0aWxzL3lhbWwnO1xuXG4vKipcbiAqIGh0dHA6Ly9jb25mbHVlbmNlLmFsYXVkYS5jbi9kaXNwbGF5L0ZST04vSXNzdWUtQW5ndWxhcityZWxhdGVkXG4gKiDnlLHkuo5mb3JtQ29udHJvbOWtmOWcqOWGheWtmOazhOa8j+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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1uZXN0ZWQtZm9ybS1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2Zvcm0vYmFzZS1uZXN0ZWQtZm9ybS1jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGtCQUFrQixFQUNsQixTQUFTLEVBQ1QsTUFBTSxHQUVQLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNsRSxPQUFPLEVBQ0wsYUFBYSxFQUNiLFNBQVMsRUFDVCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLGFBQWEsRUFDYixNQUFNLEVBQ04sR0FBRyxFQUNILEdBQUcsRUFDSCxJQUFJLEVBQ0osRUFBRSxHQUNILE1BQU0sTUFBTSxDQUFDOztBQUVkLE1BQU0sVUFBVSx1QkFBdUIsQ0FBVyxFQUNoRCxjQUFjLEdBQUcsS0FBSyxFQUN0QixjQUFjLEdBQUcsS0FBSyxNQUlwQixFQUFFO0lBRUosT0FBTyxNQUFNLGlCQUFrQixTQUFRLHFCQUEyQjtRQUEzRDs7WUFDYyxtQkFBYyxHQUFHLGNBQWMsQ0FBQztZQUNoQyxtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUNyRCxDQUFDO0tBQUEsQ0FBQztBQUNKLENBQUM7QUFHRCxNQUFNLE9BQU8scUJBQXFCO0lBTWhDLElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFD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R0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7Z0JBQzFDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBVSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRTdDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDbEMsT0FBTyxHQUFHLENBQUM7Z0JBQ2IsQ0FBQztnQkFFRCxPQUFPLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBYSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2QsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBVTtJQUMzQixPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzNELENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUN2QixJQUFVLEVBQ1YsRUFBUSxFQUNSLFNBQTBCLFFBQVE7SUFFbEMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFPLENBQUMsTUFBUyxFQUFFLEVBQUUsQ0FDbkIsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VBdHRyQm9vbGVhbiB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nQ29udHJvbCxcbiAgTmdGb3JtLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBhc3NvY1BhdGgsIGlkZW50aXR5LCBtZXJnZURlZXBSaWdodCwgcGF0aCB9IGZyb20gJ3JhbWRhJztcbmltcG9ydCB7XG4gIFJlcGxheVN1YmplY3QsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG4gIGRlYm91bmNlVGltZSxcbiAgbWVyZ2UsXG4gIE9ic2VydmFibGUsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICB0YXAsXG4gIHRha2UsXG4gIG9mLFxufSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5lc3RlZEZvcm1Db250cm9sPFYsIE0gPSBWPih7XG4gIGF1dG9FbWl0Q2hhbmdlID0gZmFsc2UsXG4gIGFzeW5jVmFsaWRhdG9yID0gZmFsc2UsXG59OiB7XG4gIGF1dG9FbWl0Q2hhbmdlPzogYm9vbGVhbjtcbiAgYXN5bmNWYWxpZGF0b3I/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
|