@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,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
|