@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,85 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { ArdiumClickOutsideEventModule } from '@ardium-ui/devkit';
|
|
4
|
+
import { ArdiumButtonModule } from '../../buttons/button/button.module';
|
|
5
|
+
import { ArdiumCardModule } from '../../card/card.module';
|
|
6
|
+
import { ArdiumColorDisplayModule } from '../../color/color-display/color-display.module';
|
|
7
|
+
import { ArdiumColorPickerModule } from '../../color/color-picker/color-picker.module';
|
|
8
|
+
import { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';
|
|
9
|
+
import { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';
|
|
10
|
+
import { ArdiumColorInputComponent } from './color-input.component';
|
|
11
|
+
import { ArdColorInputActionButtonsTemplateDirective, ArdColorInputColorReferenceTemplateDirective, ArdColorInputHueIndicatorTemplateDirective, ArdColorInputOpacityIndicatorTemplateDirective, ArdColorInputPlaceholderTemplateDirective, ArdColorInputPrefixTemplateDirective, ArdColorInputShadeIndicatorTemplateDirective, ArdColorInputSuffixTemplateDirective, } from './color-input.directives';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
export class ArdiumColorInputModule {
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumColorInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
15
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: ArdiumColorInputModule, declarations: [ArdiumColorInputComponent,
|
|
16
|
+
ArdColorInputPlaceholderTemplateDirective,
|
|
17
|
+
ArdColorInputPrefixTemplateDirective,
|
|
18
|
+
ArdColorInputSuffixTemplateDirective,
|
|
19
|
+
ArdColorInputShadeIndicatorTemplateDirective,
|
|
20
|
+
ArdColorInputHueIndicatorTemplateDirective,
|
|
21
|
+
ArdColorInputOpacityIndicatorTemplateDirective,
|
|
22
|
+
ArdColorInputColorReferenceTemplateDirective,
|
|
23
|
+
ArdColorInputActionButtonsTemplateDirective], imports: [CommonModule,
|
|
24
|
+
ArdiumFormFieldFrameModule,
|
|
25
|
+
_ClearButtonModule,
|
|
26
|
+
ArdiumColorPickerModule,
|
|
27
|
+
ArdiumColorDisplayModule,
|
|
28
|
+
ArdiumCardModule,
|
|
29
|
+
ArdiumClickOutsideEventModule,
|
|
30
|
+
ArdiumButtonModule], exports: [ArdiumColorInputComponent,
|
|
31
|
+
ArdColorInputPlaceholderTemplateDirective,
|
|
32
|
+
ArdColorInputPrefixTemplateDirective,
|
|
33
|
+
ArdColorInputSuffixTemplateDirective,
|
|
34
|
+
ArdColorInputShadeIndicatorTemplateDirective,
|
|
35
|
+
ArdColorInputHueIndicatorTemplateDirective,
|
|
36
|
+
ArdColorInputOpacityIndicatorTemplateDirective,
|
|
37
|
+
ArdColorInputColorReferenceTemplateDirective,
|
|
38
|
+
ArdColorInputActionButtonsTemplateDirective] }); }
|
|
39
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumColorInputModule, imports: [CommonModule,
|
|
40
|
+
ArdiumFormFieldFrameModule,
|
|
41
|
+
_ClearButtonModule,
|
|
42
|
+
ArdiumColorPickerModule,
|
|
43
|
+
ArdiumColorDisplayModule,
|
|
44
|
+
ArdiumCardModule,
|
|
45
|
+
ArdiumClickOutsideEventModule,
|
|
46
|
+
ArdiumButtonModule] }); }
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumColorInputModule, decorators: [{
|
|
49
|
+
type: NgModule,
|
|
50
|
+
args: [{
|
|
51
|
+
declarations: [
|
|
52
|
+
ArdiumColorInputComponent,
|
|
53
|
+
ArdColorInputPlaceholderTemplateDirective,
|
|
54
|
+
ArdColorInputPrefixTemplateDirective,
|
|
55
|
+
ArdColorInputSuffixTemplateDirective,
|
|
56
|
+
ArdColorInputShadeIndicatorTemplateDirective,
|
|
57
|
+
ArdColorInputHueIndicatorTemplateDirective,
|
|
58
|
+
ArdColorInputOpacityIndicatorTemplateDirective,
|
|
59
|
+
ArdColorInputColorReferenceTemplateDirective,
|
|
60
|
+
ArdColorInputActionButtonsTemplateDirective,
|
|
61
|
+
],
|
|
62
|
+
imports: [
|
|
63
|
+
CommonModule,
|
|
64
|
+
ArdiumFormFieldFrameModule,
|
|
65
|
+
_ClearButtonModule,
|
|
66
|
+
ArdiumColorPickerModule,
|
|
67
|
+
ArdiumColorDisplayModule,
|
|
68
|
+
ArdiumCardModule,
|
|
69
|
+
ArdiumClickOutsideEventModule,
|
|
70
|
+
ArdiumButtonModule,
|
|
71
|
+
],
|
|
72
|
+
exports: [
|
|
73
|
+
ArdiumColorInputComponent,
|
|
74
|
+
ArdColorInputPlaceholderTemplateDirective,
|
|
75
|
+
ArdColorInputPrefixTemplateDirective,
|
|
76
|
+
ArdColorInputSuffixTemplateDirective,
|
|
77
|
+
ArdColorInputShadeIndicatorTemplateDirective,
|
|
78
|
+
ArdColorInputHueIndicatorTemplateDirective,
|
|
79
|
+
ArdColorInputOpacityIndicatorTemplateDirective,
|
|
80
|
+
ArdColorInputColorReferenceTemplateDirective,
|
|
81
|
+
ArdColorInputActionButtonsTemplateDirective,
|
|
82
|
+
],
|
|
83
|
+
}]
|
|
84
|
+
}] });
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvY29sb3ItaW5wdXQvY29sb3ItaW5wdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFDSCwyQ0FBMkMsRUFDM0MsNENBQTRDLEVBQzVDLDBDQUEwQyxFQUMxQyw4Q0FBOEMsRUFDOUMseUNBQXlDLEVBQ3pDLG9DQUFvQyxFQUNwQyw0Q0FBNEMsRUFDNUMsb0NBQW9DLEdBQ3ZDLE1BQU0sMEJBQTBCLENBQUM7O0FBb0NsQyxNQUFNLE9BQU8sc0JBQXNCOzhHQUF0QixzQkFBc0I7K0dBQXRCLHNCQUFzQixpQkFoQzNCLHlCQUF5QjtZQUN6Qix5Q0FBeUM7WUFDekMsb0NBQW9DO1lBQ3BDLG9DQUFvQztZQUNwQyw0Q0FBNEM7WUFDNUMsMENBQTBDO1lBQzFDLDhDQUE4QztZQUM5Qyw0Q0FBNEM7WUFDNUMsMkNBQTJDLGFBRzNDLFlBQVk7WUFDWiwwQkFBMEI7WUFDMUIsa0JBQWtCO1lBQ2xCLHVCQUF1QjtZQUN2Qix3QkFBd0I7WUFDeEIsZ0JBQWdCO1lBQ2hCLDZCQUE2QjtZQUM3QixrQkFBa0IsYUFHbEIseUJBQXlCO1lBQ3pCLHlDQUF5QztZQUN6QyxvQ0FBb0M7WUFDcEMsb0NBQW9DO1lBQ3BDLDRDQUE0QztZQUM1QywwQ0FBMEM7WUFDMUMsOENBQThDO1lBQzlDLDRDQUE0QztZQUM1QywyQ0FBMkM7K0dBR3RDLHNCQUFzQixZQXJCM0IsWUFBWTtZQUNaLDBCQUEwQjtZQUMxQixrQkFBa0I7WUFDbEIsdUJBQXVCO1lBQ3ZCLHdCQUF3QjtZQUN4QixnQkFBZ0I7WUFDaEIsNkJBQTZCO1lBQzdCLGtCQUFrQjs7MkZBY2Isc0JBQXNCO2tCQWxDbEMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUU7d0JBQ1YseUJBQXlCO3dCQUN6Qix5Q0FBeUM7d0JBQ3pDLG9DQUFvQzt3QkFDcEMsb0NBQW9DO3dCQUNwQyw0Q0FBNEM7d0JBQzVDLDBDQUEwQzt3QkFDMUMsOENBQThDO3dCQUM5Qyw0Q0FBNEM7d0JBQzVDLDJDQUEyQztxQkFDOUM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osMEJBQTBCO3dCQUMxQixrQkFBa0I7d0JBQ2xCLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLDZCQUE2Qjt3QkFDN0Isa0JBQWtCO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wseUJBQXlCO3dCQUN6Qix5Q0FBeUM7d0JBQ3pDLG9DQUFvQzt3QkFDcEMsb0NBQW9DO3dCQUNwQyw0Q0FBNEM7d0JBQzVDLDBDQUEwQzt3QkFDMUMsOENBQThDO3dCQUM5Qyw0Q0FBNEM7d0JBQzVDLDJDQUEyQztxQkFDOUM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFyZGl1bUNsaWNrT3V0c2lkZUV2ZW50TW9kdWxlIH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xuaW1wb3J0IHsgQXJkaXVtQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vLi4vYnV0dG9ucy9idXR0b24vYnV0dG9uLm1vZHVsZSc7XG5pbXBvcnQgeyBBcmRpdW1DYXJkTW9kdWxlIH0gZnJvbSAnLi4vLi4vY2FyZC9jYXJkLm1vZHVsZSc7XG5pbXBvcnQgeyBBcmRpdW1Db2xvckRpc3BsYXlNb2R1bGUgfSBmcm9tICcuLi8uLi9jb2xvci9jb2xvci1kaXNwbGF5L2NvbG9yLWRpc3BsYXkubW9kdWxlJztcbmltcG9ydCB7IEFyZGl1bUNvbG9yUGlja2VyTW9kdWxlIH0gZnJvbSAnLi4vLi4vY29sb3IvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHsgQXJkaXVtRm9ybUZpZWxkRnJhbWVNb2R1bGUgfSBmcm9tICcuLi8uLi9mb3JtLWZpZWxkLWZyYW1lL2Zvcm0tZmllbGQtZnJhbWUubW9kdWxlJztcbmltcG9ydCB7IF9DbGVhckJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9jbGVhci1idXR0b24vY2xlYXItYnV0dG9uLm1vZHVsZSc7XG5pbXBvcnQgeyBBcmRpdW1Db2xvcklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb2xvci1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBBcmRDb2xvcklucHV0QWN0aW9uQnV0dG9uc1RlbXBsYXRlRGlyZWN0aXZlLFxuICAgIEFyZENvbG9ySW5wdXRDb2xvclJlZmVyZW5jZVRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIEFyZENvbG9ySW5wdXRIdWVJbmRpY2F0b3JUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBBcmRDb2xvcklucHV0T3BhY2l0eUluZGljYXRvclRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIEFyZENvbG9ySW5wdXRQbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIEFyZENvbG9ySW5wdXRQcmVmaXhUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBBcmRDb2xvcklucHV0U2hhZGVJbmRpY2F0b3JUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBBcmRDb2xvcklucHV0U3VmZml4VGVtcGxhdGVEaXJlY3RpdmUsXG59IGZyb20gJy4vY29sb3ItaW5wdXQuZGlyZWN0aXZlcyc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEFyZGl1bUNvbG9ySW5wdXRDb21wb25lbnQsXG4gICAgICAgIEFyZENvbG9ySW5wdXRQbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBBcmRDb2xvcklucHV0UHJlZml4VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEFyZENvbG9ySW5wdXRTdWZmaXhUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgQXJkQ29sb3JJbnB1dFNoYWRlSW5kaWNhdG9yVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEFyZENvbG9ySW5wdXRIdWVJbmRpY2F0b3JUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgQXJkQ29sb3JJbnB1dE9wYWNpdHlJbmRpY2F0b3JUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgQXJkQ29sb3JJbnB1dENvbG9yUmVmZXJlbmNlVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEFyZENvbG9ySW5wdXRBY3Rpb25CdXR0b25zVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQXJkaXVtRm9ybUZpZWxkRnJhbWVNb2R1bGUsXG4gICAgICAgIF9DbGVhckJ1dHRvbk1vZHVsZSxcbiAgICAgICAgQXJkaXVtQ29sb3JQaWNrZXJNb2R1bGUsXG4gICAgICAgIEFyZGl1bUNvbG9yRGlzcGxheU1vZHVsZSxcbiAgICAgICAgQXJkaXVtQ2FyZE1vZHVsZSxcbiAgICAgICAgQXJkaXVtQ2xpY2tPdXRzaWRlRXZlbnRNb2R1bGUsXG4gICAgICAgIEFyZGl1bUJ1dHRvbk1vZHVsZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgQXJkaXVtQ29sb3JJbnB1dENvbXBvbmVudCxcbiAgICAgICAgQXJkQ29sb3JJbnB1dFBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEFyZENvbG9ySW5wdXRQcmVmaXhUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgQXJkQ29sb3JJbnB1dFN1ZmZpeFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBBcmRDb2xvcklucHV0U2hhZGVJbmRpY2F0b3JUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgQXJkQ29sb3JJbnB1dEh1ZUluZGljYXRvclRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBBcmRDb2xvcklucHV0T3BhY2l0eUluZGljYXRvclRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBBcmRDb2xvcklucHV0Q29sb3JSZWZlcmVuY2VUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgQXJkQ29sb3JJbnB1dEFjdGlvbkJ1dHRvbnNUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1Db2xvcklucHV0TW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItaW5wdXQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9jb2xvci1pbnB1dC9jb2xvci1pbnB1dC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQ29sb3JJbnB1dEFjdGlvbkJ1dHRvbnNDb250ZXh0ID0ge1xuICAgIGFwcGx5OiAoKSA9PiB2b2lkO1xuICAgIGNhbmNlbDogKCkgPT4gdm9pZDtcbiAgICByZXNldDogKCkgPT4gdm9pZDtcbn07XG4iXX0=
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation, forwardRef, Output, EventEmitter, Input, ViewChildren, } from '@angular/core';
|
|
2
|
+
import { _NgModelComponentBase } from '../../_internal/ngmodel-component';
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { coerceBooleanProperty } from '@ardium-ui/devkit';
|
|
5
|
+
import { FormElementAppearance, FormElementVariant } from '../../types/theming.types';
|
|
6
|
+
import { DigitInputModel } from './digit-input.model';
|
|
7
|
+
import { DigitInputShape } from './digit-input.types';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common";
|
|
10
|
+
export class ArdiumDigitInputComponent extends _NgModelComponentBase {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.model = new DigitInputModel(this);
|
|
14
|
+
//! appearance
|
|
15
|
+
this.appearance = FormElementAppearance.Outlined;
|
|
16
|
+
this.variant = FormElementVariant.Rounded;
|
|
17
|
+
this.shape = DigitInputShape.Square;
|
|
18
|
+
this._compact = false;
|
|
19
|
+
this.configArrayData = [];
|
|
20
|
+
//! value two-way binding
|
|
21
|
+
this._outputAsString = false;
|
|
22
|
+
this.valueChange = new EventEmitter();
|
|
23
|
+
//! event emitters
|
|
24
|
+
this.inputEvent = new EventEmitter();
|
|
25
|
+
this.changeEvent = new EventEmitter();
|
|
26
|
+
this.finishedValue = new EventEmitter();
|
|
27
|
+
this.focusIndexEvent = new EventEmitter();
|
|
28
|
+
this.blurIndexEvent = new EventEmitter();
|
|
29
|
+
}
|
|
30
|
+
get compact() {
|
|
31
|
+
return this._compact;
|
|
32
|
+
}
|
|
33
|
+
set compact(v) {
|
|
34
|
+
this._compact = coerceBooleanProperty(v);
|
|
35
|
+
}
|
|
36
|
+
get ngClasses() {
|
|
37
|
+
return [`ard-appearance-${this.appearance}`, `ard-variant-${this.variant}`, `ard-shape-${this.shape}`, this.compact ? 'ard-compact' : ''].join(' ');
|
|
38
|
+
}
|
|
39
|
+
//! model access points
|
|
40
|
+
set config(v) {
|
|
41
|
+
this.model.setConfig(v);
|
|
42
|
+
}
|
|
43
|
+
get isConfigDefined() {
|
|
44
|
+
return this.model.isConfigDefined;
|
|
45
|
+
}
|
|
46
|
+
isInputEmpty(index) {
|
|
47
|
+
return !this.model.isDefinedAtIndex(index);
|
|
48
|
+
}
|
|
49
|
+
//! control value accessor's write value implementation
|
|
50
|
+
writeValue(v) {
|
|
51
|
+
this._writeValue(v);
|
|
52
|
+
}
|
|
53
|
+
_writeValue(v) {
|
|
54
|
+
return this.model.writeValue(v);
|
|
55
|
+
}
|
|
56
|
+
get outputAsString() {
|
|
57
|
+
return this._outputAsString;
|
|
58
|
+
}
|
|
59
|
+
set outputAsString(v) {
|
|
60
|
+
this._outputAsString = coerceBooleanProperty(v);
|
|
61
|
+
}
|
|
62
|
+
set value(v) {
|
|
63
|
+
this.writeValue(v);
|
|
64
|
+
}
|
|
65
|
+
get value() {
|
|
66
|
+
return this.model.value;
|
|
67
|
+
}
|
|
68
|
+
get stringValue() {
|
|
69
|
+
return this.model.stringValue;
|
|
70
|
+
}
|
|
71
|
+
get emittableValue() {
|
|
72
|
+
if (this.outputAsString)
|
|
73
|
+
return this.model.stringValue;
|
|
74
|
+
return this.value;
|
|
75
|
+
}
|
|
76
|
+
//! event handlers
|
|
77
|
+
onPaste(event, index) {
|
|
78
|
+
const value = event.clipboardData?.getData('text');
|
|
79
|
+
event.stopPropagation();
|
|
80
|
+
event.preventDefault();
|
|
81
|
+
if (!value)
|
|
82
|
+
return;
|
|
83
|
+
const maxLength = this.inputs.length - index;
|
|
84
|
+
value
|
|
85
|
+
.slice(0, maxLength)
|
|
86
|
+
.split('')
|
|
87
|
+
.forEach((char, i) => {
|
|
88
|
+
this.model.validateInputAndSetValue(char, index + i);
|
|
89
|
+
});
|
|
90
|
+
this.focusByIndex(index - 1 + Math.min(value.length, maxLength));
|
|
91
|
+
}
|
|
92
|
+
onInput(event, index) {
|
|
93
|
+
this._updateSingleInputValue(event.target.value, index);
|
|
94
|
+
}
|
|
95
|
+
_updateSingleInputValue(value, index) {
|
|
96
|
+
const valueChanged = this.model.validateInputAndSetValue(value, index);
|
|
97
|
+
if (!valueChanged || !valueChanged[0])
|
|
98
|
+
return;
|
|
99
|
+
if (valueChanged[1]) {
|
|
100
|
+
this.focusByIndex(index + 1);
|
|
101
|
+
}
|
|
102
|
+
this._emitInput();
|
|
103
|
+
}
|
|
104
|
+
focusByIndex(index, tryFocusingNext, direction) {
|
|
105
|
+
if (index < 0 || index >= this.inputs.length)
|
|
106
|
+
return false;
|
|
107
|
+
const nextEl = this.inputs.get(index)?.nativeElement;
|
|
108
|
+
if (!nextEl)
|
|
109
|
+
return false;
|
|
110
|
+
nextEl.focus();
|
|
111
|
+
if (tryFocusingNext && direction && document.activeElement != nextEl) {
|
|
112
|
+
return this.focusByIndex(index + direction);
|
|
113
|
+
}
|
|
114
|
+
return document.activeElement == nextEl;
|
|
115
|
+
}
|
|
116
|
+
_emitInput() {
|
|
117
|
+
this._onChangeRegistered?.(this.value);
|
|
118
|
+
this.inputEvent.emit(this.emittableValue);
|
|
119
|
+
this.valueChange.emit(this.emittableValue);
|
|
120
|
+
if (this.model.isValueFull) {
|
|
121
|
+
this.finishedValue.emit(this.emittableValue);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//focus, blur, change
|
|
125
|
+
onFocusMaster(event, index) {
|
|
126
|
+
this.focusIndexEvent.emit(index);
|
|
127
|
+
this.onFocus(event);
|
|
128
|
+
}
|
|
129
|
+
onBlurMaster(event, index) {
|
|
130
|
+
this._emitChange();
|
|
131
|
+
this.blurIndexEvent.emit(index);
|
|
132
|
+
this.onBlur(event);
|
|
133
|
+
}
|
|
134
|
+
_emitChange() {
|
|
135
|
+
this.changeEvent.emit(this.emittableValue);
|
|
136
|
+
}
|
|
137
|
+
onKeydown(event, index) {
|
|
138
|
+
switch (event.key) {
|
|
139
|
+
case 'ArrowLeft':
|
|
140
|
+
this.focusByIndex(index - 1, true, -1);
|
|
141
|
+
break;
|
|
142
|
+
case 'ArrowRight':
|
|
143
|
+
this.focusByIndex(index + 1, true, +1);
|
|
144
|
+
break;
|
|
145
|
+
case 'Home':
|
|
146
|
+
this.focusByIndex(0, true, 1);
|
|
147
|
+
break;
|
|
148
|
+
case 'End':
|
|
149
|
+
this.focusByIndex(this.inputs.length - 1, true, -1);
|
|
150
|
+
break;
|
|
151
|
+
case 'Backspace':
|
|
152
|
+
case 'Delete':
|
|
153
|
+
this._updateSingleInputValue('', index);
|
|
154
|
+
this.focusByIndex(index - 1, true, -1);
|
|
155
|
+
event.preventDefault();
|
|
156
|
+
break;
|
|
157
|
+
default:
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
ngAfterContentInit() {
|
|
162
|
+
if (!this.isConfigDefined) {
|
|
163
|
+
throw new Error(`ARD-FT040: <ard-digit-input>'s [config] field has to be defined.`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumDigitInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: ArdiumDigitInputComponent, selector: "ard-digit-input", inputs: { appearance: "appearance", variant: "variant", shape: "shape", compact: "compact", config: "config", outputAsString: "outputAsString", value: "value" }, outputs: { valueChange: "valueChange", inputEvent: "input", changeEvent: "change", finishedValue: "finishedValue", focusIndexEvent: "focusIndex", blurIndexEvent: "blurIndex" }, providers: [
|
|
168
|
+
{
|
|
169
|
+
provide: NG_VALUE_ACCESSOR,
|
|
170
|
+
useExisting: forwardRef(() => ArdiumDigitInputComponent),
|
|
171
|
+
multi: true,
|
|
172
|
+
},
|
|
173
|
+
], viewQueries: [{ propertyName: "inputs", predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ard-digit-input\" [ngClass]=\"ngClasses\">\r\n <div class=\"ard-digit-input__item\" *ngFor=\"let data of configArrayData\">\r\n <input\r\n #input\r\n #focusableElement\r\n *ngIf=\"data.type == 'input'\"\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n <div\r\n *ngIf=\"data.type == 'static'\"\r\n class=\"ard-digit-input__static\"\r\n >\r\n {{ data.char }}\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
174
|
+
}
|
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumDigitInputComponent, decorators: [{
|
|
176
|
+
type: Component,
|
|
177
|
+
args: [{ selector: 'ard-digit-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
178
|
+
{
|
|
179
|
+
provide: NG_VALUE_ACCESSOR,
|
|
180
|
+
useExisting: forwardRef(() => ArdiumDigitInputComponent),
|
|
181
|
+
multi: true,
|
|
182
|
+
},
|
|
183
|
+
], template: "<div class=\"ard-digit-input\" [ngClass]=\"ngClasses\">\r\n <div class=\"ard-digit-input__item\" *ngFor=\"let data of configArrayData\">\r\n <input\r\n #input\r\n #focusableElement\r\n *ngIf=\"data.type == 'input'\"\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n <div\r\n *ngIf=\"data.type == 'static'\"\r\n class=\"ard-digit-input__static\"\r\n >\r\n {{ data.char }}\r\n </div>\r\n </div>\r\n</div>" }]
|
|
184
|
+
}], propDecorators: { appearance: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}], variant: [{
|
|
187
|
+
type: Input
|
|
188
|
+
}], shape: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], compact: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}], config: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}], outputAsString: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}], value: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], valueChange: [{
|
|
199
|
+
type: Output
|
|
200
|
+
}], inputEvent: [{
|
|
201
|
+
type: Output,
|
|
202
|
+
args: ['input']
|
|
203
|
+
}], changeEvent: [{
|
|
204
|
+
type: Output,
|
|
205
|
+
args: ['change']
|
|
206
|
+
}], finishedValue: [{
|
|
207
|
+
type: Output
|
|
208
|
+
}], focusIndexEvent: [{
|
|
209
|
+
type: Output,
|
|
210
|
+
args: ['focusIndex']
|
|
211
|
+
}], blurIndexEvent: [{
|
|
212
|
+
type: Output,
|
|
213
|
+
args: ['blurIndex']
|
|
214
|
+
}], inputs: [{
|
|
215
|
+
type: ViewChildren,
|
|
216
|
+
args: ['input']
|
|
217
|
+
}] } });
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxZQUFZLEdBS2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQW9CLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFnQnhFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxxQkFBcUI7SUFkcEU7O1FBZXFCLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxjQUFjO1FBQ0wsZUFBVSxHQUEwQixxQkFBcUIsQ0FBQyxRQUFRLENBQUM7UUFDbkUsWUFBTyxHQUF1QixrQkFBa0IsQ0FBQyxPQUFPLENBQUM7UUFDekQsVUFBSyxHQUFvQixlQUFlLENBQUMsTUFBTSxDQUFDO1FBRWpELGFBQVEsR0FBWSxLQUFL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LENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7U0FDdkY7SUFDTCxDQUFDOzhHQS9LUSx5QkFBeUI7a0dBQXpCLHlCQUF5Qiw2WEFSdkI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0oscUlDbENMLHNqQ0F5Qk07OzJGRFdPLHlCQUF5QjtrQkFkckMsU0FBUzsrQkFDSSxpQkFBaUIsaUJBR1osaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7OEJBTVEsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUlGLE9BQU87c0JBRFYsS0FBSztnQkFjRixNQUFNO3NCQURULEtBQUs7Z0JBeUJGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBU0YsS0FBSztzQkFEUixLQUFLO2dCQU9JLFdBQVc7c0JBQXBCLE1BQU07Z0JBWVUsVUFBVTtzQkFBMUIsTUFBTTt1QkFBQyxPQUFPO2dCQUNHLFdBQVc7c0JBQTVCLE1BQU07dUJBQUMsUUFBUTtnQkFDTixhQUFhO3NCQUF0QixNQUFNO2dCQUVlLGVBQWU7c0JBQXBDLE1BQU07dUJBQUMsWUFBWTtnQkFDQyxjQUFjO3NCQUFsQyxNQUFNO3VCQUFDLFdBQVc7Z0JBMkZJLE1BQU07c0JBQTVCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGZvcndhcmRSZWYsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IF9OZ01vZGVsQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudEFwcGVhcmFuY2UsIEZvcm1FbGVtZW50VmFyaWFudCB9IGZyb20gJy4uLy4uL3R5cGVzL3RoZW1pbmcudHlwZXMnO1xuaW1wb3J0IHsgRGlnaXRJbnB1dE1vZGVsIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC5tb2RlbCc7XG5pbXBvcnQgeyBEaWdpdElucHV0Q29uZmlnRGF0YSwgRGlnaXRJbnB1dE1vZGVsSG9zdCB9IGZyb20gJy4vZGlnaXQtaW5wdXQudXRpbHMnO1xuaW1wb3J0IHsgRGlnaXRJbnB1dENvbmZpZywgRGlnaXRJbnB1dFNoYXBlIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXJkLWRpZ2l0LWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RpZ2l0LWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFyZGl1bURpZ2l0SW5wdXRDb21wb25lbnQgZXh0ZW5kcyBfTmdNb2RlbENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRGlnaXRJbnB1dE1vZGVsSG9zdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RlbCA9IG5ldyBEaWdpdElucHV0TW9kZWwodGhpcyk7XG5cbiAgICAvLyEgYXBwZWFyYW5jZVxuICAgIEBJbnB1dCgpIGFwcGVhcmFuY2U6IEZvcm1FbGVtZW50QXBwZWFyYW5jZSA9IEZvcm1FbGVtZW50QXBwZWFyYW5jZS5PdXRsaW5lZDtcbiAgICBASW5wdXQoKSB2YXJpYW50OiBGb3JtRWxlbWVudFZhcmlhbnQgPSBGb3JtRWxlbWVudFZhcmlhbnQuUm91bmRlZDtcbiAgICBASW5wdXQoKSBzaGFwZTogRGlnaXRJbnB1dFNoYXBlID0gRGlnaXRJbnB1dFNoYXBlLlNxdWFyZTtcblxuICAgIHByaXZhdGUgX2NvbXBhY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBjb21wYWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFjdDtcbiAgICB9XG4gICAgc2V0IGNvbXBhY3QodjogYW55KSB7XG4gICAgICAgIHRoaXMuX2NvbXBhY3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgZ2V0IG5nQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW2BhcmQtYXBwZWFyYW5jZS0ke3RoaXMuYXBwZWFyYW5jZX1gLCBgYXJkLXZhcmlhbnQtJHt0aGlzLnZhcmlhbnR9YCwgYGFyZC1zaGFwZS0ke3RoaXMuc2hhcGV9YCwgdGhpcy5jb21wYWN0ID8gJ2FyZC1jb21wYWN0JyA6ICcnXS5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgLy8hIG1vZGVsIGFjY2VzcyBwb2ludHNcbiAgICBASW5wdXQoKVxuICAgIHNldCBjb25maWcodjogRGlnaXRJbnB1dENvbmZpZykge1xuICAgICAgICB0aGlzLm1vZGVsLnNldENvbmZpZyh2KTtcbiAgICB9XG4gICAgY29uZmlnQXJyYXlEYXRhOiBEaWdpdElucHV0Q29uZmlnRGF0YVtdID0gW107XG5cbiAgICBnZXQgaXNDb25maWdEZWZpbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC5pc0NvbmZpZ0RlZmluZWQ7XG4gICAgfVxuXG4gICAgaXNJbnB1dEVtcHR5KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLm1vZGVsLmlzRGVmaW5lZEF0SW5kZXgoaW5kZXgpO1xuICAgIH1cblxuICAgIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yJ3Mgd3JpdGUgdmFsdWUgaW1wbGVtZW50YXRpb25cbiAgICB3cml0ZVZhbHVlKHY6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl93cml0ZVZhbHVlKHYpO1xuICAgIH1cbiAgICBwcml2YXRlIF93cml0ZVZhbHVlKHY6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC53cml0ZVZhbHVlKHYpO1xuICAgIH1cblxuICAgIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcbiAgICBwcml2YXRlIF9vdXRwdXRBc1N0cmluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG91dHB1dEFzU3RyaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3V0cHV0QXNTdHJpbmc7XG4gICAgfVxuICAgIHNldCBvdXRwdXRBc1N0cmluZyh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fb3V0cHV0QXNTdHJpbmcgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUodjogc3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsKSB7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh2KTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLnZhbHVlO1xuICAgIH1cbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbD4oKTtcblxuICAgIGdldCBzdHJpbmdWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC5zdHJpbmdWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZW1pdHRhYmxlVmFsdWUoKTogc3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMub3V0cHV0QXNTdHJpbmcpIHJldHVybiB0aGlzLm1vZGVsLnN0cmluZ1ZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICAvLyEgZXZlbnQgZW1pdHRlcnNcbiAgICBAT3V0cHV0KCdpbnB1dCcpIGlucHV0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCdjaGFuZ2UnKSBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsPigpO1xuICAgIEBPdXRwdXQoKSBmaW5pc2hlZFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XG5cbiAgICBAT3V0cHV0KCdmb2N1c0luZGV4JykgZm9jdXNJbmRleEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgQE91dHB1dCgnYmx1ckluZGV4JykgYmx1ckluZGV4RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8vISBldmVudCBoYW5kbGVyc1xuICAgIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IHRoaXMuaW5wdXRzLmxlbmd0aCAtIGluZGV4O1xuICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgLnNsaWNlKDAsIG1heExlbmd0aClcbiAgICAgICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChjaGFyLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC52YWxpZGF0ZUlucHV0QW5kU2V0VmFsdWUoY2hhciwgaW5kZXggKyBpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEgKyBNYXRoLm1pbih2YWx1ZS5sZW5ndGgsIG1heExlbmd0aCkpO1xuICAgIH1cbiAgICBvbklucHV0KGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsIGluZGV4KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlZCA9IHRoaXMubW9kZWwudmFsaWRhdGVJbnB1dEFuZFNldFZhbHVlKHZhbHVlLCBpbmRleCk7XG4gICAgICAgIGlmICghdmFsdWVDaGFuZ2VkIHx8ICF2YWx1ZUNoYW5nZWRbMF0pIHJldHVybjtcblxuICAgICAgICBpZiAodmFsdWVDaGFuZ2VkWzFdKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VtaXRJbnB1dCgpO1xuICAgIH1cbiAgICBmb2N1c0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW47XG4gICAgZm9jdXNCeUluZGV4KGluZGV4OiBudW1iZXIsIHRyeUZvY3VzaW5nTmV4dDogYm9vbGVhbiwgZGlyZWN0aW9uOiAxIHwgLTEpOiBib29sZWFuO1xuICAgIGZvY3VzQnlJbmRleChpbmRleDogbnVtYmVyLCB0cnlGb2N1c2luZ05leHQ/OiBib29sZWFuLCBkaXJlY3Rpb24/OiAxIHwgLTEpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmlucHV0cy5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgbmV4dEVsID0gdGhpcy5pbnB1dHMuZ2V0KGluZGV4KT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKCFuZXh0RWwpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBuZXh0RWwuZm9jdXMoKTtcbiAgICAgICAgaWYgKHRyeUZvY3VzaW5nTmV4dCAmJiBkaXJlY3Rpb24gJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPSBuZXh0RWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvY3VzQnlJbmRleChpbmRleCArIGRpcmVjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gbmV4dEVsO1xuICAgIH1cbiAgICBwcml2YXRlIF9lbWl0SW5wdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLmlucHV0RXZlbnQuZW1pdCh0aGlzLmVtaXR0YWJsZVZhbHVlKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuZW1pdHRhYmxlVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5tb2RlbC5pc1ZhbHVlRnVsbCkge1xuICAgICAgICAgICAgdGhpcy5maW5pc2hlZFZhbHVlLmVtaXQodGhpcy5lbWl0dGFibGVWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9mb2N1cywgYmx1ciwgY2hhbmdlXG4gICAgb25Gb2N1c01hc3RlcihldmVudDogRm9jdXNFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzSW5kZXhFdmVudC5lbWl0KGluZGV4KTtcbiAgICAgICAgdGhpcy5vbkZvY3VzKGV2ZW50KTtcbiAgICB9XG4gICAgb25CbHVyTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5ibHVySW5kZXhFdmVudC5lbWl0KGluZGV4KTtcbiAgICAgICAgdGhpcy5vbkJsdXIoZXZlbnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh0aGlzLmVtaXR0YWJsZVZhbHVlKTtcbiAgICB9XG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4IC0gMSwgdHJ1ZSwgLTEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAxLCB0cnVlLCArMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzQnlJbmRleCgwLCB0cnVlLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgodGhpcy5pbnB1dHMubGVuZ3RoIC0gMSwgdHJ1ZSwgLTEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSgnJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4IC0gMSwgdHJ1ZSwgLTEpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyEgaW5wdXRzIHJlZlxuICAgIEBWaWV3Q2hpbGRyZW4oJ2lucHV0JykgaW5wdXRzITogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+O1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNDb25maWdEZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFSRC1GVDA0MDogPGFyZC1kaWdpdC1pbnB1dD4ncyBbY29uZmlnXSBmaWVsZCBoYXMgdG8gYmUgZGVmaW5lZC5gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRcIiBbbmdDbGFzc109XCJuZ0NsYXNzZXNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2l0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBjb25maWdBcnJheURhdGFcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgI2lucHV0XHJcbiAgICAgICAgICAgICNmb2N1c2FibGVFbGVtZW50XHJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YS50eXBlID09ICdpbnB1dCdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dF9faW5wdXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJkYXRhLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faW5wdXQtcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hcmQtZGlnaXQtaW5wdXRfX2lucHV0LWVtcHR5XT1cImlzSW5wdXRFbXB0eShkYXRhLmluZGV4ISlcIlxyXG4gICAgICAgICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXNNYXN0ZXIoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXJNYXN0ZXIoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cImRhdGEudHlwZSA9PSAnc3RhdGljJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYXJkLWRpZ2l0LWlucHV0X19zdGF0aWNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAge3sgZGF0YS5jaGFyIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { coerceArrayProperty } from '@ardium-ui/devkit';
|
|
2
|
+
import { isAnyString, isArray, isDefined, isFunction, isNull, isNumber, isRegExp } from 'simple-bool';
|
|
3
|
+
import { DigitInputConfigDataType, _sanitizeRegExpString } from './digit-input.utils';
|
|
4
|
+
import { DigitInputPrimitiveOption, TransformType } from './digit-input.types';
|
|
5
|
+
export class DigitInputModel {
|
|
6
|
+
constructor(_ardHost) {
|
|
7
|
+
this._ardHost = _ardHost;
|
|
8
|
+
this._configArray = [];
|
|
9
|
+
this._configArrayNoStatics = [];
|
|
10
|
+
this._value = null;
|
|
11
|
+
this._stringValueMemo = null;
|
|
12
|
+
}
|
|
13
|
+
set configArray(arr) {
|
|
14
|
+
this._configArray = arr;
|
|
15
|
+
this._configArrayNoStatics = arr.filter(v => !('static' in v));
|
|
16
|
+
this.setConfigArrayData();
|
|
17
|
+
}
|
|
18
|
+
setConfigArrayData() {
|
|
19
|
+
let inputIndex = 0;
|
|
20
|
+
this._ardHost.configArrayData = this._configArray.map(v => {
|
|
21
|
+
if ('static' in v) {
|
|
22
|
+
return {
|
|
23
|
+
type: DigitInputConfigDataType.Static,
|
|
24
|
+
char: v.static,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
type: DigitInputConfigDataType.Input,
|
|
29
|
+
index: inputIndex++,
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
get isConfigDefined() {
|
|
34
|
+
return this._configArray.length > 0;
|
|
35
|
+
}
|
|
36
|
+
set value(v) {
|
|
37
|
+
this._value = v;
|
|
38
|
+
this._stringValueMemo = null;
|
|
39
|
+
}
|
|
40
|
+
get value() {
|
|
41
|
+
return this._value;
|
|
42
|
+
}
|
|
43
|
+
get stringValue() {
|
|
44
|
+
if (isNull(this._stringValueMemo)) {
|
|
45
|
+
const v = this.value
|
|
46
|
+
?.map(v => v ?? ' ')
|
|
47
|
+
.join('')
|
|
48
|
+
.trimEnd() ?? '';
|
|
49
|
+
this._stringValueMemo = v;
|
|
50
|
+
}
|
|
51
|
+
return this._stringValueMemo;
|
|
52
|
+
}
|
|
53
|
+
get isValueFull() {
|
|
54
|
+
return isDefined(this.value) && this.value.length === this._configArrayNoStatics.length;
|
|
55
|
+
}
|
|
56
|
+
isDefinedAtIndex(index) {
|
|
57
|
+
return Boolean(this.value?.[index]);
|
|
58
|
+
}
|
|
59
|
+
writeValue(v) {
|
|
60
|
+
if (!isArray(v) && !isAnyString(v) && !isNull(v)) {
|
|
61
|
+
//warn when using non-string/non-null value
|
|
62
|
+
console.warn(new Error(`ARD-WA041: Trying to set <ard-digit-input>'s value to ${typeof v}, expected string or array strings.`));
|
|
63
|
+
//normalize the value
|
|
64
|
+
v = v?.toString?.() ?? String(v);
|
|
65
|
+
}
|
|
66
|
+
const vArray = coerceArrayProperty(v);
|
|
67
|
+
const problemIndex = vArray.findIndex(el => !isAnyString(el) || el.length > 1);
|
|
68
|
+
if (problemIndex != -1) {
|
|
69
|
+
throw new Error(`ARD-FT042: Array passed to <ard-digit-input>'s value must only contain strings of length 1 or 0. Element at index ${problemIndex} does not match those requirements.`);
|
|
70
|
+
}
|
|
71
|
+
return this._writeValue(vArray);
|
|
72
|
+
}
|
|
73
|
+
_writeValue(v) {
|
|
74
|
+
let oldVal = this.value;
|
|
75
|
+
this.value = v && v.map(el => el || null);
|
|
76
|
+
this.validateValueAndUpdate();
|
|
77
|
+
this._updateInputElements();
|
|
78
|
+
return oldVal !== v;
|
|
79
|
+
}
|
|
80
|
+
_updateInputElements() {
|
|
81
|
+
const value = this.value ?? [];
|
|
82
|
+
let i = 0;
|
|
83
|
+
for (const inputEl of this._ardHost.inputs) {
|
|
84
|
+
inputEl.nativeElement.value = value[i] ?? '';
|
|
85
|
+
i++;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//! setting config
|
|
89
|
+
setConfig(config) {
|
|
90
|
+
this._setConfig(config);
|
|
91
|
+
this.validateValueAndUpdate();
|
|
92
|
+
}
|
|
93
|
+
_setConfig(config) {
|
|
94
|
+
//map a number to ready objects
|
|
95
|
+
let configAsNumber = isAnyString(config) ? Number(config) : null;
|
|
96
|
+
if (isNumber(config) || isNumber(configAsNumber)) {
|
|
97
|
+
configAsNumber = isNumber(config) ? config : configAsNumber;
|
|
98
|
+
this.configArray = 'a'
|
|
99
|
+
.repeat(configAsNumber)
|
|
100
|
+
.split('')
|
|
101
|
+
.map(() => ({ accept: str => /[0-9]/.test(str) }));
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
//map a string to an array
|
|
105
|
+
let configArr;
|
|
106
|
+
if (isAnyString(config)) {
|
|
107
|
+
configArr = coerceArrayProperty(config);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
configArr = config;
|
|
111
|
+
}
|
|
112
|
+
//map array to ready objects
|
|
113
|
+
this.configArray = configArr.map((v, i) => {
|
|
114
|
+
if (!isAnyString(v)) {
|
|
115
|
+
if ('accept' in v && !isFunction(v.accept)) {
|
|
116
|
+
const regExp = isRegExp(v.accept) ? v.accept : new RegExp(`[${_sanitizeRegExpString(v.accept)}]`);
|
|
117
|
+
v.accept = str => regExp.test(str);
|
|
118
|
+
}
|
|
119
|
+
return v;
|
|
120
|
+
}
|
|
121
|
+
switch (v) {
|
|
122
|
+
case DigitInputPrimitiveOption.Number:
|
|
123
|
+
return { accept: str => /[0-9]/.test(str) };
|
|
124
|
+
case DigitInputPrimitiveOption.Letter:
|
|
125
|
+
return { accept: str => /[a-zA-Z]/.test(str) };
|
|
126
|
+
case DigitInputPrimitiveOption.Alphanumeric:
|
|
127
|
+
return { accept: str => /[0-9a-zA-Z]/.test(str) };
|
|
128
|
+
case DigitInputPrimitiveOption.Special:
|
|
129
|
+
return { accept: str => /[!@#$%^&*-_=+/\\.,]/.test(str) };
|
|
130
|
+
default:
|
|
131
|
+
if (configArr.length == 1) {
|
|
132
|
+
throw new Error(`ARD-NF043S: <ard-digit-input>'s config is invalid. Expected number or array, got "${v}"`);
|
|
133
|
+
}
|
|
134
|
+
throw new Error(`ARD-NF043B: Found invalid string in <ard-digit-input>'s config: "${v}" at index ${i}`);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
//! validate against the config
|
|
139
|
+
validateInputAndSetValue(input, index) {
|
|
140
|
+
if (index < 0 || index > this._configArrayNoStatics.length)
|
|
141
|
+
return false;
|
|
142
|
+
//prepare the value array if does not exist
|
|
143
|
+
if (!this.value) {
|
|
144
|
+
this.value = [];
|
|
145
|
+
}
|
|
146
|
+
//prepare the characters before the current one (to be used in validation)
|
|
147
|
+
const before = this.value
|
|
148
|
+
.slice(0, index)
|
|
149
|
+
.map(v => v ?? ' ')
|
|
150
|
+
.join('');
|
|
151
|
+
//remove the old character from the input element
|
|
152
|
+
const oldVal = this.value[index];
|
|
153
|
+
if (oldVal && input.length > 1 && input.match(oldVal)) {
|
|
154
|
+
input = input.replace(oldVal, '');
|
|
155
|
+
}
|
|
156
|
+
//use only the first character (error safety)
|
|
157
|
+
input = input.charAt(0);
|
|
158
|
+
//validate and transform, if necessary
|
|
159
|
+
const inputChar = this._validateSingleChar(input, before, this._configArrayNoStatics[index]);
|
|
160
|
+
//get the corresponding HTML input element
|
|
161
|
+
const inputEl = this._ardHost.inputs.get(index);
|
|
162
|
+
if (!inputEl) {
|
|
163
|
+
throw new Error("ARD-IS048: <ard-digit-input>'s value changed, but its corresponding input element could not be found. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.");
|
|
164
|
+
}
|
|
165
|
+
//update the input element and value array
|
|
166
|
+
const newVal = inputChar ?? oldVal;
|
|
167
|
+
inputEl.nativeElement.value = newVal ?? '';
|
|
168
|
+
this.value[index] = newVal;
|
|
169
|
+
//return changes marker and validated value
|
|
170
|
+
return [newVal !== oldVal, inputChar];
|
|
171
|
+
}
|
|
172
|
+
validateValueAndUpdate() {
|
|
173
|
+
const v = this.value;
|
|
174
|
+
if (!v)
|
|
175
|
+
return;
|
|
176
|
+
let before = '';
|
|
177
|
+
const newValue = [];
|
|
178
|
+
for (let i = 0; i < Math.min(this._configArrayNoStatics.length, v.length); i++) {
|
|
179
|
+
const char = v[i];
|
|
180
|
+
before += char ?? ' ';
|
|
181
|
+
if (!char) {
|
|
182
|
+
newValue.push(char);
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
const config = this._configArrayNoStatics[i];
|
|
186
|
+
const newChar = this._validateSingleChar(char, before, config);
|
|
187
|
+
newValue.push(newChar);
|
|
188
|
+
}
|
|
189
|
+
this.value = newValue;
|
|
190
|
+
}
|
|
191
|
+
_validateSingleChar(char, before, config) {
|
|
192
|
+
if (config.readonly) {
|
|
193
|
+
throw new Error(`ARD-IS049R: trying to set value of a digit-input's readonly field. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.`);
|
|
194
|
+
}
|
|
195
|
+
if (!isFunction(config.accept)) {
|
|
196
|
+
const regExp = isRegExp(config.accept) ? config.accept : new RegExp(`[${_sanitizeRegExpString(config.accept)}]`);
|
|
197
|
+
config.accept = str => regExp.test(str);
|
|
198
|
+
console.warn(`ARD-IS049A: digit-input's value validator encountered an unexpected value of the config's "accept" property. Ardium UI was able to handle this issue, but please report it to the creators.`);
|
|
199
|
+
}
|
|
200
|
+
if (!char)
|
|
201
|
+
return char;
|
|
202
|
+
const canAccept = config.accept(char, before);
|
|
203
|
+
if (!canAccept)
|
|
204
|
+
return null;
|
|
205
|
+
if (config.transform) {
|
|
206
|
+
if (config.transform == TransformType.Lowercase) {
|
|
207
|
+
return char.toLowerCase();
|
|
208
|
+
}
|
|
209
|
+
if (config.transform == TransformType.Uppercase) {
|
|
210
|
+
return char.toUpperCase();
|
|
211
|
+
}
|
|
212
|
+
console.warn(`ARD-IS049T: digit-input's value validator encountered an unexpected value of the config's "transform" property. Ardium UI was able to handle this issue, but please report it to the creators.`);
|
|
213
|
+
}
|
|
214
|
+
return char;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSx3QkFBd0IsRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRyxPQUFPLEVBQThELHlCQUF5QixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNJLE1BQU0sT0FBTyxlQUFlO0lBQ3hCLFlBQW9CLFFBQTZCO1FBQTdCLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBRXpDLGlCQUFZLEdBQXVCLEVBQUUsQ0FBQztRQU10QywwQkFBcUIsR0FBNkIsRUFBRSxDQUFDO1FBcUJyRCxXQUFNLEdBQTZCLElBQUksQ0FBQztRQVN4QyxxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO0lBdENLLENBQUM7SUFHckQsSUFBWSxXQUFXLENBQUMsR0FBdUI7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUE2QixDQUFDO1FBQzNGLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFHRCxrQkFBa0I7UUFDZCxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFB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TUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakgsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsT0FBTyxDQUFDLElBQUksQ0FDUiw2TEFBNkwsQ0FDaE0sQ0FBQztTQUNMO1FBQ0QsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRTVCLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLE1BQU0sQ0FBQyxTQUFTLElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRTtnQkFDN0MsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDN0I7WUFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRTtnQkFDN0MsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDN0I7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUNSLGdNQUFnTSxDQUNuTSxDQUFDO1NBQ0w7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUFycmF5UHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XG5pbXBvcnQgeyBpc0FueVN0cmluZywgaXNBcnJheSwgaXNEZWZpbmVkLCBpc0Z1bmN0aW9uLCBpc051bGwsIGlzTnVtYmVyLCBpc1JlZ0V4cCB9IGZyb20gJ3NpbXBsZS1ib29sJztcbmltcG9ydCB7IERpZ2l0SW5wdXRDb25maWdEYXRhVHlwZSwgRGlnaXRJbnB1dE1vZGVsSG9zdCwgX3Nhbml0aXplUmVnRXhwU3RyaW5nIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC51dGlscyc7XG5pbXBvcnQgeyBEaWdpdElucHV0QWNjZXB0T2JqZWN0LCBEaWdpdElucHV0Q29uZmlnLCBEaWdpdElucHV0T3B0aW9uLCBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLCBUcmFuc2Zvcm1UeXBlIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBEaWdpdElucHV0TW9kZWwge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FyZEhvc3Q6IERpZ2l0SW5wdXRNb2RlbEhvc3QpIHt9XG5cbiAgICBwcml2YXRlIF9jb25maWdBcnJheTogRGlnaXRJbnB1dE9wdGlvbltdID0gW107XG4gICAgcHJpdmF0ZSBzZXQgY29uZmlnQXJyYXkoYXJyOiBEaWdpdElucHV0T3B0aW9uW10pIHtcbiAgICAgICAgdGhpcy5fY29uZmlnQXJyYXkgPSBhcnI7XG4gICAgICAgIHRoaXMuX2NvbmZpZ0FycmF5Tm9TdGF0aWNzID0gYXJyLmZpbHRlcih2ID0+ICEoJ3N0YXRpYycgaW4gdikpIGFzIERpZ2l0SW5wdXRBY2NlcHRPYmplY3RbXTtcbiAgICAgICAgdGhpcy5zZXRDb25maWdBcnJheURhdGEoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY29uZmlnQXJyYXlOb1N0YXRpY3M6IERpZ2l0SW5wdXRBY2NlcHRPYmplY3RbXSA9IFtdO1xuXG4gICAgc2V0Q29uZmlnQXJyYXlEYXRhKCkge1xuICAgICAgICBsZXQgaW5wdXRJbmRleCA9IDA7XG4gICAgICAgIHRoaXMuX2FyZEhvc3QuY29uZmlnQXJyYXlEYXRhID0gdGhpcy5fY29uZmlnQXJyYXkubWFwKHYgPT4ge1xuICAgICAgICAgICAgaWYgKCdzdGF0aWMnIGluIHYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUuU3RhdGljLFxuICAgICAgICAgICAgICAgICAgICBjaGFyOiB2LnN0YXRpYyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUuSW5wdXQsXG4gICAgICAgICAgICAgICAgaW5kZXg6IGlucHV0SW5kZXgrKyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgaXNDb25maWdEZWZpbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnQXJyYXkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92YWx1ZTogKHN0cmluZyB8IG51bGwpW10gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHNldCB2YWx1ZSh2OiAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgICAgICB0aGlzLl9zdHJpbmdWYWx1ZU1lbW8gPSBudWxsO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogKHN0cmluZyB8IG51bGwpW10gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3N0cmluZ1ZhbHVlTWVtbzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgZ2V0IHN0cmluZ1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChpc051bGwodGhpcy5fc3RyaW5nVmFsdWVNZW1vKSkge1xuICAgICAgICAgICAgY29uc3QgdiA9XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA/Lm1hcCh2ID0+IHYgPz8gJyAnKVxuICAgICAgICAgICAgICAgICAgICAuam9pbignJylcbiAgICAgICAgICAgICAgICAgICAgLnRyaW1FbmQoKSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuX3N0cmluZ1ZhbHVlTWVtbyA9IHY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0cmluZ1ZhbHVlTWVtbztcbiAgICB9XG5cbiAgICBnZXQgaXNWYWx1ZUZ1bGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc0RlZmluZWQodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IHRoaXMuX2NvbmZpZ0FycmF5Tm9TdGF0aWNzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBpc0RlZmluZWRBdEluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4odGhpcy52YWx1ZT8uW2luZGV4XSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2OiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFpc0FycmF5KHYpICYmICFpc0FueVN0cmluZyh2KSAmJiAhaXNOdWxsKHYpKSB7XG4gICAgICAgICAgICAvL3dhcm4gd2hlbiB1c2luZyBub24tc3RyaW5nL25vbi1udWxsIHZhbHVlXG4gICAgICAgICAgICBjb25zb2xlLndhcm4obmV3IEVycm9yKGBBUkQtV0EwNDE6IFRyeWluZyB0byBzZXQgPGFyZC1kaWdpdC1pbnB1dD4ncyB2YWx1ZSB0byAke3R5cGVvZiB2fSwgZXhwZWN0ZWQgc3RyaW5nIG9yIGFycmF5IHN0cmluZ3MuYCkpO1xuICAgICAgICAgICAgLy9ub3JtYWxpemUgdGhlIHZhbHVlXG4gICAgICAgICAgICB2ID0gdj8udG9TdHJpbmc/LigpID8/IFN0cmluZyh2KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2QXJyYXkgPSBjb2VyY2VBcnJheVByb3BlcnR5KHYpO1xuICAgICAgICBjb25zdCBwcm9ibGVtSW5kZXggPSB2QXJyYXkuZmluZEluZGV4KGVsID0+ICFpc0FueVN0cmluZyhlbCkgfHwgZWwubGVuZ3RoID4gMSk7XG4gICAgICAgIGlmIChwcm9ibGVtSW5kZXggIT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgQVJELUZUMDQyOiBBcnJheSBwYXNzZWQgdG8gPGFyZC1kaWdpdC1pbnB1dD4ncyB2YWx1ZSBtdXN0IG9ubHkgY29udGFpbiBzdHJpbmdzIG9mIGxlbmd0aCAxIG9yIDAuIEVsZW1lbnQgYXQgaW5kZXggJHtwcm9ibGVtSW5kZXh9IGRvZXMgbm90IG1hdGNoIHRob3NlIHJlcXVpcmVtZW50cy5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl93cml0ZVZhbHVlKHZBcnJheSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3dyaXRlVmFsdWUodjogc3RyaW5nW10gfCBudWxsKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBvbGRWYWwgPSB0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlID0gdiAmJiB2Lm1hcChlbCA9PiBlbCB8fCBudWxsKTtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlQW5kVXBkYXRlKCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUlucHV0RWxlbWVudHMoKTtcbiAgICAgICAgcmV0dXJuIG9sZFZhbCAhPT0gdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF91cGRhdGVJbnB1dEVsZW1lbnRzKCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUgPz8gW107XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpbnB1dEVsIG9mIHRoaXMuX2FyZEhvc3QuaW5wdXRzKSB7XG4gICAgICAgICAgICBpbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZVtpXSA/PyAnJztcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vISBzZXR0aW5nIGNvbmZpZ1xuICAgIHNldENvbmZpZyhjb25maWc6IERpZ2l0SW5wdXRDb25maWcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZUFuZFVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXRDb25maWcoY29uZmlnOiBEaWdpdElucHV0Q29uZmlnKTogdm9pZCB7XG4gICAgICAgIC8vbWFwIGEgbnVtYmVyIHRvIHJlYWR5IG9iamVjdHNcbiAgICAgICAgbGV0IGNvbmZpZ0FzTnVtYmVyID0gaXNBbnlTdHJpbmcoY29uZmlnKSA/IE51bWJlcihjb25maWcpIDogbnVsbDtcbiAgICAgICAgaWYgKGlzTnVtYmVyKGNvbmZpZykgfHwgaXNOdW1iZXIoY29uZmlnQXNOdW1iZXIpKSB7XG4gICAgICAgICAgICBjb25maWdBc051bWJlciA9IGlzTnVtYmVyKGNvbmZpZykgPyBjb25maWcgOiBjb25maWdBc051bWJlciE7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ0FycmF5ID0gJ2EnXG4gICAgICAgICAgICAgICAgLnJlcGVhdChjb25maWdBc051bWJlcilcbiAgICAgICAgICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgICAgICAgICAgLm1hcCgoKSA9PiAoeyBhY2NlcHQ6IHN0ciA9PiAvWzAtOV0vLnRlc3Qoc3RyKSB9KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy9tYXAgYSBzdHJpbmcgdG8gYW4gYXJyYXlcbiAgICAgICAgbGV0IGNvbmZpZ0Fycjogc3RyaW5nW10gfCBFeGNsdWRlPERpZ2l0SW5wdXRDb25maWcsIG51bWJlciB8IHN0cmluZz47XG4gICAgICAgIGlmIChpc0FueVN0cmluZyhjb25maWcpKSB7XG4gICAgICAgICAgICBjb25maWdBcnIgPSBjb2VyY2VBcnJheVByb3BlcnR5KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25maWdBcnIgPSBjb25maWc7XG4gICAgICAgIH1cbiAgICAgICAgLy9tYXAgYXJyYXkgdG8gcmVhZHkgb2JqZWN0c1xuICAgICAgICB0aGlzLmNvbmZpZ0FycmF5ID0gY29uZmlnQXJyLm1hcCgodiwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc0FueVN0cmluZyh2KSkge1xuICAgICAgICAgICAgICAgIGlmICgnYWNjZXB0JyBpbiB2ICYmICFpc0Z1bmN0aW9uKHYuYWNjZXB0KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdFeHAgPSBpc1JlZ0V4cCh2LmFjY2VwdCkgPyB2LmFjY2VwdCA6IG5ldyBSZWdFeHAoYFske19zYW5pdGl6ZVJlZ0V4cFN0cmluZyh2LmFjY2VwdCl9XWApO1xuICAgICAgICAgICAgICAgICAgICB2LmFjY2VwdCA9IHN0ciA9PiByZWdFeHAudGVzdChzdHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoICh2KSB7XG4gICAgICAgICAgICAgICAgY2FzZSBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLk51bWJlcjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgYWNjZXB0OiBzdHIgPT4gL1swLTldLy50ZXN0KHN0cikgfTtcbiAgICAgICAgICAgICAgICBjYXNlIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb24uTGV0dGVyOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBhY2NlcHQ6IHN0ciA9PiAvW2EtekEtWl0vLnRlc3Qoc3RyKSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5BbHBoYW51bWVyaWM6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGFjY2VwdDogc3RyID0+IC9bMC05YS16QS1aXS8udGVzdChzdHIpIH07XG4gICAgICAgICAgICAgICAgY2FzZSBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLlNwZWNpYWw6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGFjY2VwdDogc3RyID0+IC9bIUAjJCVeJiotXz0rL1xcXFwuLF0vLnRlc3Qoc3RyKSB9O1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ0Fyci5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBUkQtTkYwNDNTOiA8YXJkLWRpZ2l0LWlucHV0PidzIGNvbmZpZyBpcyBpbnZhbGlkLiBFeHBlY3RlZCBudW1iZXIgb3IgYXJyYXksIGdvdCBcIiR7dn1cImApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQVJELU5GMDQzQjogRm91bmQgaW52YWxpZCBzdHJpbmcgaW4gPGFyZC1kaWdpdC1pbnB1dD4ncyBjb25maWc6IFwiJHt2fVwiIGF0IGluZGV4ICR7aX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8hIHZhbGlkYXRlIGFnYWluc3QgdGhlIGNvbmZpZ1xuICAgIHZhbGlkYXRlSW5wdXRBbmRTZXRWYWx1ZShpbnB1dDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogZmFsc2UgfCBbYm9vbGVhbiwgc3RyaW5nIHwgbnVsbF0ge1xuICAgICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gdGhpcy5fY29uZmlnQXJyYXlOb1N0YXRpY3MubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgLy9wcmVwYXJlIHRoZSB2YWx1ZSBhcnJheSBpZiBkb2VzIG5vdCBleGlzdFxuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICAvL3ByZXBhcmUgdGhlIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBjdXJyZW50IG9uZSAodG8gYmUgdXNlZCBpbiB2YWxpZGF0aW9uKVxuICAgICAgICBjb25zdCBiZWZvcmUgPSB0aGlzLnZhbHVlXG4gICAgICAgICAgICAuc2xpY2UoMCwgaW5kZXgpXG4gICAgICAgICAgICAubWFwKHYgPT4gdiA/PyAnICcpXG4gICAgICAgICAgICAuam9pbignJyk7XG5cbiAgICAgICAgLy9yZW1vdmUgdGhlIG9sZCBjaGFyYWN0ZXIgZnJvbSB0aGUgaW5wdXQgZWxlbWVudFxuICAgICAgICBjb25zdCBvbGRWYWwgPSB0aGlzLnZhbHVlW2luZGV4XTtcbiAgICAgICAgaWYgKG9sZFZhbCAmJiBpbnB1dC5sZW5ndGggPiAxICYmIGlucHV0Lm1hdGNoKG9sZFZhbCkpIHtcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShvbGRWYWwsICcnKTtcbiAgICAgICAgfVxuICAgICAgICAvL3VzZSBvbmx5IHRoZSBmaXJzdCBjaGFyYWN0ZXIgKGVycm9yIHNhZmV0eSlcbiAgICAgICAgaW5wdXQgPSBpbnB1dC5jaGFyQXQoMCk7XG5cbiAgICAgICAgLy92YWxpZGF0ZSBhbmQgdHJhbnNmb3JtLCBpZiBuZWNlc3NhcnlcbiAgICAgICAgY29uc3QgaW5wdXRDaGFyID0gdGhpcy5fdmFsaWRhdGVTaW5nbGVDaGFyKGlucHV0LCBiZWZvcmUsIHRoaXMuX2NvbmZpZ0FycmF5Tm9TdGF0aWNzW2luZGV4XSk7XG5cbiAgICAgICAgLy9nZXQgdGhlIGNvcnJlc3BvbmRpbmcgSFRNTCBpbnB1dCBlbGVtZW50XG4gICAgICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLl9hcmRIb3N0LmlucHV0cy5nZXQoaW5kZXgpO1xuICAgICAgICBpZiAoIWlucHV0RWwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIkFSRC1JUzA0ODogPGFyZC1kaWdpdC1pbnB1dD4ncyB2YWx1ZSBjaGFuZ2VkLCBidXQgaXRzIGNvcnJlc3BvbmRpbmcgaW5wdXQgZWxlbWVudCBjb3VsZCBub3QgYmUgZm91bmQuIFRoaXMgaXMgZXJyb3IgaXMgZmF0YWwgdG8gdGhlIGZ1bmN0aW9uaW5nIG9mIEFyZGl1bSBVSS4gUGxlYXNlIHJlcG9ydCB0aGlzIGlzc3VlIHRvIHRoZSBjcmVhdG9ycy5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvL3VwZGF0ZSB0aGUgaW5wdXQgZWxlbWVudCBhbmQgdmFsdWUgYXJyYXlcbiAgICAgICAgY29uc3QgbmV3VmFsID0gaW5wdXRDaGFyID8/IG9sZFZhbDtcbiAgICAgICAgaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbmV3VmFsID8/ICcnO1xuICAgICAgICB0aGlzLnZhbHVlW2luZGV4XSA9IG5ld1ZhbDtcblxuICAgICAgICAvL3JldHVybiBjaGFuZ2VzIG1hcmtlciBhbmQgdmFsaWRhdGVkIHZhbHVlXG4gICAgICAgIHJldHVybiBbbmV3VmFsICE9PSBvbGRWYWwsIGlucHV0Q2hhcl07XG4gICAgfVxuICAgIHZhbGlkYXRlVmFsdWVBbmRVcGRhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAoIXYpIHJldHVybjtcblxuICAgICAgICBsZXQgYmVmb3JlID0gJyc7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlOiAoc3RyaW5nIHwgbnVsbClbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWluKHRoaXMuX2NvbmZpZ0FycmF5Tm9TdGF0aWNzLmxlbmd0aCwgdi5sZW5ndGgpOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXIgPSB2W2ldO1xuICAgICAgICAgICAgYmVmb3JlICs9IGNoYXIgPz8gJyAnO1xuXG4gICAgICAgICAgICBpZiAoIWNoYXIpIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZS5wdXNoKGNoYXIpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5fY29uZmlnQXJyYXlOb1N0YXRpY3NbaV07XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld0NoYXIgPSB0aGlzLl92YWxpZGF0ZVNpbmdsZUNoYXIoY2hhciwgYmVmb3JlLCBjb25maWcpO1xuICAgICAgICAgICAgbmV3VmFsdWUucHVzaChuZXdDaGFyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgfVxuICAgIHByaXZhdGUgX3ZhbGlkYXRlU2luZ2xlQ2hhcihjaGFyOiBzdHJpbmcgfCBudWxsLCBiZWZvcmU6IHN0cmluZywgY29uZmlnOiBEaWdpdElucHV0QWNjZXB0T2JqZWN0KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChjb25maWcucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgQVJELUlTMDQ5UjogdHJ5aW5nIHRvIHNldCB2YWx1ZSBvZiBhIGRpZ2l0LWlucHV0J3MgcmVhZG9ubHkgZmllbGQuIFRoaXMgaXMgZXJyb3IgaXMgZmF0YWwgdG8gdGhlIGZ1bmN0aW9uaW5nIG9mIEFyZGl1bSBVSS4gUGxlYXNlIHJlcG9ydCB0aGlzIGlzc3VlIHRvIHRoZSBjcmVhdG9ycy5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNGdW5jdGlvbihjb25maWcuYWNjZXB0KSkge1xuICAgICAgICAgICAgY29uc3QgcmVnRXhwID0gaXNSZWdFeHAoY29uZmlnLmFjY2VwdCkgPyBjb25maWcuYWNjZXB0IDogbmV3IFJlZ0V4cChgWyR7X3Nhbml0aXplUmVnRXhwU3RyaW5nKGNvbmZpZy5hY2NlcHQpfV1gKTtcbiAgICAgICAgICAgIGNvbmZpZy5hY2NlcHQgPSBzdHIgPT4gcmVnRXhwLnRlc3Qoc3RyKTtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBgQVJELUlTMDQ5QTogZGlnaXQtaW5wdXQncyB2YWx1ZSB2YWxpZGF0b3IgZW5jb3VudGVyZWQgYW4gdW5leHBlY3RlZCB2YWx1ZSBvZiB0aGUgY29uZmlnJ3MgXCJhY2NlcHRcIiBwcm9wZXJ0eS4gQXJkaXVtIFVJIHdhcyBhYmxlIHRvIGhhbmRsZSB0aGlzIGlzc3VlLCBidXQgcGxlYXNlIHJlcG9ydCBpdCB0byB0aGUgY3JlYXRvcnMuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNoYXIpIHJldHVybiBjaGFyO1xuXG4gICAgICAgIGNvbnN0IGNhbkFjY2VwdCA9IGNvbmZpZy5hY2NlcHQoY2hhciwgYmVmb3JlKTtcbiAgICAgICAgaWYgKCFjYW5BY2NlcHQpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGlmIChjb25maWcudHJhbnNmb3JtKSB7XG4gICAgICAgICAgICBpZiAoY29uZmlnLnRyYW5zZm9ybSA9PSBUcmFuc2Zvcm1UeXBlLkxvd2VyY2FzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGFyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29uZmlnLnRyYW5zZm9ybSA9PSBUcmFuc2Zvcm1UeXBlLlVwcGVyY2FzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGFyLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgYEFSRC1JUzA0OVQ6IGRpZ2l0LWlucHV0J3MgdmFsdWUgdmFsaWRhdG9yIGVuY291bnRlcmVkIGFuIHVuZXhwZWN0ZWQgdmFsdWUgb2YgdGhlIGNvbmZpZydzIFwidHJhbnNmb3JtXCIgcHJvcGVydHkuIEFyZGl1bSBVSSB3YXMgYWJsZSB0byBoYW5kbGUgdGhpcyBpc3N1ZSwgYnV0IHBsZWFzZSByZXBvcnQgaXQgdG8gdGhlIGNyZWF0b3JzLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoYXI7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ArdiumDigitInputComponent } from './digit-input.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ArdiumDigitInputModule {
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumDigitInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: ArdiumDigitInputModule, declarations: [ArdiumDigitInputComponent], imports: [CommonModule], exports: [ArdiumDigitInputComponent] }); }
|
|
8
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumDigitInputModule, imports: [CommonModule] }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumDigitInputModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
declarations: [ArdiumDigitInputComponent],
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
exports: [ArdiumDigitInputComponent],
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQU9wRSxNQUFNLE9BQU8sc0JBQXNCOzhHQUF0QixzQkFBc0I7K0dBQXRCLHNCQUFzQixpQkFKaEIseUJBQXlCLGFBQzlCLFlBQVksYUFDWix5QkFBeUI7K0dBRTFCLHNCQUFzQixZQUhyQixZQUFZOzsyRkFHYixzQkFBc0I7a0JBTGxDLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3pDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9kaWdpdC1pbnB1dC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0FyZGl1bURpZ2l0SW5wdXRDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQXJkaXVtRGlnaXRJbnB1dE1vZHVsZSB7fVxuIl19
|