@ardium-ui/ui 4.4.1 → 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 +2525 -2413
- 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 +2 -2
- 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 +7 -3
- 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/inputs/number-input/number-input.component.d.ts +1 -0
- 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/file-input.css +9 -4
- package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
- 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/file-input.scss +10 -2
- 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 -99
- 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 -333
- 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 -245
- 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,367 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Inject, Input, TemplateRef, ViewEncapsulation, computed, contentChild, contentChildren, input, model, output, } from '@angular/core';
|
|
2
|
-
import { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';
|
|
3
|
-
import { isDefined, isNumber } from 'simple-bool';
|
|
4
|
-
import { _FocusableComponentBase } from '../_internal/focusable-component';
|
|
5
|
-
import { CheckboxState } from '../checkbox/checkbox.types';
|
|
6
|
-
import { SimpleComponentColor } from '../types/colors.types';
|
|
7
|
-
import { ArdTableRow, TableItemStorage } from './table-item-storage';
|
|
8
|
-
import { ARD_TABLE_DEFAULTS } from './table.defaults';
|
|
9
|
-
import { ArdiumTableCaptionTemplateDirective, ArdiumTableCheckboxTemplateDirective, ArdiumTableHeaderCheckboxTemplateDirective, ArdiumTableTemplateDirective, } from './table.directives';
|
|
10
|
-
import { TableAppearance, TablePaginationStrategy, } from './table.types';
|
|
11
|
-
import { isTableSubheader } from './utils';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@angular/common";
|
|
14
|
-
import * as i2 from "../checkbox/checkbox.component";
|
|
15
|
-
import * as i3 from "../table-pagination/table-pagination.component";
|
|
16
|
-
import * as i4 from "../icon/icon.component";
|
|
17
|
-
import * as i5 from "../progress-bar/progress-bar.component";
|
|
18
|
-
export class ArdiumTableComponent extends _FocusableComponentBase {
|
|
19
|
-
constructor(defaults) {
|
|
20
|
-
super(defaults);
|
|
21
|
-
this._itemStorage = new TableItemStorage(this);
|
|
22
|
-
this.rowDisabledFrom = input(this._DEFAULTS.rowDisabledFrom);
|
|
23
|
-
this.rowBoldFrom = input(this._DEFAULTS.rowBoldFrom);
|
|
24
|
-
this.invertRowDisabled = input(this._DEFAULTS.invertRowDisabled, {
|
|
25
|
-
transform: v => coerceBooleanProperty(v),
|
|
26
|
-
});
|
|
27
|
-
this.invertRowBold = input(this._DEFAULTS.invertRowBold, { transform: v => coerceBooleanProperty(v) });
|
|
28
|
-
this.selectableRows = input(this._DEFAULTS.selectableRows, { transform: v => coerceBooleanProperty(v) });
|
|
29
|
-
this.maxSelectedItems = input(this._DEFAULTS.maxSelectedItems, {
|
|
30
|
-
transform: v => coerceNumberProperty(v, this._DEFAULTS.maxSelectedItems),
|
|
31
|
-
});
|
|
32
|
-
this.clickableRows = input(this._DEFAULTS.clickableRows, { transform: v => coerceBooleanProperty(v) });
|
|
33
|
-
this.caption = input(this._DEFAULTS.caption);
|
|
34
|
-
this.isLoading = input(this._DEFAULTS.isLoading, { transform: v => coerceBooleanProperty(v) });
|
|
35
|
-
this.loadingProgress = input(this._DEFAULTS.loadingProgress, {
|
|
36
|
-
transform: v => coerceNumberProperty(v, this._DEFAULTS.loadingProgress),
|
|
37
|
-
});
|
|
38
|
-
this.loadingProgressBuffer = input(this._DEFAULTS.loadingProgressBuffer, {
|
|
39
|
-
transform: v => coerceNumberProperty(v, this._DEFAULTS.loadingProgressBuffer),
|
|
40
|
-
});
|
|
41
|
-
this.loadingBarMode = input(this._DEFAULTS.loadingBarMode);
|
|
42
|
-
this.loadingBarColor = input(this._DEFAULTS.loadingBarColor);
|
|
43
|
-
//! appearance
|
|
44
|
-
this.appearance = input(this._DEFAULTS.appearance);
|
|
45
|
-
this.variant = input(this._DEFAULTS.variant);
|
|
46
|
-
this.color = input(this._DEFAULTS.color);
|
|
47
|
-
this.align = input(this._DEFAULTS.align);
|
|
48
|
-
this.headerAlign = input(this._DEFAULTS.headerAlign);
|
|
49
|
-
this.compact = input(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });
|
|
50
|
-
this.zebra = input(this._DEFAULTS.zebra, { transform: v => coerceBooleanProperty(v) });
|
|
51
|
-
this.stickyHeader = input(this._DEFAULTS.stickyHeader, { transform: v => coerceBooleanProperty(v) });
|
|
52
|
-
this.ngClasses = computed(() => [
|
|
53
|
-
`ard-appearance-${this.appearance()}`,
|
|
54
|
-
`ard-variant-${this.variant()}`,
|
|
55
|
-
`ard-color-${this.color()}`,
|
|
56
|
-
`ard-align-${this.align()}`,
|
|
57
|
-
`ard-header-align-${this.headerAlign()}`,
|
|
58
|
-
this.compact() ? 'ard-compact' : '',
|
|
59
|
-
this.zebra() ? 'ard-zebra-table' : '',
|
|
60
|
-
this.selectableRows() ? 'ard-selectable-rows' : '',
|
|
61
|
-
this.stickyHeader() ? 'ard-sticky-header' : '',
|
|
62
|
-
this.isLoading() ? 'ard-table-loading' : '',
|
|
63
|
-
].join(' '));
|
|
64
|
-
//! pagination
|
|
65
|
-
this.paginated = input(this._DEFAULTS.paginated, { transform: v => coerceBooleanProperty(v) });
|
|
66
|
-
this.paginationStrategy = input(this._DEFAULTS.paginationStrategy);
|
|
67
|
-
this.paginationOptions = input(this._DEFAULTS.paginationOptions, {
|
|
68
|
-
transform: v => {
|
|
69
|
-
return v.filter(el => {
|
|
70
|
-
const opt = isNumber(el) ? el : el.value;
|
|
71
|
-
if (opt <= 0 || opt % 1 !== 0) {
|
|
72
|
-
console.error(new Error(`ARD-NF5052: each item of <ard-table>'s [paginationOptions] must be a positive integer. The "${opt}" option will be ignored.`));
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
return true;
|
|
76
|
-
});
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
this.totalItems = input(this._DEFAULTS.totalItems, {
|
|
80
|
-
transform: v => coerceNumberProperty(v, this._DEFAULTS.totalItems),
|
|
81
|
-
});
|
|
82
|
-
this.paginationColor = input(this._DEFAULTS.paginationColor);
|
|
83
|
-
this.paginationAlign = input(this._DEFAULTS.paginationAlign);
|
|
84
|
-
this.itemsPerPageText = input(this._DEFAULTS.itemsPerPageText);
|
|
85
|
-
this.currentItemsFormatFn = input(this._DEFAULTS.currentItemsFormatFn);
|
|
86
|
-
this.pageFillRemaining = input(this._DEFAULTS.pageFillRemaining, {
|
|
87
|
-
transform: v => coerceBooleanProperty(v),
|
|
88
|
-
});
|
|
89
|
-
this.paginationDisabled = input(this._DEFAULTS.paginationDisabled, {
|
|
90
|
-
transform: v => coerceBooleanProperty(v),
|
|
91
|
-
});
|
|
92
|
-
this.useFirstLastButtons = input(this._DEFAULTS.useFirstLastButtons, {
|
|
93
|
-
transform: v => coerceBooleanProperty(v),
|
|
94
|
-
});
|
|
95
|
-
this.itemsPerPage = model(this._DEFAULTS.itemsPerPage);
|
|
96
|
-
this.page = model(this._DEFAULTS.page);
|
|
97
|
-
this.isDefinedTotalItems = computed(() => this.paginationStrategy() !== TablePaginationStrategy.Noop || isDefined(this.totalItems()));
|
|
98
|
-
this.canDisplayPagination = computed(() => this.paginated() && this.isDefinedTotalItems());
|
|
99
|
-
//! item storage getters
|
|
100
|
-
this.headerCells = computed(() => this._itemStorage.headerCells());
|
|
101
|
-
this.dataRows = computed(() => {
|
|
102
|
-
const items = this._itemStorage.paginatedItems();
|
|
103
|
-
if (!this.pageFillRemaining())
|
|
104
|
-
return items;
|
|
105
|
-
if (!this.isDefinedTotalItems()) {
|
|
106
|
-
throw new Error('ARD-FT5050: <ard-table> requires [totalItems] to be defined when using "slice" pagination strategy.');
|
|
107
|
-
}
|
|
108
|
-
if (this.page() === 1)
|
|
109
|
-
return items;
|
|
110
|
-
const ipp = this.itemsPerPage();
|
|
111
|
-
for (let i = items.length; i < ipp; i++) {
|
|
112
|
-
items.push(ArdTableRow.newEmptyCell(i));
|
|
113
|
-
}
|
|
114
|
-
return items;
|
|
115
|
-
});
|
|
116
|
-
this._data = [];
|
|
117
|
-
this.treatDataSourceAsString = input(this._DEFAULTS.treatDataSourceAsString, {
|
|
118
|
-
transform: v => coerceBooleanProperty(v),
|
|
119
|
-
});
|
|
120
|
-
//! templates
|
|
121
|
-
this.checkboxTemplate = contentChild(ArdiumTableCheckboxTemplateDirective, {
|
|
122
|
-
read: (TemplateRef),
|
|
123
|
-
});
|
|
124
|
-
this.headerCheckboxTemplate = contentChild(ArdiumTableHeaderCheckboxTemplateDirective, {
|
|
125
|
-
read: (TemplateRef),
|
|
126
|
-
});
|
|
127
|
-
this.captionTemplate = contentChild(ArdiumTableCaptionTemplateDirective, {
|
|
128
|
-
read: (TemplateRef),
|
|
129
|
-
});
|
|
130
|
-
this._itemTemplates = {};
|
|
131
|
-
this.templateChildren = contentChildren(ArdiumTableTemplateDirective);
|
|
132
|
-
this.selectedRowsChangeEvent = output({ alias: 'selectedRowsChange' });
|
|
133
|
-
this.failedSelectRowEvent = output({ alias: 'failedSelectRow' });
|
|
134
|
-
this.selectRowEvent = output({ alias: 'selectRow' });
|
|
135
|
-
this.unselectRowEvent = output({ alias: 'unselectRow' });
|
|
136
|
-
this.clickRowEvent = output({ alias: 'clickRow' });
|
|
137
|
-
this.getHeaderCheckboxContext = computed(() => {
|
|
138
|
-
let state = CheckboxState.Unselected;
|
|
139
|
-
if (this._itemStorage.isAnyItemSelected()) {
|
|
140
|
-
state = CheckboxState.Indeterminate;
|
|
141
|
-
if (this._itemStorage.areAllSelected()) {
|
|
142
|
-
state = CheckboxState.Selected;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return {
|
|
146
|
-
$implicit: state,
|
|
147
|
-
state,
|
|
148
|
-
onChange: () => {
|
|
149
|
-
this.toggleAllRowsSelected();
|
|
150
|
-
},
|
|
151
|
-
};
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
//! print errors if needed
|
|
155
|
-
ngOnChanges(changes) {
|
|
156
|
-
if (changes['itemsPerPage']) {
|
|
157
|
-
const ipp = changes['itemsPerPage'].currentValue;
|
|
158
|
-
const options = changes['paginationOptions']?.currentValue || this.paginationOptions();
|
|
159
|
-
if (!options.find(v => (typeof v === 'number' ? v === ipp : v.value === ipp))) {
|
|
160
|
-
console.error(new Error(`ARD-NF5051: value of "${ipp}" in <ard-table>'s [itemsPerPage] does not appear in [paginationOptions] array [${options
|
|
161
|
-
.map(v => (typeof v === 'number' ? v : v.value))
|
|
162
|
-
.join(', ')}]`));
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
if (changes['page']) {
|
|
166
|
-
const page = changes['page'].currentValue;
|
|
167
|
-
if (page === 0) {
|
|
168
|
-
throw new Error(`ARD-FT5053a: <ard-table>'s [page] uses 1-indexed numbering system. The value 0 is not accepted.`);
|
|
169
|
-
}
|
|
170
|
-
else if (page < 0 || page % 1 !== 0) {
|
|
171
|
-
throw new Error(`ARD-FT5053b: value of <ard-table>'s [page] must be a positive integer, got "${page}".`);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
//! columns/data setters
|
|
176
|
-
set columns(v) {
|
|
177
|
-
this._itemStorage.setColumns(v);
|
|
178
|
-
}
|
|
179
|
-
set data(v) {
|
|
180
|
-
this._data = v;
|
|
181
|
-
this._itemStorage.setItems(v);
|
|
182
|
-
}
|
|
183
|
-
get data() {
|
|
184
|
-
return this._data;
|
|
185
|
-
}
|
|
186
|
-
ngAfterContentInit() {
|
|
187
|
-
const templates = Array.from(this.templateChildren());
|
|
188
|
-
for (const instance of templates) {
|
|
189
|
-
const name = instance.name();
|
|
190
|
-
if (!name) {
|
|
191
|
-
console.error(new Error('ARD-FT5054: [ard-table-tmp] requires a value to be specified.'));
|
|
192
|
-
continue;
|
|
193
|
-
}
|
|
194
|
-
this._itemTemplates[name] = instance.template;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
getHeaderTemplate(tmp) {
|
|
198
|
-
if (typeof tmp === 'string')
|
|
199
|
-
return undefined;
|
|
200
|
-
return this.getCellTemplate(tmp.template);
|
|
201
|
-
}
|
|
202
|
-
getHeaderCheckboxColor() {
|
|
203
|
-
if (this.appearance() === TableAppearance.Strong)
|
|
204
|
-
return SimpleComponentColor.CurrentColor;
|
|
205
|
-
return this.color();
|
|
206
|
-
}
|
|
207
|
-
getCellTemplate(tmp) {
|
|
208
|
-
//return undefined
|
|
209
|
-
if (!tmp)
|
|
210
|
-
return undefined;
|
|
211
|
-
//return template, if it is one
|
|
212
|
-
if (tmp instanceof TemplateRef)
|
|
213
|
-
return tmp;
|
|
214
|
-
//check if the name can be found
|
|
215
|
-
if (!(tmp in this._itemTemplates)) {
|
|
216
|
-
console.error(new Error(`ARD-NF5055: <ard-table> error: cannot find template named "${tmp}"`));
|
|
217
|
-
return undefined;
|
|
218
|
-
}
|
|
219
|
-
//return the template
|
|
220
|
-
return this._itemTemplates[tmp];
|
|
221
|
-
}
|
|
222
|
-
getCellStyle(cell) {
|
|
223
|
-
if (isTableSubheader(cell))
|
|
224
|
-
return 'width:unset;min-width:unset';
|
|
225
|
-
const width = typeof cell.width === 'number' ? `${cell.width}px` : cell.width;
|
|
226
|
-
const minWidth = typeof cell.minWidth === 'number' ? `${cell.minWidth}px` : cell.minWidth;
|
|
227
|
-
return [`width:${width ?? 'unset'}`, `min-width:${minWidth ?? 'unset'}`].join(';');
|
|
228
|
-
}
|
|
229
|
-
//! click & hover handlers
|
|
230
|
-
onCheckboxClick(index) {
|
|
231
|
-
this.toggleRowSelected(index);
|
|
232
|
-
}
|
|
233
|
-
onRowClick(row, event) {
|
|
234
|
-
if (this.clickableRows()) {
|
|
235
|
-
event.stopPropagation();
|
|
236
|
-
this.clickRowEvent.emit(row.itemData());
|
|
237
|
-
return;
|
|
238
|
-
}
|
|
239
|
-
if (this.selectableRows()) {
|
|
240
|
-
event.stopPropagation();
|
|
241
|
-
this.toggleRowSelected(row.index());
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
onRowMouseOver(event) {
|
|
246
|
-
event.stopPropagation();
|
|
247
|
-
}
|
|
248
|
-
onRowMouseEnter(index, event) {
|
|
249
|
-
if (!this.selectableRows() && !this.clickableRows())
|
|
250
|
-
return;
|
|
251
|
-
event.stopPropagation();
|
|
252
|
-
this._itemStorage.highlightSingleItem(index);
|
|
253
|
-
}
|
|
254
|
-
onRowMouseLeave(index, event) {
|
|
255
|
-
if (!this.selectableRows() && !this.clickableRows())
|
|
256
|
-
return;
|
|
257
|
-
event.stopPropagation();
|
|
258
|
-
this._itemStorage.unhighlightItem(index);
|
|
259
|
-
}
|
|
260
|
-
//! select handlers
|
|
261
|
-
/**
|
|
262
|
-
* Toggles the selection state of a row in the table.
|
|
263
|
-
* @param selected a boolean value indicating if the row is currently selected.
|
|
264
|
-
* @param index the index of the row in the table.
|
|
265
|
-
*/
|
|
266
|
-
toggleRowSelected(index) {
|
|
267
|
-
if (this._itemStorage.isItemSelected(index)) {
|
|
268
|
-
const unselected = this._itemStorage.unselectItem(index);
|
|
269
|
-
if (unselected.length)
|
|
270
|
-
this.unselectRowEvent.emit(unselected);
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
const [selected, failed] = this._itemStorage.selectItem(index);
|
|
274
|
-
if (selected.length)
|
|
275
|
-
this.selectRowEvent.emit(selected);
|
|
276
|
-
if (failed.length)
|
|
277
|
-
this.failedSelectRowEvent.emit(failed);
|
|
278
|
-
}
|
|
279
|
-
this._emitSelect();
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Toggles the selection state of all rows in the table.
|
|
283
|
-
*/
|
|
284
|
-
toggleAllRowsSelected() {
|
|
285
|
-
if (this._itemStorage.areAllSelected()) {
|
|
286
|
-
const unselected = this._itemStorage.unselectAll();
|
|
287
|
-
if (unselected.length)
|
|
288
|
-
this.unselectRowEvent.emit(unselected);
|
|
289
|
-
}
|
|
290
|
-
else {
|
|
291
|
-
const [selected, failed] = this._itemStorage.selectAll();
|
|
292
|
-
if (selected.length)
|
|
293
|
-
this.selectRowEvent.emit(selected);
|
|
294
|
-
if (failed.length)
|
|
295
|
-
this.failedSelectRowEvent.emit(failed);
|
|
296
|
-
}
|
|
297
|
-
this._emitSelect();
|
|
298
|
-
}
|
|
299
|
-
_emitSelect() {
|
|
300
|
-
const v = this._itemStorage.value();
|
|
301
|
-
this.selectedRowsChangeEvent.emit(v);
|
|
302
|
-
}
|
|
303
|
-
isCellCheckbox(cell) {
|
|
304
|
-
return typeof cell === 'object' && '_ardCheckbox' in cell && 'index' in cell;
|
|
305
|
-
}
|
|
306
|
-
isHeaderCellCheckbox(cell) {
|
|
307
|
-
const dataCell = cell.cell();
|
|
308
|
-
if (isTableSubheader(dataCell))
|
|
309
|
-
return false;
|
|
310
|
-
if (typeof dataCell.dataSource === 'string')
|
|
311
|
-
return false;
|
|
312
|
-
return dataCell.dataSource.type === 'checkbox';
|
|
313
|
-
}
|
|
314
|
-
isHeaderCellSortable(cell) {
|
|
315
|
-
const dataCell = cell.cell();
|
|
316
|
-
if (isTableSubheader(dataCell))
|
|
317
|
-
return false;
|
|
318
|
-
return dataCell.sortable ?? false;
|
|
319
|
-
}
|
|
320
|
-
getHeaderContext(cell, index) {
|
|
321
|
-
if (typeof cell.header !== 'string')
|
|
322
|
-
return null;
|
|
323
|
-
if (isTableSubheader(cell))
|
|
324
|
-
return {
|
|
325
|
-
$implicit: cell.header,
|
|
326
|
-
header: cell.header,
|
|
327
|
-
};
|
|
328
|
-
return {
|
|
329
|
-
$implicit: cell.header,
|
|
330
|
-
header: cell.header,
|
|
331
|
-
sortable: cell.sortable ?? false,
|
|
332
|
-
sortType: this._itemStorage.getColumnSortType(index),
|
|
333
|
-
onTriggerSort: () => this._itemStorage.toggleCurrentSortColumn(index),
|
|
334
|
-
onTriggerResetSort: (event) => {
|
|
335
|
-
this._itemStorage.resetSort();
|
|
336
|
-
event?.preventDefault();
|
|
337
|
-
event?.stopPropagation();
|
|
338
|
-
},
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
getCheckboxContext(index) {
|
|
342
|
-
const item = this._itemStorage.items().find(v => v.index() === index);
|
|
343
|
-
const selected = item.selected();
|
|
344
|
-
return {
|
|
345
|
-
$implicit: selected,
|
|
346
|
-
selected: selected,
|
|
347
|
-
disabled: item.disabled(),
|
|
348
|
-
onChange: () => {
|
|
349
|
-
this.onCheckboxClick(index);
|
|
350
|
-
},
|
|
351
|
-
};
|
|
352
|
-
}
|
|
353
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumTableComponent, deps: [{ token: ARD_TABLE_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
354
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumTableComponent, selector: "ard-table", inputs: { rowDisabledFrom: { classPropertyName: "rowDisabledFrom", publicName: "rowDisabledFrom", isSignal: true, isRequired: false, transformFunction: null }, rowBoldFrom: { classPropertyName: "rowBoldFrom", publicName: "rowBoldFrom", isSignal: true, isRequired: false, transformFunction: null }, invertRowDisabled: { classPropertyName: "invertRowDisabled", publicName: "invertRowDisabled", isSignal: true, isRequired: false, transformFunction: null }, invertRowBold: { classPropertyName: "invertRowBold", publicName: "invertRowBold", isSignal: true, isRequired: false, transformFunction: null }, selectableRows: { classPropertyName: "selectableRows", publicName: "selectableRows", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, clickableRows: { classPropertyName: "clickableRows", publicName: "clickableRows", isSignal: true, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, loadingProgress: { classPropertyName: "loadingProgress", publicName: "loadingProgress", isSignal: true, isRequired: false, transformFunction: null }, loadingProgressBuffer: { classPropertyName: "loadingProgressBuffer", publicName: "loadingProgressBuffer", isSignal: true, isRequired: false, transformFunction: null }, loadingBarMode: { classPropertyName: "loadingBarMode", publicName: "loadingBarMode", isSignal: true, isRequired: false, transformFunction: null }, loadingBarColor: { classPropertyName: "loadingBarColor", publicName: "loadingBarColor", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, headerAlign: { classPropertyName: "headerAlign", publicName: "headerAlign", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, zebra: { classPropertyName: "zebra", publicName: "zebra", isSignal: true, isRequired: false, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null }, paginated: { classPropertyName: "paginated", publicName: "paginated", isSignal: true, isRequired: false, transformFunction: null }, paginationStrategy: { classPropertyName: "paginationStrategy", publicName: "paginationStrategy", isSignal: true, isRequired: false, transformFunction: null }, paginationOptions: { classPropertyName: "paginationOptions", publicName: "paginationOptions", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, paginationColor: { classPropertyName: "paginationColor", publicName: "paginationColor", isSignal: true, isRequired: false, transformFunction: null }, paginationAlign: { classPropertyName: "paginationAlign", publicName: "paginationAlign", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPageText: { classPropertyName: "itemsPerPageText", publicName: "itemsPerPageText", isSignal: true, isRequired: false, transformFunction: null }, currentItemsFormatFn: { classPropertyName: "currentItemsFormatFn", publicName: "currentItemsFormatFn", isSignal: true, isRequired: false, transformFunction: null }, pageFillRemaining: { classPropertyName: "pageFillRemaining", publicName: "pageFillRemaining", isSignal: true, isRequired: false, transformFunction: null }, paginationDisabled: { classPropertyName: "paginationDisabled", publicName: "paginationDisabled", isSignal: true, isRequired: false, transformFunction: null }, useFirstLastButtons: { classPropertyName: "useFirstLastButtons", publicName: "useFirstLastButtons", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPage: { classPropertyName: "itemsPerPage", publicName: "itemsPerPage", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: false, isRequired: false, transformFunction: null }, treatDataSourceAsString: { classPropertyName: "treatDataSourceAsString", publicName: "treatDataSourceAsString", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemsPerPage: "itemsPerPageChange", page: "pageChange", selectedRowsChangeEvent: "selectedRowsChange", failedSelectRowEvent: "failedSelectRow", selectRowEvent: "selectRow", unselectRowEvent: "unselectRow", clickRowEvent: "clickRow" }, queries: [{ propertyName: "checkboxTemplate", first: true, predicate: ArdiumTableCheckboxTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerCheckboxTemplate", first: true, predicate: ArdiumTableHeaderCheckboxTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "captionTemplate", first: true, predicate: ArdiumTableCaptionTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "templateChildren", predicate: ArdiumTableTemplateDirective, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<table\r\n class=\"ard-table\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (caption()) {\r\n <caption class=\"ard-table__caption\">\r\n <div class=\"ard-table__caption-container\">\r\n <ng-template\r\n #defaultCaptionTemplate\r\n let-captionText\r\n >\r\n {{ captionText }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"captionTemplate() ?? defaultCaptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: caption() }\"\r\n />\r\n </div>\r\n </caption>\r\n }\r\n <thead class=\"ard-table__header\">\r\n @for (row of headerCells(); track $index) {\r\n <tr class=\"ard-table__header-row\">\r\n @for (cell of row; track $index) {\r\n <th\r\n class=\"ard-table__header-cell\"\r\n [ngClass]=\"cell.cell().cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isHeaderCellCheckbox(cell)\"\r\n [attr.colspan]=\"cell.colspan()\"\r\n [attr.rowspan]=\"cell.rowspan()\"\r\n [scope]=\"cell.colspan() > 1 ? 'colgroup' : 'col'\"\r\n >\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [class.ard-table__sortable]=\"isHeaderCellSortable(cell)\"\r\n [style.width]=\"cell.width\"\r\n [style.minWidth]=\"cell.minWidth\"\r\n >\r\n @if (isHeaderCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultHeaderCheckboxTemplate\r\n let-state\r\n let-onChange=\"onChange\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [state]=\"state\"\r\n [color]=\"getHeaderCheckboxColor()\"\r\n unselectedColor=\"currentColor\"\r\n (change)=\"onChange()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerCheckboxTemplate() ?? defaultHeaderCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderCheckboxContext()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultHeaderCellTemplate\r\n let-content\r\n let-sortable=\"sortable\"\r\n let-sortType=\"sortType\"\r\n let-onTriggerSort=\"onTriggerSort\"\r\n let-onTriggerResetSort=\"onTriggerResetSort\"\r\n >\r\n <div\r\n class=\"ard-table__header-template-container\"\r\n [class.ard-sortable]=\"sortable\"\r\n [class.ard-nonsortable]=\"!sortable\"\r\n >\r\n @if (sortable) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-table__header-content-container\"\r\n (click)=\"onTriggerSort($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n (keydown.Esc)=\"onTriggerResetSort($event)\"\r\n >\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n @if (sortType !== null) {\r\n <div class=\"ard-table__header-sort-icon\">\r\n @if (sortType === 'ascending') {\r\n <ard-icon>south</ard-icon>\r\n } @else if (sortType === 'descending') {\r\n <ard-icon>north</ard-icon>\r\n }\r\n </div>\r\n }\r\n </button>\r\n } @else {\r\n <div class=\"ard-table__header-content-container\">\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getHeaderTemplate(cell.cell().header) ?? defaultHeaderCellTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderContext(cell.cell(), $index)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n }\r\n <tr class=\"ard-table__progress-bar-row\">\r\n <th\r\n class=\"ard-table__progress-bar-cell\"\r\n colspan=\"9999\"\r\n >\r\n @if (isLoading()) {\r\n <ard-progress-bar\r\n [value]=\"loadingProgress()\"\r\n [bufferValue]=\"loadingProgressBuffer()\"\r\n [mode]=\"loadingBarMode()\"\r\n [color]=\"loadingBarColor()\"\r\n variant=\"sharp\"\r\n hideValue\r\n />\r\n }\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"ard-table__body\">\r\n @for (row of dataRows(); track $index) {\r\n @if (row.isEmpty()) {\r\n <tr class=\"ard-table__empty-row\">\r\n <td\r\n class=\"ard-table__empty-cell\"\r\n colspan=\"9999\"\r\n ></td>\r\n </tr>\r\n } @else {\r\n <tr\r\n class=\"ard-table__body-row\"\r\n [class.ard-table__selected-row]=\"row.selected()\"\r\n [class.ard-table__highlighted-row]=\"row.highlighted()\"\r\n [class.ard-table__disabled-row]=\"row.disabled()\"\r\n [class.ard-table__bold-row]=\"row.bold()\"\r\n (click)=\"onRowClick(row, $event)\"\r\n (mouseover)=\"onRowMouseOver($event)\"\r\n (mouseenter)=\"onRowMouseEnter(row.index(), $event)\"\r\n (mouseleave)=\"onRowMouseLeave(row.index(), $event)\"\r\n >\r\n @for (cell of row.data(); track $index) {\r\n <ng-template #cellTmp>\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [style]=\"getCellStyle(row.dataColumns()[$index])\"\r\n >\r\n @if (isCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultCheckboxTemplate\r\n let-isChecked\r\n let-onChange=\"onChange\"\r\n let-disabled=\"disabled\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [selected]=\"isChecked\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange()\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"checkboxTemplate() ?? defaultCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getCheckboxContext(row.index())\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultCellTemplate\r\n let-content\r\n >\r\n {{ content }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getCellTemplate(row.dataColumns()[$index].template) ?? defaultCellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: cell }\"\r\n />\r\n }\r\n </div>\r\n </ng-template>\r\n @if (!row.dataColumns()[$index].isRowHeader) {\r\n <td\r\n class=\"ard-table__body-cell\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </td>\r\n } @else {\r\n <th\r\n class=\"ard-table__body-cell ard-table__row-header\"\r\n scope=\"row\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </th>\r\n }\r\n }\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n @if (canDisplayPagination()) {\r\n <tfoot class=\"ard-table__foot\">\r\n <tr class=\"ard-table__foot-row\">\r\n <td\r\n class=\"ard-table__pagination-cell\"\r\n colspan=\"9999\"\r\n >\r\n <ard-table-pagination\r\n [options]=\"paginationOptions()\"\r\n [totalItems]=\"totalItems()!\"\r\n [disabled]=\"paginationDisabled()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n [align]=\"paginationAlign()\"\r\n [isLoading]=\"isLoading()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n />\r\n </td>\r\n </tr>\r\n </tfoot>\r\n }\r\n</table>\r\n", styles: [".ard-table__cell-container,.ard-table__header-template-container{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ArdiumCheckboxComponent, selector: "ard-checkbox", inputs: ["color", "unselectedColor", "state"], outputs: ["stateChange"] }, { kind: "component", type: i3.ArdiumTablePaginationComponent, selector: "ard-table-pagination", inputs: ["totalItems", "options", "itemsPerPage", "page", "color", "align", "compact", "useFirstLastButtons", "isLoading", "itemsPerPageText", "currentItemsFormatFn"], outputs: ["itemsPerPageChange", "pageChange"] }, { kind: "component", type: i4.ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }, { kind: "component", type: i5.ArdiumProgressBarComponent, selector: "ard-progress-bar", inputs: ["value", "bufferValue", "color", "variant", "size", "mode", "hideValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
355
|
-
}
|
|
356
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumTableComponent, decorators: [{
|
|
357
|
-
type: Component,
|
|
358
|
-
args: [{ selector: 'ard-table', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<table\r\n class=\"ard-table\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (caption()) {\r\n <caption class=\"ard-table__caption\">\r\n <div class=\"ard-table__caption-container\">\r\n <ng-template\r\n #defaultCaptionTemplate\r\n let-captionText\r\n >\r\n {{ captionText }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"captionTemplate() ?? defaultCaptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: caption() }\"\r\n />\r\n </div>\r\n </caption>\r\n }\r\n <thead class=\"ard-table__header\">\r\n @for (row of headerCells(); track $index) {\r\n <tr class=\"ard-table__header-row\">\r\n @for (cell of row; track $index) {\r\n <th\r\n class=\"ard-table__header-cell\"\r\n [ngClass]=\"cell.cell().cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isHeaderCellCheckbox(cell)\"\r\n [attr.colspan]=\"cell.colspan()\"\r\n [attr.rowspan]=\"cell.rowspan()\"\r\n [scope]=\"cell.colspan() > 1 ? 'colgroup' : 'col'\"\r\n >\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [class.ard-table__sortable]=\"isHeaderCellSortable(cell)\"\r\n [style.width]=\"cell.width\"\r\n [style.minWidth]=\"cell.minWidth\"\r\n >\r\n @if (isHeaderCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultHeaderCheckboxTemplate\r\n let-state\r\n let-onChange=\"onChange\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [state]=\"state\"\r\n [color]=\"getHeaderCheckboxColor()\"\r\n unselectedColor=\"currentColor\"\r\n (change)=\"onChange()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerCheckboxTemplate() ?? defaultHeaderCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderCheckboxContext()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultHeaderCellTemplate\r\n let-content\r\n let-sortable=\"sortable\"\r\n let-sortType=\"sortType\"\r\n let-onTriggerSort=\"onTriggerSort\"\r\n let-onTriggerResetSort=\"onTriggerResetSort\"\r\n >\r\n <div\r\n class=\"ard-table__header-template-container\"\r\n [class.ard-sortable]=\"sortable\"\r\n [class.ard-nonsortable]=\"!sortable\"\r\n >\r\n @if (sortable) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-table__header-content-container\"\r\n (click)=\"onTriggerSort($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n (keydown.Esc)=\"onTriggerResetSort($event)\"\r\n >\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n @if (sortType !== null) {\r\n <div class=\"ard-table__header-sort-icon\">\r\n @if (sortType === 'ascending') {\r\n <ard-icon>south</ard-icon>\r\n } @else if (sortType === 'descending') {\r\n <ard-icon>north</ard-icon>\r\n }\r\n </div>\r\n }\r\n </button>\r\n } @else {\r\n <div class=\"ard-table__header-content-container\">\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getHeaderTemplate(cell.cell().header) ?? defaultHeaderCellTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderContext(cell.cell(), $index)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n }\r\n <tr class=\"ard-table__progress-bar-row\">\r\n <th\r\n class=\"ard-table__progress-bar-cell\"\r\n colspan=\"9999\"\r\n >\r\n @if (isLoading()) {\r\n <ard-progress-bar\r\n [value]=\"loadingProgress()\"\r\n [bufferValue]=\"loadingProgressBuffer()\"\r\n [mode]=\"loadingBarMode()\"\r\n [color]=\"loadingBarColor()\"\r\n variant=\"sharp\"\r\n hideValue\r\n />\r\n }\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"ard-table__body\">\r\n @for (row of dataRows(); track $index) {\r\n @if (row.isEmpty()) {\r\n <tr class=\"ard-table__empty-row\">\r\n <td\r\n class=\"ard-table__empty-cell\"\r\n colspan=\"9999\"\r\n ></td>\r\n </tr>\r\n } @else {\r\n <tr\r\n class=\"ard-table__body-row\"\r\n [class.ard-table__selected-row]=\"row.selected()\"\r\n [class.ard-table__highlighted-row]=\"row.highlighted()\"\r\n [class.ard-table__disabled-row]=\"row.disabled()\"\r\n [class.ard-table__bold-row]=\"row.bold()\"\r\n (click)=\"onRowClick(row, $event)\"\r\n (mouseover)=\"onRowMouseOver($event)\"\r\n (mouseenter)=\"onRowMouseEnter(row.index(), $event)\"\r\n (mouseleave)=\"onRowMouseLeave(row.index(), $event)\"\r\n >\r\n @for (cell of row.data(); track $index) {\r\n <ng-template #cellTmp>\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [style]=\"getCellStyle(row.dataColumns()[$index])\"\r\n >\r\n @if (isCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultCheckboxTemplate\r\n let-isChecked\r\n let-onChange=\"onChange\"\r\n let-disabled=\"disabled\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [selected]=\"isChecked\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange()\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"checkboxTemplate() ?? defaultCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getCheckboxContext(row.index())\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultCellTemplate\r\n let-content\r\n >\r\n {{ content }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getCellTemplate(row.dataColumns()[$index].template) ?? defaultCellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: cell }\"\r\n />\r\n }\r\n </div>\r\n </ng-template>\r\n @if (!row.dataColumns()[$index].isRowHeader) {\r\n <td\r\n class=\"ard-table__body-cell\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </td>\r\n } @else {\r\n <th\r\n class=\"ard-table__body-cell ard-table__row-header\"\r\n scope=\"row\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </th>\r\n }\r\n }\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n @if (canDisplayPagination()) {\r\n <tfoot class=\"ard-table__foot\">\r\n <tr class=\"ard-table__foot-row\">\r\n <td\r\n class=\"ard-table__pagination-cell\"\r\n colspan=\"9999\"\r\n >\r\n <ard-table-pagination\r\n [options]=\"paginationOptions()\"\r\n [totalItems]=\"totalItems()!\"\r\n [disabled]=\"paginationDisabled()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n [align]=\"paginationAlign()\"\r\n [isLoading]=\"isLoading()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n />\r\n </td>\r\n </tr>\r\n </tfoot>\r\n }\r\n</table>\r\n", styles: [".ard-table__cell-container,.ard-table__header-template-container{width:100%;height:100%}\n"] }]
|
|
359
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
360
|
-
type: Inject,
|
|
361
|
-
args: [ARD_TABLE_DEFAULTS]
|
|
362
|
-
}] }], propDecorators: { columns: [{
|
|
363
|
-
type: Input
|
|
364
|
-
}], data: [{
|
|
365
|
-
type: Input
|
|
366
|
-
}] } });
|
|
367
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBR0wsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFDZixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHM0QsT0FBTyxFQUFrQixvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdFLE9BQU8sRUFBRSxXQUFXLEVBQWMsZ0JBQWdCLEVBQXdCLE1BQU0sc0JBQXNCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGtCQUFrQixFQUFvQixNQUFNLGtCQUFrQixDQUFDO0FBQ3hFLE9BQU8sRUFDTCxtQ0FBbUMsRUFDbkMsb0NBQW9DLEVBQ3BDLDBDQUEwQyxFQUMxQyw0QkFBNEIsR0FDN0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBRUwsZUFBZSxFQU1mLHVCQUF1QixHQUl4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7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OUIsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFDO2dCQUN4QixLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUM7WUFDM0IsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBaUJELGtCQUFrQixDQUFDLEtBQWE7UUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssS0FBSyxDQUFFLENBQUM7UUFDdkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE9BQU87WUFDTCxTQUFTLEVBQUUsUUFBUTtZQUNuQixRQUFRLEVBQUUsUUFBUTtZQUNsQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6QixRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDOytHQXBYVSxvQkFBb0Isa0JBRVgsa0JBQWtCO21HQUYzQixvQkFBb0Isc2dMQThLN0Isb0NBQW9DLDJCQUU1QixXQUFXLHNGQU1uQiwwQ0FBMEMsMkJBQ3BDLFdBQVcsK0VBR2pCLG1DQUFtQywyQkFFM0IsV0FBVyxtRUFLcUQsNEJBQTRCLHlGQ3hQeEcsdXNTQTRPQTs7NEZEckxhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxXQUFXLGlCQUdOLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQUlsQyxNQUFNOzJCQUFDLGtCQUFrQjt5Q0F5SmxDLE9BQU87c0JBRFYsS0FBSztnQkFNRixJQUFJO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyQ29udGVudEluaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBjb21wdXRlZCxcclxuICBjb250ZW50Q2hpbGQsXHJcbiAgY29udGVudENoaWxkcmVuLFxyXG4gIGlucHV0LFxyXG4gIG1vZGVsLFxyXG4gIG91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgaXNEZWZpbmVkLCBpc051bWJlciB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgX0ZvY3VzYWJsZUNvbXBvbmVudEJhc2UgfSBmcm9tICcuLi9faW50ZXJuYWwvZm9jdXNhYmxlLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoZWNrYm94U3RhdGUgfSBmcm9tICcuLi9jaGVja2JveC9jaGVja2JveC50eXBlcyc7XHJcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kZSB9IGZyb20gJy4uL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IEN1cnJlbnRJdGVtc0Zvcm1hdEZuLCBQYWdpbmF0aW9uQWxpZ24gfSBmcm9tICcuLi90YWJsZS1wYWdpbmF0aW9uL3RhYmxlLXBhZ2luYXRpb24udHlwZXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb2xvciwgU2ltcGxlQ29tcG9uZW50Q29sb3IgfSBmcm9tICcuLi90eXBlcy9jb2xvcnMudHlwZXMnO1xyXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uL3R5cGVzL3V0aWxpdHkudHlwZXMnO1xyXG5pbXBvcnQgeyBBcmRUYWJsZVJvdywgSGVhZGVyQ2VsbCwgVGFibGVJdGVtU3RvcmFnZSwgVGFibGVJdGVtU3RvcmFnZUhvc3QgfSBmcm9tICcuL3RhYmxlLWl0ZW0tc3RvcmFnZSc7XHJcbmltcG9ydCB7IEFSRF9UQUJMRV9ERUZBVUxUUywgQXJkVGFibGVEZWZhdWx0cyB9IGZyb20gJy4vdGFibGUuZGVmYXVsdHMnO1xyXG5pbXBvcnQge1xyXG4gIEFyZGl1bVRhYmxlQ2FwdGlvblRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZGl1bVRhYmxlQ2hlY2tib3hUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBBcmRpdW1UYWJsZUhlYWRlckNoZWNrYm94VGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkaXVtVGFibGVUZW1wbGF0ZURpcmVjdGl2ZSxcclxufSBmcm9tICcuL3RhYmxlLmRpcmVjdGl2ZXMnO1xyXG5pbXBvcnQge1xyXG4gIFRhYmxlQWxpZ25UeXBlLFxyXG4gIFRhYmxlQXBwZWFyYW5jZSxcclxuICBUYWJsZUNhcHRpb25Db250ZXh0LFxyXG4gIFRhYmxlQ2hlY2tib3hDb250ZXh0LFxyXG4gIFRhYmxlRGF0YUNvbHVtbixcclxuICBUYWJsZUhlYWRlckNoZWNrYm94Q29udGV4dCxcclxuICBUYWJsZUhlYWRlckNvbnRleHQsXHJcbiAgVGFibGVQYWdpbmF0aW9uU3RyYXRlZ3ksXHJcbiAgVGFibGVTdWJoZWFkZXIsXHJcbiAgVGFibGVTdWJoZWFkZXJDb250ZXh0LFxyXG4gIFRhYmxlVmFyaWFudCxcclxufSBmcm9tICcuL3RhYmxlLnR5cGVzJztcclxuaW1wb3J0IHsgaXNUYWJsZVN1YmhlYWRlciB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtVGFibGVDb21wb25lbnQgZXh0ZW5kcyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIFRhYmxlSXRlbVN0b3JhZ2VIb3N0LCBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMge1xyXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBfREVGQVVMVFMhOiBBcmRUYWJsZURlZmF1bHRzO1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVJEX1RBQkxFX0RFRkFVTFRTKSBkZWZhdWx0czogQXJkVGFibGVEZWZhdWx0cykge1xyXG4gICAgc3VwZXIoZGVmYXVsdHMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaXRlbVN0b3JhZ2UgPSBuZXcgVGFibGVJdGVtU3RvcmFnZSh0aGlzKTtcclxuXHJcbiAgcmVhZG9ubHkgcm93RGlzYWJsZWRGcm9tID0gaW5wdXQ8c3RyaW5nPih0aGlzLl9ERUZBVUxUUy5yb3dEaXNhYmxlZEZyb20pO1xyXG4gIHJlYWRvbmx5IHJvd0JvbGRGcm9tID0gaW5wdXQ8c3RyaW5nPih0aGlzLl9ERUZBVUxUUy5yb3dCb2xkRnJvbSk7XHJcbiAgcmVhZG9ubHkgaW52ZXJ0Um93RGlzYWJsZWQgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmludmVydFJvd0Rpc2FibGVkLCB7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpLFxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGludmVydFJvd0JvbGQgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmludmVydFJvd0JvbGQsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgc2VsZWN0YWJsZVJvd3MgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLnNlbGVjdGFibGVSb3dzLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcbiAgcmVhZG9ubHkgbWF4U2VsZWN0ZWRJdGVtcyA9IGlucHV0PE51bGxhYmxlPG51bWJlcj4sIGFueT4odGhpcy5fREVGQVVMVFMubWF4U2VsZWN0ZWRJdGVtcywge1xyXG4gICAgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIHRoaXMuX0RFRkFVTFRTLm1heFNlbGVjdGVkSXRlbXMpLFxyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBjbGlja2FibGVSb3dzID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5jbGlja2FibGVSb3dzLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGNhcHRpb24gPSBpbnB1dDxOdWxsYWJsZTxzdHJpbmc+Pih0aGlzLl9ERUZBVUxUUy5jYXB0aW9uKTtcclxuXHJcbiAgcmVhZG9ubHkgaXNMb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5pc0xvYWRpbmcsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuICByZWFkb25seSBsb2FkaW5nUHJvZ3Jlc3MgPSBpbnB1dDxudW1iZXIsIGFueT4odGhpcy5fREVGQVVMVFMubG9hZGluZ1Byb2dyZXNzLCB7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMubG9hZGluZ1Byb2dyZXNzKSxcclxuICB9KTtcclxuICByZWFkb25seSBsb2FkaW5nUHJvZ3Jlc3NCdWZmZXIgPSBpbnB1dDxudW1iZXIsIGFueT4odGhpcy5fREVGQVVMVFMubG9hZGluZ1Byb2dyZXNzQnVmZmVyLCB7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMubG9hZGluZ1Byb2dyZXNzQnVmZmVyKSxcclxuICB9KTtcclxuICByZWFkb25seSBsb2FkaW5nQmFyTW9kZSA9IGlucHV0PFByb2dyZXNzQmFyTW9kZT4odGhpcy5fREVGQVVMVFMubG9hZGluZ0Jhck1vZGUpO1xyXG4gIHJlYWRvbmx5IGxvYWRpbmdCYXJDb2xvciA9IGlucHV0PENvbXBvbmVudENvbG9yPih0aGlzLl9ERUZBVUxUUy5sb2FkaW5nQmFyQ29sb3IpO1xyXG5cclxuICAvLyEgYXBwZWFyYW5jZVxyXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxUYWJsZUFwcGVhcmFuY2U+KHRoaXMuX0RFRkFVTFRTLmFwcGVhcmFuY2UpO1xyXG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxUYWJsZVZhcmlhbnQ+KHRoaXMuX0RFRkFVTFRTLnZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IGNvbG9yID0gaW5wdXQ8Q29tcG9uZW50Q29sb3I+KHRoaXMuX0RFRkFVTFRTLmNvbG9yKTtcclxuICByZWFkb25seSBhbGlnbiA9IGlucHV0PFRhYmxlQWxpZ25UeXBlPih0aGlzLl9ERUZBVUxUUy5hbGlnbik7XHJcbiAgcmVhZG9ubHkgaGVhZGVyQWxpZ24gPSBpbnB1dDxUYWJsZUFsaWduVHlwZT4odGhpcy5fREVGQVVMVFMuaGVhZGVyQWxpZ24pO1xyXG5cclxuICByZWFkb25seSBjb21wYWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5jb21wYWN0LCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcbiAgcmVhZG9ubHkgemVicmEgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLnplYnJhLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcbiAgcmVhZG9ubHkgc3RpY2t5SGVhZGVyID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5zdGlja3lIZWFkZXIsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgbmdDbGFzc2VzID0gY29tcHV0ZWQoKCkgPT5cclxuICAgIFtcclxuICAgICAgYGFyZC1hcHBlYXJhbmNlLSR7dGhpcy5hcHBlYXJhbmNlKCl9YCxcclxuICAgICAgYGFyZC12YXJpYW50LSR7dGhpcy52YXJpYW50KCl9YCxcclxuICAgICAgYGFyZC1jb2xvci0ke3RoaXMuY29sb3IoKX1gLFxyXG4gICAgICBgYXJkLWFsaWduLSR7dGhpcy5hbGlnbigpfWAsXHJcbiAgICAgIGBhcmQtaGVhZGVyLWFsaWduLSR7dGhpcy5oZWFkZXJBbGlnbigpfWAsXHJcbiAgICAgIHRoaXMuY29tcGFjdCgpID8gJ2FyZC1jb21wYWN0JyA6ICcnLFxyXG4gICAgICB0aGlzLnplYnJhKCkgPyAnYXJkLXplYnJhLXRhYmxlJyA6ICcnLFxyXG4gICAgICB0aGlzLnNlbGVjdGFibGVSb3dzKCkgPyAnYXJkLXNlbGVjdGFibGUtcm93cycgOiAnJyxcclxuICAgICAgdGhpcy5zdGlja3lIZWFkZXIoKSA/ICdhcmQtc3RpY2t5LWhlYWRlcicgOiAnJyxcclxuICAgICAgdGhpcy5pc0xvYWRpbmcoKSA/ICdhcmQtdGFibGUtbG9hZGluZycgOiAnJyxcclxuICAgIF0uam9pbignICcpXHJcbiAgKTtcclxuXHJcbiAgLy8hIHBhZ2luYXRpb25cclxuICByZWFkb25seSBwYWdpbmF0ZWQgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLnBhZ2luYXRlZCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG4gIHJlYWRvbmx5IHBhZ2luYXRpb25TdHJhdGVneSA9IGlucHV0PFRhYmxlUGFnaW5hdGlvblN0cmF0ZWd5Pih0aGlzLl9ERUZBVUxUUy5wYWdpbmF0aW9uU3RyYXRlZ3kpO1xyXG4gIHJlYWRvbmx5IHBhZ2luYXRpb25PcHRpb25zID0gaW5wdXQ8XHJcbiAgICBudW1iZXJbXSB8IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10sXHJcbiAgICBudW1iZXJbXSB8IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W11cclxuICA+KHRoaXMuX0RFRkFVTFRTLnBhZ2luYXRpb25PcHRpb25zLCB7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4ge1xyXG4gICAgICByZXR1cm4gdi5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9wdCA9IGlzTnVtYmVyKGVsKSA/IGVsIDogZWwudmFsdWU7XHJcbiAgICAgICAgaWYgKG9wdCA8PSAwIHx8IG9wdCAlIDEgIT09IDApIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgIG5ldyBFcnJvcihcclxuICAgICAgICAgICAgICBgQVJELU5GNTA1MjogZWFjaCBpdGVtIG9mIDxhcmQtdGFibGU+J3MgW3BhZ2luYXRpb25PcHRpb25zXSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4gVGhlIFwiJHtvcHR9XCIgb3B0aW9uIHdpbGwgYmUgaWdub3JlZC5gXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9KSBhcyBudW1iZXJbXSB8IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W107XHJcbiAgICB9LFxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IHRvdGFsSXRlbXMgPSBpbnB1dDxOdWxsYWJsZTxudW1iZXI+LCBhbnk+KHRoaXMuX0RFRkFVTFRTLnRvdGFsSXRlbXMsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCB0aGlzLl9ERUZBVUxUUy50b3RhbEl0ZW1zKSxcclxuICB9KTtcclxuICByZWFkb25seSBwYWdpbmF0aW9uQ29sb3IgPSBpbnB1dDxDb21wb25lbnRDb2xvcj4odGhpcy5fREVGQVVMVFMucGFnaW5hdGlvbkNvbG9yKTtcclxuICByZWFkb25seSBwYWdpbmF0aW9uQWxpZ24gPSBpbnB1dDxQYWdpbmF0aW9uQWxpZ24+KHRoaXMuX0RFRkFVTFRTLnBhZ2luYXRpb25BbGlnbik7XHJcbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlVGV4dCA9IGlucHV0PHN0cmluZz4odGhpcy5fREVGQVVMVFMuaXRlbXNQZXJQYWdlVGV4dCk7XHJcbiAgcmVhZG9ubHkgY3VycmVudEl0ZW1zRm9ybWF0Rm4gPSBpbnB1dDxDdXJyZW50SXRlbXNGb3JtYXRGbj4odGhpcy5fREVGQVVMVFMuY3VycmVudEl0ZW1zRm9ybWF0Rm4pO1xyXG5cclxuICByZWFkb25seSBwYWdlRmlsbFJlbWFpbmluZyA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMucGFnZUZpbGxSZW1haW5pbmcsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodiksXHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgcGFnaW5hdGlvbkRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5wYWdpbmF0aW9uRGlzYWJsZWQsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodiksXHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgdXNlRmlyc3RMYXN0QnV0dG9ucyA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMudXNlRmlyc3RMYXN0QnV0dG9ucywge1xyXG4gICAgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSxcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlID0gbW9kZWw8bnVtYmVyPih0aGlzLl9ERUZBVUxUUy5pdGVtc1BlclBhZ2UpO1xyXG4gIHJlYWRvbmx5IHBhZ2UgPSBtb2RlbDxudW1iZXI+KHRoaXMuX0RFRkFVTFRTLnBhZ2UpO1xyXG5cclxuICByZWFkb25seSBpc0RlZmluZWRUb3RhbEl0ZW1zID0gY29tcHV0ZWQoXHJcbiAgICAoKSA9PiB0aGlzLnBhZ2luYXRpb25TdHJhdGVneSgpICE9PSBUYWJsZVBhZ2luYXRpb25TdHJhdGVneS5Ob29wIHx8IGlzRGVmaW5lZCh0aGlzLnRvdGFsSXRlbXMoKSlcclxuICApO1xyXG4gIHJlYWRvbmx5IGNhbkRpc3BsYXlQYWdpbmF0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYWdpbmF0ZWQoKSAmJiB0aGlzLmlzRGVmaW5lZFRvdGFsSXRlbXMoKSk7XHJcblxyXG4gIC8vISBwcmludCBlcnJvcnMgaWYgbmVlZGVkXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zUGVyUGFnZSddKSB7XHJcbiAgICAgIGNvbnN0IGlwcCA9IGNoYW5nZXNbJ2l0ZW1zUGVyUGFnZSddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9XHJcbiAgICAgICAgKGNoYW5nZXNbJ3BhZ2luYXRpb25PcHRpb25zJ10/LmN1cnJlbnRWYWx1ZSBhcyBudW1iZXJbXSB8IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10pIHx8IHRoaXMucGFnaW5hdGlvbk9wdGlvbnMoKTtcclxuICAgICAgaWYgKCFvcHRpb25zLmZpbmQodiA9PiAodHlwZW9mIHYgPT09ICdudW1iZXInID8gdiA9PT0gaXBwIDogdi52YWx1ZSA9PT0gaXBwKSkpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgQVJELU5GNTA1MTogdmFsdWUgb2YgXCIke2lwcH1cIiBpbiA8YXJkLXRhYmxlPidzIFtpdGVtc1BlclBhZ2VdIGRvZXMgbm90IGFwcGVhciBpbiBbcGFnaW5hdGlvbk9wdGlvbnNdIGFycmF5IFske29wdGlvbnNcclxuICAgICAgICAgICAgICAubWFwKHYgPT4gKHR5cGVvZiB2ID09PSAnbnVtYmVyJyA/IHYgOiB2LnZhbHVlKSlcclxuICAgICAgICAgICAgICAuam9pbignLCAnKX1dYFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydwYWdlJ10pIHtcclxuICAgICAgY29uc3QgcGFnZSA9IGNoYW5nZXNbJ3BhZ2UnXS5jdXJyZW50VmFsdWUgYXMgbnVtYmVyO1xyXG4gICAgICBpZiAocGFnZSA9PT0gMCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQVJELUZUNTA1M2E6IDxhcmQtdGFibGU+J3MgW3BhZ2VdIHVzZXMgMS1pbmRleGVkIG51bWJlcmluZyBzeXN0ZW0uIFRoZSB2YWx1ZSAwIGlzIG5vdCBhY2NlcHRlZC5gKTtcclxuICAgICAgfSBlbHNlIGlmIChwYWdlIDwgMCB8fCBwYWdlICUgMSAhPT0gMCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQVJELUZUNTA1M2I6IHZhbHVlIG9mIDxhcmQtdGFibGU+J3MgW3BhZ2VdIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBnb3QgXCIke3BhZ2V9XCIuYCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vISBpdGVtIHN0b3JhZ2UgZ2V0dGVyc1xyXG4gIHJlYWRvbmx5IGhlYWRlckNlbGxzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faXRlbVN0b3JhZ2UuaGVhZGVyQ2VsbHMoKSk7XHJcblxyXG4gIHJlYWRvbmx5IGRhdGFSb3dzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgaXRlbXM6IEFyZFRhYmxlUm93W10gPSB0aGlzLl9pdGVtU3RvcmFnZS5wYWdpbmF0ZWRJdGVtcygpO1xyXG5cclxuICAgIGlmICghdGhpcy5wYWdlRmlsbFJlbWFpbmluZygpKSByZXR1cm4gaXRlbXM7XHJcbiAgICBpZiAoIXRoaXMuaXNEZWZpbmVkVG90YWxJdGVtcygpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQVJELUZUNTA1MDogPGFyZC10YWJsZT4gcmVxdWlyZXMgW3RvdGFsSXRlbXNdIHRvIGJlIGRlZmluZWQgd2hlbiB1c2luZyBcInNsaWNlXCIgcGFnaW5hdGlvbiBzdHJhdGVneS4nKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnBhZ2UoKSA9PT0gMSkgcmV0dXJuIGl0ZW1zO1xyXG5cclxuICAgIGNvbnN0IGlwcCA9IHRoaXMuaXRlbXNQZXJQYWdlKCk7XHJcbiAgICBmb3IgKGxldCBpID0gaXRlbXMubGVuZ3RoOyBpIDwgaXBwOyBpKyspIHtcclxuICAgICAgaXRlbXMucHVzaChBcmRUYWJsZVJvdy5uZXdFbXB0eUNlbGwoaSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW1zO1xyXG4gIH0pO1xyXG5cclxuICAvLyEgY29sdW1ucy9kYXRhIHNldHRlcnNcclxuICBASW5wdXQoKVxyXG4gIHNldCBjb2x1bW5zKHY6IChUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlcilbXSkge1xyXG4gICAgdGhpcy5faXRlbVN0b3JhZ2Uuc2V0Q29sdW1ucyh2KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGF0YTogYW55W10gPSBbXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBkYXRhKHY6IGFueVtdKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gdjtcclxuICAgIHRoaXMuX2l0ZW1TdG9yYWdlLnNldEl0ZW1zKHYpO1xyXG4gIH1cclxuICBnZXQgZGF0YSgpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHRyZWF0RGF0YVNvdXJjZUFzU3RyaW5nID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy50cmVhdERhdGFTb3VyY2VBc1N0cmluZywge1xyXG4gICAgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSxcclxuICB9KTtcclxuXHJcbiAgLy8hIHRlbXBsYXRlc1xyXG4gIHJlYWRvbmx5IGNoZWNrYm94VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQ8QXJkaXVtVGFibGVDaGVja2JveFRlbXBsYXRlRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZjxUYWJsZUNoZWNrYm94Q29udGV4dD4+KFxyXG4gICAgQXJkaXVtVGFibGVDaGVja2JveFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gICAge1xyXG4gICAgICByZWFkOiBUZW1wbGF0ZVJlZjxUYWJsZUNoZWNrYm94Q29udGV4dD4sXHJcbiAgICB9XHJcbiAgKTtcclxuICByZWFkb25seSBoZWFkZXJDaGVja2JveFRlbXBsYXRlID0gY29udGVudENoaWxkPFxyXG4gICAgQXJkaXVtVGFibGVIZWFkZXJDaGVja2JveFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gICAgVGVtcGxhdGVSZWY8VGFibGVIZWFkZXJDaGVja2JveENvbnRleHQ+XHJcbiAgPihBcmRpdW1UYWJsZUhlYWRlckNoZWNrYm94VGVtcGxhdGVEaXJlY3RpdmUsIHtcclxuICAgIHJlYWQ6IFRlbXBsYXRlUmVmPFRhYmxlSGVhZGVyQ2hlY2tib3hDb250ZXh0PixcclxuICB9KTtcclxuICByZWFkb25seSBjYXB0aW9uVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQ8QXJkaXVtVGFibGVDYXB0aW9uVGVtcGxhdGVEaXJlY3RpdmUsIFRlbXBsYXRlUmVmPFRhYmxlQ2FwdGlvbkNvbnRleHQ+PihcclxuICAgIEFyZGl1bVRhYmxlQ2FwdGlvblRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gICAge1xyXG4gICAgICByZWFkOiBUZW1wbGF0ZVJlZjxUYWJsZUNhcHRpb25Db250ZXh0PixcclxuICAgIH1cclxuICApO1xyXG5cclxuICBwcml2YXRlIF9pdGVtVGVtcGxhdGVzOiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PiA9IHt9O1xyXG4gIHJlYWRvbmx5IHRlbXBsYXRlQ2hpbGRyZW4gPSBjb250ZW50Q2hpbGRyZW48QXJkaXVtVGFibGVUZW1wbGF0ZURpcmVjdGl2ZT4oQXJkaXVtVGFibGVUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRlbXBsYXRlcyA9IEFycmF5LmZyb20odGhpcy50ZW1wbGF0ZUNoaWxkcmVuKCkpO1xyXG4gICAgZm9yIChjb25zdCBpbnN0YW5jZSBvZiB0ZW1wbGF0ZXMpIHtcclxuICAgICAgY29uc3QgbmFtZSA9IGluc3RhbmNlLm5hbWUoKTtcclxuICAgICAgaWYgKCFuYW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihuZXcgRXJyb3IoJ0FSRC1GVDUwNTQ6IFthcmQtdGFibGUtdG1wXSByZXF1aXJlcyBhIHZhbHVlIHRvIGJlIHNwZWNpZmllZC4nKSk7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5faXRlbVRlbXBsYXRlc1tuYW1lXSA9IGluc3RhbmNlLnRlbXBsYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SGVhZGVyVGVtcGxhdGUodG1wOiBzdHJpbmcgfCB7IHRlbXBsYXRlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IH0pOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICh0eXBlb2YgdG1wID09PSAnc3RyaW5nJykgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIHJldHVybiB0aGlzLmdldENlbGxUZW1wbGF0ZSh0bXAudGVtcGxhdGUpO1xyXG4gIH1cclxuICBnZXRIZWFkZXJDaGVja2JveENvbG9yKCk6IFNpbXBsZUNvbXBvbmVudENvbG9yIHtcclxuICAgIGlmICh0aGlzLmFwcGVhcmFuY2UoKSA9PT0gVGFibGVBcHBlYXJhbmNlLlN0cm9uZykgcmV0dXJuIFNpbXBsZUNvbXBvbmVudENvbG9yLkN1cnJlbnRDb2xvcjtcclxuICAgIHJldHVybiB0aGlzLmNvbG9yKCk7XHJcbiAgfVxyXG4gIGdldENlbGxUZW1wbGF0ZSh0bXA/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XHJcbiAgICAvL3JldHVybiB1bmRlZmluZWRcclxuICAgIGlmICghdG1wKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgLy9yZXR1cm4gdGVtcGxhdGUsIGlmIGl0IGlzIG9uZVxyXG4gICAgaWYgKHRtcCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSByZXR1cm4gdG1wO1xyXG4gICAgLy9jaGVjayBpZiB0aGUgbmFtZSBjYW4gYmUgZm91bmRcclxuICAgIGlmICghKHRtcCBpbiB0aGlzLl9pdGVtVGVtcGxhdGVzKSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKG5ldyBFcnJvcihgQVJELU5GNTA1NTogPGFyZC10YWJsZT4gZXJyb3I6IGNhbm5vdCBmaW5kIHRlbXBsYXRlIG5hbWVkIFwiJHt0bXB9XCJgKSk7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICAvL3JldHVybiB0aGUgdGVtcGxhdGVcclxuICAgIHJldHVybiB0aGlzLl9pdGVtVGVtcGxhdGVzW3RtcF07XHJcbiAgfVxyXG4gIGdldENlbGxTdHlsZShjZWxsOiBUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoaXNUYWJsZVN1YmhlYWRlcihjZWxsKSkgcmV0dXJuICd3aWR0aDp1bnNldDttaW4td2lkdGg6dW5zZXQnO1xyXG4gICAgY29uc3Qgd2lkdGggPSB0eXBlb2YgY2VsbC53aWR0aCA9PT0gJ251bWJlcicgPyBgJHtjZWxsLndpZHRofXB4YCA6IGNlbGwud2lkdGg7XHJcbiAgICBjb25zdCBtaW5XaWR0aCA9IHR5cGVvZiBjZWxsLm1pbldpZHRoID09PSAnbnVtYmVyJyA/IGAke2NlbGwubWluV2lkdGh9cHhgIDogY2VsbC5taW5XaWR0aDtcclxuICAgIHJldHVybiBbYHdpZHRoOiR7d2lkdGggPz8gJ3Vuc2V0J31gLCBgbWluLXdpZHRoOiR7bWluV2lkdGggPz8gJ3Vuc2V0J31gXS5qb2luKCc7Jyk7XHJcbiAgfVxyXG5cclxuICAvLyEgY2xpY2sgJiBob3ZlciBoYW5kbGVyc1xyXG4gIG9uQ2hlY2tib3hDbGljayhpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvZ2dsZVJvd1NlbGVjdGVkKGluZGV4KTtcclxuICB9XHJcbiAgb25Sb3dDbGljayhyb3c6IEFyZFRhYmxlUm93LCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2xpY2thYmxlUm93cygpKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLmNsaWNrUm93RXZlbnQuZW1pdChyb3cuaXRlbURhdGEoKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGFibGVSb3dzKCkpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHRoaXMudG9nZ2xlUm93U2VsZWN0ZWQocm93LmluZGV4KCkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uUm93TW91c2VPdmVyKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcbiAgb25Sb3dNb3VzZUVudGVyKGluZGV4OiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0YWJsZVJvd3MoKSAmJiAhdGhpcy5jbGlja2FibGVSb3dzKCkpIHJldHVybjtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5faXRlbVN0b3JhZ2UuaGlnaGxpZ2h0U2luZ2xlSXRlbShpbmRleCk7XHJcbiAgfVxyXG4gIG9uUm93TW91c2VMZWF2ZShpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGFibGVSb3dzKCkgJiYgIXRoaXMuY2xpY2thYmxlUm93cygpKSByZXR1cm47XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuX2l0ZW1TdG9yYWdlLnVuaGlnaGxpZ2h0SXRlbShpbmRleCk7XHJcbiAgfVxyXG5cclxuICAvLyEgc2VsZWN0IGhhbmRsZXJzXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGEgcm93IGluIHRoZSB0YWJsZS5cclxuICAgKiBAcGFyYW0gc2VsZWN0ZWQgYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIHJvdyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuXHJcbiAgICogQHBhcmFtIGluZGV4IHRoZSBpbmRleCBvZiB0aGUgcm93IGluIHRoZSB0YWJsZS5cclxuICAgKi9cclxuICB0b2dnbGVSb3dTZWxlY3RlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXRlbVN0b3JhZ2UuaXNJdGVtU2VsZWN0ZWQoaW5kZXgpKSB7XHJcbiAgICAgIGNvbnN0IHVuc2VsZWN0ZWQgPSB0aGlzLl9pdGVtU3RvcmFnZS51bnNlbGVjdEl0ZW0oaW5kZXgpO1xyXG4gICAgICBpZiAodW5zZWxlY3RlZC5sZW5ndGgpIHRoaXMudW5zZWxlY3RSb3dFdmVudC5lbWl0KHVuc2VsZWN0ZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgW3NlbGVjdGVkLCBmYWlsZWRdID0gdGhpcy5faXRlbVN0b3JhZ2Uuc2VsZWN0SXRlbShpbmRleCk7XHJcbiAgICAgIGlmIChzZWxlY3RlZC5sZW5ndGgpIHRoaXMuc2VsZWN0Um93RXZlbnQuZW1pdChzZWxlY3RlZCk7XHJcbiAgICAgIGlmIChmYWlsZWQubGVuZ3RoKSB0aGlzLmZhaWxlZFNlbGVjdFJvd0V2ZW50LmVtaXQoZmFpbGVkKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2VtaXRTZWxlY3QoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGFsbCByb3dzIGluIHRoZSB0YWJsZS5cclxuICAgKi9cclxuICB0b2dnbGVBbGxSb3dzU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXRlbVN0b3JhZ2UuYXJlQWxsU2VsZWN0ZWQoKSkge1xyXG4gICAgICBjb25zdCB1bnNlbGVjdGVkID0gdGhpcy5faXRlbVN0b3JhZ2UudW5zZWxlY3RBbGwoKTtcclxuICAgICAgaWYgKHVuc2VsZWN0ZWQubGVuZ3RoKSB0aGlzLnVuc2VsZWN0Um93RXZlbnQuZW1pdCh1bnNlbGVjdGVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IFtzZWxlY3RlZCwgZmFpbGVkXSA9IHRoaXMuX2l0ZW1TdG9yYWdlLnNlbGVjdEFsbCgpO1xyXG4gICAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoKSB0aGlzLnNlbGVjdFJvd0V2ZW50LmVtaXQoc2VsZWN0ZWQpO1xyXG4gICAgICBpZiAoZmFpbGVkLmxlbmd0aCkgdGhpcy5mYWlsZWRTZWxlY3RSb3dFdmVudC5lbWl0KGZhaWxlZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbWl0U2VsZWN0KCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2VtaXRTZWxlY3QoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2ID0gdGhpcy5faXRlbVN0b3JhZ2UudmFsdWUoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ2hhbmdlRXZlbnQuZW1pdCh2KTtcclxuICB9XHJcbiAgaXNDZWxsQ2hlY2tib3goY2VsbDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIGNlbGwgPT09ICdvYmplY3QnICYmICdfYXJkQ2hlY2tib3gnIGluIGNlbGwgJiYgJ2luZGV4JyBpbiBjZWxsO1xyXG4gIH1cclxuICBpc0hlYWRlckNlbGxDaGVja2JveChjZWxsOiBIZWFkZXJDZWxsKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBkYXRhQ2VsbCA9IGNlbGwuY2VsbCgpO1xyXG4gICAgaWYgKGlzVGFibGVTdWJoZWFkZXIoZGF0YUNlbGwpKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAodHlwZW9mIGRhdGFDZWxsLmRhdGFTb3VyY2UgPT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gZGF0YUNlbGwuZGF0YVNvdXJjZS50eXBlID09PSAnY2hlY2tib3gnO1xyXG4gIH1cclxuICBpc0hlYWRlckNlbGxTb3J0YWJsZShjZWxsOiBIZWFkZXJDZWxsKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBkYXRhQ2VsbCA9IGNlbGwuY2VsbCgpO1xyXG4gICAgaWYgKGlzVGFibGVTdWJoZWFkZXIoZGF0YUNlbGwpKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gZGF0YUNlbGwuc29ydGFibGUgPz8gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzZWxlY3RlZFJvd3NDaGFuZ2VFdmVudCA9IG91dHB1dDxhbnlbXT4oeyBhbGlhczogJ3NlbGVjdGVkUm93c0NoYW5nZScgfSk7XHJcbiAgcmVhZG9ubHkgZmFpbGVkU2VsZWN0Um93RXZlbnQgPSBvdXRwdXQ8YW55W10+KHsgYWxpYXM6ICdmYWlsZWRTZWxlY3RSb3cnIH0pO1xyXG4gIHJlYWRvbmx5IHNlbGVjdFJvd0V2ZW50ID0gb3V0cHV0PGFueVtdPih7IGFsaWFzOiAnc2VsZWN0Um93JyB9KTtcclxuICByZWFkb25seSB1bnNlbGVjdFJvd0V2ZW50ID0gb3V0cHV0PGFueVtdPih7IGFsaWFzOiAndW5zZWxlY3RSb3cnIH0pO1xyXG4gIHJlYWRvbmx5IGNsaWNrUm93RXZlbnQgPSBvdXRwdXQ8YW55Pih7IGFsaWFzOiAnY2xpY2tSb3cnIH0pO1xyXG5cclxuICAvLyEgY29udGV4dHNcclxuICBnZXRIZWFkZXJDb250ZXh0KGNlbGw6IFRhYmxlRGF0YUNvbHVtbiwgaW5kZXg6IG51bWJlcik6IFRhYmxlSGVhZGVyQ29udGV4dCB8IG51bGw7XHJcbiAgZ2V0SGVhZGVyQ29udGV4dChjZWxsOiBUYWJsZVN1YmhlYWRlciwgaW5kZXg6IG51bWJlcik6IFRhYmxlU3ViaGVhZGVyQ29udGV4dCB8IG51bGw7XHJcbiAgZ2V0SGVhZGVyQ29udGV4dChjZWxsOiBUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlciwgaW5kZXg6IG51bWJlcik6IFRhYmxlSGVhZGVyQ29udGV4dCB8IFRhYmxlU3ViaGVhZGVyQ29udGV4dCB8IG51bGw7XHJcbiAgZ2V0SGVhZGVyQ29udGV4dChjZWxsOiBUYWJsZURhdGFDb2x1bW4gfCBUYWJsZVN1YmhlYWRlciwgaW5kZXg6IG51bWJlcik6IFRhYmxlSGVhZGVyQ29udGV4dCB8IFRhYmxlU3ViaGVhZGVyQ29udGV4dCB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiBjZWxsLmhlYWRlciAhPT0gJ3N0cmluZycpIHJldHVybiBudWxsO1xyXG4gICAgaWYgKGlzVGFibGVTdWJoZWFkZXIoY2VsbCkpXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgJGltcGxpY2l0OiBjZWxsLmhlYWRlcixcclxuICAgICAgICBoZWFkZXI6IGNlbGwuaGVhZGVyLFxyXG4gICAgICB9O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJGltcGxpY2l0OiBjZWxsLmhlYWRlcixcclxuICAgICAgaGVhZGVyOiBjZWxsLmhlYWRlcixcclxuICAgICAgc29ydGFibGU6IGNlbGwuc29ydGFibGUgPz8gZmFsc2UsXHJcbiAgICAgIHNvcnRUeXBlOiB0aGlzLl9pdGVtU3RvcmFnZS5nZXRDb2x1bW5Tb3J0VHlwZShpbmRleCksXHJcbiAgICAgIG9uVHJpZ2dlclNvcnQ6ICgpID0+IHRoaXMuX2l0ZW1TdG9yYWdlLnRvZ2dsZUN1cnJlbnRTb3J0Q29sdW1uKGluZGV4KSxcclxuICAgICAgb25UcmlnZ2VyUmVzZXRTb3J0OiAoZXZlbnQ/OiBFdmVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2l0ZW1TdG9yYWdlLnJlc2V0U29ydCgpO1xyXG4gICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgfVxyXG4gIHJlYWRvbmx5IGdldEhlYWRlckNoZWNrYm94Q29udGV4dCA9IGNvbXB1dGVkPFRhYmxlSGVhZGVyQ2hlY2tib3hDb250ZXh0PigoKSA9PiB7XHJcbiAgICBsZXQgc3RhdGU6IENoZWNrYm94U3RhdGUgPSBDaGVja2JveFN0YXRlLlVuc2VsZWN0ZWQ7XHJcbiAgICBpZiAodGhpcy5faXRlbVN0b3JhZ2UuaXNBbnlJdGVtU2VsZWN0ZWQoKSkge1xyXG4gICAgICBzdGF0ZSA9IENoZWNrYm94U3RhdGUuSW5kZXRlcm1pbmF0ZTtcclxuICAgICAgaWYgKHRoaXMuX2l0ZW1TdG9yYWdlLmFyZUFsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgICBzdGF0ZSA9IENoZWNrYm94U3RhdGUuU2VsZWN0ZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICRpbXBsaWNpdDogc3RhdGUsXHJcbiAgICAgIHN0YXRlLFxyXG4gICAgICBvbkNoYW5nZTogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQWxsUm93c1NlbGVjdGVkKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gIH0pO1xyXG4gIGdldENoZWNrYm94Q29udGV4dChpbmRleDogbnVtYmVyKTogVGFibGVDaGVja2JveENvbnRleHQge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuX2l0ZW1TdG9yYWdlLml0ZW1zKCkuZmluZCh2ID0+IHYuaW5kZXgoKSA9PT0gaW5kZXgpITtcclxuICAgIGNvbnN0IHNlbGVjdGVkID0gaXRlbS5zZWxlY3RlZCgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJGltcGxpY2l0OiBzZWxlY3RlZCxcclxuICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkLFxyXG4gICAgICBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCgpLFxyXG4gICAgICBvbkNoYW5nZTogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub25DaGVja2JveENsaWNrKGluZGV4KTtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiIsIjx0YWJsZVxyXG4gIGNsYXNzPVwiYXJkLXRhYmxlXCJcclxuICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXHJcbj5cclxuICBAaWYgKGNhcHRpb24oKSkge1xyXG4gICAgPGNhcHRpb24gY2xhc3M9XCJhcmQtdGFibGVfX2NhcHRpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFyZC10YWJsZV9fY2FwdGlvbi1jb250YWluZXJcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICNkZWZhdWx0Q2FwdGlvblRlbXBsYXRlXHJcbiAgICAgICAgICBsZXQtY2FwdGlvblRleHRcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBjYXB0aW9uVGV4dCB9fVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FwdGlvblRlbXBsYXRlKCkgPz8gZGVmYXVsdENhcHRpb25UZW1wbGF0ZVwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNhcHRpb24oKSB9XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvY2FwdGlvbj5cclxuICB9XHJcbiAgPHRoZWFkIGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXJcIj5cclxuICAgIEBmb3IgKHJvdyBvZiBoZWFkZXJDZWxscygpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgPHRyIGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXItcm93XCI+XHJcbiAgICAgICAgQGZvciAoY2VsbCBvZiByb3c7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXItY2VsbFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNlbGwuY2VsbCgpLmNlbGxDbGFzc1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hcmQtdGFibGVfX2NoZWNrYm94LWNlbGxdPVwiaXNIZWFkZXJDZWxsQ2hlY2tib3goY2VsbClcIlxyXG4gICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImNlbGwuY29sc3BhbigpXCJcclxuICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJjZWxsLnJvd3NwYW4oKVwiXHJcbiAgICAgICAgICAgIFtzY29wZV09XCJjZWxsLmNvbHNwYW4oKSA+IDEgPyAnY29sZ3JvdXAnIDogJ2NvbCdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhcmQtdGFibGVfX2NlbGwtY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYXJkLXRhYmxlX19zb3J0YWJsZV09XCJpc0hlYWRlckNlbGxTb3J0YWJsZShjZWxsKVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNlbGwud2lkdGhcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5taW5XaWR0aF09XCJjZWxsLm1pbldpZHRoXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIEBpZiAoaXNIZWFkZXJDZWxsQ2hlY2tib3goY2VsbCkpIHtcclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAjZGVmYXVsdEhlYWRlckNoZWNrYm94VGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgbGV0LXN0YXRlXHJcbiAgICAgICAgICAgICAgICAgIGxldC1vbkNoYW5nZT1cIm9uQ2hhbmdlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGFyZC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgIFt0YWJJbmRleF09XCJpc0xvYWRpbmcoKSA/IC0xIDogdGFiSW5kZXgoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cInN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiZ2V0SGVhZGVyQ2hlY2tib3hDb2xvcigpXCJcclxuICAgICAgICAgICAgICAgICAgICB1bnNlbGVjdGVkQ29sb3I9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJDaGVja2JveFRlbXBsYXRlKCkgPz8gZGVmYXVsdEhlYWRlckNoZWNrYm94VGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiZ2V0SGVhZGVyQ2hlY2tib3hDb250ZXh0KClcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAjZGVmYXVsdEhlYWRlckNlbGxUZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICBsZXQtY29udGVudFxyXG4gICAgICAgICAgICAgICAgICBsZXQtc29ydGFibGU9XCJzb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldC1zb3J0VHlwZT1cInNvcnRUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgbGV0LW9uVHJpZ2dlclNvcnQ9XCJvblRyaWdnZXJTb3J0XCJcclxuICAgICAgICAgICAgICAgICAgbGV0LW9uVHJpZ2dlclJlc2V0U29ydD1cIm9uVHJpZ2dlclJlc2V0U29ydFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9faGVhZGVyLXRlbXBsYXRlLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFyZC1zb3J0YWJsZV09XCJzb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFyZC1ub25zb3J0YWJsZV09XCIhc29ydGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChzb3J0YWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcmQtdGFibGVfX2hlYWRlci1jb250ZW50LWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRyaWdnZXJTb3J0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLkVzYyk9XCJvblRyaWdnZXJSZXNldFNvcnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtdGFibGVfX2hlYWRlci1jb250ZW50XCI+e3sgY29udGVudCB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNvcnRUeXBlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZC10YWJsZV9faGVhZGVyLXNvcnQtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzb3J0VHlwZSA9PT0gJ2FzY2VuZGluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFyZC1pY29uPnNvdXRoPC9hcmQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHNvcnRUeXBlID09PSAnZGVzY2VuZGluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFyZC1pY29uPm5vcnRoPC9hcmQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJkLXRhYmxlX19oZWFkZXItY29udGVudC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZC10YWJsZV9faGVhZGVyLWNvbnRlbnRcIj57eyBjb250ZW50IH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0SGVhZGVyVGVtcGxhdGUoY2VsbC5jZWxsKCkuaGVhZGVyKSA/PyBkZWZhdWx0SGVhZGVyQ2VsbFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImdldEhlYWRlckNvbnRleHQoY2VsbC5jZWxsKCksICRpbmRleClcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICB9XHJcbiAgICAgIDwvdHI+XHJcbiAgICB9XHJcbiAgICA8dHIgY2xhc3M9XCJhcmQtdGFibGVfX3Byb2dyZXNzLWJhci1yb3dcIj5cclxuICAgICAgPHRoXHJcbiAgICAgICAgY2xhc3M9XCJhcmQtdGFibGVfX3Byb2dyZXNzLWJhci1jZWxsXCJcclxuICAgICAgICBjb2xzcGFuPVwiOTk5OVwiXHJcbiAgICAgID5cclxuICAgICAgICBAaWYgKGlzTG9hZGluZygpKSB7XHJcbiAgICAgICAgICA8YXJkLXByb2dyZXNzLWJhclxyXG4gICAgICAgICAgICBbdmFsdWVdPVwibG9hZGluZ1Byb2dyZXNzKClcIlxyXG4gICAgICAgICAgICBbYnVmZmVyVmFsdWVdPVwibG9hZGluZ1Byb2dyZXNzQnVmZmVyKClcIlxyXG4gICAgICAgICAgICBbbW9kZV09XCJsb2FkaW5nQmFyTW9kZSgpXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cImxvYWRpbmdCYXJDb2xvcigpXCJcclxuICAgICAgICAgICAgdmFyaWFudD1cInNoYXJwXCJcclxuICAgICAgICAgICAgaGlkZVZhbHVlXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIH1cclxuICAgICAgPC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90aGVhZD5cclxuICA8dGJvZHkgY2xhc3M9XCJhcmQtdGFibGVfX2JvZHlcIj5cclxuICAgIEBmb3IgKHJvdyBvZiBkYXRhUm93cygpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgQGlmIChyb3cuaXNFbXB0eSgpKSB7XHJcbiAgICAgICAgPHRyIGNsYXNzPVwiYXJkLXRhYmxlX19lbXB0eS1yb3dcIj5cclxuICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9fZW1wdHktY2VsbFwiXHJcbiAgICAgICAgICAgIGNvbHNwYW49XCI5OTk5XCJcclxuICAgICAgICAgID48L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDx0clxyXG4gICAgICAgICAgY2xhc3M9XCJhcmQtdGFibGVfX2JvZHktcm93XCJcclxuICAgICAgICAgIFtjbGFzcy5hcmQtdGFibGVfX3NlbGVjdGVkLXJvd109XCJyb3cuc2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICBbY2xhc3MuYXJkLXRhYmxlX19oaWdobGlnaHRlZC1yb3ddPVwicm93LmhpZ2hsaWdodGVkKClcIlxyXG4gICAgICAgICAgW2NsYXNzLmFyZC10YWJsZV9fZGlzYWJsZWQtcm93XT1cInJvdy5kaXNhYmxlZCgpXCJcclxuICAgICAgICAgIFtjbGFzcy5hcmQtdGFibGVfX2JvbGQtcm93XT1cInJvdy5ib2xkKClcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2socm93LCAkZXZlbnQpXCJcclxuICAgICAgICAgIChtb3VzZW92ZXIpPVwib25Sb3dNb3VzZU92ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJvblJvd01vdXNlRW50ZXIocm93LmluZGV4KCksICRldmVudClcIlxyXG4gICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Sb3dNb3VzZUxlYXZlKHJvdy5pbmRleCgpLCAkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBAZm9yIChjZWxsIG9mIHJvdy5kYXRhKCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxUbXA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhcmQtdGFibGVfX2NlbGwtY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZV09XCJnZXRDZWxsU3R5bGUocm93LmRhdGFDb2x1bW5zKClbJGluZGV4XSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIEBpZiAoaXNDZWxsQ2hlY2tib3goY2VsbCkpIHtcclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgI2RlZmF1bHRDaGVja2JveFRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0LWlzQ2hlY2tlZFxyXG4gICAgICAgICAgICAgICAgICAgIGxldC1vbkNoYW5nZT1cIm9uQ2hhbmdlXCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQtZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8YXJkLWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwiaXNMb2FkaW5nKCkgPyAtMSA6IHRhYkluZGV4KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImlzQ2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiY29sb3IoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja2JveFRlbXBsYXRlKCkgPz8gZGVmYXVsdENoZWNrYm94VGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJnZXRDaGVja2JveENvbnRleHQocm93LmluZGV4KCkpXCJcclxuICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgICAjZGVmYXVsdENlbGxUZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIGxldC1jb250ZW50XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBjb250ZW50IH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRDZWxsVGVtcGxhdGUocm93LmRhdGFDb2x1bW5zKClbJGluZGV4XS50ZW1wbGF0ZSkgPz8gZGVmYXVsdENlbGxUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjZWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICBAaWYgKCFyb3cuZGF0YUNvbHVtbnMoKVskaW5kZXhdLmlzUm93SGVhZGVyKSB7XHJcbiAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFyZC10YWJsZV9fYm9keS1jZWxsXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvdy5kYXRhQ29sdW1ucygpWyRpbmRleF0uY2VsbENsYXNzXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5hcmQtdGFibGVfX2NoZWNrYm94LWNlbGxdPVwiaXNDZWxsQ2hlY2tib3goY2VsbClcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjZWxsVG1wXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJkLXRhYmxlX19ib2R5LWNlbGwgYXJkLXRhYmxlX19yb3ctaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgIHNjb3BlPVwicm93XCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvdy5kYXRhQ29sdW1ucygpWyRpbmRleF0uY2VsbENsYXNzXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5hcmQtdGFibGVfX2NoZWNrYm94LWNlbGxdPVwiaXNDZWxsQ2hlY2tib3goY2VsbClcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjZWxsVG1wXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvdGJvZHk+XHJcbiAgQGlmIChjYW5EaXNwbGF5UGFnaW5hdGlvbigpKSB7XHJcbiAgICA8dGZvb3QgY2xhc3M9XCJhcmQtdGFibGVfX2Zvb3RcIj5cclxuICAgICAgPHRyIGNsYXNzPVwiYXJkLXRhYmxlX19mb290LXJvd1wiPlxyXG4gICAgICAgIDx0ZFxyXG4gICAgICAgICAgY2xhc3M9XCJhcmQtdGFibGVfX3BhZ2luYXRpb24tY2VsbFwiXHJcbiAgICAgICAgICBjb2xzcGFuPVwiOTk5OVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGFyZC10YWJsZS1wYWdpbmF0aW9uXHJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInBhZ2luYXRpb25PcHRpb25zKClcIlxyXG4gICAgICAgICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zKCkhXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2luYXRpb25EaXNhYmxlZCgpXCJcclxuICAgICAgICAgICAgWyhpdGVtc1BlclBhZ2UpXT1cIml0ZW1zUGVyUGFnZVwiXHJcbiAgICAgICAgICAgIFsocGFnZSldPVwicGFnZVwiXHJcbiAgICAgICAgICAgIFthbGlnbl09XCJwYWdpbmF0aW9uQWxpZ24oKVwiXHJcbiAgICAgICAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nKClcIlxyXG4gICAgICAgICAgICBbaXRlbXNQZXJQYWdlVGV4dF09XCJpdGVtc1BlclBhZ2VUZXh0KClcIlxyXG4gICAgICAgICAgICBbY3VycmVudEl0ZW1zRm9ybWF0Rm5dPVwiY3VycmVudEl0ZW1zRm9ybWF0Rm4oKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L3Rmb290PlxyXG4gIH1cclxuPC90YWJsZT5cclxuIl19
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
import { _focusableComponentDefaults } from '../_internal/focusable-component';
|
|
3
|
-
import { ProgressBarMode } from '../progress-bar';
|
|
4
|
-
import { PaginationAlign } from '../table-pagination';
|
|
5
|
-
import { TableAlignType, TableAppearance, TablePaginationStrategy, TableVariant } from '../table/table.types';
|
|
6
|
-
import { ComponentColor } from '../types/colors.types';
|
|
7
|
-
export const _tableDefaults = {
|
|
8
|
-
..._focusableComponentDefaults,
|
|
9
|
-
rowDisabledFrom: 'disabled',
|
|
10
|
-
rowBoldFrom: 'bold',
|
|
11
|
-
invertRowDisabled: false,
|
|
12
|
-
invertRowBold: false,
|
|
13
|
-
selectableRows: false,
|
|
14
|
-
maxSelectedItems: undefined,
|
|
15
|
-
clickableRows: false,
|
|
16
|
-
caption: undefined,
|
|
17
|
-
isLoading: false,
|
|
18
|
-
loadingProgress: 0,
|
|
19
|
-
loadingProgressBuffer: 0,
|
|
20
|
-
loadingBarMode: ProgressBarMode.Determinate,
|
|
21
|
-
loadingBarColor: ComponentColor.Secondary,
|
|
22
|
-
appearance: TableAppearance.Strong,
|
|
23
|
-
variant: TableVariant.Rounded,
|
|
24
|
-
color: ComponentColor.Primary,
|
|
25
|
-
align: TableAlignType.CenterLeft,
|
|
26
|
-
headerAlign: TableAlignType.CenterLeft,
|
|
27
|
-
compact: false,
|
|
28
|
-
zebra: false,
|
|
29
|
-
stickyHeader: false,
|
|
30
|
-
paginated: false,
|
|
31
|
-
paginationStrategy: TablePaginationStrategy.Noop,
|
|
32
|
-
paginationOptions: [10, 25, 50],
|
|
33
|
-
totalItems: undefined,
|
|
34
|
-
paginationColor: ComponentColor.None,
|
|
35
|
-
paginationAlign: PaginationAlign.Split,
|
|
36
|
-
itemsPerPageText: 'Items per page:',
|
|
37
|
-
currentItemsFormatFn: ({ currentItemsFrom, currentItemsTo, totalItems }) => `${currentItemsFrom} – ${currentItemsTo} of ${totalItems}`,
|
|
38
|
-
pageFillRemaining: false,
|
|
39
|
-
paginationDisabled: false,
|
|
40
|
-
useFirstLastButtons: false,
|
|
41
|
-
itemsPerPage: 50,
|
|
42
|
-
page: 1,
|
|
43
|
-
treatDataSourceAsString: false,
|
|
44
|
-
};
|
|
45
|
-
export const ARD_TABLE_DEFAULTS = new InjectionToken('ard-table-defaults', {
|
|
46
|
-
factory: () => ({
|
|
47
|
-
..._tableDefaults,
|
|
48
|
-
}),
|
|
49
|
-
});
|
|
50
|
-
export function provideTableDefaults(config) {
|
|
51
|
-
return { provide: ARD_TABLE_DEFAULTS, useValue: { ..._tableDefaults, ...config } };
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLmRlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLDJCQUEyQixFQUErQixNQUFNLGtDQUFrQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQXdCLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXlDdkQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFxQjtJQUM5QyxHQUFHLDJCQUEyQjtJQUM5QixlQUFlLEVBQUUsVUFBVTtJQUMzQixXQUFXLEVBQUUsTUFBTTtJQUNuQixpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGdCQUFnQixFQUFFLFNBQVM7SUFDM0IsYUFBYSxFQUFFLEtBQUs7SUFDcEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsZUFBZSxFQUFFLENBQUM7SUFDbEIscUJBQXFCLEVBQUUsQ0FBQztJQUN4QixjQUFjLEVBQUUsZUFBZSxDQUFDLFdBQVc7SUFDM0MsZUFBZSxFQUFFLGNBQWMsQ0FBQyxTQUFTO0lBQ3pDLFVBQVUsRUFBRSxlQUFlLENBQUMsTUFBTTtJQUNsQyxPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU87SUFDN0IsS0FBSyxFQUFFLGNBQWMsQ0FBQyxPQUFPO0lBQzdCLEtBQUssRUFBRSxjQUFjLENBQUMsVUFBVTtJQUNoQyxXQUFXLEVBQUUsY0FBYyxDQUFDLFVBQVU7SUFDdEMsT0FBTyxFQUFFLEtBQUs7SUFDZCxLQUFLLEVBQUUsS0FBSztJQUNaLFlBQVksRUFBRSxLQUFLO0lBQ25CLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLGtCQUFrQixFQUFFLHVCQUF1QixDQUFDLElBQUk7SUFDaEQsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMvQixVQUFVLEVBQUUsU0FBUztJQUNyQixlQUFlLEVBQUUsY0FBYyxDQUFDLElBQUk7SUFDcEMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxLQUFLO0lBQ3RDLGdCQUFnQixFQUFFLGlCQUFpQjtJQUNuQyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FDekUsR0FBRyxnQkFBZ0IsTUFBTSxjQUFjLE9BQU8sVUFBVSxFQUFFO0lBQzVELGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsa0JBQWtCLEVBQUUsS0FBSztJQUN6QixtQkFBbUIsRUFBRSxLQUFLO0lBQzFCLFlBQVksRUFBRSxFQUFFO0lBQ2hCLElBQUksRUFBRSxDQUFDO0lBQ1AsdUJBQXVCLEVBQUUsS0FBSztDQUMvQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQW1CLG9CQUFvQixFQUFFO0lBQzNGLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsR0FBRyxjQUFjO0tBQ2xCLENBQUM7Q0FDSCxDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsTUFBaUM7SUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7QUFDckYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBfZm9jdXNhYmxlQ29tcG9uZW50RGVmYXVsdHMsIF9Gb2N1c2FibGVDb21wb25lbnREZWZhdWx0cyB9IGZyb20gJy4uL19pbnRlcm5hbC9mb2N1c2FibGUtY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNb2RlIH0gZnJvbSAnLi4vcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgQ3VycmVudEl0ZW1zRm9ybWF0Rm4sIFBhZ2luYXRpb25BbGlnbiB9IGZyb20gJy4uL3RhYmxlLXBhZ2luYXRpb24nO1xyXG5pbXBvcnQgeyBUYWJsZUFsaWduVHlwZSwgVGFibGVBcHBlYXJhbmNlLCBUYWJsZVBhZ2luYXRpb25TdHJhdGVneSwgVGFibGVWYXJpYW50IH0gZnJvbSAnLi4vdGFibGUvdGFibGUudHlwZXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb2xvciB9IGZyb20gJy4uL3R5cGVzL2NvbG9ycy50eXBlcyc7XHJcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFyZFRhYmxlRGVmYXVsdHMgZXh0ZW5kcyBfRm9jdXNhYmxlQ29tcG9uZW50RGVmYXVsdHMge1xyXG4gIHJvd0Rpc2FibGVkRnJvbTogc3RyaW5nO1xyXG4gIHJvd0JvbGRGcm9tOiBzdHJpbmc7XHJcbiAgaW52ZXJ0Um93RGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgaW52ZXJ0Um93Qm9sZDogYm9vbGVhbjtcclxuICBzZWxlY3RhYmxlUm93czogYm9vbGVhbjtcclxuICBtYXhTZWxlY3RlZEl0ZW1zOiBOdWxsYWJsZTxudW1iZXI+O1xyXG4gIGNsaWNrYWJsZVJvd3M6IGJvb2xlYW47XHJcbiAgY2FwdGlvbjogTnVsbGFibGU8c3RyaW5nPjtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW47XHJcbiAgbG9hZGluZ1Byb2dyZXNzOiBudW1iZXI7XHJcbiAgbG9hZGluZ1Byb2dyZXNzQnVmZmVyOiBudW1iZXI7XHJcbiAgbG9hZGluZ0Jhck1vZGU6IFByb2dyZXNzQmFyTW9kZTtcclxuICBsb2FkaW5nQmFyQ29sb3I6IENvbXBvbmVudENvbG9yO1xyXG4gIGFwcGVhcmFuY2U6IFRhYmxlQXBwZWFyYW5jZTtcclxuICB2YXJpYW50OiBUYWJsZVZhcmlhbnQ7XHJcbiAgY29sb3I6IENvbXBvbmVudENvbG9yO1xyXG4gIGFsaWduOiBUYWJsZUFsaWduVHlwZTtcclxuICBoZWFkZXJBbGlnbjogVGFibGVBbGlnblR5cGU7XHJcbiAgY29tcGFjdDogYm9vbGVhbjtcclxuICB6ZWJyYTogYm9vbGVhbjtcclxuICBzdGlja3lIZWFkZXI6IGJvb2xlYW47XHJcbiAgcGFnaW5hdGVkOiBib29sZWFuO1xyXG4gIHBhZ2luYXRpb25TdHJhdGVneTogVGFibGVQYWdpbmF0aW9uU3RyYXRlZ3k7XHJcbiAgcGFnaW5hdGlvbk9wdGlvbnM6IG51bWJlcltdIHwgeyB2YWx1ZTogbnVtYmVyOyBsYWJlbDogc3RyaW5nIH1bXTtcclxuICB0b3RhbEl0ZW1zOiBOdWxsYWJsZTxudW1iZXI+O1xyXG4gIHBhZ2luYXRpb25Db2xvcjogQ29tcG9uZW50Q29sb3I7XHJcbiAgcGFnaW5hdGlvbkFsaWduOiBQYWdpbmF0aW9uQWxpZ247XHJcbiAgaXRlbXNQZXJQYWdlVGV4dDogc3RyaW5nO1xyXG4gIGN1cnJlbnRJdGVtc0Zvcm1hdEZuOiBDdXJyZW50SXRlbXNGb3JtYXRGbjtcclxuICBwYWdlRmlsbFJlbWFpbmluZzogYm9vbGVhbjtcclxuICBwYWdpbmF0aW9uRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgdXNlRmlyc3RMYXN0QnV0dG9uczogYm9vbGVhbjtcclxuICBpdGVtc1BlclBhZ2U6IG51bWJlcjtcclxuICBwYWdlOiBudW1iZXI7XHJcbiAgdHJlYXREYXRhU291cmNlQXNTdHJpbmc6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBfdGFibGVEZWZhdWx0czogQXJkVGFibGVEZWZhdWx0cyA9IHtcclxuICAuLi5fZm9jdXNhYmxlQ29tcG9uZW50RGVmYXVsdHMsXHJcbiAgcm93RGlzYWJsZWRGcm9tOiAnZGlzYWJsZWQnLFxyXG4gIHJvd0JvbGRGcm9tOiAnYm9sZCcsXHJcbiAgaW52ZXJ0Um93RGlzYWJsZWQ6IGZhbHNlLFxyXG4gIGludmVydFJvd0JvbGQ6IGZhbHNlLFxyXG4gIHNlbGVjdGFibGVSb3dzOiBmYWxzZSxcclxuICBtYXhTZWxlY3RlZEl0ZW1zOiB1bmRlZmluZWQsXHJcbiAgY2xpY2thYmxlUm93czogZmFsc2UsXHJcbiAgY2FwdGlvbjogdW5kZWZpbmVkLFxyXG4gIGlzTG9hZGluZzogZmFsc2UsXHJcbiAgbG9hZGluZ1Byb2dyZXNzOiAwLFxyXG4gIGxvYWRpbmdQcm9ncmVzc0J1ZmZlcjogMCxcclxuICBsb2FkaW5nQmFyTW9kZTogUHJvZ3Jlc3NCYXJNb2RlLkRldGVybWluYXRlLFxyXG4gIGxvYWRpbmdCYXJDb2xvcjogQ29tcG9uZW50Q29sb3IuU2Vjb25kYXJ5LFxyXG4gIGFwcGVhcmFuY2U6IFRhYmxlQXBwZWFyYW5jZS5TdHJvbmcsXHJcbiAgdmFyaWFudDogVGFibGVWYXJpYW50LlJvdW5kZWQsXHJcbiAgY29sb3I6IENvbXBvbmVudENvbG9yLlByaW1hcnksXHJcbiAgYWxpZ246IFRhYmxlQWxpZ25UeXBlLkNlbnRlckxlZnQsXHJcbiAgaGVhZGVyQWxpZ246IFRhYmxlQWxpZ25UeXBlLkNlbnRlckxlZnQsXHJcbiAgY29tcGFjdDogZmFsc2UsXHJcbiAgemVicmE6IGZhbHNlLFxyXG4gIHN0aWNreUhlYWRlcjogZmFsc2UsXHJcbiAgcGFnaW5hdGVkOiBmYWxzZSxcclxuICBwYWdpbmF0aW9uU3RyYXRlZ3k6IFRhYmxlUGFnaW5hdGlvblN0cmF0ZWd5Lk5vb3AsXHJcbiAgcGFnaW5hdGlvbk9wdGlvbnM6IFsxMCwgMjUsIDUwXSxcclxuICB0b3RhbEl0ZW1zOiB1bmRlZmluZWQsXHJcbiAgcGFnaW5hdGlvbkNvbG9yOiBDb21wb25lbnRDb2xvci5Ob25lLFxyXG4gIHBhZ2luYXRpb25BbGlnbjogUGFnaW5hdGlvbkFsaWduLlNwbGl0LFxyXG4gIGl0ZW1zUGVyUGFnZVRleHQ6ICdJdGVtcyBwZXIgcGFnZTonLFxyXG4gIGN1cnJlbnRJdGVtc0Zvcm1hdEZuOiAoeyBjdXJyZW50SXRlbXNGcm9tLCBjdXJyZW50SXRlbXNUbywgdG90YWxJdGVtcyB9KSA9PlxyXG4gICAgYCR7Y3VycmVudEl0ZW1zRnJvbX0g4oCTICR7Y3VycmVudEl0ZW1zVG99IG9mICR7dG90YWxJdGVtc31gLFxyXG4gIHBhZ2VGaWxsUmVtYWluaW5nOiBmYWxzZSxcclxuICBwYWdpbmF0aW9uRGlzYWJsZWQ6IGZhbHNlLFxyXG4gIHVzZUZpcnN0TGFzdEJ1dHRvbnM6IGZhbHNlLFxyXG4gIGl0ZW1zUGVyUGFnZTogNTAsXHJcbiAgcGFnZTogMSxcclxuICB0cmVhdERhdGFTb3VyY2VBc1N0cmluZzogZmFsc2UsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgQVJEX1RBQkxFX0RFRkFVTFRTID0gbmV3IEluamVjdGlvblRva2VuPEFyZFRhYmxlRGVmYXVsdHM+KCdhcmQtdGFibGUtZGVmYXVsdHMnLCB7XHJcbiAgZmFjdG9yeTogKCkgPT4gKHtcclxuICAgIC4uLl90YWJsZURlZmF1bHRzLFxyXG4gIH0pLFxyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVGFibGVEZWZhdWx0cyhjb25maWc6IFBhcnRpYWw8QXJkVGFibGVEZWZhdWx0cz4pOiBQcm92aWRlciB7XHJcbiAgcmV0dXJuIHsgcHJvdmlkZTogQVJEX1RBQkxFX0RFRkFVTFRTLCB1c2VWYWx1ZTogeyAuLi5fdGFibGVEZWZhdWx0cywgLi4uY29uZmlnIH0gfTtcclxufVxyXG4iXX0=
|