@ardium-ui/ui 4.4.2 → 5.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ardium-ui-ui.mjs +2482 -2400
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/_internal/boolean-component.d.ts +1 -1
- package/lib/_internal/disablable-component.d.ts +1 -1
- package/lib/_internal/focusable-component.d.ts +1 -1
- package/lib/_internal/form-field-component.d.ts +1 -1
- package/lib/_internal/ngmodel-component.d.ts +1 -1
- package/lib/_internal/selectable-list-component.d.ts +1 -1
- package/lib/_internal/utils/date.utils.d.ts +3 -0
- package/lib/buttons/_button-base.d.ts +1 -1
- package/lib/calendar/calendar.component.d.ts +8 -2
- package/lib/file-inputs/file-input-base.d.ts +1 -1
- package/lib/form-field/form-field-base.d.ts +1 -1
- package/lib/inputs/_simple-input-base.d.ts +3 -3
- package/lib/inputs/autocomplete-input/autocomplete-input.component.d.ts +66 -0
- package/lib/inputs/autocomplete-input/autocomplete-input.defaults.d.ts +15 -0
- package/lib/inputs/autocomplete-input/autocomplete-input.directives.d.ts +33 -0
- package/lib/inputs/autocomplete-input/autocomplete-input.module.d.ts +13 -0
- package/lib/inputs/autocomplete-input/index.d.ts +3 -0
- package/lib/inputs/date-input/date-input.component.d.ts +5 -2
- package/lib/inputs/input/index.d.ts +2 -1
- package/lib/inputs/input/input.component.d.ts +3 -56
- package/lib/inputs/input/input.defaults.d.ts +1 -10
- package/lib/inputs/input/input.directives.d.ts +0 -13
- package/lib/inputs/input/input.module.d.ts +3 -5
- package/lib/inputs/input-utils.d.ts +8 -8
- package/lib/option/option.component.d.ts +1 -1
- package/lib/slider/abstract-slider.d.ts +1 -1
- package/package.json +1 -3
- package/prebuilt-themes/default/inputs/{simple-input.css → autocomplete-input.css} +40 -15
- package/prebuilt-themes/default/inputs/autocomplete-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/input.css +0 -25
- package/prebuilt-themes/default/inputs/input.css.map +1 -1
- package/public-api.d.ts +1 -1
- package/themes/default/inputs/autocomplete-input.scss +46 -0
- package/themes/default/inputs/input.scss +0 -34
- package/esm2022/ardium-ui-ui.mjs +0 -5
- package/esm2022/lib/_internal/boolean-component.mjs +0 -95
- package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +0 -15
- package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +0 -18
- package/esm2022/lib/_internal/disablable-component.mjs +0 -51
- package/esm2022/lib/_internal/focusable-component.mjs +0 -85
- package/esm2022/lib/_internal/form-field-component.mjs +0 -33
- package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +0 -453
- package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +0 -370
- package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +0 -157
- package/esm2022/lib/_internal/models/pagination.model.mjs +0 -90
- package/esm2022/lib/_internal/models/queue.mjs +0 -59
- package/esm2022/lib/_internal/ngmodel-component.mjs +0 -101
- package/esm2022/lib/_internal/public-api.mjs +0 -2
- package/esm2022/lib/_internal/selectable-list-component.mjs +0 -271
- package/esm2022/lib/badge/badge.defaults.mjs +0 -20
- package/esm2022/lib/badge/badge.directive.mjs +0 -97
- package/esm2022/lib/badge/badge.module.mjs +0 -18
- package/esm2022/lib/badge/badge.types.mjs +0 -16
- package/esm2022/lib/badge/index.mjs +0 -5
- package/esm2022/lib/buttons/_button-base.defaults.mjs +0 -17
- package/esm2022/lib/buttons/_button-base.mjs +0 -26
- package/esm2022/lib/buttons/button/button.component.mjs +0 -38
- package/esm2022/lib/buttons/button/button.defaults.mjs +0 -17
- package/esm2022/lib/buttons/button/button.module.mjs +0 -18
- package/esm2022/lib/buttons/button/index.mjs +0 -4
- package/esm2022/lib/buttons/fab/fab.component.mjs +0 -33
- package/esm2022/lib/buttons/fab/fab.defaults.mjs +0 -17
- package/esm2022/lib/buttons/fab/fab.module.mjs +0 -18
- package/esm2022/lib/buttons/fab/index.mjs +0 -4
- package/esm2022/lib/buttons/general-button.types.mjs +0 -55
- package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +0 -39
- package/esm2022/lib/buttons/icon-button/icon-button.defaults.mjs +0 -9
- package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +0 -18
- package/esm2022/lib/buttons/icon-button/index.mjs +0 -4
- package/esm2022/lib/calendar/calendar.component.mjs +0 -466
- package/esm2022/lib/calendar/calendar.defaults.mjs +0 -26
- package/esm2022/lib/calendar/calendar.directives.mjs +0 -107
- package/esm2022/lib/calendar/calendar.internal-directives.mjs +0 -22
- package/esm2022/lib/calendar/calendar.internal-types.mjs +0 -2
- package/esm2022/lib/calendar/calendar.module.mjs +0 -71
- package/esm2022/lib/calendar/calendar.types.mjs +0 -6
- package/esm2022/lib/calendar/index.mjs +0 -6
- package/esm2022/lib/calendar/views/days-view/days-view.component.mjs +0 -282
- package/esm2022/lib/calendar/views/days-view/days-view.helpers.mjs +0 -65
- package/esm2022/lib/calendar/views/months-view/months-view.component.mjs +0 -245
- package/esm2022/lib/calendar/views/months-view/months-view.helpers.mjs +0 -22
- package/esm2022/lib/calendar/views/years-view/years-view.component.mjs +0 -244
- package/esm2022/lib/calendar/views/years-view/years-view.helpers.mjs +0 -14
- package/esm2022/lib/card/card.children.mjs +0 -96
- package/esm2022/lib/card/card.component.mjs +0 -38
- package/esm2022/lib/card/card.defaults.mjs +0 -17
- package/esm2022/lib/card/card.module.mjs +0 -59
- package/esm2022/lib/card/card.types.mjs +0 -9
- package/esm2022/lib/card/index.mjs +0 -6
- package/esm2022/lib/checkbox/checkbox.component.mjs +0 -68
- package/esm2022/lib/checkbox/checkbox.defaults.mjs +0 -17
- package/esm2022/lib/checkbox/checkbox.directives.mjs +0 -14
- package/esm2022/lib/checkbox/checkbox.internal-directives.mjs +0 -15
- package/esm2022/lib/checkbox/checkbox.module.mjs +0 -20
- package/esm2022/lib/checkbox/checkbox.types.mjs +0 -6
- package/esm2022/lib/checkbox/index.mjs +0 -6
- package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +0 -116
- package/esm2022/lib/checkbox-list/checkbox-list.defaults.mjs +0 -25
- package/esm2022/lib/checkbox-list/checkbox-list.directives.mjs +0 -14
- package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +0 -21
- package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +0 -7
- package/esm2022/lib/checkbox-list/index.mjs +0 -6
- package/esm2022/lib/chip/chip.component.mjs +0 -36
- package/esm2022/lib/chip/chip.defaults.mjs +0 -20
- package/esm2022/lib/chip/chip.module.mjs +0 -21
- package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +0 -53
- package/esm2022/lib/chip/deletable-chip/deletable-chip.defaults.mjs +0 -17
- package/esm2022/lib/chip/index.mjs +0 -8
- package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +0 -53
- package/esm2022/lib/chip/selectable-chip/selectable-chip.defaults.mjs +0 -18
- package/esm2022/lib/dialog/dialog.component.mjs +0 -109
- package/esm2022/lib/dialog/dialog.defaults.mjs +0 -26
- package/esm2022/lib/dialog/dialog.directives.mjs +0 -25
- package/esm2022/lib/dialog/dialog.module.mjs +0 -21
- package/esm2022/lib/dialog/dialog.types.mjs +0 -10
- package/esm2022/lib/dialog/index.mjs +0 -6
- package/esm2022/lib/divider/divider.component.mjs +0 -19
- package/esm2022/lib/divider/divider.defaults.mjs +0 -13
- package/esm2022/lib/divider/divider.module.mjs +0 -18
- package/esm2022/lib/divider/index.mjs +0 -4
- package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +0 -112
- package/esm2022/lib/dropdown-panel/dropdown-panel.defaults.mjs +0 -17
- package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +0 -18
- package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +0 -10
- package/esm2022/lib/dropdown-panel/index.mjs +0 -5
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +0 -70
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.defaults.mjs +0 -18
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +0 -42
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +0 -52
- package/esm2022/lib/file-inputs/file-drop-area/index.mjs +0 -5
- package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +0 -120
- package/esm2022/lib/file-inputs/file-input/file-input.defaults.mjs +0 -23
- package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +0 -86
- package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +0 -55
- package/esm2022/lib/file-inputs/file-input/index.mjs +0 -5
- package/esm2022/lib/file-inputs/file-input-base.defaults.mjs +0 -8
- package/esm2022/lib/file-inputs/file-input-base.mjs +0 -356
- package/esm2022/lib/file-inputs/file-input-types.mjs +0 -8
- package/esm2022/lib/form-field/error/error.component.mjs +0 -17
- package/esm2022/lib/form-field/error/error.directive.mjs +0 -17
- package/esm2022/lib/form-field/form-field-base.mjs +0 -53
- package/esm2022/lib/form-field/form-field-child.token.mjs +0 -3
- package/esm2022/lib/form-field/form-field-native-inputs.mjs +0 -80
- package/esm2022/lib/form-field/form-field.component.mjs +0 -12
- package/esm2022/lib/form-field/form-field.defaults.mjs +0 -17
- package/esm2022/lib/form-field/form-field.module.mjs +0 -49
- package/esm2022/lib/form-field/hint/hint.component.mjs +0 -17
- package/esm2022/lib/form-field/hint/hint.directive.mjs +0 -30
- package/esm2022/lib/form-field/horizontal-form-field.component.mjs +0 -12
- package/esm2022/lib/form-field/index.mjs +0 -10
- package/esm2022/lib/form-field/label/label.component.mjs +0 -27
- package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +0 -58
- package/esm2022/lib/form-field-frame/form-field-frame.defaults.mjs +0 -18
- package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +0 -25
- package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +0 -19
- package/esm2022/lib/form-field-frame/index.mjs +0 -5
- package/esm2022/lib/icon/icon.component.mjs +0 -52
- package/esm2022/lib/icon/icon.defaults.mjs +0 -17
- package/esm2022/lib/icon/icon.module.mjs +0 -19
- package/esm2022/lib/icon/icon.pipe.mjs +0 -18
- package/esm2022/lib/icon/index.mjs +0 -5
- package/esm2022/lib/inputs/_simple-input-base.mjs +0 -153
- package/esm2022/lib/inputs/date-input/date-input.component.mjs +0 -375
- package/esm2022/lib/inputs/date-input/date-input.defaults.mjs +0 -38
- package/esm2022/lib/inputs/date-input/date-input.directive.mjs +0 -163
- package/esm2022/lib/inputs/date-input/date-input.module.mjs +0 -108
- package/esm2022/lib/inputs/date-input/date-input.serializers.mjs +0 -49
- package/esm2022/lib/inputs/date-input/date-input.types.mjs +0 -5
- package/esm2022/lib/inputs/date-input/index.mjs +0 -6
- package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +0 -265
- package/esm2022/lib/inputs/digit-input/digit-input.defaults.mjs +0 -24
- package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +0 -267
- package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +0 -19
- package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +0 -15
- package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +0 -8
- package/esm2022/lib/inputs/digit-input/index.mjs +0 -5
- package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +0 -180
- package/esm2022/lib/inputs/hex-input/hex-input.defaults.mjs +0 -26
- package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +0 -36
- package/esm2022/lib/inputs/hex-input/hex-input.model.mjs +0 -97
- package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +0 -37
- package/esm2022/lib/inputs/hex-input/index.mjs +0 -5
- package/esm2022/lib/inputs/input/index.mjs +0 -4
- package/esm2022/lib/inputs/input/input.component.mjs +0 -278
- package/esm2022/lib/inputs/input/input.defaults.mjs +0 -21
- package/esm2022/lib/inputs/input/input.directives.mjs +0 -58
- package/esm2022/lib/inputs/input/input.module.mjs +0 -61
- package/esm2022/lib/inputs/input-transformers.mjs +0 -66
- package/esm2022/lib/inputs/input-types.mjs +0 -6
- package/esm2022/lib/inputs/input-utils.mjs +0 -186
- package/esm2022/lib/inputs/number-input/index.mjs +0 -5
- package/esm2022/lib/inputs/number-input/number-input.component.mjs +0 -250
- package/esm2022/lib/inputs/number-input/number-input.defaults.mjs +0 -27
- package/esm2022/lib/inputs/number-input/number-input.directives.mjs +0 -14
- package/esm2022/lib/inputs/number-input/number-input.module.mjs +0 -21
- package/esm2022/lib/inputs/password-input/index.mjs +0 -6
- package/esm2022/lib/inputs/password-input/password-input.component.mjs +0 -167
- package/esm2022/lib/inputs/password-input/password-input.defaults.mjs +0 -24
- package/esm2022/lib/inputs/password-input/password-input.directives.mjs +0 -49
- package/esm2022/lib/inputs/password-input/password-input.module.mjs +0 -41
- package/esm2022/lib/inputs/password-input/password-input.types.mjs +0 -2
- package/esm2022/lib/inputs/simple-input/index.mjs +0 -5
- package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +0 -50
- package/esm2022/lib/inputs/simple-input/simple-input.defaults.mjs +0 -25
- package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +0 -36
- package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +0 -37
- package/esm2022/lib/kbd/index.mjs +0 -6
- package/esm2022/lib/kbd/kbd.component.mjs +0 -30
- package/esm2022/lib/kbd/kbd.defaults.mjs +0 -15
- package/esm2022/lib/kbd/kbd.directive.mjs +0 -33
- package/esm2022/lib/kbd/kbd.module.mjs +0 -20
- package/esm2022/lib/kbd/kbd.pipe.mjs +0 -21
- package/esm2022/lib/kbd-shortcut/index.mjs +0 -4
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +0 -36
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.defaults.mjs +0 -8
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +0 -19
- package/esm2022/lib/modal/index.mjs +0 -5
- package/esm2022/lib/modal/modal.component.mjs +0 -95
- package/esm2022/lib/modal/modal.defaults.mjs +0 -20
- package/esm2022/lib/modal/modal.directives.mjs +0 -14
- package/esm2022/lib/modal/modal.module.mjs +0 -22
- package/esm2022/lib/option/index.mjs +0 -3
- package/esm2022/lib/option/option.component.mjs +0 -55
- package/esm2022/lib/option/option.module.mjs +0 -18
- package/esm2022/lib/progress-bar/index.mjs +0 -6
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +0 -58
- package/esm2022/lib/progress-bar/progress-bar.defaults.mjs +0 -21
- package/esm2022/lib/progress-bar/progress-bar.directive.mjs +0 -14
- package/esm2022/lib/progress-bar/progress-bar.module.mjs +0 -19
- package/esm2022/lib/progress-bar/progress-bar.types.mjs +0 -19
- package/esm2022/lib/progress-circle/index.mjs +0 -6
- package/esm2022/lib/progress-circle/progress-circle.component.mjs +0 -45
- package/esm2022/lib/progress-circle/progress-circle.defaults.mjs +0 -21
- package/esm2022/lib/progress-circle/progress-circle.directive.mjs +0 -14
- package/esm2022/lib/progress-circle/progress-circle.module.mjs +0 -19
- package/esm2022/lib/progress-circle/progress-circle.types.mjs +0 -10
- package/esm2022/lib/radio/index.mjs +0 -5
- package/esm2022/lib/radio/radio/radio.component.mjs +0 -119
- package/esm2022/lib/radio/radio/radio.defaults.mjs +0 -16
- package/esm2022/lib/radio/radio-group.component.mjs +0 -203
- package/esm2022/lib/radio/radio.module.mjs +0 -19
- package/esm2022/lib/search-functions.mjs +0 -64
- package/esm2022/lib/segment/index.mjs +0 -6
- package/esm2022/lib/segment/segment.component.mjs +0 -125
- package/esm2022/lib/segment/segment.defaults.mjs +0 -26
- package/esm2022/lib/segment/segment.directives.mjs +0 -14
- package/esm2022/lib/segment/segment.module.mjs +0 -19
- package/esm2022/lib/segment/segment.types.mjs +0 -13
- package/esm2022/lib/select/index.mjs +0 -6
- package/esm2022/lib/select/select.component.mjs +0 -836
- package/esm2022/lib/select/select.defaults.mjs +0 -53
- package/esm2022/lib/select/select.directive.mjs +0 -171
- package/esm2022/lib/select/select.module.mjs +0 -112
- package/esm2022/lib/select/select.types.mjs +0 -2
- package/esm2022/lib/slide-toggle/index.mjs +0 -5
- package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +0 -43
- package/esm2022/lib/slide-toggle/slide-toggle.defaults.mjs +0 -21
- package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +0 -18
- package/esm2022/lib/slide-toggle/slide-toggle.types.mjs +0 -5
- package/esm2022/lib/slider/abstract-slider.mjs +0 -251
- package/esm2022/lib/slider/index.mjs +0 -8
- package/esm2022/lib/slider/range-slider/range-slider.component.mjs +0 -151
- package/esm2022/lib/slider/range-slider/range-slider.module.mjs +0 -18
- package/esm2022/lib/slider/slider.component.mjs +0 -100
- package/esm2022/lib/slider/slider.defaults.mjs +0 -14
- package/esm2022/lib/slider/slider.directive.mjs +0 -16
- package/esm2022/lib/slider/slider.module.mjs +0 -20
- package/esm2022/lib/slider/slider.types.mjs +0 -10
- package/esm2022/lib/snackbar/index.mjs +0 -5
- package/esm2022/lib/snackbar/snackbar-ref.mjs +0 -51
- package/esm2022/lib/snackbar/snackbar.component.mjs +0 -48
- package/esm2022/lib/snackbar/snackbar.service.mjs +0 -224
- package/esm2022/lib/snackbar/snackbar.token.mjs +0 -26
- package/esm2022/lib/snackbar/snackbar.types.mjs +0 -25
- package/esm2022/lib/spinner/index.mjs +0 -4
- package/esm2022/lib/spinner/spinner.component.mjs +0 -19
- package/esm2022/lib/spinner/spinner.defaults.mjs +0 -14
- package/esm2022/lib/spinner/spinner.module.mjs +0 -18
- package/esm2022/lib/star/index.mjs +0 -6
- package/esm2022/lib/star/rating-display/index.mjs +0 -6
- package/esm2022/lib/star/rating-display/rating-display.component.mjs +0 -71
- package/esm2022/lib/star/rating-display/rating-display.defaults.mjs +0 -16
- package/esm2022/lib/star/rating-display/rating-display.directives.mjs +0 -16
- package/esm2022/lib/star/rating-display/rating-display.module.mjs +0 -20
- package/esm2022/lib/star/rating-display/rating-display.types.mjs +0 -2
- package/esm2022/lib/star/rating-input/index.mjs +0 -6
- package/esm2022/lib/star/rating-input/rating-input.component.mjs +0 -191
- package/esm2022/lib/star/rating-input/rating-input.defaults.mjs +0 -17
- package/esm2022/lib/star/rating-input/rating-input.directives.mjs +0 -16
- package/esm2022/lib/star/rating-input/rating-input.module.mjs +0 -20
- package/esm2022/lib/star/rating-input/rating-input.types.mjs +0 -2
- package/esm2022/lib/star/star-button/index.mjs +0 -6
- package/esm2022/lib/star/star-button/star-button.component.mjs +0 -55
- package/esm2022/lib/star/star-button/star-button.defaults.mjs +0 -18
- package/esm2022/lib/star/star-button/star-button.directives.mjs +0 -16
- package/esm2022/lib/star/star-button/star-button.module.mjs +0 -20
- package/esm2022/lib/star/star-button/star-button.types.mjs +0 -2
- package/esm2022/lib/star/star.component.mjs +0 -36
- package/esm2022/lib/star/star.defaults.mjs +0 -15
- package/esm2022/lib/star/star.directives.mjs +0 -16
- package/esm2022/lib/star/star.module.mjs +0 -20
- package/esm2022/lib/star/star.types.mjs +0 -23
- package/esm2022/lib/statebox/index.mjs +0 -4
- package/esm2022/lib/statebox/statebox.component.mjs +0 -114
- package/esm2022/lib/statebox/statebox.defaults.mjs +0 -20
- package/esm2022/lib/statebox/statebox.module.mjs +0 -18
- package/esm2022/lib/statebox/statebox.types.mjs +0 -2
- package/esm2022/lib/tabber/index.mjs +0 -6
- package/esm2022/lib/tabber/tab/tab.component.mjs +0 -44
- package/esm2022/lib/tabber/tab/tab.defaults.mjs +0 -13
- package/esm2022/lib/tabber/tabber.component.mjs +0 -90
- package/esm2022/lib/tabber/tabber.defaults.mjs +0 -19
- package/esm2022/lib/tabber/tabber.module.mjs +0 -19
- package/esm2022/lib/table/index.mjs +0 -6
- package/esm2022/lib/table/table-item-storage.mjs +0 -564
- package/esm2022/lib/table/table.component.mjs +0 -367
- package/esm2022/lib/table/table.defaults.mjs +0 -53
- package/esm2022/lib/table/table.directives.mjs +0 -62
- package/esm2022/lib/table/table.module.mjs +0 -47
- package/esm2022/lib/table/table.types.mjs +0 -30
- package/esm2022/lib/table/utils.mjs +0 -18
- package/esm2022/lib/table-from-csv/index.mjs +0 -4
- package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +0 -120
- package/esm2022/lib/table-from-csv/table-from-csv.defaults.mjs +0 -15
- package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +0 -19
- package/esm2022/lib/table-pagination/index.mjs +0 -5
- package/esm2022/lib/table-pagination/table-pagination.component.mjs +0 -108
- package/esm2022/lib/table-pagination/table-pagination.defaults.mjs +0 -25
- package/esm2022/lib/table-pagination/table-pagination.module.mjs +0 -21
- package/esm2022/lib/table-pagination/table-pagination.types.mjs +0 -7
- package/esm2022/lib/text-list/index.mjs +0 -4
- package/esm2022/lib/text-list/text-list.component.mjs +0 -18
- package/esm2022/lib/text-list/text-list.module.mjs +0 -19
- package/esm2022/lib/text-list/text-list.pipe.mjs +0 -16
- package/esm2022/lib/types/alignment.types.mjs +0 -10
- package/esm2022/lib/types/button.types.mjs +0 -6
- package/esm2022/lib/types/colors.types.mjs +0 -43
- package/esm2022/lib/types/item-storage.types.mjs +0 -6
- package/esm2022/lib/types/theming.types.mjs +0 -48
- package/esm2022/lib/types/utility.types.mjs +0 -5
- package/esm2022/public-api.mjs +0 -74
- package/lib/inputs/simple-input/index.d.ts +0 -4
- package/lib/inputs/simple-input/simple-input.component.d.ts +0 -13
- package/lib/inputs/simple-input/simple-input.defaults.d.ts +0 -6
- package/lib/inputs/simple-input/simple-input.directives.d.ts +0 -20
- package/lib/inputs/simple-input/simple-input.module.d.ts +0 -11
- package/prebuilt-themes/default/inputs/simple-input.css.map +0 -1
- package/themes/default/inputs/simple-input.scss +0 -12
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, HostListener, input, output, viewChild } from '@angular/core';
|
|
2
|
-
import { isMonthOutOfRange } from '../months-view/months-view.helpers';
|
|
3
|
-
import { getCalendarDayData, getCalendarWeekdayArray } from './days-view.helpers';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
import * as i2 from "../../../buttons/icon-button/icon-button.component";
|
|
7
|
-
import * as i3 from "../../../icon/icon.component";
|
|
8
|
-
import * as i4 from "../../../buttons/button/button.component";
|
|
9
|
-
const TODAY = new Date();
|
|
10
|
-
function isLeapYear(year) {
|
|
11
|
-
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
|
|
12
|
-
}
|
|
13
|
-
export class DaysViewComponent {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.tabIndex = input.required();
|
|
16
|
-
this.readOnly = input.required();
|
|
17
|
-
this.disabled = input.required();
|
|
18
|
-
this.autoFocus = input.required();
|
|
19
|
-
this._isUsingKeyboard = input.required();
|
|
20
|
-
//! active year/month
|
|
21
|
-
this.activeYear = input.required();
|
|
22
|
-
this.activeMonth = input.required();
|
|
23
|
-
this.selectedDate = input.required();
|
|
24
|
-
this.min = input.required();
|
|
25
|
-
this.max = input.required();
|
|
26
|
-
this.isDayFilteredOut = input.required();
|
|
27
|
-
this.highlightedDay = input.required();
|
|
28
|
-
//! focusing
|
|
29
|
-
this.focusableElement = viewChild.required('focusableElement');
|
|
30
|
-
//! calendar data
|
|
31
|
-
this.firstWeekday = input.required();
|
|
32
|
-
this.activeCalendarData = computed(() => getCalendarDayData(this.activeYear(), this.activeMonth(), this.firstWeekday(), this.min(), this.max()));
|
|
33
|
-
this.reserveTopRow = computed(() => this.activeCalendarData().leadingSpaces < 3);
|
|
34
|
-
this.weekdayArray = computed(() => getCalendarWeekdayArray(this.firstWeekday()));
|
|
35
|
-
this.currentAriaLabel = computed(() => {
|
|
36
|
-
const day = this.highlightedDay();
|
|
37
|
-
if (day === null) {
|
|
38
|
-
return '';
|
|
39
|
-
}
|
|
40
|
-
return new Date(this.activeYear(), this.activeMonth(), day).toLocaleDateString(undefined, {
|
|
41
|
-
weekday: 'long',
|
|
42
|
-
year: 'numeric',
|
|
43
|
-
month: 'long',
|
|
44
|
-
day: 'numeric',
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
//! outputs
|
|
48
|
-
this.triggerOpenYearsView = output();
|
|
49
|
-
this.triggerOpenMonthsView = output();
|
|
50
|
-
this.triggerSelectDay = output();
|
|
51
|
-
this.triggerChangeMonth = output();
|
|
52
|
-
this.triggerChangeYear = output();
|
|
53
|
-
this.triggerHighlightDay = output();
|
|
54
|
-
this.triggerHighlightNextDay = output();
|
|
55
|
-
this.triggerHighlightPreviousDay = output();
|
|
56
|
-
this.triggerHighlightFirstDay = output();
|
|
57
|
-
this.triggerHighlightLastDay = output();
|
|
58
|
-
this.triggerHighlightSameDayPreviousPage = output();
|
|
59
|
-
this.triggerHighlightSameDayNextPage = output();
|
|
60
|
-
this.focusEvent = output({ alias: 'focus' });
|
|
61
|
-
this.blurEvent = output({ alias: 'blur' });
|
|
62
|
-
//! templates
|
|
63
|
-
this.daysViewHeaderTemplate = input.required();
|
|
64
|
-
this.floatingMonthTemplate = input.required();
|
|
65
|
-
this.weekdayTemplate = input.required();
|
|
66
|
-
this.dayTemplate = input.required();
|
|
67
|
-
//! template contexts
|
|
68
|
-
this.daysViewHeaderContext = computed(() => ({
|
|
69
|
-
nextMonth: () => {
|
|
70
|
-
this.triggerChangeMonth.emit(this.activeMonth() + 1);
|
|
71
|
-
},
|
|
72
|
-
prevMonth: () => {
|
|
73
|
-
this.triggerChangeMonth.emit(this.activeMonth() - 1);
|
|
74
|
-
},
|
|
75
|
-
nextYear: () => {
|
|
76
|
-
this.triggerChangeYear.emit(this.activeYear() + 1);
|
|
77
|
-
},
|
|
78
|
-
prevYear: () => {
|
|
79
|
-
this.triggerChangeYear.emit(this.activeYear() - 1);
|
|
80
|
-
},
|
|
81
|
-
openYearsView: () => {
|
|
82
|
-
this.triggerOpenYearsView.emit();
|
|
83
|
-
},
|
|
84
|
-
openMonthsView: () => {
|
|
85
|
-
this.triggerOpenMonthsView.emit();
|
|
86
|
-
},
|
|
87
|
-
canGoToNextPage: !this.isMonthOutOfRange(this.activeMonth() + 1),
|
|
88
|
-
canGoToPreviousPage: !this.isMonthOutOfRange(this.activeMonth() - 1),
|
|
89
|
-
year: this.activeYear(),
|
|
90
|
-
month: this.activeMonth(),
|
|
91
|
-
$implicit: new Date(this.activeYear(), this.activeMonth(), 1, 0, 0, 0, 0),
|
|
92
|
-
}));
|
|
93
|
-
this.weekdayContext = computed(() => (dayIndex) => {
|
|
94
|
-
const date = new Date(1970, 0, 4 + dayIndex);
|
|
95
|
-
return {
|
|
96
|
-
dayIndex,
|
|
97
|
-
date,
|
|
98
|
-
$implicit: date,
|
|
99
|
-
};
|
|
100
|
-
});
|
|
101
|
-
this.floatingMonthContext = computed(() => {
|
|
102
|
-
const date = new Date(this.activeYear(), this.activeMonth(), 1, 0, 0, 0, 0);
|
|
103
|
-
return {
|
|
104
|
-
month: this.activeMonth(),
|
|
105
|
-
date,
|
|
106
|
-
$implicit: date,
|
|
107
|
-
};
|
|
108
|
-
});
|
|
109
|
-
this.dayContext = computed(() => (day) => {
|
|
110
|
-
const date = new Date(this.activeYear(), this.activeMonth(), day);
|
|
111
|
-
return {
|
|
112
|
-
value: day,
|
|
113
|
-
date,
|
|
114
|
-
$implicit: day,
|
|
115
|
-
select: (dayOrDate) => {
|
|
116
|
-
this.triggerSelectDay.emit(dayOrDate instanceof Date ? dayOrDate.getDate() : dayOrDate);
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
onMouseMove() {
|
|
122
|
-
if (this._isUsingKeyboard())
|
|
123
|
-
return;
|
|
124
|
-
if (this.highlightedDay())
|
|
125
|
-
this.triggerHighlightDay.emit(null);
|
|
126
|
-
}
|
|
127
|
-
ngAfterViewInit() {
|
|
128
|
-
if (!this.autoFocus())
|
|
129
|
-
return;
|
|
130
|
-
this.focus();
|
|
131
|
-
this.triggerHighlightDay.emit(1);
|
|
132
|
-
}
|
|
133
|
-
focus() {
|
|
134
|
-
this.focusableElement().nativeElement.focus();
|
|
135
|
-
}
|
|
136
|
-
isDaySelected(day) {
|
|
137
|
-
if (day instanceof Date)
|
|
138
|
-
day = day.getDate();
|
|
139
|
-
return (this.selectedDate() !== null &&
|
|
140
|
-
this.activeYear() === this.selectedDate()?.getFullYear() &&
|
|
141
|
-
this.activeMonth() === this.selectedDate()?.getMonth() &&
|
|
142
|
-
day === this.selectedDate()?.getDate());
|
|
143
|
-
}
|
|
144
|
-
onCalendarDayMouseover(day) {
|
|
145
|
-
if (this._isUsingKeyboard())
|
|
146
|
-
return;
|
|
147
|
-
if (this.disabled() || this.readOnly())
|
|
148
|
-
return;
|
|
149
|
-
if (day && this.isDayFilteredOut()(day))
|
|
150
|
-
return;
|
|
151
|
-
this.triggerHighlightDay.emit(day);
|
|
152
|
-
}
|
|
153
|
-
onCalendarDayClick(day) {
|
|
154
|
-
if (this.disabled() || this.readOnly())
|
|
155
|
-
return;
|
|
156
|
-
if (day === null)
|
|
157
|
-
return;
|
|
158
|
-
if (this.isDayFilteredOut()(day))
|
|
159
|
-
return;
|
|
160
|
-
this.triggerHighlightDay.emit(day);
|
|
161
|
-
this.focus();
|
|
162
|
-
this.triggerSelectDay.emit(day);
|
|
163
|
-
}
|
|
164
|
-
onDayGridFocus() {
|
|
165
|
-
if (this.disabled() || this.readOnly())
|
|
166
|
-
return;
|
|
167
|
-
this.triggerHighlightFirstDay.emit();
|
|
168
|
-
}
|
|
169
|
-
onDayGridBlur() {
|
|
170
|
-
if (this.disabled() || this.readOnly())
|
|
171
|
-
return;
|
|
172
|
-
this.triggerHighlightDay.emit(null);
|
|
173
|
-
}
|
|
174
|
-
onDayGridClick() {
|
|
175
|
-
if (this.disabled() || this.readOnly())
|
|
176
|
-
return;
|
|
177
|
-
if (this.highlightedDay() !== null)
|
|
178
|
-
return;
|
|
179
|
-
this.triggerHighlightFirstDay.emit();
|
|
180
|
-
}
|
|
181
|
-
//! helpers
|
|
182
|
-
isDayToday(day) {
|
|
183
|
-
return this.activeYear() === TODAY.getFullYear() && this.activeMonth() === TODAY.getMonth() && day === TODAY.getDate();
|
|
184
|
-
}
|
|
185
|
-
isMonthOutOfRange(month) {
|
|
186
|
-
return isMonthOutOfRange(month, this.activeYear(), this.min(), this.max());
|
|
187
|
-
}
|
|
188
|
-
//! keyboard controls
|
|
189
|
-
onMainGridKeydown(event) {
|
|
190
|
-
if (this.disabled() || this.readOnly())
|
|
191
|
-
return;
|
|
192
|
-
switch (event.code) {
|
|
193
|
-
case 'Space':
|
|
194
|
-
case 'Enter':
|
|
195
|
-
this._onEnterPress(event);
|
|
196
|
-
break;
|
|
197
|
-
case 'ArrowUp':
|
|
198
|
-
this._onArrowUpPress(event);
|
|
199
|
-
break;
|
|
200
|
-
case 'ArrowDown':
|
|
201
|
-
this._onArrowDownPress(event);
|
|
202
|
-
break;
|
|
203
|
-
case 'ArrowLeft':
|
|
204
|
-
this._onArrowLeftPress(event);
|
|
205
|
-
break;
|
|
206
|
-
case 'ArrowRight':
|
|
207
|
-
this._onArrowRightPress(event);
|
|
208
|
-
break;
|
|
209
|
-
case 'Home':
|
|
210
|
-
this._onHomePress(event);
|
|
211
|
-
break;
|
|
212
|
-
case 'End':
|
|
213
|
-
this._onEndPress(event);
|
|
214
|
-
break;
|
|
215
|
-
case 'PageUp':
|
|
216
|
-
this._onPageUpPress(event);
|
|
217
|
-
break;
|
|
218
|
-
case 'PageDown':
|
|
219
|
-
this._onPageDownPress(event);
|
|
220
|
-
break;
|
|
221
|
-
default:
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
//select currently selected entry
|
|
226
|
-
_onEnterPress(event) {
|
|
227
|
-
event.preventDefault();
|
|
228
|
-
this.triggerSelectDay.emit(this.highlightedDay());
|
|
229
|
-
}
|
|
230
|
-
//highlight the entry one line below
|
|
231
|
-
_onArrowDownPress(event) {
|
|
232
|
-
event.preventDefault();
|
|
233
|
-
this.triggerHighlightNextDay.emit(7);
|
|
234
|
-
}
|
|
235
|
-
//highlight the entry one line above
|
|
236
|
-
_onArrowUpPress(event) {
|
|
237
|
-
event.preventDefault();
|
|
238
|
-
this.triggerHighlightPreviousDay.emit(7);
|
|
239
|
-
}
|
|
240
|
-
//highlight next entry
|
|
241
|
-
_onArrowRightPress(event) {
|
|
242
|
-
event.preventDefault();
|
|
243
|
-
this.triggerHighlightNextDay.emit(1);
|
|
244
|
-
}
|
|
245
|
-
//highlight previous entry
|
|
246
|
-
_onArrowLeftPress(event) {
|
|
247
|
-
event.preventDefault();
|
|
248
|
-
this.triggerHighlightPreviousDay.emit(1);
|
|
249
|
-
}
|
|
250
|
-
//highlight first entry on the page
|
|
251
|
-
_onHomePress(event) {
|
|
252
|
-
event.preventDefault();
|
|
253
|
-
this.triggerHighlightFirstDay.emit();
|
|
254
|
-
}
|
|
255
|
-
//highlight last entry on the page
|
|
256
|
-
_onEndPress(event) {
|
|
257
|
-
event.preventDefault();
|
|
258
|
-
this.triggerHighlightLastDay.emit();
|
|
259
|
-
}
|
|
260
|
-
//alone: highlight same entry on the next page
|
|
261
|
-
//with alt: highlight same entry multiple pages after (12 pages)
|
|
262
|
-
_onPageDownPress(event) {
|
|
263
|
-
event.preventDefault();
|
|
264
|
-
this.triggerHighlightSameDayNextPage.emit(event.altKey);
|
|
265
|
-
}
|
|
266
|
-
//alone: highlight same entry on the previous page
|
|
267
|
-
//with alt: highlight same entry multiple pages before (12 pages)
|
|
268
|
-
_onPageUpPress(event) {
|
|
269
|
-
event.preventDefault();
|
|
270
|
-
this.triggerHighlightSameDayPreviousPage.emit(event.altKey);
|
|
271
|
-
}
|
|
272
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DaysViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
273
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DaysViewComponent, selector: "ard-days-view", inputs: { tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: true, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: true, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: true, transformFunction: null }, _isUsingKeyboard: { classPropertyName: "_isUsingKeyboard", publicName: "_isUsingKeyboard", isSignal: true, isRequired: true, transformFunction: null }, activeYear: { classPropertyName: "activeYear", publicName: "activeYear", isSignal: true, isRequired: true, transformFunction: null }, activeMonth: { classPropertyName: "activeMonth", publicName: "activeMonth", isSignal: true, isRequired: true, transformFunction: null }, selectedDate: { classPropertyName: "selectedDate", publicName: "selectedDate", isSignal: true, isRequired: true, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: true, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: true, transformFunction: null }, isDayFilteredOut: { classPropertyName: "isDayFilteredOut", publicName: "isDayFilteredOut", isSignal: true, isRequired: true, transformFunction: null }, highlightedDay: { classPropertyName: "highlightedDay", publicName: "highlightedDay", isSignal: true, isRequired: true, transformFunction: null }, firstWeekday: { classPropertyName: "firstWeekday", publicName: "firstWeekday", isSignal: true, isRequired: true, transformFunction: null }, daysViewHeaderTemplate: { classPropertyName: "daysViewHeaderTemplate", publicName: "daysViewHeaderTemplate", isSignal: true, isRequired: true, transformFunction: null }, floatingMonthTemplate: { classPropertyName: "floatingMonthTemplate", publicName: "floatingMonthTemplate", isSignal: true, isRequired: true, transformFunction: null }, weekdayTemplate: { classPropertyName: "weekdayTemplate", publicName: "weekdayTemplate", isSignal: true, isRequired: true, transformFunction: null }, dayTemplate: { classPropertyName: "dayTemplate", publicName: "dayTemplate", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { triggerOpenYearsView: "triggerOpenYearsView", triggerOpenMonthsView: "triggerOpenMonthsView", triggerSelectDay: "triggerSelectDay", triggerChangeMonth: "triggerChangeMonth", triggerChangeYear: "triggerChangeYear", triggerHighlightDay: "triggerHighlightDay", triggerHighlightNextDay: "triggerHighlightNextDay", triggerHighlightPreviousDay: "triggerHighlightPreviousDay", triggerHighlightFirstDay: "triggerHighlightFirstDay", triggerHighlightLastDay: "triggerHighlightLastDay", triggerHighlightSameDayPreviousPage: "triggerHighlightSameDayPreviousPage", triggerHighlightSameDayNextPage: "triggerHighlightSameDayNextPage", focusEvent: "focus", blurEvent: "blur" }, host: { listeners: { "mousemove": "onMouseMove()" } }, viewQueries: [{ propertyName: "focusableElement", first: true, predicate: ["focusableElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ard-days-view\">\r\n @if (!readOnly()) {\r\n <div class=\"ard-calendar__top-toolbar\">\r\n <ng-template\r\n #defaultDaysViewHeaderTemplate\r\n let-currDate\r\n let-nextMonth=\"nextMonth\"\r\n let-prevMonth=\"prevMonth\"\r\n let-canGoToNextMonth=\"canGoToNextPage\"\r\n let-canGoToPreviousMonth=\"canGoToPreviousPage\"\r\n let-openYearsView=\"openYearsView\"\r\n >\r\n <div class=\"ard-calendar__calendar-header\">\r\n <ard-button\r\n class=\"ard-calendar__header-button\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n variant=\"pill\"\r\n [tabIndex]=\"tabIndex()\"\r\n (click)=\"openYearsView()\"\r\n >\r\n {{ currDate | date : 'MMM YYYY' | uppercase }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n <div class=\"ard-calendar__arrows\">\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"prevMonth()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToPreviousMonth\"\r\n >\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"nextMonth()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToNextMonth\"\r\n >\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"daysViewHeaderTemplate() || defaultDaysViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"daysViewHeaderContext()\"\r\n />\r\n </div>\r\n }\r\n <div class=\"ard-calendar__weekdays\">\r\n <ng-template\r\n #defaultWeekdayTemplate\r\n let-date\r\n >\r\n <div\r\n class=\"ard-calendar__weekday\"\r\n [title]=\"date | date : 'EEEE' | titlecase\"\r\n >\r\n {{ date | date : 'EEEEE' | uppercase }}\r\n </div>\r\n </ng-template>\r\n @for (weekdayIndex of weekdayArray(); track weekdayIndex) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"weekdayTemplate() || defaultWeekdayTemplate\"\r\n [ngTemplateOutletContext]=\"weekdayContext()(weekdayIndex)\"\r\n ></ng-template>\r\n }\r\n </div>\r\n <div\r\n #focusableElement\r\n class=\"ard-calendar__days-grid\"\r\n [class.ard-reserve-top-row]=\"reserveTopRow()\"\r\n [tabindex]=\"tabIndex()\"\r\n [ariaLabel]=\"currentAriaLabel()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (focus)=\"onDayGridFocus()\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n (blur)=\"onDayGridBlur()\"\r\n (click)=\"onDayGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n <div class=\"ard-calendar__floating-month\">\r\n <ng-template\r\n #defaultFloatingMonthTemplate\r\n let-date\r\n >\r\n <div [title]=\"date | date : 'LLLL' | titlecase\">\r\n {{ date | date : 'LLL' | uppercase }}\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"floatingMonthTemplate() || defaultFloatingMonthTemplate\"\r\n [ngTemplateOutletContext]=\"floatingMonthContext()\"\r\n ></ng-template>\r\n </div>\r\n @for (week of activeCalendarData().array; track $index) { @for (day of week; track day ? day :\r\n activeCalendarData().leadingSpaces - $index) { @if (day === null) {\r\n <div class=\"ard-calendar__entry ard-calendar__entry-empty\"></div>\r\n } @else {\r\n <div\r\n class=\"ard-calendar__entry\"\r\n [class.ard-calendar__entry-highlighted]=\"highlightedDay() === day.value\"\r\n [class.ard-calendar__entry-disabled]=\"day.disabled || isDayFilteredOut()(day.value)\"\r\n [class.ard-calendar__entry-selected]=\"isDaySelected(day.value)\"\r\n [class.ard-calendar-today]=\"isDayToday(day.value)\"\r\n (click)=\"onCalendarDayClick(day.value)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarDayMouseover(day.value)\"\r\n role=\"gridcell\"\r\n >\r\n <div class=\"ard-calendar__entry-button\">\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultDayTemplate\r\n let-day\r\n >\r\n {{ day }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"dayTemplate() || defaultDayTemplate\"\r\n [ngTemplateOutletContext]=\"dayContext()(day.value)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n } } }\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact", "pointerEventsWhenDisabled"] }, { kind: "component", type: i3.ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }, { kind: "component", type: i4.ArdiumButtonComponent, selector: "ard-button", inputs: ["icon", "variant", "alignIcon", "vertical"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
274
|
-
}
|
|
275
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DaysViewComponent, decorators: [{
|
|
276
|
-
type: Component,
|
|
277
|
-
args: [{ selector: 'ard-days-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ard-days-view\">\r\n @if (!readOnly()) {\r\n <div class=\"ard-calendar__top-toolbar\">\r\n <ng-template\r\n #defaultDaysViewHeaderTemplate\r\n let-currDate\r\n let-nextMonth=\"nextMonth\"\r\n let-prevMonth=\"prevMonth\"\r\n let-canGoToNextMonth=\"canGoToNextPage\"\r\n let-canGoToPreviousMonth=\"canGoToPreviousPage\"\r\n let-openYearsView=\"openYearsView\"\r\n >\r\n <div class=\"ard-calendar__calendar-header\">\r\n <ard-button\r\n class=\"ard-calendar__header-button\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n variant=\"pill\"\r\n [tabIndex]=\"tabIndex()\"\r\n (click)=\"openYearsView()\"\r\n >\r\n {{ currDate | date : 'MMM YYYY' | uppercase }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n <div class=\"ard-calendar__arrows\">\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"prevMonth()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToPreviousMonth\"\r\n >\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"nextMonth()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToNextMonth\"\r\n >\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"daysViewHeaderTemplate() || defaultDaysViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"daysViewHeaderContext()\"\r\n />\r\n </div>\r\n }\r\n <div class=\"ard-calendar__weekdays\">\r\n <ng-template\r\n #defaultWeekdayTemplate\r\n let-date\r\n >\r\n <div\r\n class=\"ard-calendar__weekday\"\r\n [title]=\"date | date : 'EEEE' | titlecase\"\r\n >\r\n {{ date | date : 'EEEEE' | uppercase }}\r\n </div>\r\n </ng-template>\r\n @for (weekdayIndex of weekdayArray(); track weekdayIndex) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"weekdayTemplate() || defaultWeekdayTemplate\"\r\n [ngTemplateOutletContext]=\"weekdayContext()(weekdayIndex)\"\r\n ></ng-template>\r\n }\r\n </div>\r\n <div\r\n #focusableElement\r\n class=\"ard-calendar__days-grid\"\r\n [class.ard-reserve-top-row]=\"reserveTopRow()\"\r\n [tabindex]=\"tabIndex()\"\r\n [ariaLabel]=\"currentAriaLabel()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (focus)=\"onDayGridFocus()\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n (blur)=\"onDayGridBlur()\"\r\n (click)=\"onDayGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n <div class=\"ard-calendar__floating-month\">\r\n <ng-template\r\n #defaultFloatingMonthTemplate\r\n let-date\r\n >\r\n <div [title]=\"date | date : 'LLLL' | titlecase\">\r\n {{ date | date : 'LLL' | uppercase }}\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"floatingMonthTemplate() || defaultFloatingMonthTemplate\"\r\n [ngTemplateOutletContext]=\"floatingMonthContext()\"\r\n ></ng-template>\r\n </div>\r\n @for (week of activeCalendarData().array; track $index) { @for (day of week; track day ? day :\r\n activeCalendarData().leadingSpaces - $index) { @if (day === null) {\r\n <div class=\"ard-calendar__entry ard-calendar__entry-empty\"></div>\r\n } @else {\r\n <div\r\n class=\"ard-calendar__entry\"\r\n [class.ard-calendar__entry-highlighted]=\"highlightedDay() === day.value\"\r\n [class.ard-calendar__entry-disabled]=\"day.disabled || isDayFilteredOut()(day.value)\"\r\n [class.ard-calendar__entry-selected]=\"isDaySelected(day.value)\"\r\n [class.ard-calendar-today]=\"isDayToday(day.value)\"\r\n (click)=\"onCalendarDayClick(day.value)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarDayMouseover(day.value)\"\r\n role=\"gridcell\"\r\n >\r\n <div class=\"ard-calendar__entry-button\">\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultDayTemplate\r\n let-day\r\n >\r\n {{ day }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"dayTemplate() || defaultDayTemplate\"\r\n [ngTemplateOutletContext]=\"dayContext()(day.value)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n } } }\r\n </div>\r\n</div>\r\n" }]
|
|
278
|
-
}], propDecorators: { onMouseMove: [{
|
|
279
|
-
type: HostListener,
|
|
280
|
-
args: ['mousemove']
|
|
281
|
-
}] } });
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY2FsZW5kYXIvdmlld3MvZGF5cy12aWV3L2RheXMtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NhbGVuZGFyL3ZpZXdzL2RheXMtdmlldy9kYXlzLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUVSLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQU92QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBRWxGLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7QUFFekIsU0FBUyxVQUFVLENBQUMsSUFBWTtJQUM5QixPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBUUQsTUFBTSxPQUFPLGlCQUFpQjtJQU45QjtRQU9XLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDcEMsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUNyQyxhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBRXJDLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7UUFFdEMscUJBQWdCLEdBQUcsS0FBSyxDQUFDLFFB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U0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU07OEJBWS9DLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBjb21wdXRlZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBpbnB1dCxcclxuICBvdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgdmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2FsZW5kYXJEYXlDb250ZXh0LFxyXG4gIENhbGVuZGFyRGF5c1ZpZXdIZWFkZXJDb250ZXh0LFxyXG4gIENhbGVuZGFyRmxvYXRpbmdNb250aENvbnRleHQsXHJcbiAgQ2FsZW5kYXJXZWVrZGF5Q29udGV4dCxcclxufSBmcm9tICcuLi8uLi9jYWxlbmRhci50eXBlcyc7XHJcbmltcG9ydCB7IGlzTW9udGhPdXRPZlJhbmdlIH0gZnJvbSAnLi4vbW9udGhzLXZpZXcvbW9udGhzLXZpZXcuaGVscGVycyc7XHJcbmltcG9ydCB7IGdldENhbGVuZGFyRGF5RGF0YSwgZ2V0Q2FsZW5kYXJXZWVrZGF5QXJyYXkgfSBmcm9tICcuL2RheXMtdmlldy5oZWxwZXJzJztcclxuXHJcbmNvbnN0IFRPREFZID0gbmV3IERhdGUoKTtcclxuXHJcbmZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuICh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB8fCB5ZWFyICUgNDAwID09PSAwO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FyZC1kYXlzLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXlzLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9kYXlzLXZpZXcuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF5c1ZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICByZWFkb25seSB0YWJJbmRleCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuICByZWFkb25seSByZWFkT25seSA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XHJcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xyXG5cclxuICByZWFkb25seSBhdXRvRm9jdXMgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xyXG5cclxuICByZWFkb25seSBfaXNVc2luZ0tleWJvYXJkID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vtb3ZlJylcclxuICBvbk1vdXNlTW92ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9pc1VzaW5nS2V5Ym9hcmQoKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWREYXkoKSkgdGhpcy50cmlnZ2VySGlnaGxpZ2h0RGF5LmVtaXQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYXV0b0ZvY3VzKCkpIHJldHVybjtcclxuICAgIHRoaXMuZm9jdXMoKTtcclxuICAgIHRoaXMudHJpZ2dlckhpZ2hsaWdodERheS5lbWl0KDEpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGFjdGl2ZSB5ZWFyL21vbnRoXHJcbiAgcmVhZG9ubHkgYWN0aXZlWWVhciA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuICByZWFkb25seSBhY3RpdmVNb250aCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuXHJcbiAgcmVhZG9ubHkgc2VsZWN0ZWREYXRlID0gaW5wdXQucmVxdWlyZWQ8RGF0ZSB8IG51bGw+KCk7XHJcblxyXG4gIHJlYWRvbmx5IG1pbiA9IGlucHV0LnJlcXVpcmVkPERhdGUgfCBudWxsPigpO1xyXG4gIHJlYWRvbmx5IG1heCA9IGlucHV0LnJlcXVpcmVkPERhdGUgfCBudWxsPigpO1xyXG5cclxuICByZWFkb25seSBpc0RheUZpbHRlcmVkT3V0ID0gaW5wdXQucmVxdWlyZWQ8KGRheTogbnVtYmVyLCBtb250aD86IG51bWJlciwgeWVhcj86IG51bWJlcikgPT4gYm9vbGVhbj4oKTtcclxuXHJcbiAgcmVhZG9ubHkgaGlnaGxpZ2h0ZWREYXkgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXIgfCBudWxsPigpO1xyXG5cclxuICAvLyEgZm9jdXNpbmdcclxuICByZWFkb25seSBmb2N1c2FibGVFbGVtZW50ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignZm9jdXNhYmxlRWxlbWVudCcpO1xyXG5cclxuICBmb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9jdXNhYmxlRWxlbWVudCgpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIC8vISBjYWxlbmRhciBkYXRhXHJcbiAgcmVhZG9ubHkgZmlyc3RXZWVrZGF5ID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xyXG5cclxuICByZWFkb25seSBhY3RpdmVDYWxlbmRhckRhdGEgPSBjb21wdXRlZCgoKSA9PlxyXG4gICAgZ2V0Q2FsZW5kYXJEYXlEYXRhKHRoaXMuYWN0aXZlWWVhcigpLCB0aGlzLmFjdGl2ZU1vbnRoKCksIHRoaXMuZmlyc3RXZWVrZGF5KCksIHRoaXMubWluKCksIHRoaXMubWF4KCkpXHJcbiAgKTtcclxuICByZWFkb25seSByZXNlcnZlVG9wUm93ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gdGhpcy5hY3RpdmVDYWxlbmRhckRhdGEoKS5sZWFkaW5nU3BhY2VzIDwgMyk7XHJcblxyXG4gIHJlYWRvbmx5IHdlZWtkYXlBcnJheSA9IGNvbXB1dGVkKCgpID0+IGdldENhbGVuZGFyV2Vla2RheUFycmF5KHRoaXMuZmlyc3RXZWVrZGF5KCkpKTtcclxuXHJcbiAgaXNEYXlTZWxlY3RlZChkYXk6IG51bWJlciB8IERhdGUgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZGF5IGluc3RhbmNlb2YgRGF0ZSkgZGF5ID0gZGF5LmdldERhdGUoKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlKCkgIT09IG51bGwgJiZcclxuICAgICAgdGhpcy5hY3RpdmVZZWFyKCkgPT09IHRoaXMuc2VsZWN0ZWREYXRlKCk/LmdldEZ1bGxZZWFyKCkgJiZcclxuICAgICAgdGhpcy5hY3RpdmVNb250aCgpID09PSB0aGlzLnNlbGVjdGVkRGF0ZSgpPy5nZXRNb250aCgpICYmXHJcbiAgICAgIGRheSA9PT0gdGhpcy5zZWxlY3RlZERhdGUoKT8uZ2V0RGF0ZSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgY3VycmVudEFyaWFMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGRheSA9IHRoaXMuaGlnaGxpZ2h0ZWREYXkoKTtcclxuICAgIGlmIChkYXkgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuYWN0aXZlWWVhcigpLCB0aGlzLmFjdGl2ZU1vbnRoKCksIGRheSkudG9Mb2NhbGVEYXRlU3RyaW5nKHVuZGVmaW5lZCwge1xyXG4gICAgICB3ZWVrZGF5OiAnbG9uZycsXHJcbiAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgbW9udGg6ICdsb25nJyxcclxuICAgICAgZGF5OiAnbnVtZXJpYycsXHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgLy8hIG91dHB1dHNcclxuICByZWFkb25seSB0cmlnZ2VyT3BlblllYXJzVmlldyA9IG91dHB1dDx2b2lkPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJPcGVuTW9udGhzVmlldyA9IG91dHB1dDx2b2lkPigpO1xyXG5cclxuICByZWFkb25seSB0cmlnZ2VyU2VsZWN0RGF5ID0gb3V0cHV0PG51bWJlciB8IG51bGw+KCk7XHJcbiAgcmVhZG9ubHkgdHJpZ2dlckNoYW5nZU1vbnRoID0gb3V0cHV0PG51bWJlciB8IG51bGw+KCk7XHJcbiAgcmVhZG9ubHkgdHJpZ2dlckNoYW5nZVllYXIgPSBvdXRwdXQ8bnVtYmVyIHwgbnVsbD4oKTtcclxuXHJcbiAgcmVhZG9ubHkgdHJpZ2dlckhpZ2hsaWdodERheSA9IG91dHB1dDxudW1iZXIgfCBudWxsPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJIaWdobGlnaHROZXh0RGF5ID0gb3V0cHV0PG51bWJlcj4oKTtcclxuICByZWFkb25seSB0cmlnZ2VySGlnaGxpZ2h0UHJldmlvdXNEYXkgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJIaWdobGlnaHRGaXJzdERheSA9IG91dHB1dDx2b2lkPigpO1xyXG4gIHJlYWRvbmx5IHRyaWdnZXJIaWdobGlnaHRMYXN0RGF5ID0gb3V0cHV0PHZvaWQ+KCk7XHJcbiAgcmVhZG9ubHkgdHJpZ2dlckhpZ2hsaWdodFNhbWVEYXlQcmV2aW91c1BhZ2UgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcclxuICByZWFkb25seSB0cmlnZ2VySGlnaGxpZ2h0U2FtZURheU5leHRQYWdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XHJcblxyXG4gIHJlYWRvbmx5IGZvY3VzRXZlbnQgPSBvdXRwdXQ8Rm9jdXNFdmVudD4oeyBhbGlhczogJ2ZvY3VzJyB9KTtcclxuICByZWFkb25seSBibHVyRXZlbnQgPSBvdXRwdXQ8Rm9jdXNFdmVudD4oeyBhbGlhczogJ2JsdXInIH0pO1xyXG5cclxuICBvbkNhbGVuZGFyRGF5TW91c2VvdmVyKGRheTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2lzVXNpbmdLZXlib2FyZCgpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMucmVhZE9ubHkoKSkgcmV0dXJuO1xyXG4gICAgaWYgKGRheSAmJiB0aGlzLmlzRGF5RmlsdGVyZWRPdXQoKShkYXkpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0RGF5LmVtaXQoZGF5KTtcclxuICB9XHJcbiAgb25DYWxlbmRhckRheUNsaWNrKGRheTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSB8fCB0aGlzLnJlYWRPbmx5KCkpIHJldHVybjtcclxuICAgIGlmIChkYXkgPT09IG51bGwpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmlzRGF5RmlsdGVyZWRPdXQoKShkYXkpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0RGF5LmVtaXQoZGF5KTtcclxuICAgIHRoaXMuZm9jdXMoKTtcclxuICAgIHRoaXMudHJpZ2dlclNlbGVjdERheS5lbWl0KGRheSk7XHJcbiAgfVxyXG4gIG9uRGF5R3JpZEZvY3VzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSB8fCB0aGlzLnJlYWRPbmx5KCkpIHJldHVybjtcclxuICAgIHRoaXMudHJpZ2dlckhpZ2hsaWdodEZpcnN0RGF5LmVtaXQoKTtcclxuICB9XHJcbiAgb25EYXlHcmlkQmx1cigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5yZWFkT25seSgpKSByZXR1cm47XHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHREYXkuZW1pdChudWxsKTtcclxuICB9XHJcbiAgb25EYXlHcmlkQ2xpY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMucmVhZE9ubHkoKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWREYXkoKSAhPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0Rmlyc3REYXkuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGhlbHBlcnNcclxuICBpc0RheVRvZGF5KGRheTogbnVtYmVyIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlWWVhcigpID09PSBUT0RBWS5nZXRGdWxsWWVhcigpICYmIHRoaXMuYWN0aXZlTW9udGgoKSA9PT0gVE9EQVkuZ2V0TW9udGgoKSAmJiBkYXkgPT09IFRPREFZLmdldERhdGUoKTtcclxuICB9XHJcbiAgaXNNb250aE91dE9mUmFuZ2UobW9udGg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gaXNNb250aE91dE9mUmFuZ2UobW9udGgsIHRoaXMuYWN0aXZlWWVhcigpLCB0aGlzLm1pbigpLCB0aGlzLm1heCgpKTtcclxuICB9XHJcblxyXG4gIC8vISBrZXlib2FyZCBjb250cm9sc1xyXG4gIG9uTWFpbkdyaWRLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMucmVhZE9ubHkoKSkgcmV0dXJuO1xyXG4gICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgIGNhc2UgJ1NwYWNlJzpcclxuICAgICAgY2FzZSAnRW50ZXInOlxyXG4gICAgICAgIHRoaXMuX29uRW50ZXJQcmVzcyhldmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxyXG4gICAgICAgIHRoaXMuX29uQXJyb3dVcFByZXNzKGV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgICB0aGlzLl9vbkFycm93RG93blByZXNzKGV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcclxuICAgICAgICB0aGlzLl9vbkFycm93TGVmdFByZXNzKGV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XHJcbiAgICAgICAgdGhpcy5fb25BcnJvd1JpZ2h0UHJlc3MoZXZlbnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdIb21lJzpcclxuICAgICAgICB0aGlzLl9vbkhvbWVQcmVzcyhldmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0VuZCc6XHJcbiAgICAgICAgdGhpcy5fb25FbmRQcmVzcyhldmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1BhZ2VVcCc6XHJcbiAgICAgICAgdGhpcy5fb25QYWdlVXBQcmVzcyhldmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1BhZ2VEb3duJzpcclxuICAgICAgICB0aGlzLl9vblBhZ2VEb3duUHJlc3MoZXZlbnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vc2VsZWN0IGN1cnJlbnRseSBzZWxlY3RlZCBlbnRyeVxyXG4gIHByaXZhdGUgX29uRW50ZXJQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB0aGlzLnRyaWdnZXJTZWxlY3REYXkuZW1pdCh0aGlzLmhpZ2hsaWdodGVkRGF5KCkpO1xyXG4gIH1cclxuICAvL2hpZ2hsaWdodCB0aGUgZW50cnkgb25lIGxpbmUgYmVsb3dcclxuICBwcml2YXRlIF9vbkFycm93RG93blByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHRoaXMudHJpZ2dlckhpZ2hsaWdodE5leHREYXkuZW1pdCg3KTtcclxuICB9XHJcbiAgLy9oaWdobGlnaHQgdGhlIGVudHJ5IG9uZSBsaW5lIGFib3ZlXHJcbiAgcHJpdmF0ZSBfb25BcnJvd1VwUHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0UHJldmlvdXNEYXkuZW1pdCg3KTtcclxuICB9XHJcbiAgLy9oaWdobGlnaHQgbmV4dCBlbnRyeVxyXG4gIHByaXZhdGUgX29uQXJyb3dSaWdodFByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHRoaXMudHJpZ2dlckhpZ2hsaWdodE5leHREYXkuZW1pdCgxKTtcclxuICB9XHJcbiAgLy9oaWdobGlnaHQgcHJldmlvdXMgZW50cnlcclxuICBwcml2YXRlIF9vbkFycm93TGVmdFByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHRoaXMudHJpZ2dlckhpZ2hsaWdodFByZXZpb3VzRGF5LmVtaXQoMSk7XHJcbiAgfVxyXG4gIC8vaGlnaGxpZ2h0IGZpcnN0IGVudHJ5IG9uIHRoZSBwYWdlXHJcbiAgcHJpdmF0ZSBfb25Ib21lUHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0Rmlyc3REYXkuZW1pdCgpO1xyXG4gIH1cclxuICAvL2hpZ2hsaWdodCBsYXN0IGVudHJ5IG9uIHRoZSBwYWdlXHJcbiAgcHJpdmF0ZSBfb25FbmRQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB0aGlzLnRyaWdnZXJIaWdobGlnaHRMYXN0RGF5LmVtaXQoKTtcclxuICB9XHJcbiAgLy9hbG9uZTogaGlnaGxpZ2h0IHNhbWUgZW50cnkgb24gdGhlIG5leHQgcGFnZVxyXG4gIC8vd2l0aCBhbHQ6IGhpZ2hsaWdodCBzYW1lIGVudHJ5IG11bHRpcGxlIHBhZ2VzIGFmdGVyICgxMiBwYWdlcylcclxuICBwcml2YXRlIF9vblBhZ2VEb3duUHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0U2FtZURheU5leHRQYWdlLmVtaXQoZXZlbnQuYWx0S2V5KTtcclxuICB9XHJcbiAgLy9hbG9uZTogaGlnaGxpZ2h0IHNhbWUgZW50cnkgb24gdGhlIHByZXZpb3VzIHBhZ2VcclxuICAvL3dpdGggYWx0OiBoaWdobGlnaHQgc2FtZSBlbnRyeSBtdWx0aXBsZSBwYWdlcyBiZWZvcmUgKDEyIHBhZ2VzKVxyXG4gIHByaXZhdGUgX29uUGFnZVVwUHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdGhpcy50cmlnZ2VySGlnaGxpZ2h0U2FtZURheVByZXZpb3VzUGFnZS5lbWl0KGV2ZW50LmFsdEtleSk7XHJcbiAgfVxyXG5cclxuICAvLyEgdGVtcGxhdGVzXHJcbiAgcmVhZG9ubHkgZGF5c1ZpZXdIZWFkZXJUZW1wbGF0ZSA9IGlucHV0LnJlcXVpcmVkPFRlbXBsYXRlUmVmPENhbGVuZGFyRGF5c1ZpZXdIZWFkZXJDb250ZXh0PiB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBmbG9hdGluZ01vbnRoVGVtcGxhdGUgPSBpbnB1dC5yZXF1aXJlZDxUZW1wbGF0ZVJlZjxDYWxlbmRhckZsb2F0aW5nTW9udGhDb250ZXh0PiB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSB3ZWVrZGF5VGVtcGxhdGUgPSBpbnB1dC5yZXF1aXJlZDxUZW1wbGF0ZVJlZjxDYWxlbmRhcldlZWtkYXlDb250ZXh0PiB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBkYXlUZW1wbGF0ZSA9IGlucHV0LnJlcXVpcmVkPFRlbXBsYXRlUmVmPENhbGVuZGFyRGF5Q29udGV4dD4gfCB1bmRlZmluZWQ+KCk7XHJcblxyXG4gIC8vISB0ZW1wbGF0ZSBjb250ZXh0c1xyXG4gIHJlYWRvbmx5IGRheXNWaWV3SGVhZGVyQ29udGV4dCA9IGNvbXB1dGVkPENhbGVuZGFyRGF5c1ZpZXdIZWFkZXJDb250ZXh0PigoKSA9PiAoe1xyXG4gICAgbmV4dE1vbnRoOiAoKSA9PiB7XHJcbiAgICAgIHRoaXMudHJpZ2dlckNoYW5nZU1vbnRoLmVtaXQodGhpcy5hY3RpdmVNb250aCgpICsgMSk7XHJcbiAgICB9LFxyXG4gICAgcHJldk1vbnRoOiAoKSA9PiB7XHJcbiAgICAgIHRoaXMudHJpZ2dlckNoYW5nZU1vbnRoLmVtaXQodGhpcy5hY3RpdmVNb250aCgpIC0gMSk7XHJcbiAgICB9LFxyXG4gICAgbmV4dFllYXI6ICgpID0+IHtcclxuICAgICAgdGhpcy50cmlnZ2VyQ2hhbmdlWWVhci5lbWl0KHRoaXMuYWN0aXZlWWVhcigpICsgMSk7XHJcbiAgICB9LFxyXG4gICAgcHJldlllYXI6ICgpID0+IHtcclxuICAgICAgdGhpcy50cmlnZ2VyQ2hhbmdlWWVhci5lbWl0KHRoaXMuYWN0aXZlWWVhcigpIC0gMSk7XHJcbiAgICB9LFxyXG4gICAgb3BlblllYXJzVmlldzogKCkgPT4ge1xyXG4gICAgICB0aGlzLnRyaWdnZXJPcGVuWWVhcnNWaWV3LmVtaXQoKTtcclxuICAgIH0sXHJcbiAgICBvcGVuTW9udGhzVmlldzogKCkgPT4ge1xyXG4gICAgICB0aGlzLnRyaWdnZXJPcGVuTW9udGhzVmlldy5lbWl0KCk7XHJcbiAgICB9LFxyXG4gICAgY2FuR29Ub05leHRQYWdlOiAhdGhpcy5pc01vbnRoT3V0T2ZSYW5nZSh0aGlzLmFjdGl2ZU1vbnRoKCkgKyAxKSxcclxuICAgIGNhbkdvVG9QcmV2aW91c1BhZ2U6ICF0aGlzLmlzTW9udGhPdXRPZlJhbmdlKHRoaXMuYWN0aXZlTW9udGgoKSAtIDEpLFxyXG4gICAgeWVhcjogdGhpcy5hY3RpdmVZZWFyKCksXHJcbiAgICBtb250aDogdGhpcy5hY3RpdmVNb250aCgpLFxyXG4gICAgJGltcGxpY2l0OiBuZXcgRGF0ZSh0aGlzLmFjdGl2ZVllYXIoKSwgdGhpcy5hY3RpdmVNb250aCgpLCAxLCAwLCAwLCAwLCAwKSxcclxuICB9KSk7XHJcblxyXG4gIHJlYWRvbmx5IHdlZWtkYXlDb250ZXh0ID0gY29tcHV0ZWQ8KGRheUluZGV4OiBudW1iZXIpID0+IENhbGVuZGFyV2Vla2RheUNvbnRleHQ+KCgpID0+IChkYXlJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMTk3MCwgMCwgNCArIGRheUluZGV4KTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRheUluZGV4LFxyXG4gICAgICBkYXRlLFxyXG4gICAgICAkaW1wbGljaXQ6IGRhdGUsXHJcbiAgICB9O1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBmbG9hdGluZ01vbnRoQ29udGV4dCA9IGNvbXB1dGVkPENhbGVuZGFyRmxvYXRpbmdNb250aENvbnRleHQ+KCgpID0+IHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmFjdGl2ZVllYXIoKSwgdGhpcy5hY3RpdmVNb250aCgpLCAxLCAwLCAwLCAwLCAwKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG1vbnRoOiB0aGlzLmFjdGl2ZU1vbnRoKCksXHJcbiAgICAgIGRhdGUsXHJcbiAgICAgICRpbXBsaWNpdDogZGF0ZSxcclxuICAgIH07XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGRheUNvbnRleHQgPSBjb21wdXRlZDwoZGF5OiBudW1iZXIpID0+IENhbGVuZGFyRGF5Q29udGV4dD4oKCkgPT4gKGRheTogbnVtYmVyKSA9PiB7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5hY3RpdmVZZWFyKCksIHRoaXMuYWN0aXZlTW9udGgoKSwgZGF5KTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHZhbHVlOiBkYXksXHJcbiAgICAgIGRhdGUsXHJcbiAgICAgICRpbXBsaWNpdDogZGF5LFxyXG4gICAgICBzZWxlY3Q6IChkYXlPckRhdGU6IG51bWJlciB8IERhdGUpID0+IHtcclxuICAgICAgICB0aGlzLnRyaWdnZXJTZWxlY3REYXkuZW1pdChkYXlPckRhdGUgaW5zdGFuY2VvZiBEYXRlID8gZGF5T3JEYXRlLmdldERhdGUoKSA6IGRheU9yRGF0ZSk7XHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gIH0pO1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJhcmQtZGF5cy12aWV3XCI+XHJcbiAgQGlmICghcmVhZE9ubHkoKSkge1xyXG4gIDxkaXYgY2xhc3M9XCJhcmQtY2FsZW5kYXJfX3RvcC10b29sYmFyXCI+XHJcbiAgICA8bmctdGVtcGxhdGVcclxuICAgICAgI2RlZmF1bHREYXlzVmlld0hlYWRlclRlbXBsYXRlXHJcbiAgICAgIGxldC1jdXJyRGF0ZVxyXG4gICAgICBsZXQtbmV4dE1vbnRoPVwibmV4dE1vbnRoXCJcclxuICAgICAgbGV0LXByZXZNb250aD1cInByZXZNb250aFwiXHJcbiAgICAgIGxldC1jYW5Hb1RvTmV4dE1vbnRoPVwiY2FuR29Ub05leHRQYWdlXCJcclxuICAgICAgbGV0LWNhbkdvVG9QcmV2aW91c01vbnRoPVwiY2FuR29Ub1ByZXZpb3VzUGFnZVwiXHJcbiAgICAgIGxldC1vcGVuWWVhcnNWaWV3PVwib3BlblllYXJzVmlld1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcmQtY2FsZW5kYXJfX2NhbGVuZGFyLWhlYWRlclwiPlxyXG4gICAgICAgIDxhcmQtYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImFyZC1jYWxlbmRhcl9faGVhZGVyLWJ1dHRvblwiXHJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwidHJhbnNwYXJlbnRcIlxyXG4gICAgICAgICAgY29sb3I9XCJub25lXCJcclxuICAgICAgICAgIHZhcmlhbnQ9XCJwaWxsXCJcclxuICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuWWVhcnNWaWV3KClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGN1cnJEYXRlIHwgZGF0ZSA6ICdNTU0gWVlZWScgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtZHJvcGRvd24tYXJyb3dcIj48L2Rpdj5cclxuICAgICAgICA8L2FyZC1idXR0b24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZC1jYWxlbmRhcl9fYXJyb3dzXCI+XHJcbiAgICAgICAgICA8YXJkLWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgIGNvbG9yPVwibm9uZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJwcmV2TW9udGgoKVwiXHJcbiAgICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Hb1RvUHJldmlvdXNNb250aFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxhcmQtaWNvbj5jaGV2cm9uX2xlZnQ8L2FyZC1pY29uPlxyXG4gICAgICAgICAgPC9hcmQtaWNvbi1idXR0b24+XHJcbiAgICAgICAgICA8YXJkLWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgIGNvbG9yPVwibm9uZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJuZXh0TW9udGgoKVwiXHJcbiAgICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Hb1RvTmV4dE1vbnRoXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGFyZC1pY29uPmNoZXZyb25fcmlnaHQ8L2FyZC1pY29uPlxyXG4gICAgICAgICAgPC9hcmQtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGVcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5c1ZpZXdIZWFkZXJUZW1wbGF0ZSgpIHx8IGRlZmF1bHREYXlzVmlld0hlYWRlclRlbXBsYXRlXCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImRheXNWaWV3SGVhZGVyQ29udGV4dCgpXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJhcmQtY2FsZW5kYXJfX3dlZWtkYXlzXCI+XHJcbiAgICA8bmctdGVtcGxhdGVcclxuICAgICAgI2RlZmF1bHRXZWVrZGF5VGVtcGxhdGVcclxuICAgICAgbGV0LWRhdGVcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYXJkLWNhbGVuZGFyX193ZWVrZGF5XCJcclxuICAgICAgICBbdGl0bGVdPVwiZGF0ZSB8IGRhdGUgOiAnRUVFRScgfCB0aXRsZWNhc2VcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZGF0ZSB8IGRhdGUgOiAnRUVFRUUnIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIEBmb3IgKHdlZWtkYXlJbmRleCBvZiB3ZWVrZGF5QXJyYXkoKTsgdHJhY2sgd2Vla2RheUluZGV4KSB7XHJcbiAgICA8bmctdGVtcGxhdGVcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwid2Vla2RheVRlbXBsYXRlKCkgfHwgZGVmYXVsdFdlZWtkYXlUZW1wbGF0ZVwiXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ3ZWVrZGF5Q29udGV4dCgpKHdlZWtkYXlJbmRleClcIlxyXG4gICAgPjwvbmctdGVtcGxhdGU+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgI2ZvY3VzYWJsZUVsZW1lbnRcclxuICAgIGNsYXNzPVwiYXJkLWNhbGVuZGFyX19kYXlzLWdyaWRcIlxyXG4gICAgW2NsYXNzLmFyZC1yZXNlcnZlLXRvcC1yb3ddPVwicmVzZXJ2ZVRvcFJvdygpXCJcclxuICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgIFthcmlhTGFiZWxdPVwiY3VycmVudEFyaWFMYWJlbCgpXCJcclxuICAgIChmb2N1cyk9XCJmb2N1c0V2ZW50LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoZm9jdXMpPVwib25EYXlHcmlkRm9jdXMoKVwiXHJcbiAgICAoYmx1cik9XCJibHVyRXZlbnQuZW1pdCgkZXZlbnQpXCJcclxuICAgIChibHVyKT1cIm9uRGF5R3JpZEJsdXIoKVwiXHJcbiAgICAoY2xpY2spPVwib25EYXlHcmlkQ2xpY2soKVwiXHJcbiAgICAoa2V5ZG93bik9XCJvbk1haW5HcmlkS2V5ZG93bigkZXZlbnQpXCJcclxuICAgIHJvbGU9XCJncmlkXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWNhbGVuZGFyX19mbG9hdGluZy1tb250aFwiPlxyXG4gICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAjZGVmYXVsdEZsb2F0aW5nTW9udGhUZW1wbGF0ZVxyXG4gICAgICAgIGxldC1kYXRlXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IFt0aXRsZV09XCJkYXRlIHwgZGF0ZSA6ICdMTExMJyB8IHRpdGxlY2FzZVwiPlxyXG4gICAgICAgICAge3sgZGF0ZSB8IGRhdGUgOiAnTExMJyB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmxvYXRpbmdNb250aFRlbXBsYXRlKCkgfHwgZGVmYXVsdEZsb2F0aW5nTW9udGhUZW1wbGF0ZVwiXHJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImZsb2F0aW5nTW9udGhDb250ZXh0KClcIlxyXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgQGZvciAod2VlayBvZiBhY3RpdmVDYWxlbmRhckRhdGEoKS5hcnJheTsgdHJhY2sgJGluZGV4KSB7IEBmb3IgKGRheSBvZiB3ZWVrOyB0cmFjayBkYXkgPyBkYXkgOlxyXG4gICAgYWN0aXZlQ2FsZW5kYXJEYXRhKCkubGVhZGluZ1NwYWNlcyAtICRpbmRleCkgeyBAaWYgKGRheSA9PT0gbnVsbCkge1xyXG4gICAgPGRpdiBjbGFzcz1cImFyZC1jYWxlbmRhcl9fZW50cnkgYXJkLWNhbGVuZGFyX19lbnRyeS1lbXB0eVwiPjwvZGl2PlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiYXJkLWNhbGVuZGFyX19lbnRyeVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtY2FsZW5kYXJfX2VudHJ5LWhpZ2hsaWdodGVkXT1cImhpZ2hsaWdodGVkRGF5KCkgPT09IGRheS52YWx1ZVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtY2FsZW5kYXJfX2VudHJ5LWRpc2FibGVkXT1cImRheS5kaXNhYmxlZCB8fCBpc0RheUZpbHRlcmVkT3V0KCkoZGF5LnZhbHVlKVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtY2FsZW5kYXJfX2VudHJ5LXNlbGVjdGVkXT1cImlzRGF5U2VsZWN0ZWQoZGF5LnZhbHVlKVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtY2FsZW5kYXItdG9kYXldPVwiaXNEYXlUb2RheShkYXkudmFsdWUpXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJEYXlDbGljayhkYXkudmFsdWUpXCJcclxuICAgICAgKG1vdXNlbW92ZSk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAobW91c2VvdmVyKT1cIm9uQ2FsZW5kYXJEYXlNb3VzZW92ZXIoZGF5LnZhbHVlKVwiXHJcbiAgICAgIHJvbGU9XCJncmlkY2VsbFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcmQtY2FsZW5kYXJfX2VudHJ5LWJ1dHRvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtZm9jdXMtb3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtYnV0dG9uLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAjZGVmYXVsdERheVRlbXBsYXRlXHJcbiAgICAgICAgICAgIGxldC1kYXlcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgZGF5IH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRheVRlbXBsYXRlKCkgfHwgZGVmYXVsdERheVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImRheUNvbnRleHQoKShkYXkudmFsdWUpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICB9IH0gfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { isDefined } from 'simple-bool';
|
|
2
|
-
/**
|
|
3
|
-
* Generates a layout array to be used to create a calendar page for the given year and month.
|
|
4
|
-
*
|
|
5
|
-
* The returned object contains an array to create the layout from, the number of leading and trailing spaces in the layout, and the number of weeks (full or not) in the month.
|
|
6
|
-
* @param year The year of the current active view
|
|
7
|
-
* @param monthIndex The month index of the current active view
|
|
8
|
-
* @param firstWeekday The index of the first weekday in the calendar layout. Starts at Sunday (index 0), ends with Saturday (index 6). Defaults to 1.
|
|
9
|
-
* @returns A {@link CalendarData} object.
|
|
10
|
-
*/
|
|
11
|
-
export function getCalendarDayData(year, monthIndex, firstWeekday = 1, min, max) {
|
|
12
|
-
firstWeekday %= 7;
|
|
13
|
-
const firstDayDate = new Date(year, monthIndex, 1);
|
|
14
|
-
const firstDayWeekday = (firstDayDate.getDay() - firstWeekday + 7) % 7;
|
|
15
|
-
const lastDayDate = new Date(firstDayDate);
|
|
16
|
-
lastDayDate.setMonth(firstDayDate.getMonth() + 1); // advance the month by 1
|
|
17
|
-
lastDayDate.setDate(0); // set the date to 0, which essentially means "the last day of the previous month"
|
|
18
|
-
const lastDay = lastDayDate.getDate();
|
|
19
|
-
const calendarArray = [];
|
|
20
|
-
let currentDay = firstDayWeekday * -1; // how many empty spaces to add
|
|
21
|
-
let trailingSpaces = 0;
|
|
22
|
-
let totalWeeks = NaN;
|
|
23
|
-
for (let week = 0; week < 6; week++) {
|
|
24
|
-
const currentWeek = [];
|
|
25
|
-
// add days for the whole week
|
|
26
|
-
for (let weekday = 0; weekday < 7; weekday++) {
|
|
27
|
-
currentDay++;
|
|
28
|
-
// add empty space before the first day of the month
|
|
29
|
-
if (currentDay < 1 || currentDay > lastDay) {
|
|
30
|
-
currentWeek.push(null);
|
|
31
|
-
trailingSpaces++;
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
// add the day number
|
|
35
|
-
currentWeek.push({
|
|
36
|
-
value: currentDay,
|
|
37
|
-
disabled: !!isDayOutOfRange(currentDay, monthIndex, year, min, max),
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
calendarArray.push(currentWeek);
|
|
41
|
-
if (currentDay > lastDay) {
|
|
42
|
-
totalWeeks = week + 1;
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
trailingSpaces -= firstDayWeekday;
|
|
47
|
-
return {
|
|
48
|
-
array: calendarArray,
|
|
49
|
-
leadingSpaces: firstDayWeekday,
|
|
50
|
-
trailingSpaces,
|
|
51
|
-
weeks: totalWeeks,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
export function getCalendarWeekdayArray(firstWeekday = 1) {
|
|
55
|
-
return [0, 1, 2, 3, 4, 5, 6].map(v => (v + firstWeekday) % 7);
|
|
56
|
-
}
|
|
57
|
-
export function isDayOutOfRange(day, month, year, min, max) {
|
|
58
|
-
const date = new Date(year, month, day);
|
|
59
|
-
if (isDefined(min) && date < min)
|
|
60
|
-
return -1;
|
|
61
|
-
if (isDefined(max) && date > max)
|
|
62
|
-
return 1;
|
|
63
|
-
return 0;
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cy12aWV3LmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NhbGVuZGFyL3ZpZXdzL2RheXMtdmlldy9kYXlzLXZpZXcuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBWXhDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxJQUFZLEVBQ1osVUFBa0IsRUFDbEIsWUFBWSxHQUFHLENBQUMsRUFDaEIsR0FBZ0IsRUFDaEIsR0FBZ0I7SUFFaEIsWUFBWSxJQUFJLENBQUMsQ0FBQztJQUVsQixNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sZUFBZSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUI7SUFDNUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtGQUFrRjtJQUMxRyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFdEMsTUFBTSxhQUFhLEdBQWtCLEVBQUUsQ0FBQztJQUN4QyxJQUFJLFVBQVUsR0FBRyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQywrQkFBK0I7SUFDdEUsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUVyQixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFDcEMsTUFBTSxXQUFXLEdBQWlDLEVBQUUsQ0FBQztRQUNyRCw4QkFBOEI7UUFDOUIsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzdDLFVBQVUsRUFBRSxDQUFDO1lBQ2Isb0RBQW9EO1lBQ3BELElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxVQUFVLEdBQUcsT0FBTyxFQUFFLENBQUM7Z0JBQzNDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixTQUFTO1lBQ1gsQ0FBQztZQUNELHFCQUFxQjtZQUNyQixXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNmLEtBQUssRUFBRSxVQUFVO2dCQUNqQixRQUFRLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2FBQ3BFLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksVUFBVSxHQUFHLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLE1BQU07UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUNELGNBQWMsSUFBSSxlQUFlLENBQUM7SUFFbEMsT0FBTztRQUNMLEtBQUssRUFBRSxhQUFhO1FBQ3BCLGFBQWEsRUFBRSxlQUFlO1FBQzlCLGNBQWM7UUFDZCxLQUFLLEVBQUUsVUFBVTtLQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxZQUFZLEdBQUcsQ0FBQztJQUN0RCxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxJQUFZLEVBQUUsR0FBZ0IsRUFBRSxHQUFnQjtJQUMxRyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHO1FBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM1QyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRztRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJBcnJheUl0ZW0gfSBmcm9tICcuLi8uLi9jYWxlbmRhci5pbnRlcm5hbC10eXBlcyc7XHJcblxyXG5leHBvcnQgdHlwZSBDYWxlbmRhckFycmF5ID0gKENhbGVuZGFyQXJyYXlJdGVtIHwgbnVsbClbXVtdO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhckRhdGEge1xyXG4gIGFycmF5OiBDYWxlbmRhckFycmF5O1xyXG4gIGxlYWRpbmdTcGFjZXM6IG51bWJlcjtcclxuICB0cmFpbGluZ1NwYWNlczogbnVtYmVyO1xyXG4gIHdlZWtzOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZW5lcmF0ZXMgYSBsYXlvdXQgYXJyYXkgdG8gYmUgdXNlZCB0byBjcmVhdGUgYSBjYWxlbmRhciBwYWdlIGZvciB0aGUgZ2l2ZW4geWVhciBhbmQgbW9udGguXHJcbiAqXHJcbiAqIFRoZSByZXR1cm5lZCBvYmplY3QgY29udGFpbnMgYW4gYXJyYXkgdG8gY3JlYXRlIHRoZSBsYXlvdXQgZnJvbSwgdGhlIG51bWJlciBvZiBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMgaW4gdGhlIGxheW91dCwgYW5kIHRoZSBudW1iZXIgb2Ygd2Vla3MgKGZ1bGwgb3Igbm90KSBpbiB0aGUgbW9udGguXHJcbiAqIEBwYXJhbSB5ZWFyIFRoZSB5ZWFyIG9mIHRoZSBjdXJyZW50IGFjdGl2ZSB2aWV3XHJcbiAqIEBwYXJhbSBtb250aEluZGV4IFRoZSBtb250aCBpbmRleCBvZiB0aGUgY3VycmVudCBhY3RpdmUgdmlld1xyXG4gKiBAcGFyYW0gZmlyc3RXZWVrZGF5IFRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgd2Vla2RheSBpbiB0aGUgY2FsZW5kYXIgbGF5b3V0LiBTdGFydHMgYXQgU3VuZGF5IChpbmRleCAwKSwgZW5kcyB3aXRoIFNhdHVyZGF5IChpbmRleCA2KS4gRGVmYXVsdHMgdG8gMS5cclxuICogQHJldHVybnMgQSB7QGxpbmsgQ2FsZW5kYXJEYXRhfSBvYmplY3QuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FsZW5kYXJEYXlEYXRhKFxyXG4gIHllYXI6IG51bWJlcixcclxuICBtb250aEluZGV4OiBudW1iZXIsXHJcbiAgZmlyc3RXZWVrZGF5ID0gMSxcclxuICBtaW46IERhdGUgfCBudWxsLFxyXG4gIG1heDogRGF0ZSB8IG51bGxcclxuKTogQ2FsZW5kYXJEYXRhIHtcclxuICBmaXJzdFdlZWtkYXkgJT0gNztcclxuXHJcbiAgY29uc3QgZmlyc3REYXlEYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGhJbmRleCwgMSk7XHJcbiAgY29uc3QgZmlyc3REYXlXZWVrZGF5ID0gKGZpcnN0RGF5RGF0ZS5nZXREYXkoKSAtIGZpcnN0V2Vla2RheSArIDcpICUgNztcclxuXHJcbiAgY29uc3QgbGFzdERheURhdGUgPSBuZXcgRGF0ZShmaXJzdERheURhdGUpO1xyXG4gIGxhc3REYXlEYXRlLnNldE1vbnRoKGZpcnN0RGF5RGF0ZS5nZXRNb250aCgpICsgMSk7IC8vIGFkdmFuY2UgdGhlIG1vbnRoIGJ5IDFcclxuICBsYXN0RGF5RGF0ZS5zZXREYXRlKDApOyAvLyBzZXQgdGhlIGRhdGUgdG8gMCwgd2hpY2ggZXNzZW50aWFsbHkgbWVhbnMgXCJ0aGUgbGFzdCBkYXkgb2YgdGhlIHByZXZpb3VzIG1vbnRoXCJcclxuICBjb25zdCBsYXN0RGF5ID0gbGFzdERheURhdGUuZ2V0RGF0ZSgpO1xyXG5cclxuICBjb25zdCBjYWxlbmRhckFycmF5OiBDYWxlbmRhckFycmF5ID0gW107XHJcbiAgbGV0IGN1cnJlbnREYXkgPSBmaXJzdERheVdlZWtkYXkgKiAtMTsgLy8gaG93IG1hbnkgZW1wdHkgc3BhY2VzIHRvIGFkZFxyXG4gIGxldCB0cmFpbGluZ1NwYWNlcyA9IDA7XHJcbiAgbGV0IHRvdGFsV2Vla3MgPSBOYU47XHJcblxyXG4gIGZvciAobGV0IHdlZWsgPSAwOyB3ZWVrIDwgNjsgd2VlaysrKSB7XHJcbiAgICBjb25zdCBjdXJyZW50V2VlazogKENhbGVuZGFyQXJyYXlJdGVtIHwgbnVsbClbXSA9IFtdO1xyXG4gICAgLy8gYWRkIGRheXMgZm9yIHRoZSB3aG9sZSB3ZWVrXHJcbiAgICBmb3IgKGxldCB3ZWVrZGF5ID0gMDsgd2Vla2RheSA8IDc7IHdlZWtkYXkrKykge1xyXG4gICAgICBjdXJyZW50RGF5Kys7XHJcbiAgICAgIC8vIGFkZCBlbXB0eSBzcGFjZSBiZWZvcmUgdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGhcclxuICAgICAgaWYgKGN1cnJlbnREYXkgPCAxIHx8IGN1cnJlbnREYXkgPiBsYXN0RGF5KSB7XHJcbiAgICAgICAgY3VycmVudFdlZWsucHVzaChudWxsKTtcclxuICAgICAgICB0cmFpbGluZ1NwYWNlcysrO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGFkZCB0aGUgZGF5IG51bWJlclxyXG4gICAgICBjdXJyZW50V2Vlay5wdXNoKHtcclxuICAgICAgICB2YWx1ZTogY3VycmVudERheSxcclxuICAgICAgICBkaXNhYmxlZDogISFpc0RheU91dE9mUmFuZ2UoY3VycmVudERheSwgbW9udGhJbmRleCwgeWVhciwgbWluLCBtYXgpLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhbGVuZGFyQXJyYXkucHVzaChjdXJyZW50V2Vlayk7XHJcbiAgICBpZiAoY3VycmVudERheSA+IGxhc3REYXkpIHtcclxuICAgICAgdG90YWxXZWVrcyA9IHdlZWsgKyAxO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgdHJhaWxpbmdTcGFjZXMgLT0gZmlyc3REYXlXZWVrZGF5O1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgYXJyYXk6IGNhbGVuZGFyQXJyYXksXHJcbiAgICBsZWFkaW5nU3BhY2VzOiBmaXJzdERheVdlZWtkYXksXHJcbiAgICB0cmFpbGluZ1NwYWNlcyxcclxuICAgIHdlZWtzOiB0b3RhbFdlZWtzLFxyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWxlbmRhcldlZWtkYXlBcnJheShmaXJzdFdlZWtkYXkgPSAxKTogbnVtYmVyW10ge1xyXG4gIHJldHVybiBbMCwgMSwgMiwgMywgNCwgNSwgNl0ubWFwKHYgPT4gKHYgKyBmaXJzdFdlZWtkYXkpICUgNyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0RheU91dE9mUmFuZ2UoZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlciwgbWluOiBEYXRlIHwgbnVsbCwgbWF4OiBEYXRlIHwgbnVsbCk6IG51bWJlciB7XHJcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xyXG4gIGlmIChpc0RlZmluZWQobWluKSAmJiBkYXRlIDwgbWluKSByZXR1cm4gLTE7XHJcbiAgaWYgKGlzRGVmaW5lZChtYXgpICYmIGRhdGUgPiBtYXgpIHJldHVybiAxO1xyXG4gIHJldHVybiAwO1xyXG59XHJcbiJdfQ==
|