@ardium-ui/ui 4.4.2 → 5.0.0-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/fesm2022/ardium-ui-ui.mjs +2482 -2400
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/_internal/boolean-component.d.ts +1 -1
- package/lib/_internal/disablable-component.d.ts +1 -1
- package/lib/_internal/focusable-component.d.ts +1 -1
- package/lib/_internal/form-field-component.d.ts +1 -1
- package/lib/_internal/ngmodel-component.d.ts +1 -1
- package/lib/_internal/selectable-list-component.d.ts +1 -1
- package/lib/_internal/utils/date.utils.d.ts +3 -0
- package/lib/buttons/_button-base.d.ts +1 -1
- package/lib/calendar/calendar.component.d.ts +8 -2
- package/lib/file-inputs/file-input-base.d.ts +1 -1
- package/lib/form-field/form-field-base.d.ts +1 -1
- package/lib/inputs/_simple-input-base.d.ts +3 -3
- package/lib/inputs/autocomplete-input/autocomplete-input.component.d.ts +66 -0
- package/lib/inputs/autocomplete-input/autocomplete-input.defaults.d.ts +15 -0
- package/lib/inputs/autocomplete-input/autocomplete-input.directives.d.ts +33 -0
- package/lib/inputs/autocomplete-input/autocomplete-input.module.d.ts +13 -0
- package/lib/inputs/autocomplete-input/index.d.ts +3 -0
- package/lib/inputs/date-input/date-input.component.d.ts +5 -2
- package/lib/inputs/input/index.d.ts +2 -1
- package/lib/inputs/input/input.component.d.ts +3 -56
- package/lib/inputs/input/input.defaults.d.ts +1 -10
- package/lib/inputs/input/input.directives.d.ts +0 -13
- package/lib/inputs/input/input.module.d.ts +3 -5
- package/lib/inputs/input-utils.d.ts +8 -8
- package/lib/option/option.component.d.ts +1 -1
- package/lib/slider/abstract-slider.d.ts +1 -1
- package/package.json +1 -3
- package/prebuilt-themes/default/inputs/{simple-input.css → autocomplete-input.css} +40 -15
- package/prebuilt-themes/default/inputs/autocomplete-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/input.css +0 -25
- package/prebuilt-themes/default/inputs/input.css.map +1 -1
- package/public-api.d.ts +1 -1
- package/themes/default/inputs/autocomplete-input.scss +46 -0
- package/themes/default/inputs/input.scss +0 -34
- package/esm2022/ardium-ui-ui.mjs +0 -5
- package/esm2022/lib/_internal/boolean-component.mjs +0 -95
- package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +0 -15
- package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +0 -18
- package/esm2022/lib/_internal/disablable-component.mjs +0 -51
- package/esm2022/lib/_internal/focusable-component.mjs +0 -85
- package/esm2022/lib/_internal/form-field-component.mjs +0 -33
- package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +0 -453
- package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +0 -370
- package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +0 -157
- package/esm2022/lib/_internal/models/pagination.model.mjs +0 -90
- package/esm2022/lib/_internal/models/queue.mjs +0 -59
- package/esm2022/lib/_internal/ngmodel-component.mjs +0 -101
- package/esm2022/lib/_internal/public-api.mjs +0 -2
- package/esm2022/lib/_internal/selectable-list-component.mjs +0 -271
- package/esm2022/lib/badge/badge.defaults.mjs +0 -20
- package/esm2022/lib/badge/badge.directive.mjs +0 -97
- package/esm2022/lib/badge/badge.module.mjs +0 -18
- package/esm2022/lib/badge/badge.types.mjs +0 -16
- package/esm2022/lib/badge/index.mjs +0 -5
- package/esm2022/lib/buttons/_button-base.defaults.mjs +0 -17
- package/esm2022/lib/buttons/_button-base.mjs +0 -26
- package/esm2022/lib/buttons/button/button.component.mjs +0 -38
- package/esm2022/lib/buttons/button/button.defaults.mjs +0 -17
- package/esm2022/lib/buttons/button/button.module.mjs +0 -18
- package/esm2022/lib/buttons/button/index.mjs +0 -4
- package/esm2022/lib/buttons/fab/fab.component.mjs +0 -33
- package/esm2022/lib/buttons/fab/fab.defaults.mjs +0 -17
- package/esm2022/lib/buttons/fab/fab.module.mjs +0 -18
- package/esm2022/lib/buttons/fab/index.mjs +0 -4
- package/esm2022/lib/buttons/general-button.types.mjs +0 -55
- package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +0 -39
- package/esm2022/lib/buttons/icon-button/icon-button.defaults.mjs +0 -9
- package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +0 -18
- package/esm2022/lib/buttons/icon-button/index.mjs +0 -4
- package/esm2022/lib/calendar/calendar.component.mjs +0 -466
- package/esm2022/lib/calendar/calendar.defaults.mjs +0 -26
- package/esm2022/lib/calendar/calendar.directives.mjs +0 -107
- package/esm2022/lib/calendar/calendar.internal-directives.mjs +0 -22
- package/esm2022/lib/calendar/calendar.internal-types.mjs +0 -2
- package/esm2022/lib/calendar/calendar.module.mjs +0 -71
- package/esm2022/lib/calendar/calendar.types.mjs +0 -6
- package/esm2022/lib/calendar/index.mjs +0 -6
- package/esm2022/lib/calendar/views/days-view/days-view.component.mjs +0 -282
- package/esm2022/lib/calendar/views/days-view/days-view.helpers.mjs +0 -65
- package/esm2022/lib/calendar/views/months-view/months-view.component.mjs +0 -245
- package/esm2022/lib/calendar/views/months-view/months-view.helpers.mjs +0 -22
- package/esm2022/lib/calendar/views/years-view/years-view.component.mjs +0 -244
- package/esm2022/lib/calendar/views/years-view/years-view.helpers.mjs +0 -14
- package/esm2022/lib/card/card.children.mjs +0 -96
- package/esm2022/lib/card/card.component.mjs +0 -38
- package/esm2022/lib/card/card.defaults.mjs +0 -17
- package/esm2022/lib/card/card.module.mjs +0 -59
- package/esm2022/lib/card/card.types.mjs +0 -9
- package/esm2022/lib/card/index.mjs +0 -6
- package/esm2022/lib/checkbox/checkbox.component.mjs +0 -68
- package/esm2022/lib/checkbox/checkbox.defaults.mjs +0 -17
- package/esm2022/lib/checkbox/checkbox.directives.mjs +0 -14
- package/esm2022/lib/checkbox/checkbox.internal-directives.mjs +0 -15
- package/esm2022/lib/checkbox/checkbox.module.mjs +0 -20
- package/esm2022/lib/checkbox/checkbox.types.mjs +0 -6
- package/esm2022/lib/checkbox/index.mjs +0 -6
- package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +0 -116
- package/esm2022/lib/checkbox-list/checkbox-list.defaults.mjs +0 -25
- package/esm2022/lib/checkbox-list/checkbox-list.directives.mjs +0 -14
- package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +0 -21
- package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +0 -7
- package/esm2022/lib/checkbox-list/index.mjs +0 -6
- package/esm2022/lib/chip/chip.component.mjs +0 -36
- package/esm2022/lib/chip/chip.defaults.mjs +0 -20
- package/esm2022/lib/chip/chip.module.mjs +0 -21
- package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +0 -53
- package/esm2022/lib/chip/deletable-chip/deletable-chip.defaults.mjs +0 -17
- package/esm2022/lib/chip/index.mjs +0 -8
- package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +0 -53
- package/esm2022/lib/chip/selectable-chip/selectable-chip.defaults.mjs +0 -18
- package/esm2022/lib/dialog/dialog.component.mjs +0 -109
- package/esm2022/lib/dialog/dialog.defaults.mjs +0 -26
- package/esm2022/lib/dialog/dialog.directives.mjs +0 -25
- package/esm2022/lib/dialog/dialog.module.mjs +0 -21
- package/esm2022/lib/dialog/dialog.types.mjs +0 -10
- package/esm2022/lib/dialog/index.mjs +0 -6
- package/esm2022/lib/divider/divider.component.mjs +0 -19
- package/esm2022/lib/divider/divider.defaults.mjs +0 -13
- package/esm2022/lib/divider/divider.module.mjs +0 -18
- package/esm2022/lib/divider/index.mjs +0 -4
- package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +0 -112
- package/esm2022/lib/dropdown-panel/dropdown-panel.defaults.mjs +0 -17
- package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +0 -18
- package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +0 -10
- package/esm2022/lib/dropdown-panel/index.mjs +0 -5
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +0 -70
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.defaults.mjs +0 -18
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +0 -42
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +0 -52
- package/esm2022/lib/file-inputs/file-drop-area/index.mjs +0 -5
- package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +0 -120
- package/esm2022/lib/file-inputs/file-input/file-input.defaults.mjs +0 -23
- package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +0 -86
- package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +0 -55
- package/esm2022/lib/file-inputs/file-input/index.mjs +0 -5
- package/esm2022/lib/file-inputs/file-input-base.defaults.mjs +0 -8
- package/esm2022/lib/file-inputs/file-input-base.mjs +0 -356
- package/esm2022/lib/file-inputs/file-input-types.mjs +0 -8
- package/esm2022/lib/form-field/error/error.component.mjs +0 -17
- package/esm2022/lib/form-field/error/error.directive.mjs +0 -17
- package/esm2022/lib/form-field/form-field-base.mjs +0 -53
- package/esm2022/lib/form-field/form-field-child.token.mjs +0 -3
- package/esm2022/lib/form-field/form-field-native-inputs.mjs +0 -80
- package/esm2022/lib/form-field/form-field.component.mjs +0 -12
- package/esm2022/lib/form-field/form-field.defaults.mjs +0 -17
- package/esm2022/lib/form-field/form-field.module.mjs +0 -49
- package/esm2022/lib/form-field/hint/hint.component.mjs +0 -17
- package/esm2022/lib/form-field/hint/hint.directive.mjs +0 -30
- package/esm2022/lib/form-field/horizontal-form-field.component.mjs +0 -12
- package/esm2022/lib/form-field/index.mjs +0 -10
- package/esm2022/lib/form-field/label/label.component.mjs +0 -27
- package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +0 -58
- package/esm2022/lib/form-field-frame/form-field-frame.defaults.mjs +0 -18
- package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +0 -25
- package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +0 -19
- package/esm2022/lib/form-field-frame/index.mjs +0 -5
- package/esm2022/lib/icon/icon.component.mjs +0 -52
- package/esm2022/lib/icon/icon.defaults.mjs +0 -17
- package/esm2022/lib/icon/icon.module.mjs +0 -19
- package/esm2022/lib/icon/icon.pipe.mjs +0 -18
- package/esm2022/lib/icon/index.mjs +0 -5
- package/esm2022/lib/inputs/_simple-input-base.mjs +0 -153
- package/esm2022/lib/inputs/date-input/date-input.component.mjs +0 -375
- package/esm2022/lib/inputs/date-input/date-input.defaults.mjs +0 -38
- package/esm2022/lib/inputs/date-input/date-input.directive.mjs +0 -163
- package/esm2022/lib/inputs/date-input/date-input.module.mjs +0 -108
- package/esm2022/lib/inputs/date-input/date-input.serializers.mjs +0 -49
- package/esm2022/lib/inputs/date-input/date-input.types.mjs +0 -5
- package/esm2022/lib/inputs/date-input/index.mjs +0 -6
- package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +0 -265
- package/esm2022/lib/inputs/digit-input/digit-input.defaults.mjs +0 -24
- package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +0 -267
- package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +0 -19
- package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +0 -15
- package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +0 -8
- package/esm2022/lib/inputs/digit-input/index.mjs +0 -5
- package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +0 -180
- package/esm2022/lib/inputs/hex-input/hex-input.defaults.mjs +0 -26
- package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +0 -36
- package/esm2022/lib/inputs/hex-input/hex-input.model.mjs +0 -97
- package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +0 -37
- package/esm2022/lib/inputs/hex-input/index.mjs +0 -5
- package/esm2022/lib/inputs/input/index.mjs +0 -4
- package/esm2022/lib/inputs/input/input.component.mjs +0 -278
- package/esm2022/lib/inputs/input/input.defaults.mjs +0 -21
- package/esm2022/lib/inputs/input/input.directives.mjs +0 -58
- package/esm2022/lib/inputs/input/input.module.mjs +0 -61
- package/esm2022/lib/inputs/input-transformers.mjs +0 -66
- package/esm2022/lib/inputs/input-types.mjs +0 -6
- package/esm2022/lib/inputs/input-utils.mjs +0 -186
- package/esm2022/lib/inputs/number-input/index.mjs +0 -5
- package/esm2022/lib/inputs/number-input/number-input.component.mjs +0 -250
- package/esm2022/lib/inputs/number-input/number-input.defaults.mjs +0 -27
- package/esm2022/lib/inputs/number-input/number-input.directives.mjs +0 -14
- package/esm2022/lib/inputs/number-input/number-input.module.mjs +0 -21
- package/esm2022/lib/inputs/password-input/index.mjs +0 -6
- package/esm2022/lib/inputs/password-input/password-input.component.mjs +0 -167
- package/esm2022/lib/inputs/password-input/password-input.defaults.mjs +0 -24
- package/esm2022/lib/inputs/password-input/password-input.directives.mjs +0 -49
- package/esm2022/lib/inputs/password-input/password-input.module.mjs +0 -41
- package/esm2022/lib/inputs/password-input/password-input.types.mjs +0 -2
- package/esm2022/lib/inputs/simple-input/index.mjs +0 -5
- package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +0 -50
- package/esm2022/lib/inputs/simple-input/simple-input.defaults.mjs +0 -25
- package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +0 -36
- package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +0 -37
- package/esm2022/lib/kbd/index.mjs +0 -6
- package/esm2022/lib/kbd/kbd.component.mjs +0 -30
- package/esm2022/lib/kbd/kbd.defaults.mjs +0 -15
- package/esm2022/lib/kbd/kbd.directive.mjs +0 -33
- package/esm2022/lib/kbd/kbd.module.mjs +0 -20
- package/esm2022/lib/kbd/kbd.pipe.mjs +0 -21
- package/esm2022/lib/kbd-shortcut/index.mjs +0 -4
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +0 -36
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.defaults.mjs +0 -8
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +0 -19
- package/esm2022/lib/modal/index.mjs +0 -5
- package/esm2022/lib/modal/modal.component.mjs +0 -95
- package/esm2022/lib/modal/modal.defaults.mjs +0 -20
- package/esm2022/lib/modal/modal.directives.mjs +0 -14
- package/esm2022/lib/modal/modal.module.mjs +0 -22
- package/esm2022/lib/option/index.mjs +0 -3
- package/esm2022/lib/option/option.component.mjs +0 -55
- package/esm2022/lib/option/option.module.mjs +0 -18
- package/esm2022/lib/progress-bar/index.mjs +0 -6
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +0 -58
- package/esm2022/lib/progress-bar/progress-bar.defaults.mjs +0 -21
- package/esm2022/lib/progress-bar/progress-bar.directive.mjs +0 -14
- package/esm2022/lib/progress-bar/progress-bar.module.mjs +0 -19
- package/esm2022/lib/progress-bar/progress-bar.types.mjs +0 -19
- package/esm2022/lib/progress-circle/index.mjs +0 -6
- package/esm2022/lib/progress-circle/progress-circle.component.mjs +0 -45
- package/esm2022/lib/progress-circle/progress-circle.defaults.mjs +0 -21
- package/esm2022/lib/progress-circle/progress-circle.directive.mjs +0 -14
- package/esm2022/lib/progress-circle/progress-circle.module.mjs +0 -19
- package/esm2022/lib/progress-circle/progress-circle.types.mjs +0 -10
- package/esm2022/lib/radio/index.mjs +0 -5
- package/esm2022/lib/radio/radio/radio.component.mjs +0 -119
- package/esm2022/lib/radio/radio/radio.defaults.mjs +0 -16
- package/esm2022/lib/radio/radio-group.component.mjs +0 -203
- package/esm2022/lib/radio/radio.module.mjs +0 -19
- package/esm2022/lib/search-functions.mjs +0 -64
- package/esm2022/lib/segment/index.mjs +0 -6
- package/esm2022/lib/segment/segment.component.mjs +0 -125
- package/esm2022/lib/segment/segment.defaults.mjs +0 -26
- package/esm2022/lib/segment/segment.directives.mjs +0 -14
- package/esm2022/lib/segment/segment.module.mjs +0 -19
- package/esm2022/lib/segment/segment.types.mjs +0 -13
- package/esm2022/lib/select/index.mjs +0 -6
- package/esm2022/lib/select/select.component.mjs +0 -836
- package/esm2022/lib/select/select.defaults.mjs +0 -53
- package/esm2022/lib/select/select.directive.mjs +0 -171
- package/esm2022/lib/select/select.module.mjs +0 -112
- package/esm2022/lib/select/select.types.mjs +0 -2
- package/esm2022/lib/slide-toggle/index.mjs +0 -5
- package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +0 -43
- package/esm2022/lib/slide-toggle/slide-toggle.defaults.mjs +0 -21
- package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +0 -18
- package/esm2022/lib/slide-toggle/slide-toggle.types.mjs +0 -5
- package/esm2022/lib/slider/abstract-slider.mjs +0 -251
- package/esm2022/lib/slider/index.mjs +0 -8
- package/esm2022/lib/slider/range-slider/range-slider.component.mjs +0 -151
- package/esm2022/lib/slider/range-slider/range-slider.module.mjs +0 -18
- package/esm2022/lib/slider/slider.component.mjs +0 -100
- package/esm2022/lib/slider/slider.defaults.mjs +0 -14
- package/esm2022/lib/slider/slider.directive.mjs +0 -16
- package/esm2022/lib/slider/slider.module.mjs +0 -20
- package/esm2022/lib/slider/slider.types.mjs +0 -10
- package/esm2022/lib/snackbar/index.mjs +0 -5
- package/esm2022/lib/snackbar/snackbar-ref.mjs +0 -51
- package/esm2022/lib/snackbar/snackbar.component.mjs +0 -48
- package/esm2022/lib/snackbar/snackbar.service.mjs +0 -224
- package/esm2022/lib/snackbar/snackbar.token.mjs +0 -26
- package/esm2022/lib/snackbar/snackbar.types.mjs +0 -25
- package/esm2022/lib/spinner/index.mjs +0 -4
- package/esm2022/lib/spinner/spinner.component.mjs +0 -19
- package/esm2022/lib/spinner/spinner.defaults.mjs +0 -14
- package/esm2022/lib/spinner/spinner.module.mjs +0 -18
- package/esm2022/lib/star/index.mjs +0 -6
- package/esm2022/lib/star/rating-display/index.mjs +0 -6
- package/esm2022/lib/star/rating-display/rating-display.component.mjs +0 -71
- package/esm2022/lib/star/rating-display/rating-display.defaults.mjs +0 -16
- package/esm2022/lib/star/rating-display/rating-display.directives.mjs +0 -16
- package/esm2022/lib/star/rating-display/rating-display.module.mjs +0 -20
- package/esm2022/lib/star/rating-display/rating-display.types.mjs +0 -2
- package/esm2022/lib/star/rating-input/index.mjs +0 -6
- package/esm2022/lib/star/rating-input/rating-input.component.mjs +0 -191
- package/esm2022/lib/star/rating-input/rating-input.defaults.mjs +0 -17
- package/esm2022/lib/star/rating-input/rating-input.directives.mjs +0 -16
- package/esm2022/lib/star/rating-input/rating-input.module.mjs +0 -20
- package/esm2022/lib/star/rating-input/rating-input.types.mjs +0 -2
- package/esm2022/lib/star/star-button/index.mjs +0 -6
- package/esm2022/lib/star/star-button/star-button.component.mjs +0 -55
- package/esm2022/lib/star/star-button/star-button.defaults.mjs +0 -18
- package/esm2022/lib/star/star-button/star-button.directives.mjs +0 -16
- package/esm2022/lib/star/star-button/star-button.module.mjs +0 -20
- package/esm2022/lib/star/star-button/star-button.types.mjs +0 -2
- package/esm2022/lib/star/star.component.mjs +0 -36
- package/esm2022/lib/star/star.defaults.mjs +0 -15
- package/esm2022/lib/star/star.directives.mjs +0 -16
- package/esm2022/lib/star/star.module.mjs +0 -20
- package/esm2022/lib/star/star.types.mjs +0 -23
- package/esm2022/lib/statebox/index.mjs +0 -4
- package/esm2022/lib/statebox/statebox.component.mjs +0 -114
- package/esm2022/lib/statebox/statebox.defaults.mjs +0 -20
- package/esm2022/lib/statebox/statebox.module.mjs +0 -18
- package/esm2022/lib/statebox/statebox.types.mjs +0 -2
- package/esm2022/lib/tabber/index.mjs +0 -6
- package/esm2022/lib/tabber/tab/tab.component.mjs +0 -44
- package/esm2022/lib/tabber/tab/tab.defaults.mjs +0 -13
- package/esm2022/lib/tabber/tabber.component.mjs +0 -90
- package/esm2022/lib/tabber/tabber.defaults.mjs +0 -19
- package/esm2022/lib/tabber/tabber.module.mjs +0 -19
- package/esm2022/lib/table/index.mjs +0 -6
- package/esm2022/lib/table/table-item-storage.mjs +0 -564
- package/esm2022/lib/table/table.component.mjs +0 -367
- package/esm2022/lib/table/table.defaults.mjs +0 -53
- package/esm2022/lib/table/table.directives.mjs +0 -62
- package/esm2022/lib/table/table.module.mjs +0 -47
- package/esm2022/lib/table/table.types.mjs +0 -30
- package/esm2022/lib/table/utils.mjs +0 -18
- package/esm2022/lib/table-from-csv/index.mjs +0 -4
- package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +0 -120
- package/esm2022/lib/table-from-csv/table-from-csv.defaults.mjs +0 -15
- package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +0 -19
- package/esm2022/lib/table-pagination/index.mjs +0 -5
- package/esm2022/lib/table-pagination/table-pagination.component.mjs +0 -108
- package/esm2022/lib/table-pagination/table-pagination.defaults.mjs +0 -25
- package/esm2022/lib/table-pagination/table-pagination.module.mjs +0 -21
- package/esm2022/lib/table-pagination/table-pagination.types.mjs +0 -7
- package/esm2022/lib/text-list/index.mjs +0 -4
- package/esm2022/lib/text-list/text-list.component.mjs +0 -18
- package/esm2022/lib/text-list/text-list.module.mjs +0 -19
- package/esm2022/lib/text-list/text-list.pipe.mjs +0 -16
- package/esm2022/lib/types/alignment.types.mjs +0 -10
- package/esm2022/lib/types/button.types.mjs +0 -6
- package/esm2022/lib/types/colors.types.mjs +0 -43
- package/esm2022/lib/types/item-storage.types.mjs +0 -6
- package/esm2022/lib/types/theming.types.mjs +0 -48
- package/esm2022/lib/types/utility.types.mjs +0 -5
- package/esm2022/public-api.mjs +0 -74
- package/lib/inputs/simple-input/index.d.ts +0 -4
- package/lib/inputs/simple-input/simple-input.component.d.ts +0 -13
- package/lib/inputs/simple-input/simple-input.defaults.d.ts +0 -6
- package/lib/inputs/simple-input/simple-input.directives.d.ts +0 -20
- package/lib/inputs/simple-input/simple-input.module.d.ts +0 -11
- package/prebuilt-themes/default/inputs/simple-input.css.map +0 -1
- package/themes/default/inputs/simple-input.scss +0 -12
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
import { computed, Directive, inject, Input, input, output, signal, viewChild, } from '@angular/core';
|
|
2
|
-
import { coerceBooleanProperty, coerceNumberProperty, FileSystemMethod, FileSystemService, } from '@ardium-ui/devkit';
|
|
3
|
-
import { isDefined } from 'simple-bool';
|
|
4
|
-
import { _FormFieldComponentBase } from '../_internal/form-field-component';
|
|
5
|
-
import { FileInputFailedUploadReason } from './file-input-types';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class _FileInputComponentBase extends _FormFieldComponentBase {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(...arguments);
|
|
10
|
-
this._fileSystemService = inject(FileSystemService);
|
|
11
|
-
this.fileInputEl = viewChild('fileInput');
|
|
12
|
-
this.name = input('');
|
|
13
|
-
this._wasViewInit = false;
|
|
14
|
-
//! appearance
|
|
15
|
-
this.compact = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
16
|
-
//! settings
|
|
17
|
-
this.multiple = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
18
|
-
this.maxFiles = input(null, { transform: v => coerceNumberProperty(v, null) });
|
|
19
|
-
this.maxFilesWithMultiple = computed(() => (this.multiple() ? this.maxFiles() ?? Infinity : 1));
|
|
20
|
-
this.blockAfterUpload = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
21
|
-
this.maxFileSizeBytes = input(null, { transform: v => coerceNumberProperty(v, null) });
|
|
22
|
-
this.accept = input('*');
|
|
23
|
-
this.directoryId = input(undefined);
|
|
24
|
-
this.startDirectory = input(undefined);
|
|
25
|
-
this.fileTypes = input(undefined);
|
|
26
|
-
this.acceptString = computed(() => {
|
|
27
|
-
const types = this.fileTypes();
|
|
28
|
-
if (types) {
|
|
29
|
-
const acceptEntries = [];
|
|
30
|
-
for (const type of types) {
|
|
31
|
-
if (type.accept) {
|
|
32
|
-
for (const mimeType in type.accept) {
|
|
33
|
-
const extensions = type.accept[mimeType];
|
|
34
|
-
if (extensions && extensions.length > 0) {
|
|
35
|
-
acceptEntries.push(...extensions);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return acceptEntries.join(',');
|
|
41
|
-
}
|
|
42
|
-
const accept = this.accept();
|
|
43
|
-
if (Array.isArray(accept)) {
|
|
44
|
-
return accept.join(',');
|
|
45
|
-
}
|
|
46
|
-
return accept;
|
|
47
|
-
});
|
|
48
|
-
this.acceptedMimeTypes = computed(() => {
|
|
49
|
-
const types = this.fileTypes();
|
|
50
|
-
if (types) {
|
|
51
|
-
const mimeTypes = [];
|
|
52
|
-
for (const type of types) {
|
|
53
|
-
if (type.accept) {
|
|
54
|
-
for (const mimeType in type.accept) {
|
|
55
|
-
mimeTypes.push({ mimeType, extensions: new Set(type.accept[mimeType]) });
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return mimeTypes;
|
|
60
|
-
}
|
|
61
|
-
return null;
|
|
62
|
-
});
|
|
63
|
-
//! value
|
|
64
|
-
this._value = null;
|
|
65
|
-
this.valueChange = output();
|
|
66
|
-
this.dragFilesEvent = output({ alias: 'dragFiles' });
|
|
67
|
-
this.failedUploadEvent = output({ alias: 'failedUpload' });
|
|
68
|
-
this._valueBeforeInit = null;
|
|
69
|
-
//! temporary value
|
|
70
|
-
//for drag event handling
|
|
71
|
-
this._draggedFiles = null;
|
|
72
|
-
//! view state
|
|
73
|
-
this.currentViewState = signal('idle');
|
|
74
|
-
this._beforeDragoverState = 'idle';
|
|
75
|
-
//! touched event handling
|
|
76
|
-
this._isFilePickerOpen = false;
|
|
77
|
-
}
|
|
78
|
-
ngOnInit() {
|
|
79
|
-
super.ngOnInit();
|
|
80
|
-
if (!(window.File && window.FileReader && window.Blob)) {
|
|
81
|
-
console.error(new Error(`ARD-FT${this.componentId}0: Cannot use Ardium UI file features because this browser does not support file handling!`));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
ngAfterViewInit() {
|
|
85
|
-
this._wasViewInit = true;
|
|
86
|
-
this._updateElementValue();
|
|
87
|
-
}
|
|
88
|
-
get shouldBeBlocked() {
|
|
89
|
-
return this.blockAfterUpload() && isDefined(this.value);
|
|
90
|
-
}
|
|
91
|
-
get value() {
|
|
92
|
-
return this._value;
|
|
93
|
-
}
|
|
94
|
-
set value(v) {
|
|
95
|
-
this.writeValue(v);
|
|
96
|
-
}
|
|
97
|
-
writeValue(v) {
|
|
98
|
-
this._writeValue(v, false);
|
|
99
|
-
}
|
|
100
|
-
_writeValue(v, emitEvents = true) {
|
|
101
|
-
if (!(v instanceof File) && !Array.isArray(v) && v !== null) {
|
|
102
|
-
console.error(new Error(`ARD-FT${this.componentId}1: <ard-file-input>'s value must be a File, an array of Files, or null.`));
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
if (v instanceof File) {
|
|
106
|
-
v = [v];
|
|
107
|
-
}
|
|
108
|
-
if (Array.isArray(v) && !this.multiple() && v.length > 1) {
|
|
109
|
-
console.warn(`ARD-WA${this.componentId}2: <ard-file-input> received an array of files but the 'multiple' input is not set to true. Only the first file will be used.`);
|
|
110
|
-
v = [v[0]];
|
|
111
|
-
}
|
|
112
|
-
if (Array.isArray(v) && v.length === 0) {
|
|
113
|
-
v = null;
|
|
114
|
-
}
|
|
115
|
-
if (v === null) {
|
|
116
|
-
this.currentViewState.set('idle');
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
this.currentViewState.set('uploaded');
|
|
120
|
-
}
|
|
121
|
-
this._value = v;
|
|
122
|
-
if (this._wasViewInit)
|
|
123
|
-
this._updateElementValue();
|
|
124
|
-
if (emitEvents) {
|
|
125
|
-
this._emitChange();
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
_emitChange() {
|
|
129
|
-
const v = this.value;
|
|
130
|
-
this._onChangeRegistered?.(v);
|
|
131
|
-
this.valueChange.emit(v);
|
|
132
|
-
}
|
|
133
|
-
openBrowseDialog() {
|
|
134
|
-
// use FileSystemAPI if supported & needed
|
|
135
|
-
if (this._fileSystemService.isFileSystemAPISupported('showOpenFilePicker') &&
|
|
136
|
-
(this.directoryId() || this.startDirectory() || this.fileTypes())) {
|
|
137
|
-
this._isFilePickerOpen = true;
|
|
138
|
-
this._fileSystemService
|
|
139
|
-
.requestFileUpload({
|
|
140
|
-
method: FileSystemMethod.PreferFileSystem,
|
|
141
|
-
multiple: this.multiple(),
|
|
142
|
-
directoryId: this.directoryId() ?? undefined,
|
|
143
|
-
startDirectory: this.startDirectory() ?? undefined,
|
|
144
|
-
types: this.fileTypes() ?? undefined,
|
|
145
|
-
accept: this.accept() === '*' ? undefined : this.accept(),
|
|
146
|
-
})
|
|
147
|
-
.then(fileOrFiles => {
|
|
148
|
-
if (!fileOrFiles) {
|
|
149
|
-
this._writeValue(null);
|
|
150
|
-
this.currentViewState.set('idle');
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
const files = Array.isArray(fileOrFiles) ? fileOrFiles : [fileOrFiles];
|
|
154
|
-
this._writeFilesToValue(files);
|
|
155
|
-
this._isFilePickerOpen = false;
|
|
156
|
-
});
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
// else use the old-school method by clicking directly on the input
|
|
160
|
-
this._isFilePickerOpen = true;
|
|
161
|
-
this.fileInputEl()?.nativeElement.click();
|
|
162
|
-
}
|
|
163
|
-
//! event handlers
|
|
164
|
-
onDragover(event) {
|
|
165
|
-
event.preventDefault();
|
|
166
|
-
if (this.shouldBeBlocked) {
|
|
167
|
-
if (!event.dataTransfer)
|
|
168
|
-
return;
|
|
169
|
-
event.dataTransfer.dropEffect = 'none';
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
if (this.currentViewState() === 'dragover')
|
|
173
|
-
return;
|
|
174
|
-
this._draggedFiles = this._countDragenterFiles(event.dataTransfer);
|
|
175
|
-
if (!this._draggedFiles)
|
|
176
|
-
return;
|
|
177
|
-
this._beforeDragoverState = this.currentViewState();
|
|
178
|
-
this.currentViewState.set('dragover');
|
|
179
|
-
}
|
|
180
|
-
onDragleave() {
|
|
181
|
-
if (this.shouldBeBlocked)
|
|
182
|
-
return;
|
|
183
|
-
if (this.currentViewState() !== 'dragover')
|
|
184
|
-
return;
|
|
185
|
-
this.currentViewState.set(this._beforeDragoverState);
|
|
186
|
-
}
|
|
187
|
-
onDrop(event) {
|
|
188
|
-
event.preventDefault();
|
|
189
|
-
if (this.shouldBeBlocked)
|
|
190
|
-
return;
|
|
191
|
-
const filelist = event.dataTransfer?.files;
|
|
192
|
-
if (!filelist) {
|
|
193
|
-
this.currentViewState.set('idle');
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
const files = Array.from(filelist);
|
|
197
|
-
if (!files) {
|
|
198
|
-
this.currentViewState.set('idle');
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
const filteredFiles = [];
|
|
202
|
-
const failedFiles = [];
|
|
203
|
-
const acceptedMimeTypes = this.acceptedMimeTypes();
|
|
204
|
-
if (acceptedMimeTypes) {
|
|
205
|
-
let mimeTypeMatched = false;
|
|
206
|
-
fileLoop: for (const file of files) {
|
|
207
|
-
const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
|
|
208
|
-
if (!shouldAccept) {
|
|
209
|
-
failedFiles.push({ file, reason: reason });
|
|
210
|
-
continue;
|
|
211
|
-
}
|
|
212
|
-
mimeTypeMatched = false;
|
|
213
|
-
for (const mimeTypeObj of acceptedMimeTypes) {
|
|
214
|
-
if (isMimeTypeMatching(file, mimeTypeObj.mimeType)) {
|
|
215
|
-
mimeTypeMatched = true;
|
|
216
|
-
const extension = '.' + file.name.split('.').pop()?.toLowerCase();
|
|
217
|
-
if (mimeTypeObj.extensions.size === 0 || mimeTypeObj.extensions.has('*') || mimeTypeObj.extensions.has(extension)) {
|
|
218
|
-
filteredFiles.push(file);
|
|
219
|
-
continue fileLoop;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
if (!mimeTypeMatched) {
|
|
224
|
-
failedFiles.push({ file, reason: FileInputFailedUploadReason.InvalidMimeType });
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
failedFiles.push({ file, reason: FileInputFailedUploadReason.MimeTypeFoundButExtensionNotAllowed });
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
const accept = this.accept();
|
|
233
|
-
let acceptEntries = [];
|
|
234
|
-
if (Array.isArray(accept)) {
|
|
235
|
-
acceptEntries = accept.map(e => e.trim().toLowerCase());
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
acceptEntries = accept.split(',').map(e => e.trim().toLowerCase());
|
|
239
|
-
}
|
|
240
|
-
if (typeof accept === 'string' && accept === '*') {
|
|
241
|
-
for (const file of files) {
|
|
242
|
-
const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
|
|
243
|
-
if (!shouldAccept) {
|
|
244
|
-
failedFiles.push({ file, reason: reason });
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
fileLoop: for (const file of files) {
|
|
250
|
-
const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
|
|
251
|
-
if (!shouldAccept) {
|
|
252
|
-
failedFiles.push({ file, reason: reason });
|
|
253
|
-
continue;
|
|
254
|
-
}
|
|
255
|
-
const extension = '.' + file.name.split('.').at(-1)?.toLowerCase();
|
|
256
|
-
for (const entry of acceptEntries) {
|
|
257
|
-
if (extension === entry) {
|
|
258
|
-
filteredFiles.push(file);
|
|
259
|
-
continue fileLoop;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
failedFiles.push({ file, reason: FileInputFailedUploadReason.InvalidExtension });
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
this.dragFilesEvent.emit(filteredFiles);
|
|
267
|
-
this.failedUploadEvent.emit(failedFiles);
|
|
268
|
-
this.currentViewState.set('uploaded');
|
|
269
|
-
this._writeValue(filteredFiles.length > 0 ? filteredFiles : null);
|
|
270
|
-
this._emitTouched();
|
|
271
|
-
}
|
|
272
|
-
onFileInputChange() {
|
|
273
|
-
this._isFilePickerOpen = false;
|
|
274
|
-
console.log('onFileInputChange');
|
|
275
|
-
const files = Array.from(this.fileInputEl()?.nativeElement.files ?? []);
|
|
276
|
-
this._writeFilesToValue(files);
|
|
277
|
-
}
|
|
278
|
-
_writeFilesToValue(files) {
|
|
279
|
-
if (files.length === 0) {
|
|
280
|
-
this._writeValue(null);
|
|
281
|
-
this.currentViewState.set('idle');
|
|
282
|
-
this._emitTouched();
|
|
283
|
-
return;
|
|
284
|
-
}
|
|
285
|
-
this._writeValue(files);
|
|
286
|
-
this.currentViewState.set('uploaded');
|
|
287
|
-
this._emitTouched();
|
|
288
|
-
}
|
|
289
|
-
_emitTouched() {
|
|
290
|
-
this.wasTouched.set(true);
|
|
291
|
-
this._onTouchedRegistered?.();
|
|
292
|
-
}
|
|
293
|
-
onFocus(event) {
|
|
294
|
-
if (this._isFilePickerOpen) {
|
|
295
|
-
setTimeout(() => {
|
|
296
|
-
this._emitTouched();
|
|
297
|
-
}, 200);
|
|
298
|
-
}
|
|
299
|
-
this._isFilePickerOpen = false;
|
|
300
|
-
super.onFocus(event);
|
|
301
|
-
}
|
|
302
|
-
onBlur(event) {
|
|
303
|
-
super.onBlur(event);
|
|
304
|
-
this._shouldEmitTouched = !this._isFilePickerOpen;
|
|
305
|
-
}
|
|
306
|
-
//! helpers
|
|
307
|
-
_filterFilesBasedOnSizeAndCount(file, existingFileCount) {
|
|
308
|
-
// check count
|
|
309
|
-
if (existingFileCount >= this.maxFilesWithMultiple()) {
|
|
310
|
-
return { shouldAccept: false, reason: FileInputFailedUploadReason.TooManyFiles };
|
|
311
|
-
}
|
|
312
|
-
// check size
|
|
313
|
-
if (file.size > 0 && this.maxFileSizeBytes() !== null && file.size > this.maxFileSizeBytes()) {
|
|
314
|
-
return { shouldAccept: false, reason: FileInputFailedUploadReason.FileTooBig };
|
|
315
|
-
}
|
|
316
|
-
// all good
|
|
317
|
-
return { shouldAccept: true };
|
|
318
|
-
}
|
|
319
|
-
_countDragenterFiles(data) {
|
|
320
|
-
if (!data)
|
|
321
|
-
return null;
|
|
322
|
-
return Array.from(data.items).filter(item => item.kind === 'file').length;
|
|
323
|
-
}
|
|
324
|
-
_updateElementValue() {
|
|
325
|
-
const v = this.value;
|
|
326
|
-
const inputEl = this.fileInputEl()?.nativeElement;
|
|
327
|
-
if (!inputEl)
|
|
328
|
-
return;
|
|
329
|
-
if (!v) {
|
|
330
|
-
inputEl.value = '';
|
|
331
|
-
return;
|
|
332
|
-
}
|
|
333
|
-
const dataTransfer = new DataTransfer();
|
|
334
|
-
for (const file of v) {
|
|
335
|
-
dataTransfer.items.add(file);
|
|
336
|
-
}
|
|
337
|
-
inputEl.files = dataTransfer.files;
|
|
338
|
-
}
|
|
339
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FileInputComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
340
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: _FileInputComponentBase, inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, maxFiles: { classPropertyName: "maxFiles", publicName: "maxFiles", isSignal: true, isRequired: false, transformFunction: null }, blockAfterUpload: { classPropertyName: "blockAfterUpload", publicName: "blockAfterUpload", isSignal: true, isRequired: false, transformFunction: null }, maxFileSizeBytes: { classPropertyName: "maxFileSizeBytes", publicName: "maxFileSizeBytes", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, directoryId: { classPropertyName: "directoryId", publicName: "directoryId", isSignal: true, isRequired: false, transformFunction: null }, startDirectory: { classPropertyName: "startDirectory", publicName: "startDirectory", isSignal: true, isRequired: false, transformFunction: null }, fileTypes: { classPropertyName: "fileTypes", publicName: "fileTypes", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", dragFilesEvent: "dragFiles", failedUploadEvent: "failedUpload" }, viewQueries: [{ propertyName: "fileInputEl", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
|
|
341
|
-
}
|
|
342
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FileInputComponentBase, decorators: [{
|
|
343
|
-
type: Directive
|
|
344
|
-
}], propDecorators: { value: [{
|
|
345
|
-
type: Input
|
|
346
|
-
}] } });
|
|
347
|
-
function isMimeTypeMatching(file, mimeType) {
|
|
348
|
-
if (mimeType === '*')
|
|
349
|
-
return true;
|
|
350
|
-
if (mimeType.endsWith('/*')) {
|
|
351
|
-
const prefix = mimeType.slice(0, -2);
|
|
352
|
-
return file.type.startsWith(prefix);
|
|
353
|
-
}
|
|
354
|
-
return file.type === mimeType;
|
|
355
|
-
}
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9maWxlLWlucHV0cy9maWxlLWlucHV0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUVsQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHNUUsT0FBTyxFQUF5QiwyQkFBMkIsRUFBc0IsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHNUcsTUFBTSxPQUFnQix1QkFBd0IsU0FBUSx1QkFBdUI7SUFEN0U7O1FBSW1CLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBSXZELGdCQUFXLEdBQUcsU0FBUyxDQUErQixXQUFXLENBQUMsQ0FBQztRQUVuRSxTQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBWXhCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBTy9CLGNBQWM7UUFDTCxZQUFPLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU1RixZQUFZO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBZSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxD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QU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIGNvbXB1dGVkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBpbnB1dCxcclxuICBPbkluaXQsXHJcbiAgb3V0cHV0LFxyXG4gIHNpZ25hbCxcclxuICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgY29lcmNlQm9vbGVhblByb3BlcnR5LFxyXG4gIGNvZXJjZU51bWJlclByb3BlcnR5LFxyXG4gIEZpbGVTeXN0ZW1NZXRob2QsXHJcbiAgRmlsZVN5c3RlbVNlcnZpY2UsXHJcbiAgRmlsZVN5c3RlbVN0YXJ0RGlyZWN0b3J5LFxyXG59IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQgeyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uL19pbnRlcm5hbC9mb3JtLWZpZWxkLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XHJcbmltcG9ydCB7IF9GaWxlSW5wdXRCYXNlRGVmYXVsdHMgfSBmcm9tICcuL2ZpbGUtaW5wdXQtYmFzZS5kZWZhdWx0cyc7XHJcbmltcG9ydCB7IEZpbGVJbnB1dEZhaWxlZFVwbG9hZCwgRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLCBGaWxlSW5wdXRGaWxlVHlwZXMgfSBmcm9tICcuL2ZpbGUtaW5wdXQtdHlwZXMnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfRmlsZUlucHV0Q29tcG9uZW50QmFzZSBleHRlbmRzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogX0ZpbGVJbnB1dEJhc2VEZWZhdWx0cztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZVN5c3RlbVNlcnZpY2UgPSBpbmplY3QoRmlsZVN5c3RlbVNlcnZpY2UpO1xyXG5cclxuICBhYnN0cmFjdCByZWFkb25seSBjb21wb25lbnRJZDogc3RyaW5nO1xyXG5cclxuICByZWFkb25seSBmaWxlSW5wdXRFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignZmlsZUlucHV0Jyk7XHJcblxyXG4gIHJlYWRvbmx5IG5hbWUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgaWYgKCEod2luZG93LkZpbGUgJiYgd2luZG93LkZpbGVSZWFkZXIgJiYgd2luZG93LkJsb2IpKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYEFSRC1GVCR7dGhpcy5jb21wb25lbnRJZH0wOiBDYW5ub3QgdXNlIEFyZGl1bSBVSSBmaWxlIGZlYXR1cmVzIGJlY2F1c2UgdGhpcyBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZmlsZSBoYW5kbGluZyFgXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcm90ZWN0ZWQgX3dhc1ZpZXdJbml0ID0gZmFsc2U7XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fd2FzVmlld0luaXQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGFwcGVhcmFuY2VcclxuICByZWFkb25seSBjb21wYWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICAvLyEgc2V0dGluZ3NcclxuICByZWFkb25seSBtdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuICByZWFkb25seSBtYXhGaWxlcyA9IGlucHV0PE51bGxhYmxlPG51bWJlcj4sIGFueT4obnVsbCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgbnVsbCkgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG1heEZpbGVzV2l0aE11bHRpcGxlID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiAodGhpcy5tdWx0aXBsZSgpID8gdGhpcy5tYXhGaWxlcygpID8/IEluZmluaXR5IDogMSkpO1xyXG5cclxuICByZWFkb25seSBibG9ja0FmdGVyVXBsb2FkID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICBnZXQgc2hvdWxkQmVCbG9ja2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmxvY2tBZnRlclVwbG9hZCgpICYmIGlzRGVmaW5lZCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG1heEZpbGVTaXplQnl0ZXMgPSBpbnB1dDxOdWxsYWJsZTxudW1iZXI+LCBhbnk+KG51bGwsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIG51bGwpIH0pO1xyXG5cclxuICByZWFkb25seSBhY2NlcHQgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJyonKTtcclxuICByZWFkb25seSBkaXJlY3RvcnlJZCA9IGlucHV0PE51bGxhYmxlPHN0cmluZz4+KHVuZGVmaW5lZCk7XHJcbiAgcmVhZG9ubHkgc3RhcnREaXJlY3RvcnkgPSBpbnB1dDxOdWxsYWJsZTxGaWxlU3lzdGVtU3RhcnREaXJlY3Rvcnk+Pih1bmRlZmluZWQpO1xyXG4gIHJlYWRvbmx5IGZpbGVUeXBlcyA9IGlucHV0PE51bGxhYmxlPEZpbGVJbnB1dEZpbGVUeXBlcz4+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHJlYWRvbmx5IGFjY2VwdFN0cmluZyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xyXG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmZpbGVUeXBlcygpO1xyXG4gICAgaWYgKHR5cGVzKSB7XHJcbiAgICAgIGNvbnN0IGFjY2VwdEVudHJpZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgdHlwZSBvZiB0eXBlcykge1xyXG4gICAgICAgIGlmICh0eXBlLmFjY2VwdCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBtaW1lVHlwZSBpbiB0eXBlLmFjY2VwdCkge1xyXG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb25zID0gdHlwZS5hY2NlcHRbbWltZVR5cGVdO1xyXG4gICAgICAgICAgICBpZiAoZXh0ZW5zaW9ucyAmJiBleHRlbnNpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBhY2NlcHRFbnRyaWVzLnB1c2goLi4uZXh0ZW5zaW9ucyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGFjY2VwdEVudHJpZXMuam9pbignLCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFjY2VwdCA9IHRoaXMuYWNjZXB0KCk7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhY2NlcHQpKSB7XHJcbiAgICAgIHJldHVybiBhY2NlcHQuam9pbignLCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhY2NlcHQ7XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGFjY2VwdGVkTWltZVR5cGVzID0gY29tcHV0ZWQ8eyBtaW1lVHlwZTogc3RyaW5nOyBleHRlbnNpb25zOiBTZXQ8c3RyaW5nPiB9W10gfCBudWxsPigoKSA9PiB7XHJcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuZmlsZVR5cGVzKCk7XHJcbiAgICBpZiAodHlwZXMpIHtcclxuICAgICAgY29uc3QgbWltZVR5cGVzOiB7IG1pbWVUeXBlOiBzdHJpbmc7IGV4dGVuc2lvbnM6IFNldDxzdHJpbmc+IH1bXSA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZXMpIHtcclxuICAgICAgICBpZiAodHlwZS5hY2NlcHQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgbWltZVR5cGUgaW4gdHlwZS5hY2NlcHQpIHtcclxuICAgICAgICAgICAgbWltZVR5cGVzLnB1c2goeyBtaW1lVHlwZSwgZXh0ZW5zaW9uczogbmV3IFNldCh0eXBlLmFjY2VwdFttaW1lVHlwZV0pIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbWltZVR5cGVzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfSk7XHJcblxyXG4gIC8vISB2YWx1ZVxyXG4gIHByb3RlY3RlZCBfdmFsdWU6IEZpbGVbXSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHZhbHVlKCk6IEZpbGVbXSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodjogRmlsZSB8IEZpbGVbXSB8IG51bGwpIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZSh2KTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gb3V0cHV0PEZpbGVbXSB8IG51bGw+KCk7XHJcbiAgcmVhZG9ubHkgZHJhZ0ZpbGVzRXZlbnQgPSBvdXRwdXQ8RmlsZVtdPih7IGFsaWFzOiAnZHJhZ0ZpbGVzJyB9KTtcclxuICByZWFkb25seSBmYWlsZWRVcGxvYWRFdmVudCA9IG91dHB1dDxGaWxlSW5wdXRGYWlsZWRVcGxvYWRbXT4oeyBhbGlhczogJ2ZhaWxlZFVwbG9hZCcgfSk7XHJcblxyXG4gIHByb3RlY3RlZCBfdmFsdWVCZWZvcmVJbml0OiBGaWxlW10gfCBudWxsID0gbnVsbDtcclxuICB3cml0ZVZhbHVlKHY6IEZpbGUgfCBGaWxlW10gfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLl93cml0ZVZhbHVlKHYsIGZhbHNlKTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF93cml0ZVZhbHVlKHY6IEZpbGUgfCBGaWxlW10gfCBudWxsLCBlbWl0RXZlbnRzID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKCEodiBpbnN0YW5jZW9mIEZpbGUpICYmICFBcnJheS5pc0FycmF5KHYpICYmIHYgIT09IG51bGwpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICBuZXcgRXJyb3IoYEFSRC1GVCR7dGhpcy5jb21wb25lbnRJZH0xOiA8YXJkLWZpbGUtaW5wdXQ+J3MgdmFsdWUgbXVzdCBiZSBhIEZpbGUsIGFuIGFycmF5IG9mIEZpbGVzLCBvciBudWxsLmApXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh2IGluc3RhbmNlb2YgRmlsZSkge1xyXG4gICAgICB2ID0gW3ZdO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikgJiYgIXRoaXMubXVsdGlwbGUoKSAmJiB2Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGBBUkQtV0Eke3RoaXMuY29tcG9uZW50SWR9MjogPGFyZC1maWxlLWlucHV0PiByZWNlaXZlZCBhbiBhcnJheSBvZiBmaWxlcyBidXQgdGhlICdtdWx0aXBsZScgaW5wdXQgaXMgbm90IHNldCB0byB0cnVlLiBPbmx5IHRoZSBmaXJzdCBmaWxlIHdpbGwgYmUgdXNlZC5gXHJcbiAgICAgICk7XHJcbiAgICAgIHYgPSBbdlswXV07XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSAmJiB2Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB2ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodiA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCd1cGxvYWRlZCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdmFsdWUgPSB2O1xyXG5cclxuICAgIGlmICh0aGlzLl93YXNWaWV3SW5pdCkgdGhpcy5fdXBkYXRlRWxlbWVudFZhbHVlKCk7XHJcblxyXG4gICAgaWYgKGVtaXRFdmVudHMpIHtcclxuICAgICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWU7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2KTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcclxuICB9XHJcblxyXG4gIG9wZW5Ccm93c2VEaWFsb2coKTogdm9pZCB7XHJcbiAgICAvLyB1c2UgRmlsZVN5c3RlbUFQSSBpZiBzdXBwb3J0ZWQgJiBuZWVkZWRcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5fZmlsZVN5c3RlbVNlcnZpY2UuaXNGaWxlU3lzdGVtQVBJU3VwcG9ydGVkKCdzaG93T3BlbkZpbGVQaWNrZXInKSAmJlxyXG4gICAgICAodGhpcy5kaXJlY3RvcnlJZCgpIHx8IHRoaXMuc3RhcnREaXJlY3RvcnkoKSB8fCB0aGlzLmZpbGVUeXBlcygpKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuX2lzRmlsZVBpY2tlck9wZW4gPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5fZmlsZVN5c3RlbVNlcnZpY2VcclxuICAgICAgICAucmVxdWVzdEZpbGVVcGxvYWQoe1xyXG4gICAgICAgICAgbWV0aG9kOiBGaWxlU3lzdGVtTWV0aG9kLlByZWZlckZpbGVTeXN0ZW0sXHJcbiAgICAgICAgICBtdWx0aXBsZTogdGhpcy5tdWx0aXBsZSgpLFxyXG4gICAgICAgICAgZGlyZWN0b3J5SWQ6IHRoaXMuZGlyZWN0b3J5SWQoKSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICBzdGFydERpcmVjdG9yeTogdGhpcy5zdGFydERpcmVjdG9yeSgpID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHR5cGVzOiB0aGlzLmZpbGVUeXBlcygpID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGFjY2VwdDogdGhpcy5hY2NlcHQoKSA9PT0gJyonID8gdW5kZWZpbmVkIDogdGhpcy5hY2NlcHQoKSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC50aGVuKGZpbGVPckZpbGVzID0+IHtcclxuICAgICAgICAgIGlmICghZmlsZU9yRmlsZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5fd3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgnaWRsZScpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmlzQXJyYXkoZmlsZU9yRmlsZXMpID8gZmlsZU9yRmlsZXMgOiBbZmlsZU9yRmlsZXNdO1xyXG4gICAgICAgICAgdGhpcy5fd3JpdGVGaWxlc1RvVmFsdWUoZmlsZXMpO1xyXG4gICAgICAgICAgdGhpcy5faXNGaWxlUGlja2VyT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBlbHNlIHVzZSB0aGUgb2xkLXNjaG9vbCBtZXRob2QgYnkgY2xpY2tpbmcgZGlyZWN0bHkgb24gdGhlIGlucHV0XHJcbiAgICB0aGlzLl9pc0ZpbGVQaWNrZXJPcGVuID0gdHJ1ZTtcclxuICAgIHRoaXMuZmlsZUlucHV0RWwoKT8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHRlbXBvcmFyeSB2YWx1ZVxyXG4gIC8vZm9yIGRyYWcgZXZlbnQgaGFuZGxpbmdcclxuICBwcm90ZWN0ZWQgX2RyYWdnZWRGaWxlczogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vISB2aWV3IHN0YXRlXHJcbiAgcmVhZG9ubHkgY3VycmVudFZpZXdTdGF0ZSA9IHNpZ25hbDwnaWRsZScgfCAnZHJhZ292ZXInIHwgJ3VwbG9hZGVkJz4oJ2lkbGUnKTtcclxuICBwcml2YXRlIF9iZWZvcmVEcmFnb3ZlclN0YXRlOiAnaWRsZScgfCAndXBsb2FkZWQnID0gJ2lkbGUnO1xyXG5cclxuICAvLyEgZXZlbnQgaGFuZGxlcnNcclxuICBvbkRyYWdvdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAodGhpcy5zaG91bGRCZUJsb2NrZWQpIHtcclxuICAgICAgaWYgKCFldmVudC5kYXRhVHJhbnNmZXIpIHJldHVybjtcclxuXHJcbiAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50Vmlld1N0YXRlKCkgPT09ICdkcmFnb3ZlcicpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9kcmFnZ2VkRmlsZXMgPSB0aGlzLl9jb3VudERyYWdlbnRlckZpbGVzKGV2ZW50LmRhdGFUcmFuc2Zlcik7XHJcblxyXG4gICAgaWYgKCF0aGlzLl9kcmFnZ2VkRmlsZXMpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9iZWZvcmVEcmFnb3ZlclN0YXRlID0gdGhpcy5jdXJyZW50Vmlld1N0YXRlKCkgYXMgJ2lkbGUnIHwgJ3VwbG9hZGVkJztcclxuICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ2RyYWdvdmVyJyk7XHJcbiAgfVxyXG4gIG9uRHJhZ2xlYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVCbG9ja2VkKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5jdXJyZW50Vmlld1N0YXRlKCkgIT09ICdkcmFnb3ZlcicpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KHRoaXMuX2JlZm9yZURyYWdvdmVyU3RhdGUpO1xyXG4gIH1cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zaG91bGRCZUJsb2NrZWQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBmaWxlbGlzdCA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXM7XHJcbiAgICBpZiAoIWZpbGVsaXN0KSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ2lkbGUnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKGZpbGVsaXN0KTtcclxuICAgIGlmICghZmlsZXMpIHtcclxuICAgICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgnaWRsZScpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWx0ZXJlZEZpbGVzOiBGaWxlW10gPSBbXTtcclxuICAgIGNvbnN0IGZhaWxlZEZpbGVzOiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRbXSA9IFtdO1xyXG4gICAgY29uc3QgYWNjZXB0ZWRNaW1lVHlwZXMgPSB0aGlzLmFjY2VwdGVkTWltZVR5cGVzKCk7XHJcbiAgICBpZiAoYWNjZXB0ZWRNaW1lVHlwZXMpIHtcclxuICAgICAgbGV0IG1pbWVUeXBlTWF0Y2hlZCA9IGZhbHNlO1xyXG4gICAgICBmaWxlTG9vcDogZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgICAgY29uc3QgeyBzaG91bGRBY2NlcHQsIHJlYXNvbiB9ID0gdGhpcy5fZmlsdGVyRmlsZXNCYXNlZE9uU2l6ZUFuZENvdW50KGZpbGUsIGZpbHRlcmVkRmlsZXMubGVuZ3RoKTtcclxuICAgICAgICBpZiAoIXNob3VsZEFjY2VwdCkge1xyXG4gICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogcmVhc29uISB9KTtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbWltZVR5cGVNYXRjaGVkID0gZmFsc2U7XHJcbiAgICAgICAgZm9yIChjb25zdCBtaW1lVHlwZU9iaiBvZiBhY2NlcHRlZE1pbWVUeXBlcykge1xyXG4gICAgICAgICAgaWYgKGlzTWltZVR5cGVNYXRjaGluZyhmaWxlLCBtaW1lVHlwZU9iai5taW1lVHlwZSkpIHtcclxuICAgICAgICAgICAgbWltZVR5cGVNYXRjaGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9ICcuJyArIGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICBpZiAobWltZVR5cGVPYmouZXh0ZW5zaW9ucy5zaXplID09PSAwIHx8IG1pbWVUeXBlT2JqLmV4dGVuc2lvbnMuaGFzKCcqJykgfHwgbWltZVR5cGVPYmouZXh0ZW5zaW9ucy5oYXMoZXh0ZW5zaW9uKSkge1xyXG4gICAgICAgICAgICAgIGZpbHRlcmVkRmlsZXMucHVzaChmaWxlKTtcclxuICAgICAgICAgICAgICBjb250aW51ZSBmaWxlTG9vcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW1pbWVUeXBlTWF0Y2hlZCkge1xyXG4gICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLkludmFsaWRNaW1lVHlwZSB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLk1pbWVUeXBlRm91bmRCdXRFeHRlbnNpb25Ob3RBbGxvd2VkIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgYWNjZXB0ID0gdGhpcy5hY2NlcHQoKTtcclxuICAgICAgbGV0IGFjY2VwdEVudHJpZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGFjY2VwdCkpIHtcclxuICAgICAgICBhY2NlcHRFbnRyaWVzID0gYWNjZXB0Lm1hcChlID0+IGUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGFjY2VwdEVudHJpZXMgPSBhY2NlcHQuc3BsaXQoJywnKS5tYXAoZSA9PiBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZW9mIGFjY2VwdCA9PT0gJ3N0cmluZycgJiYgYWNjZXB0ID09PSAnKicpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcclxuICAgICAgICAgIGNvbnN0IHsgc2hvdWxkQWNjZXB0LCByZWFzb24gfSA9IHRoaXMuX2ZpbHRlckZpbGVzQmFzZWRPblNpemVBbmRDb3VudChmaWxlLCBmaWx0ZXJlZEZpbGVzLmxlbmd0aCk7XHJcbiAgICAgICAgICBpZiAoIXNob3VsZEFjY2VwdCkge1xyXG4gICAgICAgICAgICBmYWlsZWRGaWxlcy5wdXNoKHsgZmlsZSwgcmVhc29uOiByZWFzb24hIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaWxlTG9vcDogZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgICAgICBjb25zdCB7IHNob3VsZEFjY2VwdCwgcmVhc29uIH0gPSB0aGlzLl9maWx0ZXJGaWxlc0Jhc2VkT25TaXplQW5kQ291bnQoZmlsZSwgZmlsdGVyZWRGaWxlcy5sZW5ndGgpO1xyXG4gICAgICAgICAgaWYgKCFzaG91bGRBY2NlcHQpIHtcclxuICAgICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogcmVhc29uISB9KTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gJy4nICsgZmlsZS5uYW1lLnNwbGl0KCcuJykuYXQoLTEpPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBhY2NlcHRFbnRyaWVzKSB7XHJcbiAgICAgICAgICAgIGlmIChleHRlbnNpb24gPT09IGVudHJ5KSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyZWRGaWxlcy5wdXNoKGZpbGUpO1xyXG4gICAgICAgICAgICAgIGNvbnRpbnVlIGZpbGVMb29wO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmYWlsZWRGaWxlcy5wdXNoKHsgZmlsZSwgcmVhc29uOiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb24uSW52YWxpZEV4dGVuc2lvbiB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRyYWdGaWxlc0V2ZW50LmVtaXQoZmlsdGVyZWRGaWxlcyk7XHJcbiAgICB0aGlzLmZhaWxlZFVwbG9hZEV2ZW50LmVtaXQoZmFpbGVkRmlsZXMpO1xyXG5cclxuICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ3VwbG9hZGVkJyk7XHJcbiAgICB0aGlzLl93cml0ZVZhbHVlKGZpbHRlcmVkRmlsZXMubGVuZ3RoID4gMCA/IGZpbHRlcmVkRmlsZXMgOiBudWxsKTtcclxuICAgIHRoaXMuX2VtaXRUb3VjaGVkKCk7XHJcbiAgfVxyXG4gIG9uRmlsZUlucHV0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5faXNGaWxlUGlja2VyT3BlbiA9IGZhbHNlO1xyXG4gICAgY29uc29sZS5sb2coJ29uRmlsZUlucHV0Q2hhbmdlJyk7XHJcbiAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odGhpcy5maWxlSW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LmZpbGVzID8/IFtdKTtcclxuICAgIHRoaXMuX3dyaXRlRmlsZXNUb1ZhbHVlKGZpbGVzKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfd3JpdGVGaWxlc1RvVmFsdWUoZmlsZXM6IEZpbGVbXSkge1xyXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLl93cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICAgIHRoaXMuX2VtaXRUb3VjaGVkKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3dyaXRlVmFsdWUoZmlsZXMpO1xyXG4gICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgndXBsb2FkZWQnKTtcclxuICAgIHRoaXMuX2VtaXRUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICAvLyEgdG91Y2hlZCBldmVudCBoYW5kbGluZ1xyXG4gIHByaXZhdGUgX2lzRmlsZVBpY2tlck9wZW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfZW1pdFRvdWNoZWQoKSB7XHJcbiAgICB0aGlzLndhc1RvdWNoZWQuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkUmVnaXN0ZXJlZD8uKCk7XHJcbiAgfVxyXG4gIG92ZXJyaWRlIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9pc0ZpbGVQaWNrZXJPcGVuKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2VtaXRUb3VjaGVkKCk7XHJcbiAgICAgIH0sIDIwMCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc0ZpbGVQaWNrZXJPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgc3VwZXIub25Gb2N1cyhldmVudCk7XHJcbiAgfVxyXG4gIG92ZXJyaWRlIG9uQmx1cihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xyXG4gICAgc3VwZXIub25CbHVyKGV2ZW50KTtcclxuXHJcbiAgICB0aGlzLl9zaG91bGRFbWl0VG91Y2hlZCA9ICF0aGlzLl9pc0ZpbGVQaWNrZXJPcGVuO1xyXG4gIH1cclxuXHJcbiAgLy8hIGhlbHBlcnNcclxuICBwcml2YXRlIF9maWx0ZXJGaWxlc0Jhc2VkT25TaXplQW5kQ291bnQoXHJcbiAgICBmaWxlOiBGaWxlLFxyXG4gICAgZXhpc3RpbmdGaWxlQ291bnQ6IG51bWJlclxyXG4gICk6IHsgc2hvdWxkQWNjZXB0OiBib29sZWFuOyByZWFzb24/OiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb24gfSB7XHJcbiAgICAvLyBjaGVjayBjb3VudFxyXG4gICAgaWYgKGV4aXN0aW5nRmlsZUNvdW50ID49IHRoaXMubWF4RmlsZXNXaXRoTXVsdGlwbGUoKSkge1xyXG4gICAgICByZXR1cm4geyBzaG91bGRBY2NlcHQ6IGZhbHNlLCByZWFzb246IEZpbGVJbnB1dEZhaWxlZFVwbG9hZFJlYXNvbi5Ub29NYW55RmlsZXMgfTtcclxuICAgIH1cclxuICAgIC8vIGNoZWNrIHNpemVcclxuICAgIGlmIChmaWxlLnNpemUgPiAwICYmIHRoaXMubWF4RmlsZVNpemVCeXRlcygpICE9PSBudWxsICYmIGZpbGUuc2l6ZSA+IHRoaXMubWF4RmlsZVNpemVCeXRlcygpISkge1xyXG4gICAgICByZXR1cm4geyBzaG91bGRBY2NlcHQ6IGZhbHNlLCByZWFzb246IEZpbGVJbnB1dEZhaWxlZFVwbG9hZFJlYXNvbi5GaWxlVG9vQmlnIH07XHJcbiAgICB9XHJcbiAgICAvLyBhbGwgZ29vZFxyXG4gICAgcmV0dXJuIHsgc2hvdWxkQWNjZXB0OiB0cnVlIH07XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBfY291bnREcmFnZW50ZXJGaWxlcyhkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBpZiAoIWRhdGEpIHJldHVybiBudWxsO1xyXG5cclxuICAgIHJldHVybiBBcnJheS5mcm9tKGRhdGEuaXRlbXMpLmZpbHRlcihpdGVtID0+IGl0ZW0ua2luZCA9PT0gJ2ZpbGUnKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX3VwZGF0ZUVsZW1lbnRWYWx1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHYgPSB0aGlzLnZhbHVlO1xyXG5cclxuICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmZpbGVJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoIWlucHV0RWwpIHJldHVybjtcclxuICAgIGlmICghdikge1xyXG4gICAgICBpbnB1dEVsLnZhbHVlID0gJyc7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkYXRhVHJhbnNmZXIgPSBuZXcgRGF0YVRyYW5zZmVyKCk7XHJcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2Ygdikge1xyXG4gICAgICBkYXRhVHJhbnNmZXIuaXRlbXMuYWRkKGZpbGUpO1xyXG4gICAgfVxyXG4gICAgaW5wdXRFbC5maWxlcyA9IGRhdGFUcmFuc2Zlci5maWxlcztcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzTWltZVR5cGVNYXRjaGluZyhmaWxlOiBGaWxlLCBtaW1lVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgaWYgKG1pbWVUeXBlID09PSAnKicpIHJldHVybiB0cnVlO1xyXG4gIGlmIChtaW1lVHlwZS5lbmRzV2l0aCgnLyonKSkge1xyXG4gICAgY29uc3QgcHJlZml4ID0gbWltZVR5cGUuc2xpY2UoMCwgLTIpO1xyXG4gICAgcmV0dXJuIGZpbGUudHlwZS5zdGFydHNXaXRoKHByZWZpeCk7XHJcbiAgfVxyXG4gIHJldHVybiBmaWxlLnR5cGUgPT09IG1pbWVUeXBlO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export const FileInputFailedUploadReason = {
|
|
2
|
-
InvalidMimeType: 'InvalidMimeType',
|
|
3
|
-
MimeTypeFoundButExtensionNotAllowed: 'MimeTypeFoundButExtensionNotAllowed',
|
|
4
|
-
InvalidExtension: 'InvalidExtension',
|
|
5
|
-
FileTooBig: 'FileTooBig',
|
|
6
|
-
TooManyFiles: 'TooManyFiles',
|
|
7
|
-
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvZmlsZS1pbnB1dHMvZmlsZS1pbnB1dC10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQ0EsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUc7SUFDekMsZUFBZSxFQUFFLGlCQUFpQjtJQUNsQyxtQ0FBbUMsRUFBRSxxQ0FBcUM7SUFDMUUsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFlBQVksRUFBRSxjQUFjO0NBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZpbGVJbnB1dEJyb3dzZUNvbnRleHQge1xyXG4gIGJyb3dzZTogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlSW5wdXRGaWxlQW1vdW50Q29udGV4dCBleHRlbmRzIEZpbGVJbnB1dEJyb3dzZUNvbnRleHQge1xyXG4gIGFtb3VudDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVJbnB1dEZpbGVzQ29udGV4dCBleHRlbmRzIEZpbGVJbnB1dEZpbGVBbW91bnRDb250ZXh0IHtcclxuICAkaW1wbGljaXQ6IEZpbGVbXTtcclxuICBmaWxlczogRmlsZVtdO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGaWxlSW5wdXRGaWxlVHlwZSA9IHtcclxuICAvKipcclxuICAgKiBBbiBvcHRpb25hbCBkZXNjaXB0aW9uIG9mIHRoZSBjYXRlZ29yeSBvZiBmaWxlIHR5cGVzIGFsbG93ZWQuIERlZmF1bHQgdG8gYmUgYW4gZW1wdHkgc3RyaW5nLlxyXG4gICAqL1xyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEFuIG9iamVjdCB3aXRoIHRoZSBrZXlzIHNldCB0byB0aGUgTUlNRSB0eXBlIGFuZCB0aGUgdmFsdWVzIGFuIGFycmF5IG9mIGZpbGUgZXh0ZW5zaW9ucyAoc2VlIGJlbG93IGZvciBhbiBleGFtcGxlKS5cclxuICAgKiBgYGB0c1xyXG4gICAqIHJlYWRvbmx5IEZJTEVfVFlQRVMgPSBbXHJcbiAgICogICB7XHJcbiAgICogICAgIGRlc2NyaXB0aW9uOiBcIlRleHQgZmlsZVwiLFxyXG4gICAqICAgICBhY2NlcHQ6IHsgXCJ0ZXh0L3BsYWluXCI6IFtcIi50eHRcIl0gfSxcclxuICAgKiAgIH0sXHJcbiAgICogXTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBhY2NlcHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIEZpbGVJbnB1dEZpbGVUeXBlcyA9IEZpbGVJbnB1dEZpbGVUeXBlW107XHJcblxyXG5leHBvcnQgY29uc3QgRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uID0ge1xyXG4gIEludmFsaWRNaW1lVHlwZTogJ0ludmFsaWRNaW1lVHlwZScsXHJcbiAgTWltZVR5cGVGb3VuZEJ1dEV4dGVuc2lvbk5vdEFsbG93ZWQ6ICdNaW1lVHlwZUZvdW5kQnV0RXh0ZW5zaW9uTm90QWxsb3dlZCcsXHJcbiAgSW52YWxpZEV4dGVuc2lvbjogJ0ludmFsaWRFeHRlbnNpb24nLFxyXG4gIEZpbGVUb29CaWc6ICdGaWxlVG9vQmlnJyxcclxuICBUb29NYW55RmlsZXM6ICdUb29NYW55RmlsZXMnLFxyXG59IGFzIGNvbnN0O1xyXG5leHBvcnQgdHlwZSBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb24gPSB0eXBlb2YgRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uW2tleW9mIHR5cGVvZiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb25dO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlSW5wdXRGYWlsZWRVcGxvYWQge1xyXG4gIGZpbGU6IEZpbGU7XHJcbiAgcmVhc29uOiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb247XHJcbn0iXX0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { ArdiumErrorDirective } from './error.directive';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./error.directive";
|
|
5
|
-
export class ArdiumErrorComponent {
|
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ArdiumErrorComponent, selector: "ard-error", hostDirectives: [{ directive: i1.ArdiumErrorDirective }], ngImport: i0, template: '<ng-content />', isInline: true }); }
|
|
8
|
-
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumErrorComponent, decorators: [{
|
|
10
|
-
type: Component,
|
|
11
|
-
args: [{
|
|
12
|
-
selector: 'ard-error',
|
|
13
|
-
template: '<ng-content />',
|
|
14
|
-
hostDirectives: [{ directive: ArdiumErrorDirective }],
|
|
15
|
-
}]
|
|
16
|
-
}] });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9mb3JtLWZpZWxkL2Vycm9yL2Vycm9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFPekQsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO21HQUFwQixvQkFBb0IsMkdBSHJCLGdCQUFnQjs7NEZBR2Ysb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixjQUFjLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO2lCQUN0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcmRpdW1FcnJvckRpcmVjdGl2ZSB9IGZyb20gJy4vZXJyb3IuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXJkLWVycm9yJyxcclxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50IC8+JyxcclxuICBob3N0RGlyZWN0aXZlczogW3sgZGlyZWN0aXZlOiBBcmRpdW1FcnJvckRpcmVjdGl2ZSB9XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bUVycm9yQ29tcG9uZW50IHt9XHJcbiJdfQ==
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ArdiumErrorDirective {
|
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ArdiumErrorDirective, isStandalone: true, selector: "[ard-error]", host: { properties: { "class.ard-error": "true" } }, ngImport: i0 }); }
|
|
6
|
-
}
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumErrorDirective, decorators: [{
|
|
8
|
-
type: Directive,
|
|
9
|
-
args: [{
|
|
10
|
-
selector: '[ard-error]',
|
|
11
|
-
standalone: true,
|
|
12
|
-
host: {
|
|
13
|
-
'[class.ard-error]': 'true',
|
|
14
|
-
},
|
|
15
|
-
}]
|
|
16
|
-
}] });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9mb3JtLWZpZWxkL2Vycm9yL2Vycm9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVMxQyxNQUFNLE9BQU8sb0JBQW9COytHQUFwQixvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFQaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixtQkFBbUIsRUFBRSxNQUFNO3FCQUM1QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYXJkLWVycm9yXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBob3N0OiB7XHJcbiAgICAnW2NsYXNzLmFyZC1lcnJvcl0nOiAndHJ1ZScsXHJcbiAgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bUVycm9yRGlyZWN0aXZlIHt9XHJcbiJdfQ==
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { computed, contentChild, contentChildren, Directive, inject, input } from '@angular/core';
|
|
2
|
-
import { coerceBooleanProperty } from '@ardium-ui/devkit';
|
|
3
|
-
import { isFunction } from 'simple-bool';
|
|
4
|
-
import { SimpleOneAxisAlignment } from '../types/alignment.types';
|
|
5
|
-
import { ArdiumErrorDirective } from './error/error.directive';
|
|
6
|
-
import { ARD_FORM_FIELD_CONTROL } from './form-field-child.token';
|
|
7
|
-
import { ARD_FORM_FIELD_DEFAULTS } from './form-field.defaults';
|
|
8
|
-
import { ArdiumHintDirective } from './hint/hint.directive';
|
|
9
|
-
import { ArdiumLabelComponent } from './label/label.component';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
export class _FormFieldBase {
|
|
12
|
-
constructor() {
|
|
13
|
-
this._DEFAULTS = inject(ARD_FORM_FIELD_DEFAULTS);
|
|
14
|
-
this.alignHintToLeftByDefault = this._DEFAULTS.defaultHintAlign === SimpleOneAxisAlignment.Left;
|
|
15
|
-
this.control = contentChild(ARD_FORM_FIELD_CONTROL);
|
|
16
|
-
// get controlRequired() {
|
|
17
|
-
// const fnOrValue = this.control()?.required;
|
|
18
|
-
// return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;
|
|
19
|
-
// }
|
|
20
|
-
this.label = contentChild(ArdiumLabelComponent);
|
|
21
|
-
this.hints = contentChildren(ArdiumHintDirective);
|
|
22
|
-
this.errors = contentChildren(ArdiumErrorDirective);
|
|
23
|
-
this.hasAnyError = computed(() => this.errors()?.length > 0);
|
|
24
|
-
this.reserveHintLine = input(this._DEFAULTS.reserveHintLine, { transform: v => coerceBooleanProperty(v) });
|
|
25
|
-
}
|
|
26
|
-
get controlHasError() {
|
|
27
|
-
const fnOrValue = this.control()?.hasError;
|
|
28
|
-
return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;
|
|
29
|
-
}
|
|
30
|
-
get controlIsSuccess() {
|
|
31
|
-
const fnOrValue = this.control()?.isSuccess;
|
|
32
|
-
return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;
|
|
33
|
-
}
|
|
34
|
-
get controlDisabled() {
|
|
35
|
-
const fnOrValue = this.control()?.disabled;
|
|
36
|
-
return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;
|
|
37
|
-
}
|
|
38
|
-
get controlHtmlId() {
|
|
39
|
-
const fnOrValue = this.control()?.htmlId;
|
|
40
|
-
return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;
|
|
41
|
-
}
|
|
42
|
-
ngOnInit() {
|
|
43
|
-
if (!this.control()) {
|
|
44
|
-
throw new Error(`ARD-FT5110: Form field component requires any control (input) to be present within the element. Found none.`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FormFieldBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
48
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: _FormFieldBase, inputs: { reserveHintLine: { classPropertyName: "reserveHintLine", publicName: "reserveHintLine", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "control", first: true, predicate: ARD_FORM_FIELD_CONTROL, descendants: true, isSignal: true }, { propertyName: "label", first: true, predicate: ArdiumLabelComponent, descendants: true, isSignal: true }, { propertyName: "hints", predicate: ArdiumHintDirective, isSignal: true }, { propertyName: "errors", predicate: ArdiumErrorDirective, isSignal: true }], ngImport: i0 }); }
|
|
49
|
-
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FormFieldBase, decorators: [{
|
|
51
|
-
type: Directive
|
|
52
|
-
}] });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQXVCLE1BQU0sMEJBQTBCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRy9ELE1BQU0sT0FBZ0IsY0FBYztJQURwQztRQUVxQixjQUFTLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFL0MsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsS0FBSyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7UUFFbEcsWUFBTyxHQUFHLFlBQVksQ0FBc0Isc0JBQXNCLENBQUMsQ0FBQztRQWtCN0UsMEJBQTBCO1FBQzFCLGdEQUFnRDtRQUNoRCw0REFBNEQ7UUFDNUQsSUFBSTtRQUVLLFVBQUssR0FBRyxZQUFZLENBQXVCLG9CQUFvQixDQUFDLENBQUM7UUFFakUsVUFBSyxHQUFHLGVBQWUsQ0FBc0IsbUJBQW1CLENBQUMsQ0FBQztRQUNsRSxXQUFNLEdBQUcsZUFBZSxDQUF1QixvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JFLGdCQUFXLEdBQUcsUUFBUSxDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakUsb0JBQWUsR0FBRyxLQUFLLENBQWUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7S0FTOUg7SUFuQ0MsSUFBSSxlQUFlO1FBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLENBQUM7UUFDM0MsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDekQsQ0FBQztJQUNELElBQUksZ0JBQWdCO1FBQ2xCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLENBQUM7UUFDNUMsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDekQsQ0FBQztJQUNELElBQUksZUFBZTtRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxDQUFDO1FBQzNDLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3pELENBQUM7SUFDRCxJQUFJLGFBQWE7UUFDZixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxDQUFDO1FBQ3pDLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3pELENBQUM7SUFhRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkdBQTZHLENBQzlHLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0F6Q21CLGNBQWM7bUdBQWQsY0FBYyxpT0FLbUIsc0JBQXNCLHdGQXVCdkIsb0JBQW9CLDJFQUVsQixtQkFBbUIseURBQ2pCLG9CQUFvQjs7NEZBL0J4RCxjQUFjO2tCQURuQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGNvbnRlbnRDaGlsZCwgY29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQgeyBTaW1wbGVPbmVBeGlzQWxpZ25tZW50IH0gZnJvbSAnLi4vdHlwZXMvYWxpZ25tZW50LnR5cGVzJztcclxuaW1wb3J0IHsgQXJkaXVtRXJyb3JEaXJlY3RpdmUgfSBmcm9tICcuL2Vycm9yL2Vycm9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEFSRF9GT1JNX0ZJRUxEX0NPTlRST0wsIEFyZEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICcuL2Zvcm0tZmllbGQtY2hpbGQudG9rZW4nO1xyXG5pbXBvcnQgeyBBUkRfRk9STV9GSUVMRF9ERUZBVUxUUyB9IGZyb20gJy4vZm9ybS1maWVsZC5kZWZhdWx0cyc7XHJcbmltcG9ydCB7IEFyZGl1bUhpbnREaXJlY3RpdmUgfSBmcm9tICcuL2hpbnQvaGludC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBcmRpdW1MYWJlbENvbXBvbmVudCB9IGZyb20gJy4vbGFiZWwvbGFiZWwuY29tcG9uZW50JztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX0Zvcm1GaWVsZEJhc2Uge1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBfREVGQVVMVFMgPSBpbmplY3QoQVJEX0ZPUk1fRklFTERfREVGQVVMVFMpO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgYWxpZ25IaW50VG9MZWZ0QnlEZWZhdWx0ID0gdGhpcy5fREVGQVVMVFMuZGVmYXVsdEhpbnRBbGlnbiA9PT0gU2ltcGxlT25lQXhpc0FsaWdubWVudC5MZWZ0O1xyXG5cclxuICByZWFkb25seSBjb250cm9sID0gY29udGVudENoaWxkPEFyZEZvcm1GaWVsZENvbnRyb2w+KEFSRF9GT1JNX0ZJRUxEX0NPTlRST0wpO1xyXG5cclxuICBnZXQgY29udHJvbEhhc0Vycm9yKCkge1xyXG4gICAgY29uc3QgZm5PclZhbHVlID0gdGhpcy5jb250cm9sKCk/Lmhhc0Vycm9yO1xyXG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oZm5PclZhbHVlKSA/IGZuT3JWYWx1ZSgpIDogZm5PclZhbHVlO1xyXG4gIH1cclxuICBnZXQgY29udHJvbElzU3VjY2VzcygpIHtcclxuICAgIGNvbnN0IGZuT3JWYWx1ZSA9IHRoaXMuY29udHJvbCgpPy5pc1N1Y2Nlc3M7XHJcbiAgICByZXR1cm4gaXNGdW5jdGlvbihmbk9yVmFsdWUpID8gZm5PclZhbHVlKCkgOiBmbk9yVmFsdWU7XHJcbiAgfVxyXG4gIGdldCBjb250cm9sRGlzYWJsZWQoKSB7XHJcbiAgICBjb25zdCBmbk9yVmFsdWUgPSB0aGlzLmNvbnRyb2woKT8uZGlzYWJsZWQ7XHJcbiAgICByZXR1cm4gaXNGdW5jdGlvbihmbk9yVmFsdWUpID8gZm5PclZhbHVlKCkgOiBmbk9yVmFsdWU7XHJcbiAgfVxyXG4gIGdldCBjb250cm9sSHRtbElkKCkge1xyXG4gICAgY29uc3QgZm5PclZhbHVlID0gdGhpcy5jb250cm9sKCk/Lmh0bWxJZDtcclxuICAgIHJldHVybiBpc0Z1bmN0aW9uKGZuT3JWYWx1ZSkgPyBmbk9yVmFsdWUoKSA6IGZuT3JWYWx1ZTtcclxuICB9XHJcbiAgLy8gZ2V0IGNvbnRyb2xSZXF1aXJlZCgpIHtcclxuICAvLyAgIGNvbnN0IGZuT3JWYWx1ZSA9IHRoaXMuY29udHJvbCgpPy5yZXF1aXJlZDtcclxuICAvLyAgIHJldHVybiBpc0Z1bmN0aW9uKGZuT3JWYWx1ZSkgPyBmbk9yVmFsdWUoKSA6IGZuT3JWYWx1ZTtcclxuICAvLyB9XHJcblxyXG4gIHJlYWRvbmx5IGxhYmVsID0gY29udGVudENoaWxkPEFyZGl1bUxhYmVsQ29tcG9uZW50PihBcmRpdW1MYWJlbENvbXBvbmVudCk7XHJcblxyXG4gIHJlYWRvbmx5IGhpbnRzID0gY29udGVudENoaWxkcmVuPEFyZGl1bUhpbnREaXJlY3RpdmU+KEFyZGl1bUhpbnREaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGVycm9ycyA9IGNvbnRlbnRDaGlsZHJlbjxBcmRpdW1FcnJvckRpcmVjdGl2ZT4oQXJkaXVtRXJyb3JEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGhhc0FueUVycm9yID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gdGhpcy5lcnJvcnMoKT8ubGVuZ3RoID4gMCk7XHJcbiAgcmVhZG9ubHkgcmVzZXJ2ZUhpbnRMaW5lID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5yZXNlcnZlSGludExpbmUsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY29udHJvbCgpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICBgQVJELUZUNTExMDogRm9ybSBmaWVsZCBjb21wb25lbnQgcmVxdWlyZXMgYW55IGNvbnRyb2wgKGlucHV0KSB0byBiZSBwcmVzZW50IHdpdGhpbiB0aGUgZWxlbWVudC4gRm91bmQgbm9uZS5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const ARD_FORM_FIELD_CONTROL = new InjectionToken('ard-form-field-control');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jaGlsZC50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvZm9ybS1maWVsZC9mb3JtLWZpZWxkLWNoaWxkLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFZL0MsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHdCQUF3QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBcmRGb3JtRmllbGRDb250cm9sIHtcclxuICBoYXNFcnJvcjogKCgpID0+IGJvb2xlYW4pIHwgYm9vbGVhbjtcclxuICBpc1N1Y2Nlc3M/OiAoKCkgPT4gYm9vbGVhbikgfCBib29sZWFuO1xyXG4gIGRpc2FibGVkOiAoKCkgPT4gYm9vbGVhbikgfCBib29sZWFuO1xyXG4gIGh0bWxJZDogKCgpID0+IHN0cmluZykgfCBzdHJpbmc7XHJcbiAgLy8gcmVtb3ZlZCBmb3Igbm93XHJcbiAgLy8gd2lsbCBicmluZyBiYWNrIHdoZW4gSSBmaWd1cmUgb3V0IGhvdyAoYW5kIGlmKSB0byBwYXNzIGl0IG9udG8gdGhlIGxhYmVsXHJcbiAgLy8gcmVxdWlyZWQ/OiAoKCkgPT4gYm9vbGVhbikgfCBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQVJEX0ZPUk1fRklFTERfQ09OVFJPTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBcmRGb3JtRmllbGRDb250cm9sPignYXJkLWZvcm0tZmllbGQtY29udHJvbCcpO1xyXG4iXX0=
|