@ardium-ui/ui 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -0
- package/esm2022/ardium-ui-ui.mjs +5 -0
- package/esm2022/lib/_internal/boolean-component.mjs +108 -0
- package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +12 -0
- package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +18 -0
- package/esm2022/lib/_internal/disablable-component.mjs +44 -0
- package/esm2022/lib/_internal/focusable-component.mjs +91 -0
- package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +436 -0
- package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +349 -0
- package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +155 -0
- package/esm2022/lib/_internal/models/pagination.model.mjs +124 -0
- package/esm2022/lib/_internal/ngmodel-component.mjs +42 -0
- package/esm2022/lib/_internal/queue.mjs +59 -0
- package/esm2022/lib/_internal/selectable-list-component.mjs +304 -0
- package/esm2022/lib/badge/badge.directive.mjs +123 -0
- package/esm2022/lib/badge/badge.module.mjs +18 -0
- package/esm2022/lib/badge/badge.types.mjs +16 -0
- package/esm2022/lib/buttons/_button-base.mjs +45 -0
- package/esm2022/lib/buttons/button/button.component.mjs +49 -0
- package/esm2022/lib/buttons/button/button.module.mjs +18 -0
- package/esm2022/lib/buttons/fab/fab.component.mjs +40 -0
- package/esm2022/lib/buttons/fab/fab.module.mjs +18 -0
- package/esm2022/lib/buttons/general-button.types.mjs +55 -0
- package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +37 -0
- package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +18 -0
- package/esm2022/lib/calendar/calendar.component.mjs +982 -0
- package/esm2022/lib/calendar/calendar.directives.mjs +107 -0
- package/esm2022/lib/calendar/calendar.helpers.mjs +47 -0
- package/esm2022/lib/calendar/calendar.module.mjs +21 -0
- package/esm2022/lib/calendar/calendar.types.mjs +11 -0
- package/esm2022/lib/card/card.children.mjs +97 -0
- package/esm2022/lib/card/card.component.mjs +40 -0
- package/esm2022/lib/card/card.module.mjs +59 -0
- package/esm2022/lib/card/card.types.mjs +9 -0
- package/esm2022/lib/checkbox/checkbox.component.mjs +73 -0
- package/esm2022/lib/checkbox/checkbox.module.mjs +18 -0
- package/esm2022/lib/checkbox/checkbox.types.mjs +6 -0
- package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +139 -0
- package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +19 -0
- package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +7 -0
- package/esm2022/lib/chip/chip.component.mjs +55 -0
- package/esm2022/lib/chip/chip.module.mjs +21 -0
- package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +80 -0
- package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +77 -0
- package/esm2022/lib/color/color-display/color-display.component.mjs +48 -0
- package/esm2022/lib/color/color-display/color-display.module.mjs +18 -0
- package/esm2022/lib/color/color-display/color-display.types.mjs +9 -0
- package/esm2022/lib/color/color-picker/color-picker.component.mjs +484 -0
- package/esm2022/lib/color/color-picker/color-picker.directives.mjs +55 -0
- package/esm2022/lib/color/color-picker/color-picker.module.mjs +43 -0
- package/esm2022/lib/color/color-picker/color-picker.types.mjs +11 -0
- package/esm2022/lib/dialog/dialog.component.mjs +167 -0
- package/esm2022/lib/dialog/dialog.directives.mjs +14 -0
- package/esm2022/lib/dialog/dialog.module.mjs +21 -0
- package/esm2022/lib/dialog/dialog.types.mjs +6 -0
- package/esm2022/lib/divider/divider.component.mjs +26 -0
- package/esm2022/lib/divider/divider.module.mjs +18 -0
- package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +130 -0
- package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +18 -0
- package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +10 -0
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +82 -0
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +42 -0
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +58 -0
- package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +153 -0
- package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +73 -0
- package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +21 -0
- package/esm2022/lib/file-inputs/file-input-base.mjs +187 -0
- package/esm2022/lib/file-inputs/file-input-types.mjs +2 -0
- package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +74 -0
- package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +25 -0
- package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +19 -0
- package/esm2022/lib/icon/icon.component.mjs +85 -0
- package/esm2022/lib/icon/icon.module.mjs +19 -0
- package/esm2022/lib/icon/icon.pipe.mjs +18 -0
- package/esm2022/lib/inputs/color-input/color-input.component.mjs +421 -0
- package/esm2022/lib/inputs/color-input/color-input.directives.mjs +101 -0
- package/esm2022/lib/inputs/color-input/color-input.module.mjs +85 -0
- package/esm2022/lib/inputs/color-input/color-input.types.mjs +2 -0
- package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +218 -0
- package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +217 -0
- package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +18 -0
- package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +15 -0
- package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +8 -0
- package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +234 -0
- package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +36 -0
- package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +21 -0
- package/esm2022/lib/inputs/hex-input.model.mjs +106 -0
- package/esm2022/lib/inputs/input/input.component.mjs +344 -0
- package/esm2022/lib/inputs/input/input.directives.mjs +58 -0
- package/esm2022/lib/inputs/input/input.module.mjs +47 -0
- package/esm2022/lib/inputs/input-transformers.mjs +66 -0
- package/esm2022/lib/inputs/input-types.mjs +6 -0
- package/esm2022/lib/inputs/input-utils.mjs +205 -0
- package/esm2022/lib/inputs/number-input/number-input.component.mjs +289 -0
- package/esm2022/lib/inputs/number-input/number-input.directives.mjs +14 -0
- package/esm2022/lib/inputs/number-input/number-input.module.mjs +21 -0
- package/esm2022/lib/inputs/password-input/password-input.component.mjs +222 -0
- package/esm2022/lib/inputs/password-input/password-input.directives.mjs +49 -0
- package/esm2022/lib/inputs/password-input/password-input.module.mjs +41 -0
- package/esm2022/lib/inputs/password-input/password-input.types.mjs +2 -0
- package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +219 -0
- package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +36 -0
- package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +37 -0
- package/esm2022/lib/kbd/kbd.component.mjs +42 -0
- package/esm2022/lib/kbd/kbd.module.mjs +19 -0
- package/esm2022/lib/kbd/kbd.pipe.mjs +17 -0
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +55 -0
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +19 -0
- package/esm2022/lib/modal/modal.component.mjs +120 -0
- package/esm2022/lib/modal/modal.module.mjs +21 -0
- package/esm2022/lib/option/option.component.mjs +77 -0
- package/esm2022/lib/option/option.module.mjs +18 -0
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +95 -0
- package/esm2022/lib/progress-bar/progress-bar.directive.mjs +14 -0
- package/esm2022/lib/progress-bar/progress-bar.module.mjs +19 -0
- package/esm2022/lib/progress-bar/progress-bar.types.mjs +19 -0
- package/esm2022/lib/progress-circle/progress-circle.component.mjs +94 -0
- package/esm2022/lib/progress-circle/progress-circle.directive.mjs +14 -0
- package/esm2022/lib/progress-circle/progress-circle.module.mjs +19 -0
- package/esm2022/lib/progress-circle/progress-circle.types.mjs +10 -0
- package/esm2022/lib/radio/radio/radio.component.mjs +53 -0
- package/esm2022/lib/radio/radio-group.component.mjs +207 -0
- package/esm2022/lib/radio/radio.module.mjs +19 -0
- package/esm2022/lib/search-functions.mjs +64 -0
- package/esm2022/lib/segment/segment.component.mjs +168 -0
- package/esm2022/lib/segment/segment.directives.mjs +14 -0
- package/esm2022/lib/segment/segment.module.mjs +19 -0
- package/esm2022/lib/segment/segment.types.mjs +12 -0
- package/esm2022/lib/select/select.component.mjs +1160 -0
- package/esm2022/lib/select/select.directive.mjs +171 -0
- package/esm2022/lib/select/select.module.mjs +112 -0
- package/esm2022/lib/select/select.types.mjs +2 -0
- package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +46 -0
- package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +18 -0
- package/esm2022/lib/slider/abstract-slider.mjs +330 -0
- package/esm2022/lib/slider/range-slider/range-slider.component.mjs +143 -0
- package/esm2022/lib/slider/range-slider/range-slider.module.mjs +18 -0
- package/esm2022/lib/slider/slider.component.mjs +93 -0
- package/esm2022/lib/slider/slider.directive.mjs +16 -0
- package/esm2022/lib/slider/slider.module.mjs +20 -0
- package/esm2022/lib/slider/slider.types.mjs +10 -0
- package/esm2022/lib/snackbar/index.mjs +5 -0
- package/esm2022/lib/snackbar/snackbar-ref.mjs +51 -0
- package/esm2022/lib/snackbar/snackbar.component.mjs +48 -0
- package/esm2022/lib/snackbar/snackbar.service.mjs +227 -0
- package/esm2022/lib/snackbar/snackbar.token.mjs +20 -0
- package/esm2022/lib/snackbar/snackbar.types.mjs +25 -0
- package/esm2022/lib/spinner/spinner.component.mjs +22 -0
- package/esm2022/lib/spinner/spinner.module.mjs +18 -0
- package/esm2022/lib/star/star-button/star-button.component.mjs +53 -0
- package/esm2022/lib/star/star-button/star-button.module.mjs +19 -0
- package/esm2022/lib/star/star-display/star-display.component.mjs +66 -0
- package/esm2022/lib/star/star-display/star-display.module.mjs +19 -0
- package/esm2022/lib/star/star-input/star-input.component.mjs +221 -0
- package/esm2022/lib/star/star-input/star-input.module.mjs +19 -0
- package/esm2022/lib/star/star.component.mjs +28 -0
- package/esm2022/lib/star/star.module.mjs +18 -0
- package/esm2022/lib/star/star.types.mjs +23 -0
- package/esm2022/lib/statebox/statebox.component.mjs +158 -0
- package/esm2022/lib/statebox/statebox.module.mjs +18 -0
- package/esm2022/lib/statebox/statebox.types.mjs +2 -0
- package/esm2022/lib/table/table-item-storage.mjs +560 -0
- package/esm2022/lib/table/table.component.mjs +468 -0
- package/esm2022/lib/table/table.directives.mjs +64 -0
- package/esm2022/lib/table/table.module.mjs +46 -0
- package/esm2022/lib/table/table.types.mjs +30 -0
- package/esm2022/lib/table/utils.mjs +18 -0
- package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +64 -0
- package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +19 -0
- package/esm2022/lib/table-pagination/table-pagination.component.mjs +172 -0
- package/esm2022/lib/table-pagination/table-pagination.module.mjs +21 -0
- package/esm2022/lib/table-pagination/table-pagination.types.mjs +7 -0
- package/esm2022/lib/types/alignment.types.mjs +10 -0
- package/esm2022/lib/types/colors.types.mjs +43 -0
- package/esm2022/lib/types/item-storage.types.mjs +6 -0
- package/esm2022/lib/types/theming.types.mjs +48 -0
- package/esm2022/lib/types/utility.types.mjs +5 -0
- package/esm2022/public-api.mjs +194 -0
- package/fesm2022/ardium-ui-ui.mjs +14316 -0
- package/fesm2022/ardium-ui-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/_internal/boolean-component.d.ts +50 -0
- package/lib/_internal/clear-button/clear-button.component.d.ts +6 -0
- package/lib/_internal/clear-button/clear-button.module.d.ts +8 -0
- package/lib/_internal/disablable-component.d.ts +11 -0
- package/lib/_internal/focusable-component.d.ts +52 -0
- package/lib/_internal/item-storages/dropdown-item-storage.d.ts +87 -0
- package/lib/_internal/item-storages/simple-item-storage.d.ts +159 -0
- package/lib/_internal/item-storages/simplest-item-storage.d.ts +70 -0
- package/lib/_internal/models/pagination.model.d.ts +53 -0
- package/lib/_internal/ngmodel-component.d.ts +42 -0
- package/lib/_internal/queue.d.ts +21 -0
- package/lib/_internal/selectable-list-component.d.ts +71 -0
- package/lib/badge/badge.directive.d.ts +31 -0
- package/lib/badge/badge.module.d.ts +8 -0
- package/lib/badge/badge.types.d.ts +17 -0
- package/lib/buttons/_button-base.d.ts +18 -0
- package/lib/buttons/button/button.component.d.ts +15 -0
- package/lib/buttons/button/button.module.d.ts +8 -0
- package/lib/buttons/fab/fab.component.d.ts +12 -0
- package/lib/buttons/fab/fab.module.d.ts +8 -0
- package/lib/buttons/general-button.types.d.ts +57 -0
- package/lib/buttons/icon-button/icon-button.component.d.ts +13 -0
- package/lib/buttons/icon-button/icon-button.module.d.ts +8 -0
- package/lib/calendar/calendar.component.d.ts +155 -0
- package/lib/calendar/calendar.directives.d.ts +51 -0
- package/lib/calendar/calendar.helpers.d.ts +15 -0
- package/lib/calendar/calendar.module.d.ts +11 -0
- package/lib/calendar/calendar.types.d.ts +80 -0
- package/lib/card/card.children.d.ts +43 -0
- package/lib/card/card.component.d.ts +13 -0
- package/lib/card/card.module.d.ts +9 -0
- package/lib/card/card.types.d.ts +10 -0
- package/lib/checkbox/checkbox.component.d.ts +21 -0
- package/lib/checkbox/checkbox.module.d.ts +8 -0
- package/lib/checkbox/checkbox.types.d.ts +6 -0
- package/lib/checkbox-list/checkbox-list.component.d.ts +50 -0
- package/lib/checkbox-list/checkbox-list.module.d.ts +9 -0
- package/lib/checkbox-list/checkbox-list.types.d.ts +7 -0
- package/lib/chip/chip.component.d.ts +18 -0
- package/lib/chip/chip.module.d.ts +11 -0
- package/lib/chip/deletable-chip/deletable-chip.component.d.ts +24 -0
- package/lib/chip/selectable-chip/selectable-chip.component.d.ts +24 -0
- package/lib/color/color-display/color-display.component.d.ts +17 -0
- package/lib/color/color-display/color-display.module.d.ts +8 -0
- package/lib/color/color-display/color-display.types.d.ts +9 -0
- package/lib/color/color-picker/color-picker.component.d.ts +125 -0
- package/lib/color/color-picker/color-picker.directives.d.ts +27 -0
- package/lib/color/color-picker/color-picker.module.d.ts +13 -0
- package/lib/color/color-picker/color-picker.types.d.ts +21 -0
- package/lib/dialog/dialog.component.d.ts +44 -0
- package/lib/dialog/dialog.directives.d.ts +9 -0
- package/lib/dialog/dialog.module.d.ts +11 -0
- package/lib/dialog/dialog.types.d.ts +28 -0
- package/lib/divider/divider.component.d.ts +8 -0
- package/lib/divider/divider.module.d.ts +8 -0
- package/lib/dropdown-panel/dropdown-panel.component.d.ts +37 -0
- package/lib/dropdown-panel/dropdown-panel.module.d.ts +8 -0
- package/lib/dropdown-panel/dropdown-panel.types.d.ts +12 -0
- package/lib/file-inputs/file-drop-area/file-drop-area.component.d.ts +22 -0
- package/lib/file-inputs/file-drop-area/file-drop-area.directives.d.ts +21 -0
- package/lib/file-inputs/file-drop-area/file-drop-area.module.d.ts +12 -0
- package/lib/file-inputs/file-input/file-input.component.d.ts +41 -0
- package/lib/file-inputs/file-input/file-input.directives.d.ts +39 -0
- package/lib/file-inputs/file-input/file-input.module.d.ts +11 -0
- package/lib/file-inputs/file-input-base.d.ts +43 -0
- package/lib/file-inputs/file-input-types.d.ts +10 -0
- package/lib/form-field-frame/form-field-frame.component.d.ts +32 -0
- package/lib/form-field-frame/form-field-frame.directives.d.ts +14 -0
- package/lib/form-field-frame/form-field-frame.module.d.ts +9 -0
- package/lib/icon/icon.component.d.ts +32 -0
- package/lib/icon/icon.module.d.ts +9 -0
- package/lib/icon/icon.pipe.d.ts +7 -0
- package/lib/inputs/color-input/color-input.component.d.ts +147 -0
- package/lib/inputs/color-input/color-input.directives.d.ts +52 -0
- package/lib/inputs/color-input/color-input.module.d.ts +16 -0
- package/lib/inputs/color-input/color-input.types.d.ts +5 -0
- package/lib/inputs/digit-input/digit-input.component.d.ts +50 -0
- package/lib/inputs/digit-input/digit-input.model.d.ts +26 -0
- package/lib/inputs/digit-input/digit-input.module.d.ts +8 -0
- package/lib/inputs/digit-input/digit-input.types.d.ts +27 -0
- package/lib/inputs/digit-input/digit-input.utils.d.ts +17 -0
- package/lib/inputs/hex-input/hex-input.component.d.ts +60 -0
- package/lib/inputs/hex-input/hex-input.directives.d.ts +20 -0
- package/lib/inputs/hex-input/hex-input.module.d.ts +11 -0
- package/lib/inputs/hex-input.model.d.ts +27 -0
- package/lib/inputs/input/input.component.d.ts +79 -0
- package/lib/inputs/input/input.directives.d.ts +33 -0
- package/lib/inputs/input/input.module.d.ts +13 -0
- package/lib/inputs/input-transformers.d.ts +24 -0
- package/lib/inputs/input-types.d.ts +6 -0
- package/lib/inputs/input-utils.d.ts +58 -0
- package/lib/inputs/number-input/number-input.component.d.ts +70 -0
- package/lib/inputs/number-input/number-input.directives.d.ts +8 -0
- package/lib/inputs/number-input/number-input.module.d.ts +11 -0
- package/lib/inputs/password-input/password-input.component.d.ts +54 -0
- package/lib/inputs/password-input/password-input.directives.d.ts +27 -0
- package/lib/inputs/password-input/password-input.module.d.ts +11 -0
- package/lib/inputs/password-input/password-input.types.d.ts +3 -0
- package/lib/inputs/simple-input/simple-input.component.d.ts +58 -0
- package/lib/inputs/simple-input/simple-input.directives.d.ts +20 -0
- package/lib/inputs/simple-input/simple-input.module.d.ts +11 -0
- package/lib/kbd/kbd.component.d.ts +15 -0
- package/lib/kbd/kbd.module.d.ts +9 -0
- package/lib/kbd/kbd.pipe.d.ts +7 -0
- package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +18 -0
- package/lib/kbd-shortcut/kbd-shortcut.module.d.ts +9 -0
- package/lib/modal/modal.component.d.ts +36 -0
- package/lib/modal/modal.module.d.ts +11 -0
- package/lib/option/option.component.d.ts +29 -0
- package/lib/option/option.module.d.ts +8 -0
- package/lib/progress-bar/progress-bar.component.d.ts +26 -0
- package/lib/progress-bar/progress-bar.directive.d.ts +9 -0
- package/lib/progress-bar/progress-bar.module.d.ts +9 -0
- package/lib/progress-bar/progress-bar.types.d.ts +26 -0
- package/lib/progress-circle/progress-circle.component.d.ts +28 -0
- package/lib/progress-circle/progress-circle.directive.d.ts +9 -0
- package/lib/progress-circle/progress-circle.module.d.ts +9 -0
- package/lib/progress-circle/progress-circle.types.d.ts +17 -0
- package/lib/radio/radio/radio.component.d.ts +23 -0
- package/lib/radio/radio-group.component.d.ts +43 -0
- package/lib/radio/radio.module.d.ts +9 -0
- package/lib/search-functions.d.ts +10 -0
- package/lib/segment/segment.component.d.ts +48 -0
- package/lib/segment/segment.directives.d.ts +9 -0
- package/lib/segment/segment.module.d.ts +9 -0
- package/lib/segment/segment.types.d.ts +16 -0
- package/lib/select/select.component.d.ts +255 -0
- package/lib/select/select.directive.d.ts +94 -0
- package/lib/select/select.module.d.ts +14 -0
- package/lib/select/select.types.d.ts +109 -0
- package/lib/slide-toggle/slide-toggle.component.d.ts +14 -0
- package/lib/slide-toggle/slide-toggle.module.d.ts +8 -0
- package/lib/slider/abstract-slider.d.ts +88 -0
- package/lib/slider/range-slider/range-slider.component.d.ts +29 -0
- package/lib/slider/range-slider/range-slider.module.d.ts +8 -0
- package/lib/slider/slider.component.d.ts +18 -0
- package/lib/slider/slider.directive.d.ts +9 -0
- package/lib/slider/slider.module.d.ts +10 -0
- package/lib/slider/slider.types.d.ts +28 -0
- package/lib/snackbar/index.d.ts +4 -0
- package/lib/snackbar/snackbar-ref.d.ts +37 -0
- package/lib/snackbar/snackbar.component.d.ts +16 -0
- package/lib/snackbar/snackbar.service.d.ts +31 -0
- package/lib/snackbar/snackbar.token.d.ts +5 -0
- package/lib/snackbar/snackbar.types.d.ts +48 -0
- package/lib/spinner/spinner.component.d.ts +8 -0
- package/lib/spinner/spinner.module.d.ts +8 -0
- package/lib/star/star-button/star-button.component.d.ts +16 -0
- package/lib/star/star-button/star-button.module.d.ts +9 -0
- package/lib/star/star-display/star-display.component.d.ts +16 -0
- package/lib/star/star-display/star-display.module.d.ts +9 -0
- package/lib/star/star-input/star-input.component.d.ts +51 -0
- package/lib/star/star-input/star-input.module.d.ts +9 -0
- package/lib/star/star.component.d.ts +10 -0
- package/lib/star/star.module.d.ts +8 -0
- package/lib/star/star.types.d.ts +30 -0
- package/lib/statebox/statebox.component.d.ts +31 -0
- package/lib/statebox/statebox.module.d.ts +8 -0
- package/lib/statebox/statebox.types.d.ts +22 -0
- package/lib/table/table-item-storage.d.ts +266 -0
- package/lib/table/table.component.d.ts +127 -0
- package/lib/table/table.directives.d.ts +35 -0
- package/lib/table/table.module.d.ts +12 -0
- package/lib/table/table.types.d.ts +83 -0
- package/lib/table/utils.d.ts +4 -0
- package/lib/table-from-csv/table-from-csv.component.d.ts +16 -0
- package/lib/table-from-csv/table-from-csv.module.d.ts +9 -0
- package/lib/table-pagination/table-pagination.component.d.ts +48 -0
- package/lib/table-pagination/table-pagination.module.d.ts +11 -0
- package/lib/table-pagination/table-pagination.types.d.ts +9 -0
- package/lib/types/alignment.types.d.ts +11 -0
- package/lib/types/colors.types.d.ts +71 -0
- package/lib/types/item-storage.types.d.ts +98 -0
- package/lib/types/theming.types.d.ts +61 -0
- package/lib/types/utility.types.d.ts +11 -0
- package/package.json +36 -0
- package/prebuilt-themes/default/badge.css +208 -0
- package/prebuilt-themes/default/badge.css.map +1 -0
- package/prebuilt-themes/default/buttons/button.css +290 -0
- package/prebuilt-themes/default/buttons/button.css.map +1 -0
- package/prebuilt-themes/default/buttons/fab.css +307 -0
- package/prebuilt-themes/default/buttons/fab.css.map +1 -0
- package/prebuilt-themes/default/buttons/icon-button.css +288 -0
- package/prebuilt-themes/default/buttons/icon-button.css.map +1 -0
- package/prebuilt-themes/default/calendar.css +293 -0
- package/prebuilt-themes/default/calendar.css.map +1 -0
- package/prebuilt-themes/default/card.css +122 -0
- package/prebuilt-themes/default/card.css.map +1 -0
- package/prebuilt-themes/default/checkbox-list.css +65 -0
- package/prebuilt-themes/default/checkbox-list.css.map +1 -0
- package/prebuilt-themes/default/checkbox.css +365 -0
- package/prebuilt-themes/default/checkbox.css.map +1 -0
- package/prebuilt-themes/default/chips.css +367 -0
- package/prebuilt-themes/default/chips.css.map +1 -0
- package/prebuilt-themes/default/color-display.css +29 -0
- package/prebuilt-themes/default/color-display.css.map +1 -0
- package/prebuilt-themes/default/color-picker.css +106 -0
- package/prebuilt-themes/default/color-picker.css.map +1 -0
- package/prebuilt-themes/default/core.css +84 -0
- package/prebuilt-themes/default/core.css.map +1 -0
- package/prebuilt-themes/default/dialog.css +18 -0
- package/prebuilt-themes/default/dialog.css.map +1 -0
- package/prebuilt-themes/default/divider.css +11 -0
- package/prebuilt-themes/default/divider.css.map +1 -0
- package/prebuilt-themes/default/dropdown-panel.css +37 -0
- package/prebuilt-themes/default/dropdown-panel.css.map +1 -0
- package/prebuilt-themes/default/file-drop-area.css +279 -0
- package/prebuilt-themes/default/file-drop-area.css.map +1 -0
- package/prebuilt-themes/default/form-field-frame.css +84 -0
- package/prebuilt-themes/default/form-field-frame.css.map +1 -0
- package/prebuilt-themes/default/inputs/color-input.css +139 -0
- package/prebuilt-themes/default/inputs/color-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/digit-input.css +45 -0
- package/prebuilt-themes/default/inputs/digit-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/file-input.css +169 -0
- package/prebuilt-themes/default/inputs/file-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/hex-input.css +119 -0
- package/prebuilt-themes/default/inputs/hex-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/input.css +139 -0
- package/prebuilt-themes/default/inputs/input.css.map +1 -0
- package/prebuilt-themes/default/inputs/number-input.css +150 -0
- package/prebuilt-themes/default/inputs/number-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/password-input.css +73 -0
- package/prebuilt-themes/default/inputs/password-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/search-bar.css +114 -0
- package/prebuilt-themes/default/inputs/search-bar.css.map +1 -0
- package/prebuilt-themes/default/inputs/simple-input.css +114 -0
- package/prebuilt-themes/default/inputs/simple-input.css.map +1 -0
- package/prebuilt-themes/default/kbd-shortcut.css +12 -0
- package/prebuilt-themes/default/kbd-shortcut.css.map +1 -0
- package/prebuilt-themes/default/kbd.css +17 -0
- package/prebuilt-themes/default/kbd.css.map +1 -0
- package/prebuilt-themes/default/modal.css +73 -0
- package/prebuilt-themes/default/modal.css.map +1 -0
- package/prebuilt-themes/default/progress-bar.css +267 -0
- package/prebuilt-themes/default/progress-bar.css.map +1 -0
- package/prebuilt-themes/default/progress-circle.css +167 -0
- package/prebuilt-themes/default/progress-circle.css.map +1 -0
- package/prebuilt-themes/default/radio.css +226 -0
- package/prebuilt-themes/default/radio.css.map +1 -0
- package/prebuilt-themes/default/segment.css +391 -0
- package/prebuilt-themes/default/segment.css.map +1 -0
- package/prebuilt-themes/default/select.css +275 -0
- package/prebuilt-themes/default/select.css.map +1 -0
- package/prebuilt-themes/default/slide-toggle.css +264 -0
- package/prebuilt-themes/default/slide-toggle.css.map +1 -0
- package/prebuilt-themes/default/slider.css +354 -0
- package/prebuilt-themes/default/slider.css.map +1 -0
- package/prebuilt-themes/default/snackbar.css +183 -0
- package/prebuilt-themes/default/snackbar.css.map +1 -0
- package/prebuilt-themes/default/spinner.css +151 -0
- package/prebuilt-themes/default/spinner.css.map +1 -0
- package/prebuilt-themes/default/stars.css +291 -0
- package/prebuilt-themes/default/stars.css.map +1 -0
- package/prebuilt-themes/default/statebox.css +235 -0
- package/prebuilt-themes/default/statebox.css.map +1 -0
- package/prebuilt-themes/default/table-pagination.css +48 -0
- package/prebuilt-themes/default/table-pagination.css.map +1 -0
- package/prebuilt-themes/default/table.css +418 -0
- package/prebuilt-themes/default/table.css.map +1 -0
- package/public-api.d.ts +145 -0
- package/themes/_variables.scss +121 -0
- package/themes/default/_clear-button.scss +73 -0
- package/themes/default/_coloring.scss +137 -0
- package/themes/default/_dropdown-arrow.scss +12 -0
- package/themes/default/_mixins.scss +70 -0
- package/themes/default/badge.scss +94 -0
- package/themes/default/buttons/_button-mixins.scss +144 -0
- package/themes/default/buttons/button.scss +62 -0
- package/themes/default/buttons/fab.scss +72 -0
- package/themes/default/buttons/icon-button.scss +59 -0
- package/themes/default/calendar.scss +182 -0
- package/themes/default/card.scss +126 -0
- package/themes/default/checkbox-list.scss +83 -0
- package/themes/default/checkbox.scss +109 -0
- package/themes/default/chips.scss +206 -0
- package/themes/default/color-display.scss +41 -0
- package/themes/default/color-picker.scss +111 -0
- package/themes/default/core.scss +96 -0
- package/themes/default/dialog.scss +16 -0
- package/themes/default/divider.scss +13 -0
- package/themes/default/dropdown-panel.scss +45 -0
- package/themes/default/file-drop-area.scss +162 -0
- package/themes/default/form-field-frame.scss +78 -0
- package/themes/default/inputs/_shared.scss +46 -0
- package/themes/default/inputs/color-input.scss +46 -0
- package/themes/default/inputs/digit-input.scss +56 -0
- package/themes/default/inputs/file-input.scss +78 -0
- package/themes/default/inputs/hex-input.scss +27 -0
- package/themes/default/inputs/input.scss +52 -0
- package/themes/default/inputs/number-input.scss +121 -0
- package/themes/default/inputs/password-input.scss +43 -0
- package/themes/default/inputs/search-bar.scss +19 -0
- package/themes/default/inputs/simple-input.scss +19 -0
- package/themes/default/kbd-shortcut.scss +13 -0
- package/themes/default/kbd.scss +20 -0
- package/themes/default/modal.scss +93 -0
- package/themes/default/progress-bar.scss +166 -0
- package/themes/default/progress-circle.scss +56 -0
- package/themes/default/radio.scss +112 -0
- package/themes/default/segment.scss +339 -0
- package/themes/default/select.scss +253 -0
- package/themes/default/slide-toggle.scss +151 -0
- package/themes/default/slider.scss +224 -0
- package/themes/default/snackbar.scss +60 -0
- package/themes/default/spinner.scss +21 -0
- package/themes/default/stars.scss +122 -0
- package/themes/default/statebox.scss +109 -0
- package/themes/default/table-pagination.scss +56 -0
- package/themes/default/table.scss +403 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { isDefined } from 'simple-bool';
|
|
2
|
+
export class PaginationModel {
|
|
3
|
+
constructor() {
|
|
4
|
+
this._itemsPerPageOptions = [10, 25, 50];
|
|
5
|
+
this._itemsPerPage = 50;
|
|
6
|
+
this._page = 1;
|
|
7
|
+
this._itemsOnCurrentPageMemo = null;
|
|
8
|
+
//! current page
|
|
9
|
+
this._lastPageNumMemo = null;
|
|
10
|
+
}
|
|
11
|
+
//! total items
|
|
12
|
+
setTotalItems(v) {
|
|
13
|
+
this._totalItems = v;
|
|
14
|
+
this._lastPageNumMemo = null;
|
|
15
|
+
this._itemsOnCurrentPageMemo = null;
|
|
16
|
+
}
|
|
17
|
+
get isTotalItemsDefined() {
|
|
18
|
+
return isDefined(this._totalItems);
|
|
19
|
+
}
|
|
20
|
+
//! items per page
|
|
21
|
+
setItemsPerPageOptions(v) {
|
|
22
|
+
this._itemsPerPageOptions = v;
|
|
23
|
+
}
|
|
24
|
+
getItemsPerPageOptions() {
|
|
25
|
+
return this._itemsPerPageOptions;
|
|
26
|
+
}
|
|
27
|
+
setItemsPerPage(v) {
|
|
28
|
+
this._itemsPerPage = v;
|
|
29
|
+
this._lastPageNumMemo = null;
|
|
30
|
+
this._itemsOnCurrentPageMemo = null;
|
|
31
|
+
this.setPage(1);
|
|
32
|
+
}
|
|
33
|
+
getItemsPerPage() {
|
|
34
|
+
return this._itemsPerPage;
|
|
35
|
+
}
|
|
36
|
+
get itemsOnCurrentPage() {
|
|
37
|
+
if (!isDefined(this._totalItems))
|
|
38
|
+
return null;
|
|
39
|
+
if (!isDefined(this._itemsOnCurrentPageMemo))
|
|
40
|
+
[
|
|
41
|
+
(this._itemsOnCurrentPageMemo = [
|
|
42
|
+
Math.min(this._totalItems, (this._page - 1) * this._itemsPerPage + 1),
|
|
43
|
+
Math.min(this._totalItems, this._page * this._itemsPerPage),
|
|
44
|
+
]),
|
|
45
|
+
];
|
|
46
|
+
return this._itemsOnCurrentPageMemo;
|
|
47
|
+
}
|
|
48
|
+
//! action disabled states
|
|
49
|
+
get firstPageDisabled() {
|
|
50
|
+
return !isDefined(this._totalItems) || this._page == 1;
|
|
51
|
+
}
|
|
52
|
+
get lastPageDisabled() {
|
|
53
|
+
return !isDefined(this._totalItems) || this._page == this.lastPageNum;
|
|
54
|
+
}
|
|
55
|
+
get lastPageNum() {
|
|
56
|
+
if (!isDefined(this._totalItems))
|
|
57
|
+
return null;
|
|
58
|
+
if (!isDefined(this._lastPageNumMemo)) {
|
|
59
|
+
this._lastPageNumMemo = Math.ceil(this._totalItems / this._itemsPerPage);
|
|
60
|
+
}
|
|
61
|
+
return this._lastPageNumMemo;
|
|
62
|
+
}
|
|
63
|
+
get isLastPage() {
|
|
64
|
+
if (!isDefined(this._totalItems))
|
|
65
|
+
return true;
|
|
66
|
+
return this.lastPageNum === this._page;
|
|
67
|
+
}
|
|
68
|
+
setPage(v) {
|
|
69
|
+
this._page = v;
|
|
70
|
+
this._itemsOnCurrentPageMemo = null;
|
|
71
|
+
}
|
|
72
|
+
getPage() {
|
|
73
|
+
return this._page;
|
|
74
|
+
}
|
|
75
|
+
firstPage() {
|
|
76
|
+
if (this.firstPageDisabled)
|
|
77
|
+
return null;
|
|
78
|
+
this.setPage(1);
|
|
79
|
+
return 1;
|
|
80
|
+
}
|
|
81
|
+
prevPage() {
|
|
82
|
+
if (this.firstPageDisabled)
|
|
83
|
+
return null;
|
|
84
|
+
this.setPage(this._page - 1);
|
|
85
|
+
return this._page;
|
|
86
|
+
}
|
|
87
|
+
nextPage() {
|
|
88
|
+
if (this.lastPageDisabled)
|
|
89
|
+
return null;
|
|
90
|
+
this.setPage(this._page + 1);
|
|
91
|
+
return this._page;
|
|
92
|
+
}
|
|
93
|
+
lastPage() {
|
|
94
|
+
if (this.lastPageDisabled)
|
|
95
|
+
return null;
|
|
96
|
+
this.setPage(this.lastPageNum);
|
|
97
|
+
return this._page;
|
|
98
|
+
}
|
|
99
|
+
//! context
|
|
100
|
+
getCurrentItemsContext() {
|
|
101
|
+
if (!isDefined(this._totalItems))
|
|
102
|
+
throw new Error('Cannot use pagination model without defining total items first.');
|
|
103
|
+
const pageItems = this.itemsOnCurrentPage;
|
|
104
|
+
return {
|
|
105
|
+
totalPages: this.lastPageNum,
|
|
106
|
+
totalItems: this._totalItems,
|
|
107
|
+
page: this._page,
|
|
108
|
+
currentItemsFirst: pageItems[0],
|
|
109
|
+
currentItemsLast: pageItems[1],
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
getPartialContext() {
|
|
113
|
+
return {
|
|
114
|
+
...this.getCurrentItemsContext(),
|
|
115
|
+
itemsPerPageOptions: this._itemsPerPageOptions,
|
|
116
|
+
itemsPerPage: this._itemsPerPage,
|
|
117
|
+
firstPageDisabled: this.firstPageDisabled,
|
|
118
|
+
prevPageDisabled: this.firstPageDisabled,
|
|
119
|
+
nextPageDisabled: this.lastPageDisabled,
|
|
120
|
+
lastPageDisabled: this.lastPageDisabled,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL21vZGVscy9wYWdpbmF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFxQnhDLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBRVkseUJBQW9CLEdBQWtELENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBNkJsQiw0QkFBdUIsR0FBNEIsSUFBSSxDQUFDO1FBcUJoRSxnQkFBZ0I7UUFDUixxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO0lBZ0VuRCxDQUFDO0lBakhHLGVBQWU7SUFDZixhQUFhLENBQUMsQ0FBUztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksbUJBQW1CO1FBQ25CLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNCQUFzQixDQUFDLENBQWdEO1FBQ25FLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELHNCQUFzQjtRQUNsQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsZUFBZSxDQUFDLENBQVM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3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LE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztJQUNYLHNCQUFzQjtRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7UUFFckgsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFtQixDQUFDO1FBQzNDLE9BQU87WUFDSCxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVk7WUFDN0IsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQy9CLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDakMsQ0FBQztJQUNOLENBQUM7SUFDRCxpQkFBaUI7UUFDYixPQUFPO1lBQ0gsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDaEMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtZQUM5QyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDaEMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ3hDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUMxQyxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25DdXJyZW50SXRlbXNDb250ZXh0IHtcbiAgICBjdXJyZW50SXRlbXNGaXJzdDogbnVtYmVyO1xuICAgIGN1cnJlbnRJdGVtc0xhc3Q6IG51bWJlcjtcbiAgICB0b3RhbEl0ZW1zOiBudW1iZXI7XG4gICAgdG90YWxQYWdlczogbnVtYmVyO1xuICAgIHBhZ2U6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ29udGV4dCBleHRlbmRzIFBhZ2luYXRpb25DdXJyZW50SXRlbXNDb250ZXh0IHtcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zOiBudW1iZXJbXSB8IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W107XG4gICAgaXRlbXNQZXJQYWdlOiBudW1iZXI7XG4gICAgb25JdGVtc1BlclBhZ2VDaGFuZ2U6IChuZXdWYWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xuICAgIGZpcnN0UGFnZURpc2FibGVkOiBib29sZWFuO1xuICAgIHByZXZQYWdlRGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgbmV4dFBhZ2VEaXNhYmxlZDogYm9vbGVhbjtcbiAgICBsYXN0UGFnZURpc2FibGVkOiBib29sZWFuO1xuICAgIG9uUGFnZUNoYW5nZTogKG5ld1BhZ2U6IG51bWJlcikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Nb2RlbCB7XG4gICAgcHJpdmF0ZSBfdG90YWxJdGVtcz86IG51bWJlcjtcbiAgICBwcml2YXRlIF9pdGVtc1BlclBhZ2VPcHRpb25zOiBudW1iZXJbXSB8IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10gPSBbMTAsIDI1LCA1MF07XG4gICAgcHJpdmF0ZSBfaXRlbXNQZXJQYWdlOiBudW1iZXIgPSA1MDtcbiAgICBwcml2YXRlIF9wYWdlOiBudW1iZXIgPSAxO1xuXG4gICAgLy8hIHRvdGFsIGl0ZW1zXG4gICAgc2V0VG90YWxJdGVtcyh2OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG90YWxJdGVtcyA9IHY7XG4gICAgICAgIHRoaXMuX2xhc3RQYWdlTnVtTWVtbyA9IG51bGw7XG4gICAgICAgIHRoaXMuX2l0ZW1zT25DdXJyZW50UGFnZU1lbW8gPSBudWxsO1xuICAgIH1cbiAgICBnZXQgaXNUb3RhbEl0ZW1zRGVmaW5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzRGVmaW5lZCh0aGlzLl90b3RhbEl0ZW1zKTtcbiAgICB9XG5cbiAgICAvLyEgaXRlbXMgcGVyIHBhZ2VcbiAgICBzZXRJdGVtc1BlclBhZ2VPcHRpb25zKHY6IG51bWJlcltdIHwgeyB2YWx1ZTogbnVtYmVyOyBsYWJlbDogc3RyaW5nIH1bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pdGVtc1BlclBhZ2VPcHRpb25zID0gdjtcbiAgICB9XG4gICAgZ2V0SXRlbXNQZXJQYWdlT3B0aW9ucygpOiBudW1iZXJbXSB8IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNQZXJQYWdlT3B0aW9ucztcbiAgICB9XG4gICAgc2V0SXRlbXNQZXJQYWdlKHY6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pdGVtc1BlclBhZ2UgPSB2O1xuICAgICAgICB0aGlzLl9sYXN0UGFnZU51bU1lbW8gPSBudWxsO1xuICAgICAgICB0aGlzLl9pdGVtc09uQ3VycmVudFBhZ2VNZW1vID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZXRQYWdlKDEpO1xuICAgIH1cbiAgICBnZXRJdGVtc1BlclBhZ2UoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pdGVtc09uQ3VycmVudFBhZ2VNZW1vOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCA9IG51bGw7XG4gICAgZ2V0IGl0ZW1zT25DdXJyZW50UGFnZSgpOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCB7XG4gICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX3RvdGFsSXRlbXMpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5faXRlbXNPbkN1cnJlbnRQYWdlTWVtbykpXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKHRoaXMuX2l0ZW1zT25DdXJyZW50UGFnZU1lbW8gPSBbXG4gICAgICAgICAgICAgICAgICAgIE1hdGgubWluKHRoaXMuX3RvdGFsSXRlbXMsICh0aGlzLl9wYWdlIC0gMSkgKiB0aGlzLl9pdGVtc1BlclBhZ2UgKyAxKSxcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5taW4odGhpcy5fdG90YWxJdGVtcywgdGhpcy5fcGFnZSAqIHRoaXMuX2l0ZW1zUGVyUGFnZSksXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBdO1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNPbkN1cnJlbnRQYWdlTWVtbztcbiAgICB9XG5cbiAgICAvLyEgYWN0aW9uIGRpc2FibGVkIHN0YXRlc1xuICAgIGdldCBmaXJzdFBhZ2VEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFpc0RlZmluZWQodGhpcy5fdG90YWxJdGVtcykgfHwgdGhpcy5fcGFnZSA9PSAxO1xuICAgIH1cbiAgICBnZXQgbGFzdFBhZ2VEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFpc0RlZmluZWQodGhpcy5fdG90YWxJdGVtcykgfHwgdGhpcy5fcGFnZSA9PSB0aGlzLmxhc3RQYWdlTnVtO1xuICAgIH1cblxuICAgIC8vISBjdXJyZW50IHBhZ2VcbiAgICBwcml2YXRlIF9sYXN0UGFnZU51bU1lbW86IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGdldCBsYXN0UGFnZU51bSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5fdG90YWxJdGVtcykpIHJldHVybiBudWxsO1xuICAgICAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLl9sYXN0UGFnZU51bU1lbW8pKSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0UGFnZU51bU1lbW8gPSBNYXRoLmNlaWwodGhpcy5fdG90YWxJdGVtcyAvIHRoaXMuX2l0ZW1zUGVyUGFnZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RQYWdlTnVtTWVtbztcbiAgICB9XG4gICAgZ2V0IGlzTGFzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX3RvdGFsSXRlbXMpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFBhZ2VOdW0gPT09IHRoaXMuX3BhZ2U7XG4gICAgfVxuICAgIHNldFBhZ2UodjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BhZ2UgPSB2O1xuICAgICAgICB0aGlzLl9pdGVtc09uQ3VycmVudFBhZ2VNZW1vID0gbnVsbDtcbiAgICB9XG4gICAgZ2V0UGFnZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnZTtcbiAgICB9XG4gICAgZmlyc3RQYWdlKCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5maXJzdFBhZ2VEaXNhYmxlZCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHRoaXMuc2V0UGFnZSgxKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHByZXZQYWdlKCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5maXJzdFBhZ2VEaXNhYmxlZCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHRoaXMuc2V0UGFnZSh0aGlzLl9wYWdlIC0gMSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdlO1xuICAgIH1cbiAgICBuZXh0UGFnZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMubGFzdFBhZ2VEaXNhYmxlZCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHRoaXMuc2V0UGFnZSh0aGlzLl9wYWdlICsgMSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdlO1xuICAgIH1cbiAgICBsYXN0UGFnZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMubGFzdFBhZ2VEaXNhYmxlZCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHRoaXMuc2V0UGFnZSh0aGlzLmxhc3RQYWdlTnVtISk7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdlO1xuICAgIH1cblxuICAgIC8vISBjb250ZXh0XG4gICAgZ2V0Q3VycmVudEl0ZW1zQ29udGV4dCgpOiBQYWdpbmF0aW9uQ3VycmVudEl0ZW1zQ29udGV4dCB7XG4gICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX3RvdGFsSXRlbXMpKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgcGFnaW5hdGlvbiBtb2RlbCB3aXRob3V0IGRlZmluaW5nIHRvdGFsIGl0ZW1zIGZpcnN0LicpO1xuXG4gICAgICAgIGNvbnN0IHBhZ2VJdGVtcyA9IHRoaXMuaXRlbXNPbkN1cnJlbnRQYWdlITtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvdGFsUGFnZXM6IHRoaXMubGFzdFBhZ2VOdW0hLFxuICAgICAgICAgICAgdG90YWxJdGVtczogdGhpcy5fdG90YWxJdGVtcyxcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMuX3BhZ2UsXG4gICAgICAgICAgICBjdXJyZW50SXRlbXNGaXJzdDogcGFnZUl0ZW1zWzBdLFxuICAgICAgICAgICAgY3VycmVudEl0ZW1zTGFzdDogcGFnZUl0ZW1zWzFdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRQYXJ0aWFsQ29udGV4dCgpOiBPbWl0PFBhZ2luYXRpb25Db250ZXh0LCAnb25JdGVtc1BlclBhZ2VDaGFuZ2UnIHwgJ29uUGFnZUNoYW5nZSc+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q3VycmVudEl0ZW1zQ29udGV4dCgpLFxuICAgICAgICAgICAgaXRlbXNQZXJQYWdlT3B0aW9uczogdGhpcy5faXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5faXRlbXNQZXJQYWdlLFxuICAgICAgICAgICAgZmlyc3RQYWdlRGlzYWJsZWQ6IHRoaXMuZmlyc3RQYWdlRGlzYWJsZWQsXG4gICAgICAgICAgICBwcmV2UGFnZURpc2FibGVkOiB0aGlzLmZpcnN0UGFnZURpc2FibGVkLFxuICAgICAgICAgICAgbmV4dFBhZ2VEaXNhYmxlZDogdGhpcy5sYXN0UGFnZURpc2FibGVkLFxuICAgICAgICAgICAgbGFzdFBhZ2VEaXNhYmxlZDogdGhpcy5sYXN0UGFnZURpc2FibGVkLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { _FocusableComponentBase } from './focusable-component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Common code for components, which implement the ControlValueAccessor.
|
|
6
|
+
*
|
|
7
|
+
* **Warning**: `writeValue` function should be implemented on the child component!
|
|
8
|
+
*/
|
|
9
|
+
export class _NgModelComponentBase extends _FocusableComponentBase {
|
|
10
|
+
/**
|
|
11
|
+
* Registers a function to handle touched state. Required by ControlValueAccessor.
|
|
12
|
+
* @param fn The function to register.
|
|
13
|
+
*/
|
|
14
|
+
registerOnTouched(fn) {
|
|
15
|
+
this._onTouchedRegistered = fn;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Registers a function to handle value change. Required by ControlValueAccessor.
|
|
19
|
+
* @param fn The function to register.
|
|
20
|
+
*/
|
|
21
|
+
registerOnChange(fn) {
|
|
22
|
+
this._onChangeRegistered = fn;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Sets the component's disabled state. Required by ControlValueAccessor.
|
|
26
|
+
* @param isDisabled the new disabled state.
|
|
27
|
+
*/
|
|
28
|
+
setDisabledState(isDisabled) {
|
|
29
|
+
this._disabled = isDisabled;
|
|
30
|
+
}
|
|
31
|
+
//! event handlers
|
|
32
|
+
onBlur(event) {
|
|
33
|
+
super.onBlur(event);
|
|
34
|
+
this._onTouchedRegistered?.();
|
|
35
|
+
}
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: _NgModelComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
37
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: _NgModelComponentBase, usesInheritance: true, ngImport: i0 }); }
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: _NgModelComponentBase, decorators: [{
|
|
40
|
+
type: Directive
|
|
41
|
+
}] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdtb2RlbC1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUVoRTs7OztHQUlHO0FBRUgsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSx1QkFBdUI7SUFJdkU7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsRUFBYztRQUM1QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFDRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFrQjtRQUMvQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDO0lBZ0JELGtCQUFrQjtJQUNULE1BQU0sQ0FBQyxLQUFpQjtRQUM3QixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFDbEMsQ0FBQzs4R0E1Q2lCLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUQxQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IF9Gb2N1c2FibGVDb21wb25lbnRCYXNlIH0gZnJvbSAnLi9mb2N1c2FibGUtY29tcG9uZW50JztcblxuLyoqXG4gKiBDb21tb24gY29kZSBmb3IgY29tcG9uZW50cywgd2hpY2ggaW1wbGVtZW50IHRoZSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAqXG4gKiAqKldhcm5pbmcqKjogYHdyaXRlVmFsdWVgIGZ1bmN0aW9uIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBvbiB0aGUgY2hpbGQgY29tcG9uZW50IVxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfTmdNb2RlbENvbXBvbmVudEJhc2UgZXh0ZW5kcyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICAvLyEgY29udHJvbCB2YWx1ZSBhY2Nlc3NvclxuICAgIHByb3RlY3RlZCBfb25DaGFuZ2VSZWdpc3RlcmVkITogKF86IGFueSkgPT4gdm9pZDtcbiAgICBwcm90ZWN0ZWQgX29uVG91Y2hlZFJlZ2lzdGVyZWQhOiAoKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIHRvIGhhbmRsZSB0b3VjaGVkIHN0YXRlLiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyLlxuICAgICAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZFJlZ2lzdGVyZWQgPSBmbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXJzIGEgZnVuY3Rpb24gdG8gaGFuZGxlIHZhbHVlIGNoYW5nZS4gUmVxdWlyZWQgYnkgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byByZWdpc3Rlci5cbiAgICAgKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB7fSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQgPSBmbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY29tcG9uZW50J3MgZGlzYWJsZWQgc3RhdGUuIFJlcXVpcmVkIGJ5IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIHRoZSBuZXcgZGlzYWJsZWQgc3RhdGUuXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgdGhlIGEgbmV3IHZhbHVlIGludG8gdGhlIGNvbXBvbmVudC4gUmVxdWlyZWQgYnkgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgICogQGFic3RyYWN0XG4gICAgICogQHBhcmFtIHYgVGhlIG5ldyB2YWx1ZSB0byB3cml0ZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCB3cml0ZVZhbHVlKHY6IGFueSk6IHZvaWQ7IC8vKiBhYnN0cmFjdFxuXG4gICAgLyoqXG4gICAgICogV3JpdGVzIHRoZSBhIG5ldyB2YWx1ZSBpbnRvIHRoZSBjb21wb25lbnQuIFJlcXVpcmVkIGJ5IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBhYnN0cmFjdFxuICAgICAqIEBwYXJhbSB2IFRoZSBuZXcgdmFsdWUgdG8gd3JpdGUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9lbWl0Q2hhbmdlKCk6IHZvaWQ7IC8vKiBhYnN0cmFjdFxuXG4gICAgLy8hIGV2ZW50IGhhbmRsZXJzXG4gICAgb3ZlcnJpZGUgb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIHN1cGVyLm9uQmx1cihldmVudCk7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZFJlZ2lzdGVyZWQ/LigpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export class Queue {
|
|
2
|
+
push(item) {
|
|
3
|
+
if (!this.tail)
|
|
4
|
+
return this.pushFront(item);
|
|
5
|
+
this.tail.next = new QueueItem(item);
|
|
6
|
+
this.tail = this.tail.next;
|
|
7
|
+
}
|
|
8
|
+
pushFront(item) {
|
|
9
|
+
this.head = new QueueItem(item, this.head);
|
|
10
|
+
if (!this.tail)
|
|
11
|
+
this.tail = this.head;
|
|
12
|
+
}
|
|
13
|
+
pop() {
|
|
14
|
+
const head = this.head;
|
|
15
|
+
if (!head)
|
|
16
|
+
return;
|
|
17
|
+
//replace head with the next item
|
|
18
|
+
this.head = head.next;
|
|
19
|
+
//delete the tail if there are no next items
|
|
20
|
+
if (!this.head)
|
|
21
|
+
this.tail = undefined;
|
|
22
|
+
return head.value;
|
|
23
|
+
}
|
|
24
|
+
peek() {
|
|
25
|
+
return this.head?.value;
|
|
26
|
+
}
|
|
27
|
+
clear() {
|
|
28
|
+
this.head = undefined;
|
|
29
|
+
this.tail = undefined;
|
|
30
|
+
}
|
|
31
|
+
get length() {
|
|
32
|
+
let length = 0;
|
|
33
|
+
let currentNode = this.head;
|
|
34
|
+
while (currentNode) {
|
|
35
|
+
length++;
|
|
36
|
+
currentNode = currentNode.next;
|
|
37
|
+
}
|
|
38
|
+
return length;
|
|
39
|
+
}
|
|
40
|
+
isEmpty() {
|
|
41
|
+
return !this.head;
|
|
42
|
+
}
|
|
43
|
+
toArray() {
|
|
44
|
+
const array = [];
|
|
45
|
+
let currentNode = this.head;
|
|
46
|
+
while (currentNode) {
|
|
47
|
+
array.push(currentNode.value);
|
|
48
|
+
currentNode = currentNode.next;
|
|
49
|
+
}
|
|
50
|
+
return array;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export class QueueItem {
|
|
54
|
+
constructor(value, next) {
|
|
55
|
+
this.value = value;
|
|
56
|
+
this.next = next;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9xdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8sS0FBSztJQUlkLElBQUksQ0FBQyxJQUFPO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxJQUFLLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUssQ0FBQyxJQUFLLENBQUM7SUFDakMsQ0FBQztJQUNELFNBQVMsQ0FBQyxJQUFPO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBQ0QsR0FBRztRQUNDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQ2xCLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBRXRDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSTtRQUNBLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUNELEtBQUs7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ04sSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixPQUFPLFdBQVcsRUFBRTtZQUNoQixNQUFNLEVBQUUsQ0FBQztZQUNULFdBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUNELE9BQU87UUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN0QixDQUFDO0lBQ0QsT0FBTztRQUNILE1BQU0sS0FBSyxHQUFRLEVBQUUsQ0FBQztRQUN0QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLE9BQU8sV0FBVyxFQUFFO1lBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLFdBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFDbEIsWUFDVyxLQUFRLEVBQ1IsSUFBbUI7UUFEbkIsVUFBSyxHQUFMLEtBQUssQ0FBRztRQUNSLFNBQUksR0FBSixJQUFJLENBQWU7SUFDM0IsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIElRdWV1ZSB7XG4gICAgcmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBRdWV1ZTxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBJUXVldWUge1xuICAgIHByaXZhdGUgaGVhZD86IFF1ZXVlSXRlbTxUPjtcbiAgICBwcml2YXRlIHRhaWw/OiBRdWV1ZUl0ZW08VD47XG5cbiAgICBwdXNoKGl0ZW06IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhaWwpIHJldHVybiB0aGlzLnB1c2hGcm9udChpdGVtKTtcbiAgICAgICAgdGhpcy50YWlsIS5uZXh0ID0gbmV3IFF1ZXVlSXRlbShpdGVtKTtcbiAgICAgICAgdGhpcy50YWlsID0gdGhpcy50YWlsIS5uZXh0ITtcbiAgICB9XG4gICAgcHVzaEZyb250KGl0ZW06IFQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oZWFkID0gbmV3IFF1ZXVlSXRlbShpdGVtLCB0aGlzLmhlYWQpO1xuICAgICAgICBpZiAoIXRoaXMudGFpbCkgdGhpcy50YWlsID0gdGhpcy5oZWFkO1xuICAgIH1cbiAgICBwb3AoKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGhlYWQgPSB0aGlzLmhlYWQ7XG4gICAgICAgIGlmICghaGVhZCkgcmV0dXJuO1xuICAgICAgICAvL3JlcGxhY2UgaGVhZCB3aXRoIHRoZSBuZXh0IGl0ZW1cbiAgICAgICAgdGhpcy5oZWFkID0gaGVhZC5uZXh0O1xuICAgICAgICAvL2RlbGV0ZSB0aGUgdGFpbCBpZiB0aGVyZSBhcmUgbm8gbmV4dCBpdGVtc1xuICAgICAgICBpZiAoIXRoaXMuaGVhZCkgdGhpcy50YWlsID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiBoZWFkLnZhbHVlO1xuICAgIH1cbiAgICBwZWVrKCk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5oZWFkPy52YWx1ZTtcbiAgICB9XG4gICAgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGVhZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy50YWlsID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIGxldCBsZW5ndGggPSAwO1xuICAgICAgICBsZXQgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG4gICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgICAgICAgbGVuZ3RoKys7XG4gICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gICAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmhlYWQ7XG4gICAgfVxuICAgIHRvQXJyYXkoKTogVFtdIHtcbiAgICAgICAgY29uc3QgYXJyYXk6IFRbXSA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG4gICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgICAgICAgYXJyYXkucHVzaChjdXJyZW50Tm9kZS52YWx1ZSk7XG4gICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFF1ZXVlSXRlbTxUPiB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyB2YWx1ZTogVCxcbiAgICAgICAgcHVibGljIG5leHQ/OiBRdWV1ZUl0ZW08VD5cbiAgICApIHt9XG59XG4iXX0=
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';
|
|
2
|
+
import { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';
|
|
3
|
+
import { SimpleItemStorage } from './item-storages/simple-item-storage';
|
|
4
|
+
import { _NgModelComponentBase } from './ngmodel-component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class _SelectableListComponentBase extends _NgModelComponentBase {
|
|
7
|
+
constructor(_cd) {
|
|
8
|
+
super();
|
|
9
|
+
this._cd = _cd;
|
|
10
|
+
//! public constants
|
|
11
|
+
this.itemStorage = new SimpleItemStorage(this);
|
|
12
|
+
this.htmlId = crypto.randomUUID();
|
|
13
|
+
this.DEFAULTS = {
|
|
14
|
+
valueFrom: 'value',
|
|
15
|
+
labelFrom: 'label',
|
|
16
|
+
disabledFrom: 'disabled',
|
|
17
|
+
};
|
|
18
|
+
//! multiselectable
|
|
19
|
+
this._multiselectable = false;
|
|
20
|
+
//! require value
|
|
21
|
+
this._requireValue = undefined;
|
|
22
|
+
//! coerced properties
|
|
23
|
+
//should the value that the "disabledFrom" path lead to be inverted?
|
|
24
|
+
//useful when the property is e.g. "active", which is the oposite of "disabled"
|
|
25
|
+
this._invertDisabled = false;
|
|
26
|
+
this._maxSelectedItems = undefined;
|
|
27
|
+
//! change & touch event emitters
|
|
28
|
+
this._touched = false;
|
|
29
|
+
//! focus & blur handlers
|
|
30
|
+
this.lastBlurTimestamp = null;
|
|
31
|
+
this.valueChange = new EventEmitter();
|
|
32
|
+
//! output events
|
|
33
|
+
this.changeEvent = new EventEmitter();
|
|
34
|
+
this.addEvent = new EventEmitter();
|
|
35
|
+
this.removeEvent = new EventEmitter();
|
|
36
|
+
//! highligh-related
|
|
37
|
+
this.isMouseBeingUsed = false;
|
|
38
|
+
}
|
|
39
|
+
//! items setter/getter
|
|
40
|
+
get items() {
|
|
41
|
+
return this.itemStorage.items;
|
|
42
|
+
}
|
|
43
|
+
set items(value) {
|
|
44
|
+
if (!Array.isArray(value))
|
|
45
|
+
value = coerceArrayProperty(value);
|
|
46
|
+
let shouldPrintErrors = this.itemStorage.setItems(value);
|
|
47
|
+
if (shouldPrintErrors) {
|
|
48
|
+
this._printPrimitiveWarnings();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
_printPrimitiveWarnings() {
|
|
52
|
+
function makeWarning(str) {
|
|
53
|
+
console.warn(`Skipped using [${str}] property bound to <ard-segment>, as some provided items are of primitive type`);
|
|
54
|
+
}
|
|
55
|
+
if (this.valueFrom) {
|
|
56
|
+
makeWarning('valueFrom');
|
|
57
|
+
}
|
|
58
|
+
if (this.labelFrom) {
|
|
59
|
+
makeWarning('labelFrom');
|
|
60
|
+
}
|
|
61
|
+
if (this.disabledFrom) {
|
|
62
|
+
makeWarning('disabledFrom');
|
|
63
|
+
}
|
|
64
|
+
if (this.invertDisabled) {
|
|
65
|
+
makeWarning('invertDisabled');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
get singleselectable() {
|
|
69
|
+
return !this._multiselectable;
|
|
70
|
+
}
|
|
71
|
+
get invertDisabled() {
|
|
72
|
+
return this._invertDisabled;
|
|
73
|
+
}
|
|
74
|
+
set invertDisabled(v) {
|
|
75
|
+
this._invertDisabled = coerceBooleanProperty(v);
|
|
76
|
+
}
|
|
77
|
+
get maxSelectedItems() {
|
|
78
|
+
return this._maxSelectedItems;
|
|
79
|
+
}
|
|
80
|
+
set maxSelectedItems(v) {
|
|
81
|
+
this._maxSelectedItems = coerceNumberProperty(v);
|
|
82
|
+
}
|
|
83
|
+
//! control value accessor
|
|
84
|
+
//override the writeValue and setDisabledState defined in _NgModelComponent
|
|
85
|
+
setDisabledState(state) {
|
|
86
|
+
this._disabled = state;
|
|
87
|
+
this._cd.markForCheck();
|
|
88
|
+
}
|
|
89
|
+
writeValue(ngModel) {
|
|
90
|
+
this.itemStorage.writeValue(ngModel);
|
|
91
|
+
this._cd.markForCheck();
|
|
92
|
+
}
|
|
93
|
+
get touched() {
|
|
94
|
+
return this._touched;
|
|
95
|
+
}
|
|
96
|
+
set touched(state) {
|
|
97
|
+
this._touched = state;
|
|
98
|
+
}
|
|
99
|
+
_emitChange() {
|
|
100
|
+
let value = this.itemStorage.value;
|
|
101
|
+
this._onChangeRegistered?.(value);
|
|
102
|
+
this.changeEvent.emit(value);
|
|
103
|
+
this.valueChange.emit(value);
|
|
104
|
+
}
|
|
105
|
+
_onTouched() {
|
|
106
|
+
if (this.touched)
|
|
107
|
+
return;
|
|
108
|
+
this._onTouchedRegistered?.();
|
|
109
|
+
this.touched = true;
|
|
110
|
+
}
|
|
111
|
+
onFocus(event) {
|
|
112
|
+
super.onFocus(event);
|
|
113
|
+
if (this.touched || !this.lastBlurTimestamp || this.lastBlurTimestamp + 1 < Date.now())
|
|
114
|
+
return;
|
|
115
|
+
this.lastBlurTimestamp = null;
|
|
116
|
+
this._onTouched();
|
|
117
|
+
}
|
|
118
|
+
onBlur(event) {
|
|
119
|
+
super.onBlur(event);
|
|
120
|
+
if (!this.touched)
|
|
121
|
+
this.lastBlurTimestamp = Date.now();
|
|
122
|
+
}
|
|
123
|
+
//! getters
|
|
124
|
+
get firstHighlightedItem() {
|
|
125
|
+
return this.itemStorage.highlightedItems?.first();
|
|
126
|
+
}
|
|
127
|
+
get highlightedItems() {
|
|
128
|
+
return this.itemStorage.highlightedItems;
|
|
129
|
+
}
|
|
130
|
+
get isItemLimitReached() {
|
|
131
|
+
return this.itemStorage.isItemLimitReached;
|
|
132
|
+
}
|
|
133
|
+
//! context providers
|
|
134
|
+
getOptionContext(item) {
|
|
135
|
+
return {
|
|
136
|
+
$implicit: item,
|
|
137
|
+
item,
|
|
138
|
+
itemData: item.itemData,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//! value input & output
|
|
142
|
+
set value(newValue) {
|
|
143
|
+
if (!Array.isArray(newValue))
|
|
144
|
+
newValue = coerceArrayProperty(newValue);
|
|
145
|
+
this.writeValue(newValue);
|
|
146
|
+
}
|
|
147
|
+
//! item selection handlers
|
|
148
|
+
toggleItem(item) {
|
|
149
|
+
if (item.selected) {
|
|
150
|
+
this.unselectItem(item);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
this.selectItem(item);
|
|
154
|
+
}
|
|
155
|
+
selectItem(...items) {
|
|
156
|
+
let [selected, unselected] = this.itemStorage.selectItem(...items);
|
|
157
|
+
if (unselected.length > 0)
|
|
158
|
+
this.removeEvent.emit(unselected);
|
|
159
|
+
if (selected.length > 0) {
|
|
160
|
+
this.addEvent.emit(selected);
|
|
161
|
+
this._emitChange();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
unselectItem(...items) {
|
|
165
|
+
let unselected = this.itemStorage.unselectItem(...items);
|
|
166
|
+
this.removeEvent.emit(unselected);
|
|
167
|
+
this._emitChange();
|
|
168
|
+
}
|
|
169
|
+
onMouseMove() {
|
|
170
|
+
this.isMouseBeingUsed = true;
|
|
171
|
+
}
|
|
172
|
+
onItemMouseEnter(option, event) {
|
|
173
|
+
if (!this.isMouseBeingUsed)
|
|
174
|
+
return;
|
|
175
|
+
this.itemStorage.highlightSingleItem(option);
|
|
176
|
+
event.stopPropagation();
|
|
177
|
+
}
|
|
178
|
+
onItemMouseLeave(option, event) {
|
|
179
|
+
if (!this.isMouseBeingUsed)
|
|
180
|
+
return;
|
|
181
|
+
this.itemStorage.unhighlightItem(option);
|
|
182
|
+
event.stopPropagation();
|
|
183
|
+
}
|
|
184
|
+
//! click handlers
|
|
185
|
+
onItemClick(option, event) {
|
|
186
|
+
event.stopPropagation();
|
|
187
|
+
this.toggleItem(option);
|
|
188
|
+
}
|
|
189
|
+
//! key press handlers
|
|
190
|
+
onKeyPress(event) {
|
|
191
|
+
switch (event.code) {
|
|
192
|
+
case 'Space':
|
|
193
|
+
case 'Enter': {
|
|
194
|
+
this._toggleHighlightedItems(event);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
case 'ArrowRight': {
|
|
198
|
+
this._highlightNext(event);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
case 'ArrowLeft': {
|
|
202
|
+
this._highlightPrevious(event);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
case 'Home': {
|
|
206
|
+
this._highlightFirst(event);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
case 'End': {
|
|
210
|
+
this._highlightLast(event);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
case 'KeyA': {
|
|
214
|
+
if (event.ctrlKey) {
|
|
215
|
+
this._highlightAll(event);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
_toggleHighlightedItems(event) {
|
|
222
|
+
if (!this.isFocused)
|
|
223
|
+
return;
|
|
224
|
+
event.preventDefault();
|
|
225
|
+
const highlightedItems = this.highlightedItems;
|
|
226
|
+
if (highlightedItems.every(item => item.selected)) {
|
|
227
|
+
this.unselectItem(...highlightedItems);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
this.selectItem(...highlightedItems);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
_highlightPrevious(event) {
|
|
234
|
+
if (!this.isFocused)
|
|
235
|
+
return;
|
|
236
|
+
event.preventDefault();
|
|
237
|
+
this.isMouseBeingUsed = false;
|
|
238
|
+
this.itemStorage.highlightNextItem(-1, event.shiftKey);
|
|
239
|
+
}
|
|
240
|
+
_highlightNext(event) {
|
|
241
|
+
if (!this.isFocused)
|
|
242
|
+
return;
|
|
243
|
+
event.preventDefault();
|
|
244
|
+
this.isMouseBeingUsed = false;
|
|
245
|
+
this.itemStorage.highlightNextItem(+1, event.shiftKey);
|
|
246
|
+
}
|
|
247
|
+
_highlightFirst(event) {
|
|
248
|
+
if (!this.isFocused)
|
|
249
|
+
return;
|
|
250
|
+
event.preventDefault();
|
|
251
|
+
this.isMouseBeingUsed = false;
|
|
252
|
+
this.itemStorage.highlightFirstItem();
|
|
253
|
+
}
|
|
254
|
+
_highlightLast(event) {
|
|
255
|
+
if (!this.isFocused)
|
|
256
|
+
return;
|
|
257
|
+
event.preventDefault();
|
|
258
|
+
this.isMouseBeingUsed = false;
|
|
259
|
+
this.itemStorage.highlightLastItem();
|
|
260
|
+
}
|
|
261
|
+
_highlightAll(event) {
|
|
262
|
+
this.itemStorage.highlightAllItems();
|
|
263
|
+
}
|
|
264
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: _SelectableListComponentBase, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
265
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: _SelectableListComponentBase, inputs: { valueFrom: "valueFrom", labelFrom: "labelFrom", disabledFrom: "disabledFrom", items: "items", invertDisabled: "invertDisabled", maxSelectedItems: "maxSelectedItems", value: "value" }, outputs: { valueChange: "valueChange", changeEvent: "change", addEvent: "add", removeEvent: "remove" }, host: { listeners: { "mousemove": "onMouseMove()", "keydown": "onKeyPress($event)" }, properties: { "class.ard-touched": "this.touched" } }, usesInheritance: true, ngImport: i0 }); }
|
|
266
|
+
}
|
|
267
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: _SelectableListComponentBase, decorators: [{
|
|
268
|
+
type: Directive
|
|
269
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { valueFrom: [{
|
|
270
|
+
type: Input
|
|
271
|
+
}], labelFrom: [{
|
|
272
|
+
type: Input
|
|
273
|
+
}], disabledFrom: [{
|
|
274
|
+
type: Input
|
|
275
|
+
}], items: [{
|
|
276
|
+
type: Input
|
|
277
|
+
}], invertDisabled: [{
|
|
278
|
+
type: Input
|
|
279
|
+
}], maxSelectedItems: [{
|
|
280
|
+
type: Input
|
|
281
|
+
}], touched: [{
|
|
282
|
+
type: HostBinding,
|
|
283
|
+
args: ['class.ard-touched']
|
|
284
|
+
}], value: [{
|
|
285
|
+
type: Input
|
|
286
|
+
}], valueChange: [{
|
|
287
|
+
type: Output
|
|
288
|
+
}], changeEvent: [{
|
|
289
|
+
type: Output,
|
|
290
|
+
args: ['change']
|
|
291
|
+
}], addEvent: [{
|
|
292
|
+
type: Output,
|
|
293
|
+
args: ['add']
|
|
294
|
+
}], removeEvent: [{
|
|
295
|
+
type: Output,
|
|
296
|
+
args: ['remove']
|
|
297
|
+
}], onMouseMove: [{
|
|
298
|
+
type: HostListener,
|
|
299
|
+
args: ['mousemove']
|
|
300
|
+
}], onKeyPress: [{
|
|
301
|
+
type: HostListener,
|
|
302
|
+
args: ['keydown', ['$event']]
|
|
303
|
+
}] } });
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1saXN0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL3NlbGVjdGFibGUtbGlzdC1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVySCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRyxPQUFPLEVBQUUsaUJBQWlCLEVBQXlCLE1BQU0scUNBQXFDLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRzVELE1BQU0sT0FBZ0IsNEJBQTZCLFNBQVEscUJBQXFCO0lBVzVFLFlBQW9CLEdBQXNCO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRFEsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFWMUMsb0JBQW9CO1FBQ1gsZ0JBQVcsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFN0IsYUFBUSxHQUFHO1lBQ2hCLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLFlBQVksRUFBRSxVQUFVO1NBQzNCLENBQUM7UUEyQ0YsbUJBQW1CO1FBQ1QscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBTTVDLGlCQUFpQjtRQUNQLGtCQUFhLEdBQXdCLFNBQVMsQ0FBQztRQUd6RCxzQkFBc0I7UUFDdEIsb0VBQW9FO1FBQ3BFLCtFQUErRTtRQUN2RSxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQVNqQyxzQkFBaUIsR0FBdUIsU0FBUyxDQUFDO1FBb0IxRCxpQ0FBaUM7UUFDekIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQXNCbEMseUJBQXlCO1FBQ3pCLHNCQUFpQixHQUFrQixJQUFJLENBQUM7UUF5QzlCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUVsRCxpQkFBaUI7UUFDQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDM0MsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBMkIxRCxvQkFBb0I7UUFDYixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFwTHpDLENBQUM7SUFPRCx1QkFBdUI7SUFDdkIsSUFDSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBVTtRQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFBRSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUQsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6RCxJQUFJLGlCQUFpQixFQUFFO1lBQ25CLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUNPLHVCQUF1QjtRQUMzQixTQUFTLFdBQVcsQ0FBQyxHQUFXO1lBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsaUZBQWlGLENBQUMsQ0FBQztRQUN6SCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDNUI7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUtELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDbEMsQ0FBQztJQVVELElBQ0ksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsQ0FBTTtRQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFHRCxJQUNJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFNO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLDJFQUEyRTtJQUNsRSxnQkFBZ0IsQ0FBQyxLQUFjO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNELFVBQVUsQ0FBQyxPQUFjO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUlELElBQ0ksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBYyxPQUFPLENBQUMsS0FBYztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRVMsV0FBVztRQUNqQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ1MsVUFBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUV6QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFJUSxPQUFPLENBQUMsS0FBaUI7UUFDOUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQUUsT0FBTztRQUMvRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBRTlCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ1EsTUFBTSxDQUFDLEtBQWlCO1FBQzdCLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsV0FBVztJQUNYLElBQUksb0JBQW9CO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7SUFDL0MsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixnQkFBZ0IsQ0FBQyxJQUFxQjtRQUNsQyxPQUFPO1lBQ0gsU0FBUyxFQUFFLElBQUk7WUFDZixJQUFJO1lBQ0osUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQzFCLENBQUM7SUFDTixDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLElBQ0ksS0FBSyxDQUFDLFFBQWE7UUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQUUsUUFBUSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQVFELDJCQUEyQjtJQUMzQixVQUFVLENBQUMsSUFBcUI7UUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxVQUFVLENBQUMsR0FBRyxLQUF3QjtRQUNsQyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFFbkUsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU3RCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFDRCxZQUFZLENBQUMsR0FBRyxLQUF3QjtRQUNwQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBRXpELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBS0QsV0FBVztRQUNQLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUNELGdCQUFnQixDQUFDLE1BQXVCLEVBQUUsS0FBaUI7UUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7WUFBRSxPQUFPO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxNQUF1QixFQUFFLEtBQWlCO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTztRQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXLENBQUMsTUFBdUIsRUFBRSxLQUFpQjtRQUNsRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsc0JBQXNCO0lBRXRCLFVBQVUsQ0FBQyxLQUFvQjtRQUMzQixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDaEIsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLE9BQU8sQ0FBQyxDQUFDO2dCQUNWLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsT0FBTzthQUNWO1lBQ0QsS0FBSyxZQUFZLENBQUMsQ0FBQztnQkFDZixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQixPQUFPO2FBQ1Y7WUFDRCxLQUFLLFdBQVcsQ0FBQyxDQUFDO2dCQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsT0FBTzthQUNWO1lBQ0QsS0FBSyxNQUFNLENBQUMsQ0FBQztnQkFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixPQUFPO2FBQ1Y7WUFDRCxLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLE9BQU87YUFDVjtZQUNELEtBQUssTUFBTSxDQUFDLENBQUM7Z0JBQ1QsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO29CQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFCLE9BQU87aUJBQ1Y7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUNPLHVCQUF1QixDQUFDLEtBQW9CO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFFNUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRS9DLElBQUksZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFDTyxrQkFBa0IsQ0FBQyxLQUFvQjtRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBRTVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRTlCLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDTyxjQUFjLENBQUMsS0FBb0I7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUU1QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5QixJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ08sZUFBZSxDQUFDLEtBQW9CO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFFNUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFDTyxjQUFjLENBQUMsS0FBb0I7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUU1QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5QixJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUNPLGFBQWEsQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDekMsQ0FBQzs4R0F2U2lCLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQURqRCxTQUFTO3NGQWlCRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFJRixLQUFLO3NCQURSLEtBQUs7Z0JBK0NGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBVUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQXNCRixPQUFPO3NCQURWLFdBQVc7dUJBQUMsbUJBQW1CO2dCQTJENUIsS0FBSztzQkFEUixLQUFLO2dCQUtJLFdBQVc7c0JBQXBCLE1BQU07Z0JBR1csV0FBVztzQkFBNUIsTUFBTTt1QkFBQyxRQUFRO2dCQUNELFFBQVE7c0JBQXRCLE1BQU07dUJBQUMsS0FBSztnQkFDSyxXQUFXO3NCQUE1QixNQUFNO3VCQUFDLFFBQVE7Z0JBOEJoQixXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVztnQkF1QnpCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29lcmNlQXJyYXlQcm9wZXJ0eSwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcbmltcG9ydCB7IEFyZE9wdGlvblNpbXBsZSwgT3B0aW9uQ29udGV4dCB9IGZyb20gJy4uL3R5cGVzL2l0ZW0tc3RvcmFnZS50eXBlcyc7XG5pbXBvcnQgeyBTaW1wbGVJdGVtU3RvcmFnZSwgU2ltcGxlSXRlbVN0b3JhZ2VIb3N0IH0gZnJvbSAnLi9pdGVtLXN0b3JhZ2VzL3NpbXBsZS1pdGVtLXN0b3JhZ2UnO1xuaW1wb3J0IHsgX05nTW9kZWxDb21wb25lbnRCYXNlIH0gZnJvbSAnLi9uZ21vZGVsLWNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9TZWxlY3RhYmxlTGlzdENvbXBvbmVudEJhc2UgZXh0ZW5kcyBfTmdNb2RlbENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgU2ltcGxlSXRlbVN0b3JhZ2VIb3N0IHtcbiAgICAvLyEgcHVibGljIGNvbnN0YW50c1xuICAgIHJlYWRvbmx5IGl0ZW1TdG9yYWdlID0gbmV3IFNpbXBsZUl0ZW1TdG9yYWdlKHRoaXMpO1xuICAgIHJlYWRvbmx5IGh0bWxJZCA9IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgcmVhZG9ubHkgZWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICAgIHJlYWRvbmx5IERFRkFVTFRTID0ge1xuICAgICAgICB2YWx1ZUZyb206ICd2YWx1ZScsXG4gICAgICAgIGxhYmVsRnJvbTogJ2xhYmVsJyxcbiAgICAgICAgZGlzYWJsZWRGcm9tOiAnZGlzYWJsZWQnLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvLyEgYmluZGluZy1yZWxhdGVkIGlucHV0c1xuICAgIEBJbnB1dCgpIHZhbHVlRnJvbT86IHN0cmluZztcbiAgICBASW5wdXQoKSBsYWJlbEZyb20/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGlzYWJsZWRGcm9tPzogc3RyaW5nO1xuXG4gICAgLy8hIGl0ZW1zIHNldHRlci9nZXR0ZXJcbiAgICBASW5wdXQoKVxuICAgIGdldCBpdGVtcygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1TdG9yYWdlLml0ZW1zO1xuICAgIH1cbiAgICBzZXQgaXRlbXModmFsdWU6IGFueSkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB2YWx1ZSA9IGNvZXJjZUFycmF5UHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIGxldCBzaG91bGRQcmludEVycm9ycyA9IHRoaXMuaXRlbVN0b3JhZ2Uuc2V0SXRlbXModmFsdWUpO1xuXG4gICAgICAgIGlmIChzaG91bGRQcmludEVycm9ycykge1xuICAgICAgICAgICAgdGhpcy5fcHJpbnRQcmltaXRpdmVXYXJuaW5ncygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX3ByaW50UHJpbWl0aXZlV2FybmluZ3MoKSB7XG4gICAgICAgIGZ1bmN0aW9uIG1ha2VXYXJuaW5nKHN0cjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFNraXBwZWQgdXNpbmcgWyR7c3RyfV0gcHJvcGVydHkgYm91bmQgdG8gPGFyZC1zZWdtZW50PiwgYXMgc29tZSBwcm92aWRlZCBpdGVtcyBhcmUgb2YgcHJpbWl0aXZlIHR5cGVgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZUZyb20pIHtcbiAgICAgICAgICAgIG1ha2VXYXJuaW5nKCd2YWx1ZUZyb20nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5sYWJlbEZyb20pIHtcbiAgICAgICAgICAgIG1ha2VXYXJuaW5nKCdsYWJlbEZyb20nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZEZyb20pIHtcbiAgICAgICAgICAgIG1ha2VXYXJuaW5nKCdkaXNhYmxlZEZyb20nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbnZlcnREaXNhYmxlZCkge1xuICAgICAgICAgICAgbWFrZVdhcm5pbmcoJ2ludmVydERpc2FibGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyEgbXVsdGlzZWxlY3RhYmxlXG4gICAgcHJvdGVjdGVkIF9tdWx0aXNlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBhYnN0cmFjdCBtdWx0aXNlbGVjdGFibGU6IGFueTtcbiAgICBnZXQgc2luZ2xlc2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9tdWx0aXNlbGVjdGFibGU7XG4gICAgfVxuXG4gICAgLy8hIHJlcXVpcmUgdmFsdWVcbiAgICBwcm90ZWN0ZWQgX3JlcXVpcmVWYWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBhYnN0cmFjdCByZXF1aXJlVmFsdWU6IGFueTtcblxuICAgIC8vISBjb2VyY2VkIHByb3BlcnRpZXNcbiAgICAvL3Nob3VsZCB0aGUgdmFsdWUgdGhhdCB0aGUgXCJkaXNhYmxlZEZyb21cIiBwYXRoIGxlYWQgdG8gYmUgaW52ZXJ0ZWQ/XG4gICAgLy91c2VmdWwgd2hlbiB0aGUgcHJvcGVydHkgaXMgZS5nLiBcImFjdGl2ZVwiLCB3aGljaCBpcyB0aGUgb3Bvc2l0ZSBvZiBcImRpc2FibGVkXCJcbiAgICBwcml2YXRlIF9pbnZlcnREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGludmVydERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52ZXJ0RGlzYWJsZWQ7XG4gICAgfVxuICAgIHNldCBpbnZlcnREaXNhYmxlZCh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5faW52ZXJ0RGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWF4U2VsZWN0ZWRJdGVtczogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG1heFNlbGVjdGVkSXRlbXMoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFNlbGVjdGVkSXRlbXM7XG4gICAgfVxuICAgIHNldCBtYXhTZWxlY3RlZEl0ZW1zKHY6IGFueSkge1xuICAgICAgICB0aGlzLl9tYXhTZWxlY3RlZEl0ZW1zID0gY29lcmNlTnVtYmVyUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3JcbiAgICAvL292ZXJyaWRlIHRoZSB3cml0ZVZhbHVlIGFuZCBzZXREaXNhYmxlZFN0YXRlIGRlZmluZWQgaW4gX05nTW9kZWxDb21wb25lbnRcbiAgICBvdmVycmlkZSBzZXREaXNhYmxlZFN0YXRlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gc3RhdGU7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICB3cml0ZVZhbHVlKG5nTW9kZWw6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbVN0b3JhZ2Uud3JpdGVWYWx1ZShuZ01vZGVsKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8hIGNoYW5nZSAmIHRvdWNoIGV2ZW50IGVtaXR0ZXJzXG4gICAgcHJpdmF0ZSBfdG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuYXJkLXRvdWNoZWQnKVxuICAgIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG91Y2hlZDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldCB0b3VjaGVkKHN0YXRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3RvdWNoZWQgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuaXRlbVN0b3JhZ2UudmFsdWU7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHZhbHVlKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9vblRvdWNoZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvdWNoZWQpIHJldHVybjtcblxuICAgICAgICB0aGlzLl9vblRvdWNoZWRSZWdpc3RlcmVkPy4oKTtcbiAgICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyEgZm9jdXMgJiBibHVyIGhhbmRsZXJzXG4gICAgbGFzdEJsdXJUaW1lc3RhbXA6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIG92ZXJyaWRlIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIub25Gb2N1cyhldmVudCk7XG5cbiAgICAgICAgaWYgKHRoaXMudG91Y2hlZCB8fCAhdGhpcy5sYXN0Qmx1clRpbWVzdGFtcCB8fCB0aGlzLmxhc3RCbHVyVGltZXN0YW1wICsgMSA8IERhdGUubm93KCkpIHJldHVybjtcbiAgICAgICAgdGhpcy5sYXN0Qmx1clRpbWVzdGFtcCA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgfVxuICAgIG92ZXJyaWRlIG9uQmx1cihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICBzdXBlci5vbkJsdXIoZXZlbnQpO1xuXG4gICAgICAgIGlmICghdGhpcy50b3VjaGVkKSB0aGlzLmxhc3RCbHVyVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICAvLyEgZ2V0dGVyc1xuICAgIGdldCBmaXJzdEhpZ2hsaWdodGVkSXRlbSgpOiBBcmRPcHRpb25TaW1wbGUgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtU3RvcmFnZS5oaWdobGlnaHRlZEl0ZW1zPy5maXJzdCgpO1xuICAgIH1cbiAgICBnZXQgaGlnaGxpZ2h0ZWRJdGVtcygpOiBBcmRPcHRpb25TaW1wbGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodGVkSXRlbXM7XG4gICAgfVxuICAgIGdldCBpc0l0ZW1MaW1pdFJlYWNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1TdG9yYWdlLmlzSXRlbUxpbWl0UmVhY2hlZDtcbiAgICB9XG5cbiAgICAvLyEgY29udGV4dCBwcm92aWRlcnNcbiAgICBnZXRPcHRpb25Db250ZXh0KGl0ZW06IEFyZE9wdGlvblNpbXBsZSk6IE9wdGlvbkNvbnRleHQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtLFxuICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtLml0ZW1EYXRhLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vISB2YWx1ZSBpbnB1dCAmIG91dHB1dFxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkgbmV3VmFsdWUgPSBjb2VyY2VBcnJheVByb3BlcnR5KG5ld1ZhbHVlKTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICAgIC8vISBvdXRwdXQgZXZlbnRzXG4gICAgQE91dHB1dCgnY2hhbmdlJykgY2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICAgIEBPdXRwdXQoJ2FkZCcpIGFkZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgICBAT3V0cHV0KCdyZW1vdmUnKSByZW1vdmVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgICAvLyEgaXRlbSBzZWxlY3Rpb24gaGFuZGxlcnNcbiAgICB0b2dnbGVJdGVtKGl0ZW06IEFyZE9wdGlvblNpbXBsZSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy51bnNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xuICAgIH1cbiAgICBzZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IHZvaWQge1xuICAgICAgICBsZXQgW3NlbGVjdGVkLCB1bnNlbGVjdGVkXSA9IHRoaXMuaXRlbVN0b3JhZ2Uuc2VsZWN0SXRlbSguLi5pdGVtcyk7XG5cbiAgICAgICAgaWYgKHVuc2VsZWN0ZWQubGVuZ3RoID4gMCkgdGhpcy5yZW1vdmVFdmVudC5lbWl0KHVuc2VsZWN0ZWQpO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEV2ZW50LmVtaXQoc2VsZWN0ZWQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHVuc2VsZWN0SXRlbSguLi5pdGVtczogQXJkT3B0aW9uU2ltcGxlW10pOiB2b2lkIHtcbiAgICAgICAgbGV0IHVuc2VsZWN0ZWQgPSB0aGlzLml0ZW1TdG9yYWdlLnVuc2VsZWN0SXRlbSguLi5pdGVtcyk7XG5cbiAgICAgICAgdGhpcy5yZW1vdmVFdmVudC5lbWl0KHVuc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLy8hIGhpZ2hsaWdoLXJlbGF0ZWRcbiAgICBwdWJsaWMgaXNNb3VzZUJlaW5nVXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbW92ZScpXG4gICAgb25Nb3VzZU1vdmUoKSB7XG4gICAgICAgIHRoaXMuaXNNb3VzZUJlaW5nVXNlZCA9IHRydWU7XG4gICAgfVxuICAgIG9uSXRlbU1vdXNlRW50ZXIob3B0aW9uOiBBcmRPcHRpb25TaW1wbGUsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc01vdXNlQmVpbmdVc2VkKSByZXR1cm47XG4gICAgICAgIHRoaXMuaXRlbVN0b3JhZ2UuaGlnaGxpZ2h0U2luZ2xlSXRlbShvcHRpb24pO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgb25JdGVtTW91c2VMZWF2ZShvcHRpb246IEFyZE9wdGlvblNpbXBsZSwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW91c2VCZWluZ1VzZWQpIHJldHVybjtcbiAgICAgICAgdGhpcy5pdGVtU3RvcmFnZS51bmhpZ2hsaWdodEl0ZW0ob3B0aW9uKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLy8hIGNsaWNrIGhhbmRsZXJzXG4gICAgb25JdGVtQ2xpY2sob3B0aW9uOiBBcmRPcHRpb25TaW1wbGUsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnRvZ2dsZUl0ZW0ob3B0aW9uKTtcbiAgICB9XG5cbiAgICAvLyEga2V5IHByZXNzIGhhbmRsZXJzXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUhpZ2hsaWdodGVkSXRlbXMoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0TmV4dChldmVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0Jzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFByZXZpb3VzKGV2ZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdIb21lJzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodEZpcnN0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdFbmQnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0TGFzdChldmVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnS2V5QSc6IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRBbGwoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX3RvZ2dsZUhpZ2hsaWdodGVkSXRlbXMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRm9jdXNlZCkgcmV0dXJuO1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWRJdGVtcyA9IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcztcblxuICAgICAgICBpZiAoaGlnaGxpZ2h0ZWRJdGVtcy5ldmVyeShpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnVuc2VsZWN0SXRlbSguLi5oaWdobGlnaHRlZEl0ZW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbSguLi5oaWdobGlnaHRlZEl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9oaWdobGlnaHRQcmV2aW91cyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKSByZXR1cm47XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5pc01vdXNlQmVpbmdVc2VkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5pdGVtU3RvcmFnZS5oaWdobGlnaHROZXh0SXRlbSgtMSwgZXZlbnQuc2hpZnRLZXkpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oaWdobGlnaHROZXh0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0ZvY3VzZWQpIHJldHVybjtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmlzTW91c2VCZWluZ1VzZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodE5leHRJdGVtKCsxLCBldmVudC5zaGlmdEtleSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hpZ2hsaWdodEZpcnN0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0ZvY3VzZWQpIHJldHVybjtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmlzTW91c2VCZWluZ1VzZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oaWdobGlnaHRMYXN0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0ZvY3VzZWQpIHJldHVybjtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmlzTW91c2VCZWluZ1VzZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodExhc3RJdGVtKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hpZ2hsaWdodEFsbChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodEFsbEl0ZW1zKCk7XG4gICAgfVxufVxuIl19
|