@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,349 @@
|
|
|
1
|
+
import resolvePath from 'resolve-object-path';
|
|
2
|
+
import { any, evaluate, isDefined, isObject, isPrimitive } from 'simple-bool';
|
|
3
|
+
export class SimpleItemStorage {
|
|
4
|
+
constructor(_ardParentComp) {
|
|
5
|
+
this._ardParentComp = _ardParentComp;
|
|
6
|
+
this._items = [];
|
|
7
|
+
this._highlightedItems = [];
|
|
8
|
+
this._selectedItems = [];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Gets all items.
|
|
12
|
+
*/
|
|
13
|
+
get items() {
|
|
14
|
+
return this._items;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Gets all currently selected items.
|
|
18
|
+
*/
|
|
19
|
+
get selectedItems() {
|
|
20
|
+
return this._selectedItems;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Gets all currently highlighted items.
|
|
24
|
+
*/
|
|
25
|
+
get highlightedItems() {
|
|
26
|
+
return this._highlightedItems;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Gets the values of the currently selected items.
|
|
30
|
+
*/
|
|
31
|
+
get value() {
|
|
32
|
+
return this._itemsToValue(this.selectedItems);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Maps an array of items into their values.
|
|
36
|
+
* @param items The items to convert to value.
|
|
37
|
+
* @returns An array of item values.
|
|
38
|
+
*/
|
|
39
|
+
_itemsToValue(items) {
|
|
40
|
+
return items.map(item => item.value);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Returns true if at least one item is highlighted, otherwise false.
|
|
44
|
+
*/
|
|
45
|
+
get isAnyItemHighlighted() {
|
|
46
|
+
return this._highlightedItems.length > 0;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.
|
|
50
|
+
*
|
|
51
|
+
* **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.
|
|
52
|
+
*/
|
|
53
|
+
get isItemLimitReached() {
|
|
54
|
+
if (!this._ardParentComp.multiselectable || !isDefined(this._ardParentComp.maxSelectedItems)) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return this._ardParentComp.maxSelectedItems <= this.selectedItems.length;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Sets the component's items. Takes into account the values defined by the parent component for `valueFrom`, `labelFrom`, and `disabledFrom`.
|
|
61
|
+
* @param items An array of items to be set as the component's items.
|
|
62
|
+
* @returns true if at least one of the items is of primitive type, otherwise false.
|
|
63
|
+
*/
|
|
64
|
+
setItems(items) {
|
|
65
|
+
let areItemsPrimitive = false;
|
|
66
|
+
if (any(items, isPrimitive)) {
|
|
67
|
+
items = items.map(this._primitiveItemsMapFn);
|
|
68
|
+
areItemsPrimitive = true;
|
|
69
|
+
}
|
|
70
|
+
this._items = items.map((item, index) => {
|
|
71
|
+
return this._setItemsMapFn(item, index, areItemsPrimitive);
|
|
72
|
+
});
|
|
73
|
+
return areItemsPrimitive;
|
|
74
|
+
}
|
|
75
|
+
_primitiveItemsMapFn(item) {
|
|
76
|
+
return { value: item };
|
|
77
|
+
}
|
|
78
|
+
_setItemsMapFn(rawItemData, index, areItemsPrimitive) {
|
|
79
|
+
if (areItemsPrimitive) {
|
|
80
|
+
return {
|
|
81
|
+
itemData: rawItemData,
|
|
82
|
+
index,
|
|
83
|
+
value: rawItemData.value,
|
|
84
|
+
label: rawItemData.value?.toString?.() ?? String(rawItemData.value),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//get value
|
|
88
|
+
const valuePath = this._ardParentComp.valueFrom ?? this._ardParentComp.labelFrom ?? this._ardParentComp.DEFAULTS.valueFrom;
|
|
89
|
+
const value = resolvePath(rawItemData, valuePath);
|
|
90
|
+
//get label
|
|
91
|
+
const labelPath = this._ardParentComp.labelFrom ?? this._ardParentComp.valueFrom ?? this._ardParentComp.DEFAULTS.labelFrom;
|
|
92
|
+
const label = resolvePath(rawItemData, labelPath) ?? value;
|
|
93
|
+
//get disabled
|
|
94
|
+
const disabledPath = this._ardParentComp.disabledFrom ?? this._ardParentComp.DEFAULTS.disabledFrom;
|
|
95
|
+
let disabled = evaluate(resolvePath(rawItemData, disabledPath));
|
|
96
|
+
if (this._ardParentComp.invertDisabled) {
|
|
97
|
+
disabled = !disabled;
|
|
98
|
+
}
|
|
99
|
+
const itemData = areItemsPrimitive ? rawItemData.value : rawItemData;
|
|
100
|
+
//return
|
|
101
|
+
return {
|
|
102
|
+
itemData,
|
|
103
|
+
index,
|
|
104
|
+
value,
|
|
105
|
+
label: label?.toString?.() ?? String(label),
|
|
106
|
+
disabled,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.
|
|
111
|
+
* @param ngModel The value of the ngModel to set.
|
|
112
|
+
*/
|
|
113
|
+
writeValue(ngModel) {
|
|
114
|
+
this._forceUnselectAll();
|
|
115
|
+
if (!this._validateWriteValue(ngModel))
|
|
116
|
+
return;
|
|
117
|
+
const selectItemByValue = (value) => {
|
|
118
|
+
let item = this.findItemByValue(value);
|
|
119
|
+
if (item) {
|
|
120
|
+
this.selectItem(item);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
console.warn(`Couldn't find an item with value ${value?.toString?.() || String(value)}.`);
|
|
124
|
+
};
|
|
125
|
+
for (const modelValue of ngModel) {
|
|
126
|
+
selectItemByValue(modelValue);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Validates that all values of the value to be written are able to be accurately compared against the storage items.
|
|
131
|
+
*
|
|
132
|
+
* An item from the ngModel array is considered valid if it is a primitive value, or if all of the below points are met:
|
|
133
|
+
* 1. The parent component defines the `compareWith` property.
|
|
134
|
+
* 2. The ngModel value item is an object (or array).
|
|
135
|
+
* 3. The parent component has a defined `valueFrom` property.
|
|
136
|
+
* @param ngModel The value of ngModel to validate.
|
|
137
|
+
* @returns true if all items are valid, otherwise false.
|
|
138
|
+
*/
|
|
139
|
+
_validateWriteValue(ngModel) {
|
|
140
|
+
return ngModel.every(item => {
|
|
141
|
+
if (!isDefined(this._ardParentComp.compareWith) && isObject(item) && this._ardParentComp.valueFrom) {
|
|
142
|
+
console.warn(`Setting object(${JSON.stringify(item)}) as your model with [valueFrom] is not allowed unless [compareWith] is used.`);
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
findItemByValue(valueToFind) {
|
|
149
|
+
let findBy;
|
|
150
|
+
if (isDefined(this._ardParentComp.compareWith)) {
|
|
151
|
+
findBy = item => this._ardParentComp.compareWith(valueToFind, item.value);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
findBy = item => item.value === valueToFind;
|
|
155
|
+
}
|
|
156
|
+
return this._items.find(item => findBy(item));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Unselects all selected items.
|
|
160
|
+
*
|
|
161
|
+
* If the parent component requires at least one value to be selected at all times, the first selected items is left selected.
|
|
162
|
+
* @returns An array of items cleared, mapped to only their values.
|
|
163
|
+
*/
|
|
164
|
+
unselectAll() {
|
|
165
|
+
for (const item of this._selectedItems) {
|
|
166
|
+
item.selected = false;
|
|
167
|
+
}
|
|
168
|
+
const ret = this._itemsToValue(this._selectedItems);
|
|
169
|
+
if (this._ardParentComp.requireValue && this._selectedItems.length > 0) {
|
|
170
|
+
this._selectedItems.first().selected = true;
|
|
171
|
+
ret.splice(0, 1);
|
|
172
|
+
}
|
|
173
|
+
this._selectedItems = [];
|
|
174
|
+
return ret;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Unselects all selected items, no matter what the component settings are.
|
|
178
|
+
* @returns An array of items cleared, mapped to only their values.
|
|
179
|
+
*/
|
|
180
|
+
_forceUnselectAll() {
|
|
181
|
+
for (const item of this._selectedItems) {
|
|
182
|
+
item.selected = false;
|
|
183
|
+
}
|
|
184
|
+
const ret = this._itemsToValue(this._selectedItems);
|
|
185
|
+
this._selectedItems = [];
|
|
186
|
+
return ret;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Selects one or multiple items.
|
|
190
|
+
*
|
|
191
|
+
* Accounts for the limit of concurrently selected items defined by the parent component.
|
|
192
|
+
* @param items A rest operator array of item objects to be selected.
|
|
193
|
+
* @returns A tuple containing three arrays, all mapped to only their values:
|
|
194
|
+
* * An array of items selected,
|
|
195
|
+
* * An array of items unselected,
|
|
196
|
+
* * An array of items failed to select due to the limit.
|
|
197
|
+
*/
|
|
198
|
+
selectItem(...items) {
|
|
199
|
+
if (this.isItemLimitReached) {
|
|
200
|
+
return [[], [], this._itemsToValue(items)];
|
|
201
|
+
}
|
|
202
|
+
let unselected = [];
|
|
203
|
+
if (!this._ardParentComp.multiselectable) {
|
|
204
|
+
unselected = this._forceUnselectAll();
|
|
205
|
+
}
|
|
206
|
+
let itemsSelectedCount = 0;
|
|
207
|
+
const itemsSelected = [];
|
|
208
|
+
for (const item of items) {
|
|
209
|
+
itemsSelectedCount++;
|
|
210
|
+
if (item.selected)
|
|
211
|
+
continue;
|
|
212
|
+
if (this.isItemLimitReached) {
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
item.selected = true;
|
|
216
|
+
this._selectedItems.push(item);
|
|
217
|
+
itemsSelected.push(item);
|
|
218
|
+
}
|
|
219
|
+
const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);
|
|
220
|
+
return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
*
|
|
224
|
+
* @param items A rest operator array of item objects to be unselected.
|
|
225
|
+
* @returns An array of items unselected, mapped to only their values.
|
|
226
|
+
*/
|
|
227
|
+
unselectItem(...items) {
|
|
228
|
+
let skippedItem = false;
|
|
229
|
+
for (const item of items) {
|
|
230
|
+
if (this._ardParentComp.requireValue && !skippedItem) {
|
|
231
|
+
skippedItem = true;
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
if (!item.selected)
|
|
235
|
+
continue;
|
|
236
|
+
item.selected = false;
|
|
237
|
+
}
|
|
238
|
+
this._selectedItems = this._selectedItems.filter(v => v.selected);
|
|
239
|
+
return this._itemsToValue(items);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Unhighlights all currently highlighted items.
|
|
243
|
+
*/
|
|
244
|
+
unhighlightAll() {
|
|
245
|
+
for (const item of this._highlightedItems) {
|
|
246
|
+
item.highlighted = false;
|
|
247
|
+
}
|
|
248
|
+
this._highlightedItems = [];
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.
|
|
252
|
+
* @param item The item to be highlighted.
|
|
253
|
+
* @returns The highlighted item.
|
|
254
|
+
*/
|
|
255
|
+
highlightSingleItem(item) {
|
|
256
|
+
if (!item || item.disabled)
|
|
257
|
+
return null;
|
|
258
|
+
this.unhighlightAll();
|
|
259
|
+
return this.highlightItem(item);
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Highlights all given items.
|
|
263
|
+
* @param items A rest operator array of items to be highlighted.
|
|
264
|
+
* @returns The last highlighted item.
|
|
265
|
+
*/
|
|
266
|
+
highlightItem(...items) {
|
|
267
|
+
for (const item of items) {
|
|
268
|
+
item.highlighted = true;
|
|
269
|
+
}
|
|
270
|
+
this._highlightedItems.push(...items);
|
|
271
|
+
return items.last();
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Unhighlights all given items.
|
|
275
|
+
* @param items A rest operator array of items to be unhighlighted.
|
|
276
|
+
*/
|
|
277
|
+
unhighlightItem(...items) {
|
|
278
|
+
for (const item of items) {
|
|
279
|
+
if (!item || !item.highlighted)
|
|
280
|
+
return;
|
|
281
|
+
item.highlighted = false;
|
|
282
|
+
}
|
|
283
|
+
this._highlightedItems = this._highlightedItems.filter(v => v.highlighted);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Highlights the first item out of all items.
|
|
287
|
+
* @returns The highlighted item.
|
|
288
|
+
*/
|
|
289
|
+
highlightFirstItem() {
|
|
290
|
+
this.unhighlightAll();
|
|
291
|
+
let itemToHighlight = this._getHiglightableItems().first();
|
|
292
|
+
return this.highlightItem(itemToHighlight);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Highlights the last item out of all items.
|
|
296
|
+
* @returns The highlighted item.
|
|
297
|
+
*/
|
|
298
|
+
highlightLastItem() {
|
|
299
|
+
this.unhighlightAll();
|
|
300
|
+
let itemToHighlight = this._getHiglightableItems().last();
|
|
301
|
+
return this.highlightItem(itemToHighlight);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Highlights all non-disabled items.
|
|
305
|
+
*/
|
|
306
|
+
highlightAllItems() {
|
|
307
|
+
let itemsToHighlight = this._getHiglightableItems();
|
|
308
|
+
this.highlightItem(...itemsToHighlight);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Highlights the next non-disabled item defined by the offset amount.
|
|
312
|
+
*
|
|
313
|
+
* If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.
|
|
314
|
+
* @param offset The amount of items to offset the highlight by.
|
|
315
|
+
* @param hasShift Whether the user has the shift key pressed.
|
|
316
|
+
* @returns The item highlighted.
|
|
317
|
+
*/
|
|
318
|
+
highlightNextItem(offset, hasShift) {
|
|
319
|
+
if (!this.isAnyItemHighlighted) {
|
|
320
|
+
return this.highlightFirstItem();
|
|
321
|
+
}
|
|
322
|
+
const currentItem = this.highlightedItems.last();
|
|
323
|
+
const itemsWithoutDisabled = this._items.filter(item => !item.disabled && (!this.isItemLimitReached || item.selected));
|
|
324
|
+
const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index == currentItem.index);
|
|
325
|
+
let nextItemIndex = currentIndexInItems + offset;
|
|
326
|
+
if (nextItemIndex >= itemsWithoutDisabled.length) {
|
|
327
|
+
nextItemIndex -= itemsWithoutDisabled.length;
|
|
328
|
+
}
|
|
329
|
+
if (nextItemIndex < 0) {
|
|
330
|
+
nextItemIndex += itemsWithoutDisabled.length;
|
|
331
|
+
}
|
|
332
|
+
const itemToHighlight = itemsWithoutDisabled[nextItemIndex];
|
|
333
|
+
if (hasShift && this._ardParentComp.multiselectable) {
|
|
334
|
+
if (itemToHighlight.highlighted) {
|
|
335
|
+
this.unhighlightItem(currentItem);
|
|
336
|
+
}
|
|
337
|
+
return this.highlightItem(itemToHighlight);
|
|
338
|
+
}
|
|
339
|
+
return this.highlightSingleItem(itemToHighlight);
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Finds all highlightable items. An item is considered highlightable if it is **not** disabled.
|
|
343
|
+
* @returns An array of all highlightable items.
|
|
344
|
+
*/
|
|
345
|
+
_getHiglightableItems() {
|
|
346
|
+
return this._items.filter(item => !item.disabled);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWl0ZW0tc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL2l0ZW0tc3RvcmFnZXMvc2ltcGxlLWl0ZW0tc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFdBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQW1COUUsTUFBTSxPQUFPLGlCQUFpQjtJQUsxQixZQUFvQixjQUFxQztRQUFyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFKakQsV0FBTSxHQUFzQixFQUFFLENBQUM7UUFDL0Isc0JBQWlCLEdBQXNCLEVBQUUsQ0FBQztRQUMxQyxtQkFBYyxHQUFzQixFQUFFLENBQUM7SUFFYSxDQUFDO0lBRTdEOztPQUVHO0lBQ0gsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRDs7T0FFRztJQUNILElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRDs7OztPQUlHO0lBQ0ssYUFBYSxDQUFDLEtBQXdCO1FBQzFDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJ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O2dCQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNEOzs7T0FHRztJQUNLLHFCQUFxQjtRQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJkT3B0aW9uU2ltcGxlLCBDb21wYXJlV2l0aEZuIH0gZnJvbSAnLi4vLi4vdHlwZXMvaXRlbS1zdG9yYWdlLnR5cGVzJztcbmltcG9ydCByZXNvbHZlUGF0aCBmcm9tICdyZXNvbHZlLW9iamVjdC1wYXRoJztcbmltcG9ydCB7IGFueSwgZXZhbHVhdGUsIGlzRGVmaW5lZCwgaXNPYmplY3QsIGlzUHJpbWl0aXZlIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzIHtcbiAgICB2YWx1ZUZyb206IHN0cmluZztcbiAgICBsYWJlbEZyb206IHN0cmluZztcbiAgICBkaXNhYmxlZEZyb206IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlSXRlbVN0b3JhZ2VIb3N0IHtcbiAgICB2YWx1ZUZyb20/OiBzdHJpbmc7XG4gICAgbGFiZWxGcm9tPzogc3RyaW5nO1xuICAgIGRpc2FibGVkRnJvbT86IHN0cmluZztcbiAgICBpbnZlcnREaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgREVGQVVMVFM6IEl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzO1xuICAgIGNvbXBhcmVXaXRoPzogQ29tcGFyZVdpdGhGbjtcbiAgICBtdWx0aXNlbGVjdGFibGU6IGJvb2xlYW47XG4gICAgcmVxdWlyZVZhbHVlOiBib29sZWFuO1xuICAgIG1heFNlbGVjdGVkSXRlbXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVJdGVtU3RvcmFnZSB7XG4gICAgcHJpdmF0ZSBfaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdID0gW107XG4gICAgcHJpdmF0ZSBfaGlnaGxpZ2h0ZWRJdGVtczogQXJkT3B0aW9uU2ltcGxlW10gPSBbXTtcbiAgICBwcml2YXRlIF9zZWxlY3RlZEl0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXJkUGFyZW50Q29tcDogU2ltcGxlSXRlbVN0b3JhZ2VIb3N0KSB7fVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgaXRlbXMuXG4gICAgICovXG4gICAgZ2V0IGl0ZW1zKCk6IEFyZE9wdGlvblNpbXBsZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMuXG4gICAgICovXG4gICAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogQXJkT3B0aW9uU2ltcGxlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgY3VycmVudGx5IGhpZ2hsaWdodGVkIGl0ZW1zLlxuICAgICAqL1xuICAgIGdldCBoaWdobGlnaHRlZEl0ZW1zKCk6IEFyZE9wdGlvblNpbXBsZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlcyBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zLlxuICAgICAqL1xuICAgIGdldCB2YWx1ZSgpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtc1RvVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTWFwcyBhbiBhcnJheSBvZiBpdGVtcyBpbnRvIHRoZWlyIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0gaXRlbXMgVGhlIGl0ZW1zIHRvIGNvbnZlcnQgdG8gdmFsdWUuXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbSB2YWx1ZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXRlbXNUb1ZhbHVlKGl0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgaXRlbSBpcyBoaWdobGlnaHRlZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgICAqL1xuICAgIGdldCBpc0FueUl0ZW1IaWdobGlnaHRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYXJlbnQgY29tcG9uZW50IGRlZmluZXMgdGhlIGxpbWl0IG9mIGNvbmN1cnJlbnRseSBzZWxlY3RhYmxlIGl0ZW1zIGFuZCB0aGUgYW1vdW50IG9mIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcyBtYXRjaGVzIHRoYXQgbGltaXQuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLlxuICAgICAqXG4gICAgICogKipUTERSKio6IHRydWUgaWYgYG1heFNlbGVjdGVkSXRlbXNgIGlzIGRlZmluZWQgYW5kIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgbWF0Y2hlcyB0aGF0IHZhbHVlLlxuICAgICAqL1xuICAgIGdldCBpc0l0ZW1MaW1pdFJlYWNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUgfHwgIWlzRGVmaW5lZCh0aGlzLl9hcmRQYXJlbnRDb21wLm1heFNlbGVjdGVkSXRlbXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcyA8PSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGNvbXBvbmVudCdzIGl0ZW1zLiBUYWtlcyBpbnRvIGFjY291bnQgdGhlIHZhbHVlcyBkZWZpbmVkIGJ5IHRoZSBwYXJlbnQgY29tcG9uZW50IGZvciBgdmFsdWVGcm9tYCwgYGxhYmVsRnJvbWAsIGFuZCBgZGlzYWJsZWRGcm9tYC5cbiAgICAgKiBAcGFyYW0gaXRlbXMgQW4gYXJyYXkgb2YgaXRlbXMgdG8gYmUgc2V0IGFzIHRoZSBjb21wb25lbnQncyBpdGVtcy5cbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgaXRlbXMgaXMgb2YgcHJpbWl0aXZlIHR5cGUsIG90aGVyd2lzZSBmYWxzZS5cbiAgICAgKi9cbiAgICBzZXRJdGVtcyhpdGVtczogYW55W10pOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGFyZUl0ZW1zUHJpbWl0aXZlID0gZmFsc2U7XG4gICAgICAgIGlmIChhbnkoaXRlbXMsIGlzUHJpbWl0aXZlKSkge1xuICAgICAgICAgICAgaXRlbXMgPSBpdGVtcy5tYXAodGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbik7XG4gICAgICAgICAgICBhcmVJdGVtc1ByaW1pdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zZXRJdGVtc01hcEZuKGl0ZW0sIGluZGV4LCBhcmVJdGVtc1ByaW1pdGl2ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBhcmVJdGVtc1ByaW1pdGl2ZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcHJpbWl0aXZlSXRlbXNNYXBGbjxUPihpdGVtOiBUKTogeyB2YWx1ZTogVCB9IHtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGl0ZW0gfTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBhcmVJdGVtc1ByaW1pdGl2ZTogYm9vbGVhbik6IEFyZE9wdGlvblNpbXBsZSB7XG4gICAgICAgIGlmIChhcmVJdGVtc1ByaW1pdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpdGVtRGF0YTogcmF3SXRlbURhdGEsXG4gICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJhd0l0ZW1EYXRhLnZhbHVlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiByYXdJdGVtRGF0YS52YWx1ZT8udG9TdHJpbmc/LigpID8/IFN0cmluZyhyYXdJdGVtRGF0YS52YWx1ZSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIC8vZ2V0IHZhbHVlXG4gICAgICAgIGNvbnN0IHZhbHVlUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAudmFsdWVGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAubGFiZWxGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMudmFsdWVGcm9tO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCB2YWx1ZVBhdGgpO1xuXG4gICAgICAgIC8vZ2V0IGxhYmVsXG4gICAgICAgIGNvbnN0IGxhYmVsUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAubGFiZWxGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAudmFsdWVGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMubGFiZWxGcm9tO1xuICAgICAgICBjb25zdCBsYWJlbCA9IHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBsYWJlbFBhdGgpID8/IHZhbHVlO1xuXG4gICAgICAgIC8vZ2V0IGRpc2FibGVkXG4gICAgICAgIGNvbnN0IGRpc2FibGVkUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAuZGlzYWJsZWRGcm9tID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMuZGlzYWJsZWRGcm9tO1xuICAgICAgICBsZXQgZGlzYWJsZWQgPSBldmFsdWF0ZShyZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgZGlzYWJsZWRQYXRoKSk7XG4gICAgICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmludmVydERpc2FibGVkKSB7XG4gICAgICAgICAgICBkaXNhYmxlZCA9ICFkaXNhYmxlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGl0ZW1EYXRhID0gYXJlSXRlbXNQcmltaXRpdmUgPyByYXdJdGVtRGF0YS52YWx1ZSA6IHJhd0l0ZW1EYXRhO1xuXG4gICAgICAgIC8vcmV0dXJuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtRGF0YSxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBsYWJlbDogbGFiZWw/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcobGFiZWwpLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdyaXRlcyBhIG5ldyB2YWx1ZSB0byB0aGUgaXRlbSBzdG9yYWdlLiBTZWxlY3RzIHRoZSBjb3JyZWN0IGl0ZW1zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCB2YWx1ZXMsIHdhcm5pbmcgdGhlIHVzZXIgaWYgdGhlIHZhbHVlIGlzIG5vdCBmb3VuZC5cbiAgICAgKiBAcGFyYW0gbmdNb2RlbCBUaGUgdmFsdWUgb2YgdGhlIG5nTW9kZWwgdG8gc2V0LlxuICAgICAqL1xuICAgIHdyaXRlVmFsdWUobmdNb2RlbDogYW55W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9yY2VVbnNlbGVjdEFsbCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5fdmFsaWRhdGVXcml0ZVZhbHVlKG5nTW9kZWwpKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0SXRlbUJ5VmFsdWUgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLmZpbmRJdGVtQnlWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgQ291bGRuJ3QgZmluZCBhbiBpdGVtIHdpdGggdmFsdWUgJHt2YWx1ZT8udG9TdHJpbmc/LigpIHx8IFN0cmluZyh2YWx1ZSl9LmApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGZvciAoY29uc3QgbW9kZWxWYWx1ZSBvZiBuZ01vZGVsKSB7XG4gICAgICAgICAgICBzZWxlY3RJdGVtQnlWYWx1ZShtb2RlbFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZXMgdGhhdCBhbGwgdmFsdWVzIG9mIHRoZSB2YWx1ZSB0byBiZSB3cml0dGVuIGFyZSBhYmxlIHRvIGJlIGFjY3VyYXRlbHkgY29tcGFyZWQgYWdhaW5zdCB0aGUgc3RvcmFnZSBpdGVtcy5cbiAgICAgKlxuICAgICAqIEFuIGl0ZW0gZnJvbSB0aGUgbmdNb2RlbCBhcnJheSBpcyBjb25zaWRlcmVkIHZhbGlkIGlmIGl0IGlzIGEgcHJpbWl0aXZlIHZhbHVlLCBvciBpZiBhbGwgb2YgdGhlIGJlbG93IHBvaW50cyBhcmUgbWV0OlxuICAgICAqIDEuIFRoZSBwYXJlbnQgY29tcG9uZW50IGRlZmluZXMgdGhlIGBjb21wYXJlV2l0aGAgcHJvcGVydHkuXG4gICAgICogMi4gVGhlIG5nTW9kZWwgdmFsdWUgaXRlbSBpcyBhbiBvYmplY3QgKG9yIGFycmF5KS5cbiAgICAgKiAzLiBUaGUgcGFyZW50IGNvbXBvbmVudCBoYXMgYSBkZWZpbmVkIGB2YWx1ZUZyb21gIHByb3BlcnR5LlxuICAgICAqIEBwYXJhbSBuZ01vZGVsIFRoZSB2YWx1ZSBvZiBuZ01vZGVsIHRvIHZhbGlkYXRlLlxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYWxsIGl0ZW1zIGFyZSB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3ZhbGlkYXRlV3JpdGVWYWx1ZShuZ01vZGVsOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gbmdNb2RlbC5ldmVyeShpdGVtID0+IHtcbiAgICAgICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX2FyZFBhcmVudENvbXAuY29tcGFyZVdpdGgpICYmIGlzT2JqZWN0KGl0ZW0pICYmIHRoaXMuX2FyZFBhcmVudENvbXAudmFsdWVGcm9tKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBTZXR0aW5nIG9iamVjdCgke0pTT04uc3RyaW5naWZ5KGl0ZW0pfSkgYXMgeW91ciBtb2RlbCB3aXRoIFt2YWx1ZUZyb21dIGlzIG5vdCBhbGxvd2VkIHVubGVzcyBbY29tcGFyZVdpdGhdIGlzIHVzZWQuYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmaW5kSXRlbUJ5VmFsdWUodmFsdWVUb0ZpbmQ6IGFueSk6IEFyZE9wdGlvblNpbXBsZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBmaW5kQnk6IChpdGVtOiBBcmRPcHRpb25TaW1wbGUpID0+IGJvb2xlYW47XG4gICAgICAgIGlmIChpc0RlZmluZWQodGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCkpIHtcbiAgICAgICAgICAgIGZpbmRCeSA9IGl0ZW0gPT4gdGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCEodmFsdWVUb0ZpbmQsIGl0ZW0udmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmluZEJ5ID0gaXRlbSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZVRvRmluZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXMuZmluZChpdGVtID0+IGZpbmRCeShpdGVtKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW5zZWxlY3RzIGFsbCBzZWxlY3RlZCBpdGVtcy5cbiAgICAgKlxuICAgICAqIElmIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlcXVpcmVzIGF0IGxlYXN0IG9uZSB2YWx1ZSB0byBiZSBzZWxlY3RlZCBhdCBhbGwgdGltZXMsIHRoZSBmaXJzdCBzZWxlY3RlZCBpdGVtcyBpcyBsZWZ0IHNlbGVjdGVkLlxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGl0ZW1zIGNsZWFyZWQsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlcy5cbiAgICAgKi9cbiAgICB1bnNlbGVjdEFsbCgpOiBhbnlbXSB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9zZWxlY3RlZEl0ZW1zKSB7XG4gICAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXQgPSB0aGlzLl9pdGVtc1RvVmFsdWUodGhpcy5fc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAucmVxdWlyZVZhbHVlICYmIHRoaXMuX3NlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5maXJzdCgpLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldC5zcGxpY2UoMCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVW5zZWxlY3RzIGFsbCBzZWxlY3RlZCBpdGVtcywgbm8gbWF0dGVyIHdoYXQgdGhlIGNvbXBvbmVudCBzZXR0aW5ncyBhcmUuXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbXMgY2xlYXJlZCwgbWFwcGVkIHRvIG9ubHkgdGhlaXIgdmFsdWVzLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZvcmNlVW5zZWxlY3RBbGwoKTogYW55W10ge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fc2VsZWN0ZWRJdGVtcykge1xuICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmV0ID0gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuX3NlbGVjdGVkSXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIG9uZSBvciBtdWx0aXBsZSBpdGVtcy5cbiAgICAgKlxuICAgICAqIEFjY291bnRzIGZvciB0aGUgbGltaXQgb2YgY29uY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zIGRlZmluZWQgYnkgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAgICogQHBhcmFtIGl0ZW1zIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtIG9iamVjdHMgdG8gYmUgc2VsZWN0ZWQuXG4gICAgICogQHJldHVybnMgQSB0dXBsZSBjb250YWluaW5nIHRocmVlIGFycmF5cywgYWxsIG1hcHBlZCB0byBvbmx5IHRoZWlyIHZhbHVlczpcbiAgICAgKiAqIEFuIGFycmF5IG9mIGl0ZW1zIHNlbGVjdGVkLFxuICAgICAqICogQW4gYXJyYXkgb2YgaXRlbXMgdW5zZWxlY3RlZCxcbiAgICAgKiAqIEFuIGFycmF5IG9mIGl0ZW1zIGZhaWxlZCB0byBzZWxlY3QgZHVlIHRvIHRoZSBsaW1pdC5cbiAgICAgKi9cbiAgICBzZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IFthbnlbXSwgYW55W10sIGFueVtdXSB7XG4gICAgICAgIGlmICh0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuIFtbXSwgW10sIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtcyldO1xuICAgICAgICB9XG4gICAgICAgIGxldCB1bnNlbGVjdGVkID0gW107XG4gICAgICAgIGlmICghdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgIHVuc2VsZWN0ZWQgPSB0aGlzLl9mb3JjZVVuc2VsZWN0QWxsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXRlbXNTZWxlY3RlZENvdW50ID0gMDtcbiAgICAgICAgY29uc3QgaXRlbXNTZWxlY3RlZCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGl0ZW1zU2VsZWN0ZWRDb3VudCsrO1xuICAgICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIGl0ZW1zU2VsZWN0ZWQucHVzaChpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGl0ZW1zRmFpbGVkVG9TZWxlY3QgPSBpdGVtcy5zbGljZShpdGVtc1NlbGVjdGVkQ291bnQgLSAxKTtcbiAgICAgICAgcmV0dXJuIFt0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNTZWxlY3RlZCksIHVuc2VsZWN0ZWQsIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc0ZhaWxlZFRvU2VsZWN0KV07XG4gICAgfVxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtIG9iamVjdHMgdG8gYmUgdW5zZWxlY3RlZC5cbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpdGVtcyB1bnNlbGVjdGVkLCBtYXBwZWQgdG8gb25seSB0aGVpciB2YWx1ZXMuXG4gICAgICovXG4gICAgdW5zZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IGFueVtdIHtcbiAgICAgICAgbGV0IHNraXBwZWRJdGVtID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAucmVxdWlyZVZhbHVlICYmICFza2lwcGVkSXRlbSkge1xuICAgICAgICAgICAgICAgIHNraXBwZWRJdGVtID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpdGVtLnNlbGVjdGVkKSBjb250aW51ZTtcbiAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gdGhpcy5fc2VsZWN0ZWRJdGVtcy5maWx0ZXIodiA9PiB2LnNlbGVjdGVkKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbmhpZ2hsaWdodHMgYWxsIGN1cnJlbnRseSBoaWdobGlnaHRlZCBpdGVtcy5cbiAgICAgKi9cbiAgICB1bmhpZ2hsaWdodEFsbCgpOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMpIHtcbiAgICAgICAgICAgIGl0ZW0uaGlnaGxpZ2h0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zID0gW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhpZ2hsaWdodHMgdGhlIGdpdmVuIGl0ZW0sIHdoaWxlIHVuaGlnaGxpZ2h0aW5nIGFsbCBvdGhlciBpdGVtcy4gRG9lcyBub3RoaW5nIHdoZW4gdGhlIGl0ZW0gaXMgZGlzYWJsZWQuXG4gICAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gYmUgaGlnaGxpZ2h0ZWQuXG4gICAgICogQHJldHVybnMgVGhlIGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAgICovXG4gICAgaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtOiBBcmRPcHRpb25TaW1wbGUpOiBBcmRPcHRpb25TaW1wbGUgfCBudWxsIHtcbiAgICAgICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGlzYWJsZWQpIHJldHVybiBudWxsO1xuICAgICAgICB0aGlzLnVuaGlnaGxpZ2h0QWxsKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhpZ2hsaWdodHMgYWxsIGdpdmVuIGl0ZW1zLlxuICAgICAqIEBwYXJhbSBpdGVtcyBBIHJlc3Qgb3BlcmF0b3IgYXJyYXkgb2YgaXRlbXMgdG8gYmUgaGlnaGxpZ2h0ZWQuXG4gICAgICogQHJldHVybnMgVGhlIGxhc3QgaGlnaGxpZ2h0ZWQgaXRlbS5cbiAgICAgKi9cbiAgICBoaWdobGlnaHRJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IEFyZE9wdGlvblNpbXBsZSB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgaXRlbS5oaWdobGlnaHRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5wdXNoKC4uLml0ZW1zKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmxhc3QoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVW5oaWdobGlnaHRzIGFsbCBnaXZlbiBpdGVtcy5cbiAgICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW1zIHRvIGJlIHVuaGlnaGxpZ2h0ZWQuXG4gICAgICovXG4gICAgdW5oaWdobGlnaHRJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGlmICghaXRlbSB8fCAhaXRlbS5oaWdobGlnaHRlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBpdGVtLmhpZ2hsaWdodGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcyA9IHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMuZmlsdGVyKHYgPT4gdi5oaWdobGlnaHRlZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhpZ2hsaWdodHMgdGhlIGZpcnN0IGl0ZW0gb3V0IG9mIGFsbCBpdGVtcy5cbiAgICAgKiBAcmV0dXJucyBUaGUgaGlnaGxpZ2h0ZWQgaXRlbS5cbiAgICAgKi9cbiAgICBoaWdobGlnaHRGaXJzdEl0ZW0oKTogQXJkT3B0aW9uU2ltcGxlIHwgbnVsbCB7XG4gICAgICAgIHRoaXMudW5oaWdobGlnaHRBbGwoKTtcblxuICAgICAgICBsZXQgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKS5maXJzdCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhpZ2hsaWdodHMgdGhlIGxhc3QgaXRlbSBvdXQgb2YgYWxsIGl0ZW1zLlxuICAgICAqIEByZXR1cm5zIFRoZSBoaWdobGlnaHRlZCBpdGVtLlxuICAgICAqL1xuICAgIGhpZ2hsaWdodExhc3RJdGVtKCk6IEFyZE9wdGlvblNpbXBsZSB8IG51bGwge1xuICAgICAgICB0aGlzLnVuaGlnaGxpZ2h0QWxsKCk7XG5cbiAgICAgICAgbGV0IGl0ZW1Ub0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCkubGFzdCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhpZ2hsaWdodHMgYWxsIG5vbi1kaXNhYmxlZCBpdGVtcy5cbiAgICAgKi9cbiAgICBoaWdobGlnaHRBbGxJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgbGV0IGl0ZW1zVG9IaWdobGlnaHQgPSB0aGlzLl9nZXRIaWdsaWdodGFibGVJdGVtcygpO1xuXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0SXRlbSguLi5pdGVtc1RvSGlnaGxpZ2h0KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSGlnaGxpZ2h0cyB0aGUgbmV4dCBub24tZGlzYWJsZWQgaXRlbSBkZWZpbmVkIGJ5IHRoZSBvZmZzZXQgYW1vdW50LlxuICAgICAqXG4gICAgICogSWYgYGhhc1NoaWZ0YCBpcyBzZXQgdG8gdHJ1ZSwgYWxsIG9yaWdpbmFsbHkgaGlnaGxpZ2h0ZWQgaXRlbXMgYXJlIGtlcHQuIE90aGVyd2lzZSwgYWxsIG9yaWdpbmFsIGl0ZW1zIGFyZSB1bnNlbGVjdGVkLlxuICAgICAqIEBwYXJhbSBvZmZzZXQgVGhlIGFtb3VudCBvZiBpdGVtcyB0byBvZmZzZXQgdGhlIGhpZ2hsaWdodCBieS5cbiAgICAgKiBAcGFyYW0gaGFzU2hpZnQgV2hldGhlciB0aGUgdXNlciBoYXMgdGhlIHNoaWZ0IGtleSBwcmVzc2VkLlxuICAgICAqIEByZXR1cm5zIFRoZSBpdGVtIGhpZ2hsaWdodGVkLlxuICAgICAqL1xuICAgIGhpZ2hsaWdodE5leHRJdGVtKG9mZnNldDogbnVtYmVyLCBoYXNTaGlmdD86IGJvb2xlYW4pOiBBcmRPcHRpb25TaW1wbGUgfCBudWxsIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQW55SXRlbUhpZ2hsaWdodGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcy5sYXN0KCk7XG4gICAgICAgIGNvbnN0IGl0ZW1zV2l0aG91dERpc2FibGVkID0gdGhpcy5faXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQgJiYgKCF0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCB8fCBpdGVtLnNlbGVjdGVkKSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleEluSXRlbXMgPSBpdGVtc1dpdGhvdXREaXNhYmxlZC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmluZGV4ID09IGN1cnJlbnRJdGVtLmluZGV4KTtcblxuICAgICAgICBsZXQgbmV4dEl0ZW1JbmRleCA9IGN1cnJlbnRJbmRleEluSXRlbXMgKyBvZmZzZXQ7XG4gICAgICAgIGlmIChuZXh0SXRlbUluZGV4ID49IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aCkge1xuICAgICAgICAgICAgbmV4dEl0ZW1JbmRleCAtPSBpdGVtc1dpdGhvdXREaXNhYmxlZC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5leHRJdGVtSW5kZXggPCAwKSB7XG4gICAgICAgICAgICBuZXh0SXRlbUluZGV4ICs9IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtVG9IaWdobGlnaHQgPSBpdGVtc1dpdGhvdXREaXNhYmxlZFtuZXh0SXRlbUluZGV4XTtcblxuICAgICAgICBpZiAoaGFzU2hpZnQgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgIGlmIChpdGVtVG9IaWdobGlnaHQuaGlnaGxpZ2h0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuaGlnaGxpZ2h0SXRlbShjdXJyZW50SXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtVG9IaWdobGlnaHQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhbGwgaGlnaGxpZ2h0YWJsZSBpdGVtcy4gQW4gaXRlbSBpcyBjb25zaWRlcmVkIGhpZ2hsaWdodGFibGUgaWYgaXQgaXMgKipub3QqKiBkaXNhYmxlZC5cbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwgaGlnaGxpZ2h0YWJsZSBpdGVtcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRIaWdsaWdodGFibGVJdGVtcygpOiBBcmRPcHRpb25TaW1wbGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import resolvePath from 'resolve-object-path';
|
|
2
|
+
import { any, isPrimitive } from 'simple-bool';
|
|
3
|
+
export class SimplestItemStorage {
|
|
4
|
+
get highlightedItem() {
|
|
5
|
+
return this._highlightedItem;
|
|
6
|
+
}
|
|
7
|
+
constructor(_ardParentComp) {
|
|
8
|
+
this._ardParentComp = _ardParentComp;
|
|
9
|
+
this._items = [];
|
|
10
|
+
this._highlightedItem = null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Gets all items.
|
|
14
|
+
*/
|
|
15
|
+
get items() {
|
|
16
|
+
return this._items;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Returns true if at least one item is highlighted, otherwise false.
|
|
20
|
+
*/
|
|
21
|
+
get isAnyItemHighlighted() {
|
|
22
|
+
return this._highlightedItem != null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Sets the component's items. Takes into account the values defined by the parent component for `suggValueFrom` and `suggLabelFrom`.
|
|
26
|
+
* @param items An array of items to be set as the component's items.
|
|
27
|
+
* @returns true if at least one of the items is of primitive type, otherwise false.
|
|
28
|
+
*/
|
|
29
|
+
setItems(items) {
|
|
30
|
+
let areItemsPrimitive = false;
|
|
31
|
+
if (any(items, isPrimitive)) {
|
|
32
|
+
items = items.map(this._primitiveItemsMapFn);
|
|
33
|
+
areItemsPrimitive = true;
|
|
34
|
+
}
|
|
35
|
+
this._items = items.map((item, index) => {
|
|
36
|
+
return this._setItemsMapFn(item, index, areItemsPrimitive);
|
|
37
|
+
});
|
|
38
|
+
return areItemsPrimitive;
|
|
39
|
+
}
|
|
40
|
+
_primitiveItemsMapFn(item) {
|
|
41
|
+
return { value: item };
|
|
42
|
+
}
|
|
43
|
+
_setItemsMapFn(rawItemData, index, areItemsPrimitive) {
|
|
44
|
+
if (areItemsPrimitive) {
|
|
45
|
+
return {
|
|
46
|
+
itemData: rawItemData,
|
|
47
|
+
index,
|
|
48
|
+
value: rawItemData.value,
|
|
49
|
+
label: rawItemData.value?.toString?.() ?? String(rawItemData.value),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//get value
|
|
53
|
+
const valuePath = this._ardParentComp.valueFrom ?? this._ardParentComp.labelFrom ?? this._ardParentComp.DEFAULTS.valueFrom;
|
|
54
|
+
const value = resolvePath(rawItemData, valuePath);
|
|
55
|
+
//get label
|
|
56
|
+
const labelPath = this._ardParentComp.labelFrom ?? this._ardParentComp.valueFrom ?? this._ardParentComp.DEFAULTS.labelFrom;
|
|
57
|
+
const label = resolvePath(rawItemData, labelPath) ?? value;
|
|
58
|
+
const itemData = areItemsPrimitive ? rawItemData.value : rawItemData;
|
|
59
|
+
//return
|
|
60
|
+
return {
|
|
61
|
+
itemData,
|
|
62
|
+
index,
|
|
63
|
+
value,
|
|
64
|
+
label: label?.toString?.() ?? String(label),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Selects the given item.
|
|
69
|
+
* @param items The item to select.
|
|
70
|
+
* @returns The value of the selected item.
|
|
71
|
+
*/
|
|
72
|
+
selectItem(item) {
|
|
73
|
+
return item.value;
|
|
74
|
+
}
|
|
75
|
+
selectCurrent() {
|
|
76
|
+
if (!this._highlightedItem)
|
|
77
|
+
return undefined;
|
|
78
|
+
return this.selectItem(this._highlightedItem);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Unhighlights all currently highlighted items.
|
|
82
|
+
*/
|
|
83
|
+
unhighlightCurrent() {
|
|
84
|
+
if (this._highlightedItem) {
|
|
85
|
+
this._highlightedItem.highlighted = false;
|
|
86
|
+
}
|
|
87
|
+
this._highlightedItem = null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Highlights a given item.
|
|
91
|
+
* @param item The item to be highlighted.
|
|
92
|
+
*/
|
|
93
|
+
highlightItem(item) {
|
|
94
|
+
this.unhighlightCurrent();
|
|
95
|
+
item.highlighted = true;
|
|
96
|
+
this._highlightedItem = item;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Unhighlights a given item.
|
|
100
|
+
* @param item The item to be unhighlighted.
|
|
101
|
+
*/
|
|
102
|
+
unhighlightItem(item) {
|
|
103
|
+
item.highlighted = false;
|
|
104
|
+
if (this._highlightedItem?.index == item.index)
|
|
105
|
+
this._highlightedItem = null;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Highlights the first item out of all items.
|
|
109
|
+
* @returns The highlighted item.
|
|
110
|
+
*/
|
|
111
|
+
highlightFirstItem() {
|
|
112
|
+
if (!this.items.length)
|
|
113
|
+
return null;
|
|
114
|
+
this.unhighlightCurrent();
|
|
115
|
+
let itemToHighlight = this.items.first();
|
|
116
|
+
this.highlightItem(itemToHighlight);
|
|
117
|
+
return itemToHighlight;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Highlights the last item out of all items.
|
|
121
|
+
* @returns The highlighted item.
|
|
122
|
+
*/
|
|
123
|
+
highlightLastItem() {
|
|
124
|
+
if (!this.items.length)
|
|
125
|
+
return null;
|
|
126
|
+
this.unhighlightCurrent();
|
|
127
|
+
let itemToHighlight = this.items.last();
|
|
128
|
+
this.highlightItem(itemToHighlight);
|
|
129
|
+
return itemToHighlight;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Highlights the next non-disabled item defined by the offset amount.
|
|
133
|
+
* @param offset The amount of items to offset the highlight by.
|
|
134
|
+
* @returns The item highlighted.
|
|
135
|
+
*/
|
|
136
|
+
highlightNextItem(offset) {
|
|
137
|
+
const currentItem = this._highlightedItem;
|
|
138
|
+
if (!currentItem) {
|
|
139
|
+
return this.highlightFirstItem();
|
|
140
|
+
}
|
|
141
|
+
const itemsWithoutDisabled = this._items.filter(item => !item.disabled);
|
|
142
|
+
const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index == currentItem.index);
|
|
143
|
+
let nextItemIndex = currentIndexInItems + offset;
|
|
144
|
+
if (nextItemIndex >= itemsWithoutDisabled.length) {
|
|
145
|
+
nextItemIndex -= itemsWithoutDisabled.length;
|
|
146
|
+
}
|
|
147
|
+
else if (nextItemIndex < 0) {
|
|
148
|
+
nextItemIndex += itemsWithoutDisabled.length;
|
|
149
|
+
}
|
|
150
|
+
const itemToHighlight = itemsWithoutDisabled[nextItemIndex];
|
|
151
|
+
this.highlightItem(itemToHighlight);
|
|
152
|
+
return itemToHighlight;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlc3QtaXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9faW50ZXJuYWwvaXRlbS1zdG9yYWdlcy9zaW1wbGVzdC1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFhL0MsTUFBTSxPQUFPLG1CQUFtQjtJQUk1QixJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBb0IsY0FBdUM7UUFBdkMsbUJBQWMsR0FBZCxjQUFjLENBQXlCO1FBUG5ELFdBQU0sR0FBNkIsRUFBRSxDQUFDO1FBQ3RDLHFCQUFnQixHQUFrQyxJQUFJLENBQUM7SUFNRCxDQUFDO0lBRS9EOztPQUVHO0lBQ0gsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksb0JBQW9CO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxLQUFZO1FBQ2pCLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRTtZQUN6QixLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUM3QyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7U0FDNUI7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFD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Q0FBQztTQUNoRDthQUFNLElBQUksYUFBYSxHQUFHLENBQUMsRUFBRTtZQUMxQixhQUFhLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDO1NBQ2hEO1FBQ0QsTUFBTSxlQUFlLEdBQUcsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVwQyxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVzb2x2ZVBhdGggZnJvbSAncmVzb2x2ZS1vYmplY3QtcGF0aCc7XG5pbXBvcnQgeyBhbnksIGlzUHJpbWl0aXZlIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xuaW1wb3J0IHsgQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSB9IGZyb20gJy4uLy4uL3R5cGVzL2l0ZW0tc3RvcmFnZS50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlc3RJdGVtU3RvcmFnZUhvc3REZWZhdWx0cyB7XG4gICAgdmFsdWVGcm9tOiBzdHJpbmc7XG4gICAgbGFiZWxGcm9tOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNpbXBsZXN0SXRlbVN0b3JhZ2VIb3N0IHtcbiAgICB2YWx1ZUZyb20/OiBzdHJpbmc7XG4gICAgbGFiZWxGcm9tPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IERFRkFVTFRTOiBTaW1wbGVzdEl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlc3RJdGVtU3RvcmFnZSB7XG4gICAgcHJpdmF0ZSBfaXRlbXM6IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW1bXSA9IFtdO1xuICAgIHByaXZhdGUgX2hpZ2hsaWdodGVkSXRlbTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSB8IG51bGwgPSBudWxsO1xuXG4gICAgZ2V0IGhpZ2hsaWdodGVkSXRlbSgpOiBBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRlZEl0ZW07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXJkUGFyZW50Q29tcDogU2ltcGxlc3RJdGVtU3RvcmFnZUhvc3QpIHt9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBpdGVtcy5cbiAgICAgKi9cbiAgICBnZXQgaXRlbXMoKTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgaXRlbSBpcyBoaWdobGlnaHRlZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgICAqL1xuICAgIGdldCBpc0FueUl0ZW1IaWdobGlnaHRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZ2hsaWdodGVkSXRlbSAhPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGNvbXBvbmVudCdzIGl0ZW1zLiBUYWtlcyBpbnRvIGFjY291bnQgdGhlIHZhbHVlcyBkZWZpbmVkIGJ5IHRoZSBwYXJlbnQgY29tcG9uZW50IGZvciBgc3VnZ1ZhbHVlRnJvbWAgYW5kIGBzdWdnTGFiZWxGcm9tYC5cbiAgICAgKiBAcGFyYW0gaXRlbXMgQW4gYXJyYXkgb2YgaXRlbXMgdG8gYmUgc2V0IGFzIHRoZSBjb21wb25lbnQncyBpdGVtcy5cbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgaXRlbXMgaXMgb2YgcHJpbWl0aXZlIHR5cGUsIG90aGVyd2lzZSBmYWxzZS5cbiAgICAgKi9cbiAgICBzZXRJdGVtcyhpdGVtczogYW55W10pOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGFyZUl0ZW1zUHJpbWl0aXZlID0gZmFsc2U7XG4gICAgICAgIGlmIChhbnkoaXRlbXMsIGlzUHJpbWl0aXZlKSkge1xuICAgICAgICAgICAgaXRlbXMgPSBpdGVtcy5tYXAodGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbik7XG4gICAgICAgICAgICBhcmVJdGVtc1ByaW1pdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zZXRJdGVtc01hcEZuKGl0ZW0sIGluZGV4LCBhcmVJdGVtc1ByaW1pdGl2ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBhcmVJdGVtc1ByaW1pdGl2ZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcHJpbWl0aXZlSXRlbXNNYXBGbjxUPihpdGVtOiBUKTogeyB2YWx1ZTogVCB9IHtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGl0ZW0gfTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBhcmVJdGVtc1ByaW1pdGl2ZTogYm9vbGVhbik6IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0ge1xuICAgICAgICBpZiAoYXJlSXRlbXNQcmltaXRpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaXRlbURhdGE6IHJhd0l0ZW1EYXRhLFxuICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgIHZhbHVlOiByYXdJdGVtRGF0YS52YWx1ZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogcmF3SXRlbURhdGEudmFsdWU/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcocmF3SXRlbURhdGEudmFsdWUpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICAvL2dldCB2YWx1ZVxuICAgICAgICBjb25zdCB2YWx1ZVBhdGggPSB0aGlzLl9hcmRQYXJlbnRDb21wLnZhbHVlRnJvbSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLmxhYmVsRnJvbSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLnZhbHVlRnJvbTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgdmFsdWVQYXRoKTtcblxuICAgICAgICAvL2dldCBsYWJlbFxuICAgICAgICBjb25zdCBsYWJlbFBhdGggPSB0aGlzLl9hcmRQYXJlbnRDb21wLmxhYmVsRnJvbSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLnZhbHVlRnJvbSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLmxhYmVsRnJvbTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgbGFiZWxQYXRoKSA/PyB2YWx1ZTtcblxuICAgICAgICBjb25zdCBpdGVtRGF0YSA9IGFyZUl0ZW1zUHJpbWl0aXZlID8gcmF3SXRlbURhdGEudmFsdWUgOiByYXdJdGVtRGF0YTtcblxuICAgICAgICAvL3JldHVyblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbURhdGEsXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgbGFiZWw6IGxhYmVsPy50b1N0cmluZz8uKCkgPz8gU3RyaW5nKGxhYmVsKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIHRoZSBnaXZlbiBpdGVtLlxuICAgICAqIEBwYXJhbSBpdGVtcyBUaGUgaXRlbSB0byBzZWxlY3QuXG4gICAgICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBzZWxlY3RlZCBpdGVtLlxuICAgICAqL1xuICAgIHNlbGVjdEl0ZW0oaXRlbTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSk6IGFueSB7XG4gICAgICAgIHJldHVybiBpdGVtLnZhbHVlO1xuICAgIH1cbiAgICBzZWxlY3RDdXJyZW50KCk6IGFueSB7XG4gICAgICAgIGlmICghdGhpcy5faGlnaGxpZ2h0ZWRJdGVtKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RJdGVtKHRoaXMuX2hpZ2hsaWdodGVkSXRlbSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW5oaWdobGlnaHRzIGFsbCBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgaXRlbXMuXG4gICAgICovXG4gICAgdW5oaWdobGlnaHRDdXJyZW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faGlnaGxpZ2h0ZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW0uaGlnaGxpZ2h0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW0gPSBudWxsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIaWdobGlnaHRzIGEgZ2l2ZW4gaXRlbS5cbiAgICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBiZSBoaWdobGlnaHRlZC5cbiAgICAgKi9cbiAgICBoaWdobGlnaHRJdGVtKGl0ZW06IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bmhpZ2hsaWdodEN1cnJlbnQoKTtcblxuICAgICAgICBpdGVtLmhpZ2hsaWdodGVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW0gPSBpdGVtO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVbmhpZ2hsaWdodHMgYSBnaXZlbiBpdGVtLlxuICAgICAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHRvIGJlIHVuaGlnaGxpZ2h0ZWQuXG4gICAgICovXG4gICAgdW5oaWdobGlnaHRJdGVtKGl0ZW06IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaXRlbS5oaWdobGlnaHRlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHRlZEl0ZW0/LmluZGV4ID09IGl0ZW0uaW5kZXgpIHRoaXMuX2hpZ2hsaWdodGVkSXRlbSA9IG51bGw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhpZ2hsaWdodHMgdGhlIGZpcnN0IGl0ZW0gb3V0IG9mIGFsbCBpdGVtcy5cbiAgICAgKiBAcmV0dXJucyBUaGUgaGlnaGxpZ2h0ZWQgaXRlbS5cbiAgICAgKi9cbiAgICBoaWdobGlnaHRGaXJzdEl0ZW0oKTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSB8IG51bGwge1xuICAgICAgICBpZiAoIXRoaXMuaXRlbXMubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICAgICAgICB0aGlzLnVuaGlnaGxpZ2h0Q3VycmVudCgpO1xuXG4gICAgICAgIGxldCBpdGVtVG9IaWdobGlnaHQgPSB0aGlzLml0ZW1zLmZpcnN0KCk7XG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtVG9IaWdobGlnaHQpO1xuXG4gICAgICAgIHJldHVybiBpdGVtVG9IaWdobGlnaHQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhpZ2hsaWdodHMgdGhlIGxhc3QgaXRlbSBvdXQgb2YgYWxsIGl0ZW1zLlxuICAgICAqIEByZXR1cm5zIFRoZSBoaWdobGlnaHRlZCBpdGVtLlxuICAgICAqL1xuICAgIGhpZ2hsaWdodExhc3RJdGVtKCk6IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0gfCBudWxsIHtcbiAgICAgICAgaWYgKCF0aGlzLml0ZW1zLmxlbmd0aCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgdGhpcy51bmhpZ2hsaWdodEN1cnJlbnQoKTtcblxuICAgICAgICBsZXQgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5pdGVtcy5sYXN0KCk7XG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtVG9IaWdobGlnaHQpO1xuXG4gICAgICAgIHJldHVybiBpdGVtVG9IaWdobGlnaHQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhpZ2hsaWdodHMgdGhlIG5leHQgbm9uLWRpc2FibGVkIGl0ZW0gZGVmaW5lZCBieSB0aGUgb2Zmc2V0IGFtb3VudC5cbiAgICAgKiBAcGFyYW0gb2Zmc2V0IFRoZSBhbW91bnQgb2YgaXRlbXMgdG8gb2Zmc2V0IHRoZSBoaWdobGlnaHQgYnkuXG4gICAgICogQHJldHVybnMgVGhlIGl0ZW0gaGlnaGxpZ2h0ZWQuXG4gICAgICovXG4gICAgaGlnaGxpZ2h0TmV4dEl0ZW0ob2Zmc2V0OiBudW1iZXIpOiBBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtO1xuICAgICAgICBpZiAoIWN1cnJlbnRJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtc1dpdGhvdXREaXNhYmxlZCA9IHRoaXMuX2l0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKTtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4SW5JdGVtcyA9IGl0ZW1zV2l0aG91dERpc2FibGVkLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaW5kZXggPT0gY3VycmVudEl0ZW0uaW5kZXgpO1xuXG4gICAgICAgIGxldCBuZXh0SXRlbUluZGV4ID0gY3VycmVudEluZGV4SW5JdGVtcyArIG9mZnNldDtcbiAgICAgICAgaWYgKG5leHRJdGVtSW5kZXggPj0gaXRlbXNXaXRob3V0RGlzYWJsZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICBuZXh0SXRlbUluZGV4IC09IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcbiAgICAgICAgfSBlbHNlIGlmIChuZXh0SXRlbUluZGV4IDwgMCkge1xuICAgICAgICAgICAgbmV4dEl0ZW1JbmRleCArPSBpdGVtc1dpdGhvdXREaXNhYmxlZC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbVRvSGlnaGxpZ2h0ID0gaXRlbXNXaXRob3V0RGlzYWJsZWRbbmV4dEl0ZW1JbmRleF07XG5cbiAgICAgICAgdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0hpZ2hsaWdodDtcbiAgICB9XG59XG4iXX0=
|