@recursyve/nice-ui-kit.v2 17.0.0-beta.140 → 20.0.0-beta.145
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/_index.scss +2 -2
- package/fesm2022/recursyve-nice-ui-kit.v2.mjs +1019 -804
- package/fesm2022/recursyve-nice-ui-kit.v2.mjs.map +1 -1
- package/index.d.ts +3664 -3
- package/package.json +8 -10
- package/src/lib/components/base-form/base-form.theme.scss +5 -4
- package/src/lib/components/chip-list/chip-list.theme.scss +2 -2
- package/src/lib/components/date-range-picker/date-range-picker.theme.scss +7 -6
- package/src/lib/components/horizontal-stepper/horizontal-stepper.theme.scss +5 -4
- package/src/lib/components/navigation/vertical/vertical.theme.scss +8 -8
- package/src/lib/components/toggle-button-group/toggle-button-group.theme.scss +11 -10
- package/src/lib/nice.theme.scss +77 -85
- package/src/lib/nice.utils.scss +3 -1
- package/styles/main.scss +4 -4
- package/styles/nice.scss +3 -1
- package/styles/overrides/angular-material.scss +3 -3
- package/esm2022/lib/animations/defaults.mjs +0 -32
- package/esm2022/lib/animations/expand-collapse.mjs +0 -21
- package/esm2022/lib/animations/fade.mjs +0 -210
- package/esm2022/lib/animations/index.mjs +0 -2
- package/esm2022/lib/animations/public-api.mjs +0 -17
- package/esm2022/lib/animations/shake.mjs +0 -63
- package/esm2022/lib/animations/slide.mjs +0 -156
- package/esm2022/lib/animations/zoom.mjs +0 -46
- package/esm2022/lib/api/exceptions/api.exception.mjs +0 -3
- package/esm2022/lib/api/exceptions/exception.factory.mjs +0 -9
- package/esm2022/lib/api/index.mjs +0 -2
- package/esm2022/lib/api/interceptors/transform-response.interceptor.mjs +0 -28
- package/esm2022/lib/api/nice.api.mjs +0 -68
- package/esm2022/lib/api/public-api.mjs +0 -5
- package/esm2022/lib/components/alert/alert.component.mjs +0 -200
- package/esm2022/lib/components/alert/alert.module.mjs +0 -32
- package/esm2022/lib/components/alert/alert.service.mjs +0 -58
- package/esm2022/lib/components/alert/alert.types.mjs +0 -2
- package/esm2022/lib/components/alert/index.mjs +0 -2
- package/esm2022/lib/components/alert/public-api.mjs +0 -5
- package/esm2022/lib/components/assets-carousel/assets-carousel.component.mjs +0 -283
- package/esm2022/lib/components/assets-carousel/assets-carousel.constant.mjs +0 -3
- package/esm2022/lib/components/assets-carousel/assets-carousel.module.mjs +0 -88
- package/esm2022/lib/components/assets-carousel/directives/assets-carousel-active-content.directive.mjs +0 -14
- package/esm2022/lib/components/assets-carousel/index.mjs +0 -2
- package/esm2022/lib/components/assets-carousel/public-api.mjs +0 -4
- package/esm2022/lib/components/async-typeahead/async-typeahead.component.mjs +0 -453
- package/esm2022/lib/components/async-typeahead/async-typeahead.constant.mjs +0 -3
- package/esm2022/lib/components/async-typeahead/async-typeahead.module.mjs +0 -64
- package/esm2022/lib/components/async-typeahead/index.mjs +0 -2
- package/esm2022/lib/components/async-typeahead/providers/async-typeahead.provider.mjs +0 -6
- package/esm2022/lib/components/async-typeahead/providers/async-typeahead.service.mjs +0 -219
- package/esm2022/lib/components/async-typeahead/public-api.mjs +0 -5
- package/esm2022/lib/components/base-form/base-form.component.mjs +0 -91
- package/esm2022/lib/components/base-form/base-form.module.mjs +0 -16
- package/esm2022/lib/components/base-form/form-submit.directive.mjs +0 -20
- package/esm2022/lib/components/base-form/index.mjs +0 -2
- package/esm2022/lib/components/base-form/nice-base.form.mjs +0 -14
- package/esm2022/lib/components/base-form/public-api.mjs +0 -5
- package/esm2022/lib/components/card/card.component.mjs +0 -60
- package/esm2022/lib/components/card/card.module.mjs +0 -24
- package/esm2022/lib/components/card/card.types.mjs +0 -2
- package/esm2022/lib/components/card/index.mjs +0 -2
- package/esm2022/lib/components/card/public-api.mjs +0 -3
- package/esm2022/lib/components/carousel/carousel.component.mjs +0 -43
- package/esm2022/lib/components/carousel/carousel.module.mjs +0 -40
- package/esm2022/lib/components/carousel/index.mjs +0 -2
- package/esm2022/lib/components/carousel/picture-modal/index.mjs +0 -2
- package/esm2022/lib/components/carousel/picture-modal/picture-modal.component.mjs +0 -11
- package/esm2022/lib/components/carousel/picture-modal/picture-modal.service.mjs +0 -34
- package/esm2022/lib/components/carousel/picture-modal/public-api.mjs +0 -3
- package/esm2022/lib/components/carousel/pipe/carousel-layout.pipe.mjs +0 -17
- package/esm2022/lib/components/carousel/public-api.mjs +0 -4
- package/esm2022/lib/components/collapsable/collapsable.component.mjs +0 -36
- package/esm2022/lib/components/collapsable/collapsable.module.mjs +0 -25
- package/esm2022/lib/components/collapsable/index.mjs +0 -2
- package/esm2022/lib/components/collapsable/public-api.mjs +0 -3
- package/esm2022/lib/components/date-range-picker/components/header/header.component.mjs +0 -57
- package/esm2022/lib/components/date-range-picker/components/range-preset/range-preset.component.mjs +0 -107
- package/esm2022/lib/components/date-range-picker/date-range-picker.component.mjs +0 -95
- package/esm2022/lib/components/date-range-picker/date-range-picker.module.mjs +0 -56
- package/esm2022/lib/components/date-range-picker/index.mjs +0 -2
- package/esm2022/lib/components/date-range-picker/providers/date-range-picker.service.mjs +0 -17
- package/esm2022/lib/components/date-range-picker/public-api.mjs +0 -3
- package/esm2022/lib/components/drawer/drawer.component.mjs +0 -372
- package/esm2022/lib/components/drawer/drawer.module.mjs +0 -28
- package/esm2022/lib/components/drawer/drawer.service.mjs +0 -40
- package/esm2022/lib/components/drawer/drawer.types.mjs +0 -2
- package/esm2022/lib/components/drawer/index.mjs +0 -2
- package/esm2022/lib/components/drawer/public-api.mjs +0 -5
- package/esm2022/lib/components/export-bottom-sheet/export-bottom-sheet.component.mjs +0 -33
- package/esm2022/lib/components/export-bottom-sheet/export-bottom-sheet.module.mjs +0 -45
- package/esm2022/lib/components/export-bottom-sheet/index.mjs +0 -2
- package/esm2022/lib/components/export-bottom-sheet/models/export-strategy.model.mjs +0 -2
- package/esm2022/lib/components/export-bottom-sheet/providers/export-bottom-sheet.service.mjs +0 -28
- package/esm2022/lib/components/export-bottom-sheet/public-api.mjs +0 -5
- package/esm2022/lib/components/form-error/control-status.directive.mjs +0 -123
- package/esm2022/lib/components/form-error/form-error.component.mjs +0 -53
- package/esm2022/lib/components/form-error/form-error.module.mjs +0 -20
- package/esm2022/lib/components/form-error/index.mjs +0 -2
- package/esm2022/lib/components/form-error/public-api.mjs +0 -4
- package/esm2022/lib/components/horizontal-stepper/horizontal-stepper.component.mjs +0 -34
- package/esm2022/lib/components/horizontal-stepper/horizontal-stepper.module.mjs +0 -29
- package/esm2022/lib/components/horizontal-stepper/index.mjs +0 -2
- package/esm2022/lib/components/horizontal-stepper/public-api.mjs +0 -4
- package/esm2022/lib/components/horizontal-stepper/step.component.mjs +0 -22
- package/esm2022/lib/components/image-cropper/image-cropper.component.mjs +0 -1269
- package/esm2022/lib/components/image-cropper/image-cropper.module.mjs +0 -23
- package/esm2022/lib/components/image-cropper/index.mjs +0 -2
- package/esm2022/lib/components/image-cropper/public-api.mjs +0 -3
- package/esm2022/lib/components/image-cropper/resize-canvas.mjs +0 -76
- package/esm2022/lib/components/index.mjs +0 -2
- package/esm2022/lib/components/layout/index.mjs +0 -2
- package/esm2022/lib/components/layout/layout.component.mjs +0 -98
- package/esm2022/lib/components/layout/layout.module.mjs +0 -18
- package/esm2022/lib/components/layout/public-api.mjs +0 -3
- package/esm2022/lib/components/loading-spinner/index.mjs +0 -2
- package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +0 -22
- package/esm2022/lib/components/loading-spinner/loading-spinner.module.mjs +0 -48
- package/esm2022/lib/components/loading-spinner/loading.constant.mjs +0 -3
- package/esm2022/lib/components/loading-spinner/loading.directive.mjs +0 -56
- package/esm2022/lib/components/loading-spinner/public-api.mjs +0 -4
- package/esm2022/lib/components/loading-toast/index.mjs +0 -2
- package/esm2022/lib/components/loading-toast/loading-toast.component.mjs +0 -38
- package/esm2022/lib/components/loading-toast/loading-toast.constant.mjs +0 -3
- package/esm2022/lib/components/loading-toast/loading-toast.directive.mjs +0 -64
- package/esm2022/lib/components/loading-toast/loading-toast.module.mjs +0 -62
- package/esm2022/lib/components/loading-toast/loading-toast.service.mjs +0 -47
- package/esm2022/lib/components/loading-toast/public-api.mjs +0 -6
- package/esm2022/lib/components/loading-toast/rxjs/show-loading-toast.operator.mjs +0 -12
- package/esm2022/lib/components/lottie/index.mjs +0 -2
- package/esm2022/lib/components/lottie/lottie.component.mjs +0 -52
- package/esm2022/lib/components/lottie/lottie.module.mjs +0 -18
- package/esm2022/lib/components/lottie/public-api.mjs +0 -3
- package/esm2022/lib/components/navigation/components/hint-component-base.mjs +0 -120
- package/esm2022/lib/components/navigation/directives/show-hint.directive.mjs +0 -187
- package/esm2022/lib/components/navigation/horizontal/components/basic/basic.component.mjs +0 -62
- package/esm2022/lib/components/navigation/horizontal/components/branch/branch.component.mjs +0 -80
- package/esm2022/lib/components/navigation/horizontal/components/divider/divider.component.mjs +0 -51
- package/esm2022/lib/components/navigation/horizontal/components/spacer/spacer.component.mjs +0 -51
- package/esm2022/lib/components/navigation/horizontal/horizontal.component.mjs +0 -50
- package/esm2022/lib/components/navigation/index.mjs +0 -2
- package/esm2022/lib/components/navigation/navigation.component.mjs +0 -83
- package/esm2022/lib/components/navigation/navigation.module.mjs +0 -108
- package/esm2022/lib/components/navigation/navigation.service.mjs +0 -188
- package/esm2022/lib/components/navigation/navigation.types.mjs +0 -2
- package/esm2022/lib/components/navigation/pipes/should-hide.pipe.mjs +0 -31
- package/esm2022/lib/components/navigation/pipes/should-show-hint.pipe.mjs +0 -32
- package/esm2022/lib/components/navigation/pipes/translate-with-context.pipe.mjs +0 -25
- package/esm2022/lib/components/navigation/providers/hide-item.resolver.mjs +0 -3
- package/esm2022/lib/components/navigation/providers/hint.resolver.mjs +0 -3
- package/esm2022/lib/components/navigation/providers/hint.service.mjs +0 -20
- package/esm2022/lib/components/navigation/providers/translation-context.service.mjs +0 -16
- package/esm2022/lib/components/navigation/public-api.mjs +0 -20
- package/esm2022/lib/components/navigation/vertical/components/aside/aside.component.mjs +0 -145
- package/esm2022/lib/components/navigation/vertical/components/basic/basic.component.mjs +0 -76
- package/esm2022/lib/components/navigation/vertical/components/collapsable/collapsable.component.mjs +0 -264
- package/esm2022/lib/components/navigation/vertical/components/divider/divider.component.mjs +0 -51
- package/esm2022/lib/components/navigation/vertical/components/group/group.component.mjs +0 -75
- package/esm2022/lib/components/navigation/vertical/components/spacer/spacer.component.mjs +0 -51
- package/esm2022/lib/components/navigation/vertical/vertical.component.mjs +0 -599
- package/esm2022/lib/components/public-api.mjs +0 -25
- package/esm2022/lib/components/search-bar/index.mjs +0 -2
- package/esm2022/lib/components/search-bar/public-api.mjs +0 -3
- package/esm2022/lib/components/search-bar/search-bar.component.mjs +0 -76
- package/esm2022/lib/components/search-bar/search-bar.module.mjs +0 -40
- package/esm2022/lib/components/sweet-alert/index.mjs +0 -2
- package/esm2022/lib/components/sweet-alert/public-api.mjs +0 -5
- package/esm2022/lib/components/sweet-alert/sweet-alert.component.mjs +0 -59
- package/esm2022/lib/components/sweet-alert/sweet-alert.constant.mjs +0 -3
- package/esm2022/lib/components/sweet-alert/sweet-alert.directive.mjs +0 -37
- package/esm2022/lib/components/sweet-alert/sweet-alert.module.mjs +0 -37
- package/esm2022/lib/components/sweet-alert/sweet-alert.service.mjs +0 -95
- package/esm2022/lib/components/toast/index.mjs +0 -2
- package/esm2022/lib/components/toast/public-api.mjs +0 -6
- package/esm2022/lib/components/toast/rxjs/show-success-or-error-toast.operator.mjs +0 -22
- package/esm2022/lib/components/toast/rxjs/show-toast.operator.mjs +0 -26
- package/esm2022/lib/components/toast/toast.component.mjs +0 -25
- package/esm2022/lib/components/toast/toast.constant.mjs +0 -3
- package/esm2022/lib/components/toast/toast.module.mjs +0 -57
- package/esm2022/lib/components/toast/toast.service.mjs +0 -65
- package/esm2022/lib/components/toggle-button-group/index.mjs +0 -2
- package/esm2022/lib/components/toggle-button-group/public-api.mjs +0 -4
- package/esm2022/lib/components/toggle-button-group/toggle-button-group.component.mjs +0 -134
- package/esm2022/lib/components/toggle-button-group/toggle-button-group.module.mjs +0 -26
- package/esm2022/lib/components/toggle-button-group/toggle-button.component.mjs +0 -19
- package/esm2022/lib/components/translation-form/components/textarea/translation-form-textarea.component.mjs +0 -38
- package/esm2022/lib/components/translation-form/components/textfield/translation-form-textfield.component.mjs +0 -26
- package/esm2022/lib/components/translation-form/components/translation-form.component.mjs +0 -172
- package/esm2022/lib/components/translation-form/components/translation-form.module.mjs +0 -71
- package/esm2022/lib/components/translation-form/decorators/translation-form-group.decorator.mjs +0 -4
- package/esm2022/lib/components/translation-form/directives/translation-context.directive.mjs +0 -40
- package/esm2022/lib/components/translation-form/index.mjs +0 -2
- package/esm2022/lib/components/translation-form/providers/nice-translation-form.service.mjs +0 -59
- package/esm2022/lib/components/translation-form/public-api.mjs +0 -11
- package/esm2022/lib/components/translation-form/toggle/translation-toggle.component.mjs +0 -26
- package/esm2022/lib/components/translation-form/translation.form.mjs +0 -6
- package/esm2022/lib/components/translation-form/validators/require-for-languages.validator.mjs +0 -43
- package/esm2022/lib/components/typeahead/directives/options-scroll.directive.mjs +0 -68
- package/esm2022/lib/components/typeahead/directives/options-scroll.module.mjs +0 -16
- package/esm2022/lib/components/typeahead/index.mjs +0 -2
- package/esm2022/lib/components/typeahead/public-api.mjs +0 -4
- package/esm2022/lib/components/typeahead/typeahead.component.mjs +0 -486
- package/esm2022/lib/components/typeahead/typeahead.module.mjs +0 -59
- package/esm2022/lib/directives/autofocus/autofocus.directive.mjs +0 -17
- package/esm2022/lib/directives/autofocus/autofocus.module.mjs +0 -16
- package/esm2022/lib/directives/autofocus/index.mjs +0 -2
- package/esm2022/lib/directives/autofocus/public-api.mjs +0 -3
- package/esm2022/lib/directives/autogrow/autogrow.directive.mjs +0 -105
- package/esm2022/lib/directives/autogrow/autogrow.module.mjs +0 -20
- package/esm2022/lib/directives/autogrow/index.mjs +0 -2
- package/esm2022/lib/directives/autogrow/public-api.mjs +0 -3
- package/esm2022/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.mjs +0 -39
- package/esm2022/lib/directives/chip-async-typeahead/index.mjs +0 -2
- package/esm2022/lib/directives/chip-async-typeahead/public-api.mjs +0 -2
- package/esm2022/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.mjs +0 -14
- package/esm2022/lib/directives/chip-list/chip-list-items/chip-list-items.component.mjs +0 -46
- package/esm2022/lib/directives/chip-list/chip-list.constant.mjs +0 -3
- package/esm2022/lib/directives/chip-list/chip-list.directive.mjs +0 -144
- package/esm2022/lib/directives/chip-list/chip-list.module.mjs +0 -40
- package/esm2022/lib/directives/chip-list/index.mjs +0 -2
- package/esm2022/lib/directives/chip-list/public-api.mjs +0 -5
- package/esm2022/lib/directives/draggable-list/draggable-list.directive.mjs +0 -94
- package/esm2022/lib/directives/draggable-list/draggable-list.module.mjs +0 -18
- package/esm2022/lib/directives/draggable-list/index.mjs +0 -2
- package/esm2022/lib/directives/draggable-list/public-api.mjs +0 -3
- package/esm2022/lib/directives/dropzone/dropzone.directive.mjs +0 -50
- package/esm2022/lib/directives/dropzone/dropzone.module.mjs +0 -18
- package/esm2022/lib/directives/dropzone/index.mjs +0 -2
- package/esm2022/lib/directives/dropzone/public-api.mjs +0 -3
- package/esm2022/lib/directives/image-error-placeholder/image-error-placeholder.directive.mjs +0 -26
- package/esm2022/lib/directives/image-error-placeholder/image-error-placeholder.module.mjs +0 -16
- package/esm2022/lib/directives/image-error-placeholder/index.mjs +0 -2
- package/esm2022/lib/directives/image-error-placeholder/public-api.mjs +0 -3
- package/esm2022/lib/directives/index.mjs +0 -2
- package/esm2022/lib/directives/material/index.mjs +0 -2
- package/esm2022/lib/directives/material/material.module.mjs +0 -25
- package/esm2022/lib/directives/material/nice-material-style.directive.mjs +0 -18
- package/esm2022/lib/directives/material/nice-rounded-style.directive.mjs +0 -18
- package/esm2022/lib/directives/material/public-api.mjs +0 -4
- package/esm2022/lib/directives/modals/index.mjs +0 -2
- package/esm2022/lib/directives/modals/modal-on-click.directive.mjs +0 -22
- package/esm2022/lib/directives/modals/modal-opener.directive.mjs +0 -31
- package/esm2022/lib/directives/modals/public-api.mjs +0 -3
- package/esm2022/lib/directives/public-api.mjs +0 -16
- package/esm2022/lib/directives/rerender/index.mjs +0 -2
- package/esm2022/lib/directives/rerender/public-api.mjs +0 -2
- package/esm2022/lib/directives/rerender/rerender.directive.mjs +0 -22
- package/esm2022/lib/directives/resolve/index.mjs +0 -2
- package/esm2022/lib/directives/resolve/public-api.mjs +0 -2
- package/esm2022/lib/directives/resolve/resolve.directive.mjs +0 -32
- package/esm2022/lib/directives/scroll-reset/index.mjs +0 -2
- package/esm2022/lib/directives/scroll-reset/public-api.mjs +0 -3
- package/esm2022/lib/directives/scroll-reset/scroll-reset.directive.mjs +0 -47
- package/esm2022/lib/directives/scroll-reset/scroll-reset.module.mjs +0 -20
- package/esm2022/lib/directives/scrollbar/index.mjs +0 -2
- package/esm2022/lib/directives/scrollbar/public-api.mjs +0 -3
- package/esm2022/lib/directives/scrollbar/scrollbar.directive.mjs +0 -309
- package/esm2022/lib/directives/scrollbar/scrollbar.module.mjs +0 -20
- package/esm2022/lib/directives/scrollbar/scrollbar.types.mjs +0 -15
- package/esm2022/lib/directives/stop-propagation/click-stop-propagation.directive.mjs +0 -18
- package/esm2022/lib/directives/stop-propagation/index.mjs +0 -2
- package/esm2022/lib/directives/stop-propagation/public-api.mjs +0 -3
- package/esm2022/lib/directives/stop-propagation/stop-propagation.module.mjs +0 -16
- package/esm2022/lib/directives/window/index.mjs +0 -2
- package/esm2022/lib/directives/window/prevent-close-window.directive.mjs +0 -18
- package/esm2022/lib/directives/window/public-api.mjs +0 -3
- package/esm2022/lib/directives/window/window-directive.module.mjs +0 -16
- package/esm2022/lib/nice.module.mjs +0 -124
- package/esm2022/lib/pipes/boolean.pipe.mjs +0 -22
- package/esm2022/lib/pipes/capitalize-first-letter.pipe.mjs +0 -18
- package/esm2022/lib/pipes/ceil.pipe.mjs +0 -14
- package/esm2022/lib/pipes/entries.pipe.mjs +0 -23
- package/esm2022/lib/pipes/find-by-key.pipe.mjs +0 -14
- package/esm2022/lib/pipes/first-letter.pipe.mjs +0 -14
- package/esm2022/lib/pipes/floor.pipe.mjs +0 -14
- package/esm2022/lib/pipes/index.mjs +0 -2
- package/esm2022/lib/pipes/join-if-defined.pipe.mjs +0 -20
- package/esm2022/lib/pipes/link.pipe.mjs +0 -25
- package/esm2022/lib/pipes/localized-boolean.pipe.mjs +0 -19
- package/esm2022/lib/pipes/localized-currency.pipe.mjs +0 -18
- package/esm2022/lib/pipes/localized-date-only.pipe.mjs +0 -21
- package/esm2022/lib/pipes/localized-date.pipe.mjs +0 -40
- package/esm2022/lib/pipes/minutes-to-time.pipe.mjs +0 -17
- package/esm2022/lib/pipes/number-to-ordinal-indicator.pipe.mjs +0 -23
- package/esm2022/lib/pipes/pad.pipe.mjs +0 -20
- package/esm2022/lib/pipes/phone.pipe.mjs +0 -23
- package/esm2022/lib/pipes/pipes.module.mjs +0 -177
- package/esm2022/lib/pipes/postal-code.pipe.mjs +0 -22
- package/esm2022/lib/pipes/public-api.mjs +0 -25
- package/esm2022/lib/pipes/range.pipe.mjs +0 -18
- package/esm2022/lib/pipes/round.pipe.mjs +0 -14
- package/esm2022/lib/pipes/sanitize-bypass.pipe.mjs +0 -24
- package/esm2022/lib/pipes/seconds-to-time.pipe.mjs +0 -18
- package/esm2022/lib/pipes/track-by-prop.pipe.mjs +0 -14
- package/esm2022/lib/providers/config/config.constants.mjs +0 -3
- package/esm2022/lib/providers/config/config.model.mjs +0 -2
- package/esm2022/lib/providers/config/config.module.mjs +0 -34
- package/esm2022/lib/providers/config/config.service.mjs +0 -51
- package/esm2022/lib/providers/config/index.mjs +0 -2
- package/esm2022/lib/providers/config/public-api.mjs +0 -3
- package/esm2022/lib/providers/index.mjs +0 -2
- package/esm2022/lib/providers/media-watcher/index.mjs +0 -2
- package/esm2022/lib/providers/media-watcher/media-watcher.module.mjs +0 -26
- package/esm2022/lib/providers/media-watcher/media-watcher.service.mjs +0 -106
- package/esm2022/lib/providers/media-watcher/public-api.mjs +0 -3
- package/esm2022/lib/providers/overlay/dynamic-overlay-container.service.mjs +0 -14
- package/esm2022/lib/providers/overlay/dynamic-overlay.service.mjs +0 -31
- package/esm2022/lib/providers/public-api.mjs +0 -5
- package/esm2022/lib/providers/splash-screen/index.mjs +0 -2
- package/esm2022/lib/providers/splash-screen/public-api.mjs +0 -3
- package/esm2022/lib/providers/splash-screen/splash-screen.module.mjs +0 -26
- package/esm2022/lib/providers/splash-screen/splash-screen.service.mjs +0 -45
- package/esm2022/lib/providers/utils/index.mjs +0 -2
- package/esm2022/lib/providers/utils/public-api.mjs +0 -3
- package/esm2022/lib/providers/utils/utils.module.mjs +0 -19
- package/esm2022/lib/providers/utils/utils.service.mjs +0 -27
- package/esm2022/lib/types/constructor.mjs +0 -5
- package/esm2022/lib/utils/array.utils.mjs +0 -106
- package/esm2022/lib/utils/case.utils.mjs +0 -58
- package/esm2022/lib/utils/colors.utils.mjs +0 -29
- package/esm2022/lib/utils/date.utils.mjs +0 -47
- package/esm2022/lib/utils/file.utils.mjs +0 -77
- package/esm2022/lib/utils/font-awesome.utils.mjs +0 -40
- package/esm2022/lib/utils/form-data.utils.mjs +0 -41
- package/esm2022/lib/utils/http-status.utils.mjs +0 -47
- package/esm2022/lib/utils/index.mjs +0 -2
- package/esm2022/lib/utils/keyboard.utils.mjs +0 -9
- package/esm2022/lib/utils/lexorank.utils.mjs +0 -28
- package/esm2022/lib/utils/modal.utils.mjs +0 -6
- package/esm2022/lib/utils/number.utils.mjs +0 -6
- package/esm2022/lib/utils/object.utils.mjs +0 -111
- package/esm2022/lib/utils/promise.utils.mjs +0 -7
- package/esm2022/lib/utils/public-api.mjs +0 -19
- package/esm2022/lib/utils/query-params.utils.mjs +0 -14
- package/esm2022/lib/utils/regex.utils.mjs +0 -11
- package/esm2022/lib/utils/type.utils.mjs +0 -15
- package/esm2022/lib/utils/url.utils.mjs +0 -20
- package/esm2022/public-api.mjs +0 -12
- package/esm2022/recursyve-nice-ui-kit.v2.mjs +0 -5
- package/lib/animations/defaults.d.ts +0 -13
- package/lib/animations/expand-collapse.d.ts +0 -2
- package/lib/animations/fade.d.ts +0 -11
- package/lib/animations/index.d.ts +0 -1
- package/lib/animations/public-api.d.ts +0 -1
- package/lib/animations/shake.d.ts +0 -2
- package/lib/animations/slide.d.ts +0 -9
- package/lib/animations/zoom.d.ts +0 -3
- package/lib/api/exceptions/api.exception.d.ts +0 -3
- package/lib/api/exceptions/exception.factory.d.ts +0 -6
- package/lib/api/index.d.ts +0 -1
- package/lib/api/interceptors/transform-response.interceptor.d.ts +0 -9
- package/lib/api/nice.api.d.ts +0 -33
- package/lib/api/public-api.d.ts +0 -4
- package/lib/components/alert/alert.component.d.ts +0 -64
- package/lib/components/alert/alert.module.d.ts +0 -10
- package/lib/components/alert/alert.service.d.ts +0 -24
- package/lib/components/alert/alert.types.d.ts +0 -3
- package/lib/components/alert/index.d.ts +0 -1
- package/lib/components/alert/public-api.d.ts +0 -4
- package/lib/components/assets-carousel/assets-carousel.component.d.ts +0 -88
- package/lib/components/assets-carousel/assets-carousel.constant.d.ts +0 -2
- package/lib/components/assets-carousel/assets-carousel.module.d.ts +0 -19
- package/lib/components/assets-carousel/directives/assets-carousel-active-content.directive.d.ts +0 -8
- package/lib/components/assets-carousel/index.d.ts +0 -1
- package/lib/components/assets-carousel/public-api.d.ts +0 -3
- package/lib/components/async-typeahead/async-typeahead.component.d.ts +0 -119
- package/lib/components/async-typeahead/async-typeahead.constant.d.ts +0 -2
- package/lib/components/async-typeahead/async-typeahead.module.d.ts +0 -19
- package/lib/components/async-typeahead/index.d.ts +0 -1
- package/lib/components/async-typeahead/providers/async-typeahead.provider.d.ts +0 -11
- package/lib/components/async-typeahead/providers/async-typeahead.service.d.ts +0 -51
- package/lib/components/async-typeahead/public-api.d.ts +0 -4
- package/lib/components/base-form/base-form.component.d.ts +0 -30
- package/lib/components/base-form/base-form.module.d.ts +0 -7
- package/lib/components/base-form/form-submit.directive.d.ts +0 -8
- package/lib/components/base-form/index.d.ts +0 -1
- package/lib/components/base-form/nice-base.form.d.ts +0 -4
- package/lib/components/base-form/public-api.d.ts +0 -4
- package/lib/components/card/card.component.d.ts +0 -21
- package/lib/components/card/card.module.d.ts +0 -8
- package/lib/components/card/card.types.d.ts +0 -1
- package/lib/components/card/index.d.ts +0 -1
- package/lib/components/card/public-api.d.ts +0 -2
- package/lib/components/carousel/carousel.component.d.ts +0 -21
- package/lib/components/carousel/carousel.module.d.ts +0 -14
- package/lib/components/carousel/index.d.ts +0 -1
- package/lib/components/carousel/picture-modal/index.d.ts +0 -1
- package/lib/components/carousel/picture-modal/picture-modal.component.d.ts +0 -6
- package/lib/components/carousel/picture-modal/picture-modal.service.d.ts +0 -12
- package/lib/components/carousel/picture-modal/public-api.d.ts +0 -2
- package/lib/components/carousel/pipe/carousel-layout.pipe.d.ts +0 -7
- package/lib/components/carousel/public-api.d.ts +0 -3
- package/lib/components/collapsable/collapsable.component.d.ts +0 -15
- package/lib/components/collapsable/collapsable.module.d.ts +0 -9
- package/lib/components/collapsable/index.d.ts +0 -1
- package/lib/components/collapsable/public-api.d.ts +0 -2
- package/lib/components/date-range-picker/components/header/header.component.d.ts +0 -20
- package/lib/components/date-range-picker/components/range-preset/range-preset.component.d.ts +0 -23
- package/lib/components/date-range-picker/date-range-picker.component.d.ts +0 -28
- package/lib/components/date-range-picker/date-range-picker.module.d.ts +0 -18
- package/lib/components/date-range-picker/index.d.ts +0 -1
- package/lib/components/date-range-picker/providers/date-range-picker.service.d.ts +0 -8
- package/lib/components/date-range-picker/public-api.d.ts +0 -2
- package/lib/components/drawer/drawer.component.d.ts +0 -115
- package/lib/components/drawer/drawer.module.d.ts +0 -9
- package/lib/components/drawer/drawer.service.d.ts +0 -23
- package/lib/components/drawer/drawer.types.d.ts +0 -2
- package/lib/components/drawer/index.d.ts +0 -1
- package/lib/components/drawer/public-api.d.ts +0 -4
- package/lib/components/export-bottom-sheet/export-bottom-sheet.component.d.ts +0 -17
- package/lib/components/export-bottom-sheet/export-bottom-sheet.module.d.ts +0 -18
- package/lib/components/export-bottom-sheet/index.d.ts +0 -1
- package/lib/components/export-bottom-sheet/models/export-strategy.model.d.ts +0 -5
- package/lib/components/export-bottom-sheet/providers/export-bottom-sheet.service.d.ts +0 -12
- package/lib/components/export-bottom-sheet/public-api.d.ts +0 -4
- package/lib/components/form-error/control-status.directive.d.ts +0 -20
- package/lib/components/form-error/form-error.component.d.ts +0 -8
- package/lib/components/form-error/form-error.module.d.ts +0 -10
- package/lib/components/form-error/index.d.ts +0 -1
- package/lib/components/form-error/public-api.d.ts +0 -3
- package/lib/components/horizontal-stepper/horizontal-stepper.component.d.ts +0 -8
- package/lib/components/horizontal-stepper/horizontal-stepper.module.d.ts +0 -11
- package/lib/components/horizontal-stepper/index.d.ts +0 -1
- package/lib/components/horizontal-stepper/public-api.d.ts +0 -3
- package/lib/components/horizontal-stepper/step.component.d.ts +0 -6
- package/lib/components/image-cropper/image-cropper.component.d.ts +0 -374
- package/lib/components/image-cropper/image-cropper.module.d.ts +0 -10
- package/lib/components/image-cropper/index.d.ts +0 -1
- package/lib/components/image-cropper/public-api.d.ts +0 -2
- package/lib/components/image-cropper/resize-canvas.d.ts +0 -1
- package/lib/components/index.d.ts +0 -1
- package/lib/components/layout/index.d.ts +0 -1
- package/lib/components/layout/layout.component.d.ts +0 -39
- package/lib/components/layout/layout.module.d.ts +0 -7
- package/lib/components/layout/public-api.d.ts +0 -2
- package/lib/components/loading-spinner/index.d.ts +0 -1
- package/lib/components/loading-spinner/loading-spinner.component.d.ts +0 -9
- package/lib/components/loading-spinner/loading-spinner.module.d.ts +0 -13
- package/lib/components/loading-spinner/loading.constant.d.ts +0 -2
- package/lib/components/loading-spinner/loading.directive.d.ts +0 -17
- package/lib/components/loading-spinner/public-api.d.ts +0 -3
- package/lib/components/loading-toast/index.d.ts +0 -1
- package/lib/components/loading-toast/loading-toast.component.d.ts +0 -19
- package/lib/components/loading-toast/loading-toast.constant.d.ts +0 -2
- package/lib/components/loading-toast/loading-toast.directive.d.ts +0 -18
- package/lib/components/loading-toast/loading-toast.module.d.ts +0 -16
- package/lib/components/loading-toast/loading-toast.service.d.ts +0 -20
- package/lib/components/loading-toast/public-api.d.ts +0 -5
- package/lib/components/loading-toast/rxjs/show-loading-toast.operator.d.ts +0 -6
- package/lib/components/lottie/index.d.ts +0 -1
- package/lib/components/lottie/lottie.component.d.ts +0 -19
- package/lib/components/lottie/lottie.module.d.ts +0 -8
- package/lib/components/lottie/public-api.d.ts +0 -2
- package/lib/components/navigation/components/hint-component-base.d.ts +0 -65
- package/lib/components/navigation/directives/show-hint.directive.d.ts +0 -39
- package/lib/components/navigation/horizontal/components/basic/basic.component.d.ts +0 -29
- package/lib/components/navigation/horizontal/components/branch/branch.component.d.ts +0 -38
- package/lib/components/navigation/horizontal/components/divider/divider.component.d.ts +0 -26
- package/lib/components/navigation/horizontal/components/spacer/spacer.component.d.ts +0 -26
- package/lib/components/navigation/horizontal/horizontal.component.d.ts +0 -22
- package/lib/components/navigation/index.d.ts +0 -1
- package/lib/components/navigation/navigation.component.d.ts +0 -32
- package/lib/components/navigation/navigation.module.d.ts +0 -32
- package/lib/components/navigation/navigation.service.d.ts +0 -69
- package/lib/components/navigation/navigation.types.d.ts +0 -42
- package/lib/components/navigation/pipes/should-hide.pipe.d.ts +0 -11
- package/lib/components/navigation/pipes/should-show-hint.pipe.d.ts +0 -12
- package/lib/components/navigation/pipes/translate-with-context.pipe.d.ts +0 -12
- package/lib/components/navigation/providers/hide-item.resolver.d.ts +0 -5
- package/lib/components/navigation/providers/hint.resolver.d.ts +0 -4
- package/lib/components/navigation/providers/hint.service.d.ts +0 -9
- package/lib/components/navigation/providers/translation-context.service.d.ts +0 -8
- package/lib/components/navigation/public-api.d.ts +0 -19
- package/lib/components/navigation/vertical/components/aside/aside.component.d.ts +0 -55
- package/lib/components/navigation/vertical/components/basic/basic.component.d.ts +0 -35
- package/lib/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +0 -68
- package/lib/components/navigation/vertical/components/divider/divider.component.d.ts +0 -26
- package/lib/components/navigation/vertical/components/group/group.component.d.ts +0 -36
- package/lib/components/navigation/vertical/components/spacer/spacer.component.d.ts +0 -26
- package/lib/components/navigation/vertical/vertical.component.d.ts +0 -168
- package/lib/components/public-api.d.ts +0 -24
- package/lib/components/search-bar/index.d.ts +0 -1
- package/lib/components/search-bar/public-api.d.ts +0 -2
- package/lib/components/search-bar/search-bar.component.d.ts +0 -20
- package/lib/components/search-bar/search-bar.module.d.ts +0 -12
- package/lib/components/sweet-alert/index.d.ts +0 -1
- package/lib/components/sweet-alert/public-api.d.ts +0 -4
- package/lib/components/sweet-alert/sweet-alert.component.d.ts +0 -27
- package/lib/components/sweet-alert/sweet-alert.constant.d.ts +0 -2
- package/lib/components/sweet-alert/sweet-alert.directive.d.ts +0 -13
- package/lib/components/sweet-alert/sweet-alert.module.d.ts +0 -16
- package/lib/components/sweet-alert/sweet-alert.service.d.ts +0 -32
- package/lib/components/toast/index.d.ts +0 -1
- package/lib/components/toast/public-api.d.ts +0 -5
- package/lib/components/toast/rxjs/show-success-or-error-toast.operator.d.ts +0 -37
- package/lib/components/toast/rxjs/show-toast.operator.d.ts +0 -20
- package/lib/components/toast/toast.component.d.ts +0 -17
- package/lib/components/toast/toast.constant.d.ts +0 -2
- package/lib/components/toast/toast.module.d.ts +0 -15
- package/lib/components/toast/toast.service.d.ts +0 -25
- package/lib/components/toggle-button-group/index.d.ts +0 -1
- package/lib/components/toggle-button-group/public-api.d.ts +0 -3
- package/lib/components/toggle-button-group/toggle-button-group.component.d.ts +0 -26
- package/lib/components/toggle-button-group/toggle-button-group.module.d.ts +0 -10
- package/lib/components/toggle-button-group/toggle-button.component.d.ts +0 -8
- package/lib/components/translation-form/components/textarea/translation-form-textarea.component.d.ts +0 -9
- package/lib/components/translation-form/components/textfield/translation-form-textfield.component.d.ts +0 -6
- package/lib/components/translation-form/components/translation-form.component.d.ts +0 -56
- package/lib/components/translation-form/components/translation-form.module.d.ts +0 -16
- package/lib/components/translation-form/decorators/translation-form-group.decorator.d.ts +0 -1
- package/lib/components/translation-form/directives/translation-context.directive.d.ts +0 -16
- package/lib/components/translation-form/index.d.ts +0 -1
- package/lib/components/translation-form/providers/nice-translation-form.service.d.ts +0 -16
- package/lib/components/translation-form/public-api.d.ts +0 -10
- package/lib/components/translation-form/toggle/translation-toggle.component.d.ts +0 -14
- package/lib/components/translation-form/translation.form.d.ts +0 -5
- package/lib/components/translation-form/validators/require-for-languages.validator.d.ts +0 -14
- package/lib/components/typeahead/directives/options-scroll.directive.d.ts +0 -19
- package/lib/components/typeahead/directives/options-scroll.module.d.ts +0 -7
- package/lib/components/typeahead/index.d.ts +0 -1
- package/lib/components/typeahead/public-api.d.ts +0 -3
- package/lib/components/typeahead/typeahead.component.d.ts +0 -101
- package/lib/components/typeahead/typeahead.module.d.ts +0 -17
- package/lib/directives/autofocus/autofocus.directive.d.ts +0 -9
- package/lib/directives/autofocus/autofocus.module.d.ts +0 -7
- package/lib/directives/autofocus/index.d.ts +0 -1
- package/lib/directives/autofocus/public-api.d.ts +0 -2
- package/lib/directives/autogrow/autogrow.directive.d.ts +0 -37
- package/lib/directives/autogrow/autogrow.module.d.ts +0 -7
- package/lib/directives/autogrow/index.d.ts +0 -1
- package/lib/directives/autogrow/public-api.d.ts +0 -2
- package/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.d.ts +0 -14
- package/lib/directives/chip-async-typeahead/index.d.ts +0 -1
- package/lib/directives/chip-async-typeahead/public-api.d.ts +0 -1
- package/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.d.ts +0 -8
- package/lib/directives/chip-list/chip-list-items/chip-list-items.component.d.ts +0 -26
- package/lib/directives/chip-list/chip-list.constant.d.ts +0 -2
- package/lib/directives/chip-list/chip-list.directive.d.ts +0 -32
- package/lib/directives/chip-list/chip-list.module.d.ts +0 -14
- package/lib/directives/chip-list/index.d.ts +0 -1
- package/lib/directives/chip-list/public-api.d.ts +0 -4
- package/lib/directives/draggable-list/draggable-list.directive.d.ts +0 -24
- package/lib/directives/draggable-list/draggable-list.module.d.ts +0 -8
- package/lib/directives/draggable-list/index.d.ts +0 -1
- package/lib/directives/draggable-list/public-api.d.ts +0 -2
- package/lib/directives/dropzone/dropzone.directive.d.ts +0 -11
- package/lib/directives/dropzone/dropzone.module.d.ts +0 -7
- package/lib/directives/dropzone/index.d.ts +0 -1
- package/lib/directives/dropzone/public-api.d.ts +0 -2
- package/lib/directives/image-error-placeholder/image-error-placeholder.directive.d.ts +0 -11
- package/lib/directives/image-error-placeholder/image-error-placeholder.module.d.ts +0 -7
- package/lib/directives/image-error-placeholder/index.d.ts +0 -1
- package/lib/directives/image-error-placeholder/public-api.d.ts +0 -2
- package/lib/directives/index.d.ts +0 -1
- package/lib/directives/material/index.d.ts +0 -1
- package/lib/directives/material/material.module.d.ts +0 -8
- package/lib/directives/material/nice-material-style.directive.d.ts +0 -9
- package/lib/directives/material/nice-rounded-style.directive.d.ts +0 -9
- package/lib/directives/material/public-api.d.ts +0 -3
- package/lib/directives/modals/index.d.ts +0 -1
- package/lib/directives/modals/modal-on-click.directive.d.ts +0 -10
- package/lib/directives/modals/modal-opener.directive.d.ts +0 -14
- package/lib/directives/modals/public-api.d.ts +0 -2
- package/lib/directives/public-api.d.ts +0 -15
- package/lib/directives/rerender/index.d.ts +0 -1
- package/lib/directives/rerender/public-api.d.ts +0 -1
- package/lib/directives/rerender/rerender.directive.d.ts +0 -10
- package/lib/directives/resolve/index.d.ts +0 -1
- package/lib/directives/resolve/public-api.d.ts +0 -1
- package/lib/directives/resolve/resolve.directive.d.ts +0 -18
- package/lib/directives/scroll-reset/index.d.ts +0 -1
- package/lib/directives/scroll-reset/public-api.d.ts +0 -2
- package/lib/directives/scroll-reset/scroll-reset.directive.d.ts +0 -22
- package/lib/directives/scroll-reset/scroll-reset.module.d.ts +0 -7
- package/lib/directives/scrollbar/index.d.ts +0 -1
- package/lib/directives/scrollbar/public-api.d.ts +0 -2
- package/lib/directives/scrollbar/scrollbar.directive.d.ts +0 -112
- package/lib/directives/scrollbar/scrollbar.module.d.ts +0 -7
- package/lib/directives/scrollbar/scrollbar.types.d.ts +0 -12
- package/lib/directives/stop-propagation/click-stop-propagation.directive.d.ts +0 -6
- package/lib/directives/stop-propagation/index.d.ts +0 -1
- package/lib/directives/stop-propagation/public-api.d.ts +0 -2
- package/lib/directives/stop-propagation/stop-propagation.module.d.ts +0 -7
- package/lib/directives/window/index.d.ts +0 -1
- package/lib/directives/window/prevent-close-window.directive.d.ts +0 -6
- package/lib/directives/window/public-api.d.ts +0 -2
- package/lib/directives/window/window-directive.module.d.ts +0 -7
- package/lib/nice.module.d.ts +0 -13
- package/lib/pipes/boolean.pipe.d.ts +0 -10
- package/lib/pipes/capitalize-first-letter.pipe.d.ts +0 -7
- package/lib/pipes/ceil.pipe.d.ts +0 -7
- package/lib/pipes/entries.pipe.d.ts +0 -10
- package/lib/pipes/find-by-key.pipe.d.ts +0 -7
- package/lib/pipes/first-letter.pipe.d.ts +0 -7
- package/lib/pipes/floor.pipe.d.ts +0 -7
- package/lib/pipes/index.d.ts +0 -1
- package/lib/pipes/join-if-defined.pipe.d.ts +0 -7
- package/lib/pipes/link.pipe.d.ts +0 -15
- package/lib/pipes/localized-boolean.pipe.d.ts +0 -10
- package/lib/pipes/localized-currency.pipe.d.ts +0 -10
- package/lib/pipes/localized-date-only.pipe.d.ts +0 -10
- package/lib/pipes/localized-date.pipe.d.ts +0 -11
- package/lib/pipes/minutes-to-time.pipe.d.ts +0 -7
- package/lib/pipes/number-to-ordinal-indicator.pipe.d.ts +0 -7
- package/lib/pipes/pad.pipe.d.ts +0 -7
- package/lib/pipes/phone.pipe.d.ts +0 -10
- package/lib/pipes/pipes.module.d.ts +0 -29
- package/lib/pipes/postal-code.pipe.d.ts +0 -10
- package/lib/pipes/public-api.d.ts +0 -24
- package/lib/pipes/range.pipe.d.ts +0 -7
- package/lib/pipes/round.pipe.d.ts +0 -7
- package/lib/pipes/sanitize-bypass.pipe.d.ts +0 -10
- package/lib/pipes/seconds-to-time.pipe.d.ts +0 -7
- package/lib/pipes/track-by-prop.pipe.d.ts +0 -7
- package/lib/providers/config/config.constants.d.ts +0 -2
- package/lib/providers/config/config.model.d.ts +0 -14
- package/lib/providers/config/config.module.d.ts +0 -18
- package/lib/providers/config/config.service.d.ts +0 -21
- package/lib/providers/config/index.d.ts +0 -1
- package/lib/providers/config/public-api.d.ts +0 -2
- package/lib/providers/index.d.ts +0 -1
- package/lib/providers/media-watcher/index.d.ts +0 -1
- package/lib/providers/media-watcher/media-watcher.module.d.ts +0 -12
- package/lib/providers/media-watcher/media-watcher.service.d.ts +0 -27
- package/lib/providers/media-watcher/public-api.d.ts +0 -2
- package/lib/providers/overlay/dynamic-overlay-container.service.d.ts +0 -7
- package/lib/providers/overlay/dynamic-overlay.service.d.ts +0 -14
- package/lib/providers/public-api.d.ts +0 -4
- package/lib/providers/splash-screen/index.d.ts +0 -1
- package/lib/providers/splash-screen/public-api.d.ts +0 -2
- package/lib/providers/splash-screen/splash-screen.module.d.ts +0 -12
- package/lib/providers/splash-screen/splash-screen.service.d.ts +0 -20
- package/lib/providers/utils/index.d.ts +0 -1
- package/lib/providers/utils/public-api.d.ts +0 -2
- package/lib/providers/utils/utils.module.d.ts +0 -9
- package/lib/providers/utils/utils.service.d.ts +0 -9
- package/lib/types/constructor.d.ts +0 -5
- package/lib/utils/array.utils.d.ts +0 -24
- package/lib/utils/case.utils.d.ts +0 -9
- package/lib/utils/colors.utils.d.ts +0 -9
- package/lib/utils/date.utils.d.ts +0 -11
- package/lib/utils/file.utils.d.ts +0 -10
- package/lib/utils/font-awesome.utils.d.ts +0 -3
- package/lib/utils/form-data.utils.d.ts +0 -4
- package/lib/utils/http-status.utils.d.ts +0 -45
- package/lib/utils/index.d.ts +0 -1
- package/lib/utils/keyboard.utils.d.ts +0 -7
- package/lib/utils/lexorank.utils.d.ts +0 -6
- package/lib/utils/modal.utils.d.ts +0 -7
- package/lib/utils/number.utils.d.ts +0 -7
- package/lib/utils/object.utils.d.ts +0 -10
- package/lib/utils/promise.utils.d.ts +0 -7
- package/lib/utils/public-api.d.ts +0 -18
- package/lib/utils/query-params.utils.d.ts +0 -3
- package/lib/utils/regex.utils.d.ts +0 -7
- package/lib/utils/type.utils.d.ts +0 -6
- package/lib/utils/url.utils.d.ts +0 -6
- package/public-api.d.ts +0 -8
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from "./directives/options-scroll.directive";
|
|
2
|
-
export * from "./typeahead.component";
|
|
3
|
-
export * from "./typeahead.module";
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy90eXBlYWhlYWQvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2RpcmVjdGl2ZXMvb3B0aW9ucy1zY3JvbGwuZGlyZWN0aXZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlYWhlYWQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlYWhlYWQubW9kdWxlXCI7XG4iXX0=
|
|
@@ -1,486 +0,0 @@
|
|
|
1
|
-
import { FocusMonitor } from "@angular/cdk/a11y";
|
|
2
|
-
import { coerceBooleanProperty } from "@angular/cdk/coercion";
|
|
3
|
-
import { Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Optional, Output, Self, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from "@angular/core";
|
|
4
|
-
import { FormControl, NgControl, Validators } from "@angular/forms";
|
|
5
|
-
import { MatOption } from "@angular/material/core";
|
|
6
|
-
import { MatFormFieldControl } from "@angular/material/form-field";
|
|
7
|
-
import { Subject } from "rxjs";
|
|
8
|
-
import * as uuid from "uuid";
|
|
9
|
-
import { isNullOrUndefined } from "../../utils";
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/forms";
|
|
12
|
-
import * as i2 from "@angular/cdk/a11y";
|
|
13
|
-
import * as i3 from "@angular/common";
|
|
14
|
-
import * as i4 from "./directives/options-scroll.directive";
|
|
15
|
-
import * as i5 from "@angular/material/autocomplete";
|
|
16
|
-
import * as i6 from "@angular/material/core";
|
|
17
|
-
import * as i7 from "@angular/material/input";
|
|
18
|
-
import * as i8 from "@angular/material/form-field";
|
|
19
|
-
import * as i9 from "@angular/material/progress-spinner";
|
|
20
|
-
import * as i10 from "@angular/material/progress-bar";
|
|
21
|
-
import * as i11 from "@angular/material/icon";
|
|
22
|
-
import * as i12 from "@ngx-translate/core";
|
|
23
|
-
export class NiceTypeaheadNewValue {
|
|
24
|
-
constructor($new) {
|
|
25
|
-
this.$new = $new;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
export class NiceTypeaheadComponent {
|
|
29
|
-
set items(items) {
|
|
30
|
-
this._items = items ?? [];
|
|
31
|
-
this.values = items ?? [];
|
|
32
|
-
this.setLoading(false);
|
|
33
|
-
this.setLoadingPage(false);
|
|
34
|
-
this.updateSearchInput();
|
|
35
|
-
this.checkIfValueStillExist();
|
|
36
|
-
}
|
|
37
|
-
set labelFormatFn(labelFormatFn) {
|
|
38
|
-
this._labelFormatFn = labelFormatFn;
|
|
39
|
-
this.updateSearchInput();
|
|
40
|
-
}
|
|
41
|
-
set required(req) {
|
|
42
|
-
this._required = coerceBooleanProperty(req);
|
|
43
|
-
this.stateChanges.next();
|
|
44
|
-
}
|
|
45
|
-
get required() {
|
|
46
|
-
return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;
|
|
47
|
-
}
|
|
48
|
-
get disabled() {
|
|
49
|
-
return this._disabled;
|
|
50
|
-
}
|
|
51
|
-
set disabled(value) {
|
|
52
|
-
this._disabled = coerceBooleanProperty(value);
|
|
53
|
-
if (this._disabled) {
|
|
54
|
-
this.searchControl.disable({ emitEvent: false });
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
this.searchControl.enable({ emitEvent: false });
|
|
58
|
-
}
|
|
59
|
-
this.stateChanges.next();
|
|
60
|
-
}
|
|
61
|
-
set placeholder(placeholder) {
|
|
62
|
-
this._placeholder = placeholder;
|
|
63
|
-
this.stateChanges.next();
|
|
64
|
-
}
|
|
65
|
-
get placeholder() {
|
|
66
|
-
return this._placeholder;
|
|
67
|
-
}
|
|
68
|
-
set emptyPlaceholder(emptyPlaceholder) {
|
|
69
|
-
this._emptyPlaceholder = emptyPlaceholder;
|
|
70
|
-
this.stateChanges.next();
|
|
71
|
-
}
|
|
72
|
-
get emptyPlaceholder() {
|
|
73
|
-
return this._emptyPlaceholder;
|
|
74
|
-
}
|
|
75
|
-
set value(value) {
|
|
76
|
-
if (value === this._value) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
this._value = value;
|
|
80
|
-
this.propagate(this._value);
|
|
81
|
-
}
|
|
82
|
-
get value() {
|
|
83
|
-
return this._value;
|
|
84
|
-
}
|
|
85
|
-
get empty() {
|
|
86
|
-
return ((!this.searchControl.value || !this.searchControl.value.length) &&
|
|
87
|
-
(!this._value || (typeof this._value === "string" && !this._value.length)));
|
|
88
|
-
}
|
|
89
|
-
get errorState() {
|
|
90
|
-
return this.ngControl ? this.ngControl.touched && this.ngControl.invalid : false;
|
|
91
|
-
}
|
|
92
|
-
get shouldLabelFloat() {
|
|
93
|
-
return this.open || !this.empty;
|
|
94
|
-
}
|
|
95
|
-
constructor(ngControl, fm, zone, elRef) {
|
|
96
|
-
this.ngControl = ngControl;
|
|
97
|
-
this.fm = fm;
|
|
98
|
-
this.zone = zone;
|
|
99
|
-
this.elRef = elRef;
|
|
100
|
-
this._page = 0;
|
|
101
|
-
this.allowNotFoundItems = false;
|
|
102
|
-
this.panelClass = [];
|
|
103
|
-
// tslint:disable-next-line:no-output-native
|
|
104
|
-
this.change = new EventEmitter();
|
|
105
|
-
this.search$ = new Subject();
|
|
106
|
-
this.searchControl = new FormControl(null);
|
|
107
|
-
this.values = [];
|
|
108
|
-
this.open = false;
|
|
109
|
-
this.panelWidth = 0;
|
|
110
|
-
this.updatingItem = false;
|
|
111
|
-
this.waitForItems = false;
|
|
112
|
-
this.ignoreNextFocus = false;
|
|
113
|
-
this._disabled = false;
|
|
114
|
-
this.stateChanges = new Subject();
|
|
115
|
-
this.controlType = "typeahead";
|
|
116
|
-
this.focused = false;
|
|
117
|
-
this.id = uuid.v4();
|
|
118
|
-
this.describedBy = "";
|
|
119
|
-
this.propagate = () => { };
|
|
120
|
-
if (this.ngControl) {
|
|
121
|
-
this.ngControl.valueAccessor = this;
|
|
122
|
-
}
|
|
123
|
-
fm.monitor(elRef.nativeElement, true).subscribe(origin => {
|
|
124
|
-
if (this.ignoreNextFocus) {
|
|
125
|
-
this.ignoreNextFocus = false;
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
this.focused = !!origin;
|
|
129
|
-
this.stateChanges.next();
|
|
130
|
-
if (this.focused && (!this._items || !this._items.length) && !this.loading) {
|
|
131
|
-
this.searchControl.patchValue("");
|
|
132
|
-
}
|
|
133
|
-
if (!this.focused && !this._value) {
|
|
134
|
-
if (this.activeOption && this.activeOption.viewValue?.toLowerCase() === this.searchControl.value?.toLowerCase()) {
|
|
135
|
-
this.onOptionSelected({
|
|
136
|
-
option: this.activeOption,
|
|
137
|
-
source: null
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
if (!this.open) {
|
|
142
|
-
this.onRemove();
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
ngOnInit() {
|
|
149
|
-
if (this.ngControl) {
|
|
150
|
-
this.ngControl.statusChanges.subscribe((status) => {
|
|
151
|
-
this.disabled = status === "DISABLED";
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
this.searchSub$ = this.search$.subscribe(text => {
|
|
155
|
-
if (!text || typeof text !== "string") {
|
|
156
|
-
this.values = this._filter("");
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
this.values = this._filter(text);
|
|
160
|
-
});
|
|
161
|
-
if (this.searchControl) {
|
|
162
|
-
this.valueChangesSub$ = this.searchControl.valueChanges.subscribe(text => {
|
|
163
|
-
if (this.updatingItem) {
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
if (this._value) {
|
|
167
|
-
if (text === this.formatLabel(this.getValueItem())) {
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
this.value = null;
|
|
171
|
-
}
|
|
172
|
-
if (this.waitForItems) {
|
|
173
|
-
this.waitForItems = false;
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
if (typeof text !== "string") {
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
if (this.typeahead) {
|
|
180
|
-
this.setLoading(true);
|
|
181
|
-
this._page = 0;
|
|
182
|
-
this.typeahead.next(text);
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
this.search$.next(text);
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
this.observer = new ResizeObserver(entries => {
|
|
190
|
-
this.zone.run(() => {
|
|
191
|
-
this.panelWidth = entries[0].contentRect.width;
|
|
192
|
-
});
|
|
193
|
-
});
|
|
194
|
-
this.observer.observe(this.elRef.nativeElement);
|
|
195
|
-
}
|
|
196
|
-
ngOnDestroy() {
|
|
197
|
-
this.search$?.complete();
|
|
198
|
-
this.searchSub$?.unsubscribe();
|
|
199
|
-
this.valueChangesSub$?.unsubscribe();
|
|
200
|
-
this.stateChanges?.complete();
|
|
201
|
-
this.fm.stopMonitoring(this.elRef.nativeElement);
|
|
202
|
-
this.observer?.unobserve(this.elRef.nativeElement);
|
|
203
|
-
}
|
|
204
|
-
onContainerClick(event) { }
|
|
205
|
-
setDescribedByIds(ids) {
|
|
206
|
-
this.describedBy = ids.join(" ");
|
|
207
|
-
}
|
|
208
|
-
registerOnChange(propagate) {
|
|
209
|
-
this.propagate = propagate;
|
|
210
|
-
}
|
|
211
|
-
registerOnTouched(fn) {
|
|
212
|
-
// NO-OP
|
|
213
|
-
}
|
|
214
|
-
writeValue(value) {
|
|
215
|
-
try {
|
|
216
|
-
this.updatingItem = true;
|
|
217
|
-
// If both are equal (considering null === undefined), consider that the value has not changed.
|
|
218
|
-
if (this._value === value || (isNullOrUndefined(this._value) && isNullOrUndefined(value))) {
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
if (!value && this._value !== value) {
|
|
222
|
-
this.onRemove(null);
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
this.value = value;
|
|
226
|
-
if (!this._items) {
|
|
227
|
-
this.waitForItems = true;
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
this.updateSearchInput();
|
|
231
|
-
}
|
|
232
|
-
finally {
|
|
233
|
-
this.updatingItem = false;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
onOptionActivated(event) {
|
|
237
|
-
this.activeOption = event.option;
|
|
238
|
-
}
|
|
239
|
-
onOptionSelected(event) {
|
|
240
|
-
if (event.option.id === "new-value-option") {
|
|
241
|
-
this.value = new NiceTypeaheadNewValue(this.searchControl.value);
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
this.updateLabel(event.option.value);
|
|
245
|
-
this.value = this.bindValue ? this.getObjectItem(this.bindValue, event.option.value) : event.option.value;
|
|
246
|
-
}
|
|
247
|
-
this.change.emit(event.option.value);
|
|
248
|
-
}
|
|
249
|
-
updateState(open) {
|
|
250
|
-
this.open = open;
|
|
251
|
-
if (!this.open && this.ngControl) {
|
|
252
|
-
this.ngControl.control.markAsTouched();
|
|
253
|
-
}
|
|
254
|
-
if (!this.open) {
|
|
255
|
-
this.activeOption = null;
|
|
256
|
-
if (!this._value) {
|
|
257
|
-
this.onRemove();
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
onRemove(event) {
|
|
262
|
-
if (event) {
|
|
263
|
-
event.stopPropagation();
|
|
264
|
-
}
|
|
265
|
-
if (this.disabled) {
|
|
266
|
-
return;
|
|
267
|
-
}
|
|
268
|
-
this.ignoreNextFocus = true;
|
|
269
|
-
this.focused = false;
|
|
270
|
-
this.value = null;
|
|
271
|
-
this.searchControl.patchValue(null);
|
|
272
|
-
if (this.ngControl?.control) {
|
|
273
|
-
this.ngControl.control.markAsTouched();
|
|
274
|
-
}
|
|
275
|
-
this.stateChanges.next();
|
|
276
|
-
this.change.emit();
|
|
277
|
-
if (this.typeahead) {
|
|
278
|
-
this.setLoading(true);
|
|
279
|
-
this._page = 0;
|
|
280
|
-
this.typeahead.next("");
|
|
281
|
-
}
|
|
282
|
-
else {
|
|
283
|
-
this.search$.next("");
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
formatLabel(item) {
|
|
287
|
-
if (this._labelFormatFn) {
|
|
288
|
-
return this._labelFormatFn(item);
|
|
289
|
-
}
|
|
290
|
-
if (this.bindLabel) {
|
|
291
|
-
return this.getObjectItem(this.bindLabel, item);
|
|
292
|
-
}
|
|
293
|
-
if (typeof item !== "string") {
|
|
294
|
-
return "";
|
|
295
|
-
}
|
|
296
|
-
return item;
|
|
297
|
-
}
|
|
298
|
-
_filter(text) {
|
|
299
|
-
if (this._items) {
|
|
300
|
-
const searchFn = this.searchFn || this.defaultSearch.bind(this);
|
|
301
|
-
return this._items.filter(x => searchFn(text, x));
|
|
302
|
-
}
|
|
303
|
-
return [];
|
|
304
|
-
}
|
|
305
|
-
defaultSearch(search, option) {
|
|
306
|
-
if (typeof option === "string") {
|
|
307
|
-
return this.filterString(search, option);
|
|
308
|
-
}
|
|
309
|
-
if (typeof option !== "object") {
|
|
310
|
-
return false;
|
|
311
|
-
}
|
|
312
|
-
if (this.bindLabel) {
|
|
313
|
-
const item = this.getObjectItem(this.bindLabel, option);
|
|
314
|
-
if (typeof item === "string") {
|
|
315
|
-
return this.filterString(search, item);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
else if (this.formatLabel) {
|
|
319
|
-
const item = this.formatLabel(option);
|
|
320
|
-
if (typeof item === "string") {
|
|
321
|
-
return this.filterString(search, item);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
return false;
|
|
325
|
-
}
|
|
326
|
-
updateSearchInput() {
|
|
327
|
-
if ((!this.waitForItems && !this._items) || !this._items) {
|
|
328
|
-
return;
|
|
329
|
-
}
|
|
330
|
-
if (this._value instanceof NiceTypeaheadNewValue) {
|
|
331
|
-
this.updateLabel(this._value.$new);
|
|
332
|
-
return;
|
|
333
|
-
}
|
|
334
|
-
if (typeof this._value === "object") {
|
|
335
|
-
this.updateLabel(this._value);
|
|
336
|
-
return;
|
|
337
|
-
}
|
|
338
|
-
const search = this._items.find(v => (this.bindValue && typeof v === "object" ? this.getObjectItem(this.bindValue, v) : v) === this._value);
|
|
339
|
-
if (search) {
|
|
340
|
-
this.updateLabel(search);
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
filterString(text, value) {
|
|
344
|
-
return value.toLowerCase().includes(text.toLowerCase());
|
|
345
|
-
}
|
|
346
|
-
updateLabel(item) {
|
|
347
|
-
if (!item) {
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
const label = this.formatLabel(item);
|
|
351
|
-
if (label && label !== this.searchControl.value) {
|
|
352
|
-
this.searchControl.patchValue(label, { emitEvent: false });
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
onEndScroll() {
|
|
356
|
-
if (this.page$ && !this.loadingPage) {
|
|
357
|
-
this.setLoadingPage(true);
|
|
358
|
-
this._page++;
|
|
359
|
-
this.page$.next(this._page);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
getObjectItem(key, obj) {
|
|
363
|
-
const keys = key.split(".");
|
|
364
|
-
let item = obj;
|
|
365
|
-
for (const k of keys) {
|
|
366
|
-
if (!item) {
|
|
367
|
-
return item;
|
|
368
|
-
}
|
|
369
|
-
if (!item.hasOwnProperty(k)) {
|
|
370
|
-
return item;
|
|
371
|
-
}
|
|
372
|
-
item = item[k];
|
|
373
|
-
}
|
|
374
|
-
return item;
|
|
375
|
-
}
|
|
376
|
-
getValueItem() {
|
|
377
|
-
if (!this.bindValue) {
|
|
378
|
-
return this._value;
|
|
379
|
-
}
|
|
380
|
-
const keys = this.bindValue.split(".");
|
|
381
|
-
return this._items.find(x => {
|
|
382
|
-
let item = x;
|
|
383
|
-
for (const k of keys) {
|
|
384
|
-
if (!item) {
|
|
385
|
-
return item;
|
|
386
|
-
}
|
|
387
|
-
if (!item.hasOwnProperty(k)) {
|
|
388
|
-
return item;
|
|
389
|
-
}
|
|
390
|
-
item = item[k];
|
|
391
|
-
}
|
|
392
|
-
return item === this._value;
|
|
393
|
-
});
|
|
394
|
-
}
|
|
395
|
-
setLoading(loading) {
|
|
396
|
-
if (this.loading === undefined) {
|
|
397
|
-
this.loading = loading;
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
setLoadingPage(loading) {
|
|
401
|
-
if (this.loadingPage === undefined) {
|
|
402
|
-
this.loadingPage = loading;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
checkIfValueStillExist() {
|
|
406
|
-
if (this._value instanceof NiceTypeaheadNewValue) {
|
|
407
|
-
return;
|
|
408
|
-
}
|
|
409
|
-
const item = this._items.find(v => (this.bindValue && typeof v === "object" ? this.getObjectItem(this.bindValue, v) : v) === this._value);
|
|
410
|
-
if (item) {
|
|
411
|
-
return;
|
|
412
|
-
}
|
|
413
|
-
if (this._value !== null && this._value !== undefined) {
|
|
414
|
-
this.onRemove(null);
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceTypeaheadComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.FocusMonitor }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
418
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: NiceTypeaheadComponent, selector: "nice-typeahead", inputs: { items: "items", labelFormatFn: "labelFormatFn", required: "required", disabled: "disabled", placeholder: "placeholder", emptyPlaceholder: "emptyPlaceholder", allowNotFoundItems: "allowNotFoundItems", panelClass: "panelClass", bindValue: "bindValue", bindLabel: "bindLabel", typeahead: "typeahead", page$: "page$", loading: "loading", loadingPage: "loadingPage", searchFn: "searchFn", optionTemplate: "optionTemplate" }, outputs: { change: "change" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [
|
|
419
|
-
{
|
|
420
|
-
provide: MatFormFieldControl,
|
|
421
|
-
useExisting: NiceTypeaheadComponent
|
|
422
|
-
}
|
|
423
|
-
], viewQueries: [{ propertyName: "input", first: true, predicate: ["searchInput"], descendants: true, static: true }, { propertyName: "options", predicate: MatOption, descendants: true }], ngImport: i0, template: "<div class=\"flex\" *ngIf=\"!disabled; else disable\">\n <input\n #searchInput\n matInput\n class=\"flex-auto\"\n type=\"text\"\n name=\"mat-autocomplete\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [matAutocomplete]=\"auto\"\n [required]=\"required\"\n />\n <mat-icon *ngIf=\"value && !loading\" matSuffix class=\"close-button secondary-text\" (click)=\"onRemove($event)\">\n close\n </mat-icon>\n\n <mat-spinner class=\"self-center\" [diameter]=\"16\" *ngIf=\"loading\"></mat-spinner>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n [panelWidth]=\"panelWidth\"\n [class]=\"panelClass\"\n (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n (closed)=\"updateState(false)\"\n (opened)=\"updateState(true)\"\n (optionsScroll)=\"onEndScroll()\"\n autoActiveFirstOption\n>\n <mat-progress-bar *ngIf=\"open && loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n <mat-option *ngFor=\"let option of values\" [value]=\"option\">\n <ng-container\n *ngIf=\"optionTemplate; else format\"\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\">\n </ng-container>\n <ng-template #format>\n {{ formatLabel(option) }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!values?.length && !allowNotFoundItems\" disabled>\n <ng-container *ngIf=\"emptyPlaceholder; else defaultEmptyPlaceholder\">\n {{ emptyPlaceholder }}\n </ng-container>\n <ng-template #defaultEmptyPlaceholder>\n {{ \"components.typeahead.no_item_found\" | translate }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!values?.length && allowNotFoundItems\" id=\"new-value-option\" [value]=\"searchControl.value\">\n <span class=\"italic\">{{ searchControl.value }}</span>\n </mat-option>\n <mat-progress-bar *ngIf=\"open && loadingPage\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n</mat-autocomplete>\n\n<ng-template #disable>\n <input\n matInput\n class=\"disabled-input\"\n type=\"text\"\n [disabled]=\"true\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [required]=\"required\"\n />\n</ng-template>\n", styles: ["nice-typeahead{width:100%}nice-typeahead .close-button{flex:1 1 18px;cursor:pointer;min-height:18px!important;min-width:18px!important;height:18px!important;width:18px!important;font-size:18px!important;align-self:center}nice-typeahead .disabled-input{flex:1 1 95%}nice-typeahead .arrow-container{display:flex;bottom:7px;align-self:flex-end;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}nice-typeahead .arrow{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:#0000008a}.italic{font-style:italic}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.OptionsScrollDirective, selector: "mat-autocomplete[optionsScroll]", inputs: ["thresholdPercent"], outputs: ["optionsScroll"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
424
|
-
}
|
|
425
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NiceTypeaheadComponent, decorators: [{
|
|
426
|
-
type: Component,
|
|
427
|
-
args: [{ selector: "nice-typeahead", encapsulation: ViewEncapsulation.None, providers: [
|
|
428
|
-
{
|
|
429
|
-
provide: MatFormFieldControl,
|
|
430
|
-
useExisting: NiceTypeaheadComponent
|
|
431
|
-
}
|
|
432
|
-
], template: "<div class=\"flex\" *ngIf=\"!disabled; else disable\">\n <input\n #searchInput\n matInput\n class=\"flex-auto\"\n type=\"text\"\n name=\"mat-autocomplete\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [matAutocomplete]=\"auto\"\n [required]=\"required\"\n />\n <mat-icon *ngIf=\"value && !loading\" matSuffix class=\"close-button secondary-text\" (click)=\"onRemove($event)\">\n close\n </mat-icon>\n\n <mat-spinner class=\"self-center\" [diameter]=\"16\" *ngIf=\"loading\"></mat-spinner>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n [panelWidth]=\"panelWidth\"\n [class]=\"panelClass\"\n (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n (closed)=\"updateState(false)\"\n (opened)=\"updateState(true)\"\n (optionsScroll)=\"onEndScroll()\"\n autoActiveFirstOption\n>\n <mat-progress-bar *ngIf=\"open && loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n <mat-option *ngFor=\"let option of values\" [value]=\"option\">\n <ng-container\n *ngIf=\"optionTemplate; else format\"\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\">\n </ng-container>\n <ng-template #format>\n {{ formatLabel(option) }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!values?.length && !allowNotFoundItems\" disabled>\n <ng-container *ngIf=\"emptyPlaceholder; else defaultEmptyPlaceholder\">\n {{ emptyPlaceholder }}\n </ng-container>\n <ng-template #defaultEmptyPlaceholder>\n {{ \"components.typeahead.no_item_found\" | translate }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!values?.length && allowNotFoundItems\" id=\"new-value-option\" [value]=\"searchControl.value\">\n <span class=\"italic\">{{ searchControl.value }}</span>\n </mat-option>\n <mat-progress-bar *ngIf=\"open && loadingPage\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n</mat-autocomplete>\n\n<ng-template #disable>\n <input\n matInput\n class=\"disabled-input\"\n type=\"text\"\n [disabled]=\"true\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [required]=\"required\"\n />\n</ng-template>\n", styles: ["nice-typeahead{width:100%}nice-typeahead .close-button{flex:1 1 18px;cursor:pointer;min-height:18px!important;min-width:18px!important;height:18px!important;width:18px!important;font-size:18px!important;align-self:center}nice-typeahead .disabled-input{flex:1 1 95%}nice-typeahead .arrow-container{display:flex;bottom:7px;align-self:flex-end;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}nice-typeahead .arrow{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:#0000008a}.italic{font-style:italic}\n"] }]
|
|
433
|
-
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
434
|
-
type: Optional
|
|
435
|
-
}, {
|
|
436
|
-
type: Self
|
|
437
|
-
}] }, { type: i2.FocusMonitor }, { type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { items: [{
|
|
438
|
-
type: Input
|
|
439
|
-
}], labelFormatFn: [{
|
|
440
|
-
type: Input
|
|
441
|
-
}], required: [{
|
|
442
|
-
type: Input
|
|
443
|
-
}], disabled: [{
|
|
444
|
-
type: Input
|
|
445
|
-
}], placeholder: [{
|
|
446
|
-
type: Input
|
|
447
|
-
}], emptyPlaceholder: [{
|
|
448
|
-
type: Input
|
|
449
|
-
}], shouldLabelFloat: [{
|
|
450
|
-
type: HostBinding,
|
|
451
|
-
args: ["class.floating"]
|
|
452
|
-
}], allowNotFoundItems: [{
|
|
453
|
-
type: Input
|
|
454
|
-
}], panelClass: [{
|
|
455
|
-
type: Input
|
|
456
|
-
}], bindValue: [{
|
|
457
|
-
type: Input
|
|
458
|
-
}], bindLabel: [{
|
|
459
|
-
type: Input
|
|
460
|
-
}], typeahead: [{
|
|
461
|
-
type: Input
|
|
462
|
-
}], page$: [{
|
|
463
|
-
type: Input
|
|
464
|
-
}], loading: [{
|
|
465
|
-
type: Input
|
|
466
|
-
}], loadingPage: [{
|
|
467
|
-
type: Input
|
|
468
|
-
}], searchFn: [{
|
|
469
|
-
type: Input
|
|
470
|
-
}], change: [{
|
|
471
|
-
type: Output
|
|
472
|
-
}], input: [{
|
|
473
|
-
type: ViewChild,
|
|
474
|
-
args: ["searchInput", { static: true }]
|
|
475
|
-
}], options: [{
|
|
476
|
-
type: ViewChildren,
|
|
477
|
-
args: [MatOption]
|
|
478
|
-
}], id: [{
|
|
479
|
-
type: HostBinding
|
|
480
|
-
}], describedBy: [{
|
|
481
|
-
type: HostBinding,
|
|
482
|
-
args: ["attr.aria-describedby"]
|
|
483
|
-
}], optionTemplate: [{
|
|
484
|
-
type: Input
|
|
485
|
-
}] } });
|
|
486
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy90eXBlYWhlYWQvdHlwZWFoZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy90eXBlYWhlYWQvdHlwZWFoZWFkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUFFLE1BQU0sRUFHYixRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBRWhELE1BQU0sT0FBTyxxQkFBcUI7SUFDOUIsWUFBbUIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFD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QUMsdUJBQXVCO2dCQUk3QixjQUFjO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9hMTF5XCI7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCwgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZUFjdGl2YXRlZEV2ZW50LCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSBcInV1aWRcIjtcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBOaWNlVHlwZWFoZWFkTmV3VmFsdWUge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyAkbmV3OiBzdHJpbmcpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5pY2UtdHlwZWFoZWFkXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwidHlwZWFoZWFkLnRlbXBsYXRlLmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcInR5cGVhaGVhZC5zdHlsZS5zY3NzXCJdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogTmljZVR5cGVhaGVhZENvbXBvbmVudFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOaWNlVHlwZWFoZWFkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBNYXRGb3JtRmllbGRDb250cm9sPHN0cmluZz4ge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpdGVtcyhpdGVtczogYW55W10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXMgPz8gW107XG4gICAgICAgIHRoaXMudmFsdWVzID0gaXRlbXMgPz8gW107XG4gICAgICAgIHRoaXMuc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIHRoaXMuc2V0TG9hZGluZ1BhZ2UoZmFsc2UpO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaElucHV0KCk7XG4gICAgICAgIHRoaXMuY2hlY2tJZlZhbHVlU3RpbGxFeGlzdCgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBsYWJlbEZvcm1hdEZuKGxhYmVsRm9ybWF0Rm46IChpdGVtOiBhbnkpID0+IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYWJlbEZvcm1hdEZuID0gbGFiZWxGb3JtYXRGbjtcbiAgICAgICAgdGhpcy51cGRhdGVTZWFyY2hJbnB1dCgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCByZXF1aXJlZChyZXEpIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmVxKTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZCA/PyB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVtcHR5UGxhY2Vob2xkZXIoZW1wdHlQbGFjZWhvbGRlcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2VtcHR5UGxhY2Vob2xkZXIgPSBlbXB0eVBsYWNlaG9sZGVyO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbXB0eVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbXB0eVBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGUodGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoIXRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSB8fCAhdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlLmxlbmd0aCkgJiZcbiAgICAgICAgICAgICghdGhpcy5fdmFsdWUgfHwgKHR5cGVvZiB0aGlzLl92YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhdGhpcy5fdmFsdWUubGVuZ3RoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbCA/IHRoaXMubmdDb250cm9sLnRvdWNoZWQgJiYgdGhpcy5uZ0NvbnRyb2wuaW52YWxpZCA6IGZhbHNlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmZsb2F0aW5nXCIpXG4gICAgcHVibGljIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuIHx8ICF0aGlzLmVtcHR5O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgcHJpdmF0ZSBmbTogRm9jdXNNb25pdG9yLFxuICAgICAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICAgICAgcHVibGljIGVsUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGZtLm1vbml0b3IoZWxSZWYubmF0aXZlRWxlbWVudCwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pZ25vcmVOZXh0Rm9jdXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlnbm9yZU5leHRGb2N1cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gISFvcmlnaW47XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkICYmICghdGhpcy5faXRlbXMgfHwgIXRoaXMuX2l0ZW1zLmxlbmd0aCkgJiYgIXRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5wYXRjaFZhbHVlKFwiXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9jdXNlZCAmJiAhdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVPcHRpb24gJiYgdGhpcy5hY3RpdmVPcHRpb24udmlld1ZhbHVlPy50b0xvd2VyQ2FzZSgpID09PSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdGVkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbjogdGhpcy5hY3RpdmVPcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25SZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaXRlbXM6IGFueVtdO1xuICAgIHByaXZhdGUgX2xhYmVsRm9ybWF0Rm46IChpdGVtOiB1bmtub3duKSA9PiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfcGFnZSA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd05vdEZvdW5kSXRlbXMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhbmVsQ2xhc3M6IHN0cmluZyB8IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiaW5kVmFsdWU6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiaW5kTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAZGVwcmVjYXRlZDogVXNlIE5pY2VSZW1vdGVUeXBlYWhlYWQgaW5zdGVhZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR5cGVhaGVhZDogU3ViamVjdDxzdHJpbmc+O1xuICAgIC8qKiBAZGVwcmVjYXRlZDogVXNlIE5pY2VSZW1vdGVUeXBlYWhlYWQgaW5zdGVhZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhZ2UkOiBTdWJqZWN0PG51bWJlcj47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2FkaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvYWRpbmdQYWdlOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoRm46IChzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBhbnkpID0+IGJvb2xlYW47XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKFwic2VhcmNoSW5wdXRcIiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkcmVuKE1hdE9wdGlvbilcbiAgICBwdWJsaWMgb3B0aW9uczogTWF0T3B0aW9uW107XG5cbiAgICBwdWJsaWMgc2VhcmNoJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcbiAgICBwdWJsaWMgdmFsdWVzOiB1bmtub3duW10gPSBbXTtcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2VzU3ViJDogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyBzZWFyY2hTdWIkOiBTdWJzY3JpcHRpb247XG4gICAgcHVibGljIG9wZW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgcGFuZWxXaWR0aCA9IDA7XG4gICAgcHVibGljIGFjdGl2ZU9wdGlvbjogTWF0T3B0aW9uO1xuXG4gICAgcHJpdmF0ZSB1cGRhdGluZ0l0ZW0gPSBmYWxzZTtcbiAgICBwcml2YXRlIHdhaXRGb3JJdGVtcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgaWdub3JlTmV4dEZvY3VzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBvYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgICAvKiogTWF0Rm9ybUZpZWxkICovXG4gICAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG4gICAgcHJpdmF0ZSBfZW1wdHlQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgcHVibGljIHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHVibGljIGNvbnRyb2xUeXBlID0gXCJ0eXBlYWhlYWRcIjtcbiAgICBwdWJsaWMgZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKClcbiAgICBwdWJsaWMgaWQ6IHN0cmluZyA9IHV1aWQudjQoKTtcbiAgICBASG9zdEJpbmRpbmcoXCJhdHRyLmFyaWEtZGVzY3JpYmVkYnlcIilcbiAgICBwdWJsaWMgZGVzY3JpYmVkQnkgPSBcIlwiO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3B0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIHB1YmxpYyBwcm9wYWdhdGU6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSBzdGF0dXMgPT09IFwiRElTQUJMRURcIjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2hTdWIkID0gdGhpcy5zZWFyY2gkLnN1YnNjcmliZSh0ZXh0ID0+IHtcbiAgICAgICAgICAgIGlmICghdGV4dCB8fCB0eXBlb2YgdGV4dCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5fZmlsdGVyKFwiXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5fZmlsdGVyKHRleHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWIkID0gdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodGV4dCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudXBkYXRpbmdJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRleHQgPT09IHRoaXMuZm9ybWF0TGFiZWwodGhpcy5nZXRWYWx1ZUl0ZW0oKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLndhaXRGb3JJdGVtcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndhaXRGb3JJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlYWhlYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYWdlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBlYWhlYWQubmV4dCh0ZXh0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaCQubmV4dCh0ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhbmVsV2lkdGggPSBlbnRyaWVzWzBdLmNvbnRlbnRSZWN0LndpZHRoO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2gkPy5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnNlYXJjaFN1YiQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VzU3ViJD8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXM/LmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZm0uc3RvcE1vbml0b3JpbmcodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5vYnNlcnZlcj8udW5vYnNlcnZlKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oXCIgXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKHByb3BhZ2F0ZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGUgPSBwcm9wYWdhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gTk8tT1BcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0aW5nSXRlbSA9IHRydWU7XG4gICAgICAgICAgICAvLyBJZiBib3RoIGFyZSBlcXVhbCAoY29uc2lkZXJpbmcgbnVsbCA9PT0gdW5kZWZpbmVkKSwgY29uc2lkZXIgdGhhdCB0aGUgdmFsdWUgaGFzIG5vdCBjaGFuZ2VkLlxuICAgICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlID09PSB2YWx1ZSB8fCAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5fdmFsdWUpICYmIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdmFsdWUgJiYgdGhpcy5fdmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZShudWxsKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2l0ZW1zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53YWl0Rm9ySXRlbXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWFyY2hJbnB1dCgpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGluZ0l0ZW0gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbk9wdGlvbkFjdGl2YXRlZChldmVudDogTWF0QXV0b2NvbXBsZXRlQWN0aXZhdGVkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSBldmVudC5vcHRpb247XG4gICAgfVxuXG4gICAgcHVibGljIG9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50Lm9wdGlvbi5pZCA9PT0gXCJuZXctdmFsdWUtb3B0aW9uXCIpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgTmljZVR5cGVhaGVhZE5ld1ZhbHVlKHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKGV2ZW50Lm9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5iaW5kVmFsdWUgPyB0aGlzLmdldE9iamVjdEl0ZW0odGhpcy5iaW5kVmFsdWUsIGV2ZW50Lm9wdGlvbi52YWx1ZSkgOiBldmVudC5vcHRpb24udmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdChldmVudC5vcHRpb24udmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVTdGF0ZShvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IG9wZW47XG4gICAgICAgIGlmICghdGhpcy5vcGVuICYmIHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IG51bGw7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVtb3ZlKGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaWdub3JlTmV4dEZvY3VzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wucGF0Y2hWYWx1ZShudWxsKTtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sPy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICAgIHRoaXMuY2hhbmdlLmVtaXQoKTtcblxuICAgICAgICBpZiAodGhpcy50eXBlYWhlYWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuX3BhZ2UgPSAwO1xuICAgICAgICAgICAgdGhpcy50eXBlYWhlYWQubmV4dChcIlwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoJC5uZXh0KFwiXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZvcm1hdExhYmVsKGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLl9sYWJlbEZvcm1hdEZuKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxGb3JtYXRGbihpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmJpbmRMYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRMYWJlbCwgaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZmlsdGVyKHRleHQ6IHN0cmluZyk6IHVua25vd25bXSB7XG4gICAgICAgIGlmICh0aGlzLl9pdGVtcykge1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoRm4gPSB0aGlzLnNlYXJjaEZuIHx8IHRoaXMuZGVmYXVsdFNlYXJjaC5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmZpbHRlcih4ID0+IHNlYXJjaEZuKHRleHQsIHgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWZhdWx0U2VhcmNoKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IHVua25vd24pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlclN0cmluZyhzZWFyY2gsIG9wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYmluZExhYmVsKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRPYmplY3RJdGVtKHRoaXMuYmluZExhYmVsLCBvcHRpb24pO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyU3RyaW5nKHNlYXJjaCwgaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtYXRMYWJlbCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZm9ybWF0TGFiZWwob3B0aW9uKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlclN0cmluZyhzZWFyY2gsIGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VhcmNoSW5wdXQoKTogdm9pZCB7XG4gICAgICAgIGlmICgoIXRoaXMud2FpdEZvckl0ZW1zICYmICF0aGlzLl9pdGVtcykgfHwgIXRoaXMuX2l0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fdmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwodGhpcy5fdmFsdWUuJG5ldyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3ZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuX2l0ZW1zLmZpbmQoXG4gICAgICAgICAgICB2ID0+ICh0aGlzLmJpbmRWYWx1ZSAmJiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiA/IHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRWYWx1ZSwgdikgOiB2KSA9PT0gdGhpcy5fdmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYWJlbChzZWFyY2gpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXJTdHJpbmcodGV4dDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRleHQudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMYWJlbChpdGVtOiB1bmtub3duIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLmZvcm1hdExhYmVsKGl0ZW0pO1xuXG4gICAgICAgIGlmIChsYWJlbCAmJiBsYWJlbCAhPT0gdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wucGF0Y2hWYWx1ZShsYWJlbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uRW5kU2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYWdlJCAmJiAhdGhpcy5sb2FkaW5nUGFnZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nUGFnZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuX3BhZ2UrKztcbiAgICAgICAgICAgIHRoaXMucGFnZSQubmV4dCh0aGlzLl9wYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T2JqZWN0SXRlbShrZXk6IHN0cmluZywgb2JqOiBvYmplY3QpOiBhbnkge1xuICAgICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgICAgbGV0IGl0ZW0gPSBvYmo7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpdGVtLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtID0gaXRlbVtrXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsdWVJdGVtKCk6IGFueSB7XG4gICAgICAgIGlmICghdGhpcy5iaW5kVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGtleXMgPSB0aGlzLmJpbmRWYWx1ZS5zcGxpdChcIi5cIik7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcy5maW5kKHggPT4ge1xuICAgICAgICAgICAgbGV0IGl0ZW0gPSB4O1xuICAgICAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpdGVtID0gaXRlbVtrXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGl0ZW0gPT09IHRoaXMuX3ZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5sb2FkaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGxvYWRpbmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExvYWRpbmdQYWdlKGxvYWRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZGluZ1BhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nUGFnZSA9IGxvYWRpbmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrSWZWYWx1ZVN0aWxsRXhpc3QoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSBpbnN0YW5jZW9mIE5pY2VUeXBlYWhlYWROZXdWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuX2l0ZW1zLmZpbmQoXG4gICAgICAgICAgICB2ID0+ICh0aGlzLmJpbmRWYWx1ZSAmJiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiA/IHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRWYWx1ZSwgdikgOiB2KSA9PT0gdGhpcy5fdmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLl92YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uUmVtb3ZlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXhcIiAqbmdJZj1cIiFkaXNhYmxlZDsgZWxzZSBkaXNhYmxlXCI+XG4gICAgPGlucHV0XG4gICAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICBjbGFzcz1cImZsZXgtYXV0b1wiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgbmFtZT1cIm1hdC1hdXRvY29tcGxldGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgLz5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJ2YWx1ZSAmJiAhbG9hZGluZ1wiIG1hdFN1ZmZpeCBjbGFzcz1cImNsb3NlLWJ1dHRvbiBzZWNvbmRhcnktdGV4dFwiIChjbGljayk9XCJvblJlbW92ZSgkZXZlbnQpXCI+XG4gICAgICAgIGNsb3NlXG4gICAgPC9tYXQtaWNvbj5cblxuICAgIDxtYXQtc3Bpbm5lciBjbGFzcz1cInNlbGYtY2VudGVyXCIgW2RpYW1ldGVyXT1cIjE2XCIgKm5nSWY9XCJsb2FkaW5nXCI+PC9tYXQtc3Bpbm5lcj5cbjwvZGl2PlxuPG1hdC1hdXRvY29tcGxldGVcbiAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXG4gICAgW3BhbmVsV2lkdGhdPVwicGFuZWxXaWR0aFwiXG4gICAgW2NsYXNzXT1cInBhbmVsQ2xhc3NcIlxuICAgIChvcHRpb25BY3RpdmF0ZWQpPVwib25PcHRpb25BY3RpdmF0ZWQoJGV2ZW50KVwiXG4gICAgKG9wdGlvblNlbGVjdGVkKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgKGNsb3NlZCk9XCJ1cGRhdGVTdGF0ZShmYWxzZSlcIlxuICAgIChvcGVuZWQpPVwidXBkYXRlU3RhdGUodHJ1ZSlcIlxuICAgIChvcHRpb25zU2Nyb2xsKT1cIm9uRW5kU2Nyb2xsKClcIlxuICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvblxuPlxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwib3BlbiAmJiBsb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBjb2xvcj1cInByaW1hcnlcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB2YWx1ZXNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uVGVtcGxhdGU7IGVsc2UgZm9ybWF0XCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybWF0PlxuICAgICAgICAgICAge3sgZm9ybWF0TGFiZWwob3B0aW9uKSB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8bWF0LW9wdGlvbiAqbmdJZj1cIiF2YWx1ZXM/Lmxlbmd0aCAmJiAhYWxsb3dOb3RGb3VuZEl0ZW1zXCIgZGlzYWJsZWQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbXB0eVBsYWNlaG9sZGVyOyBlbHNlIGRlZmF1bHRFbXB0eVBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICB7eyBlbXB0eVBsYWNlaG9sZGVyIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eVBsYWNlaG9sZGVyPlxuICAgICAgICAgICAge3sgXCJjb21wb25lbnRzLnR5cGVhaGVhZC5ub19pdGVtX2ZvdW5kXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L21hdC1vcHRpb24+XG4gICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhdmFsdWVzPy5sZW5ndGggJiYgYWxsb3dOb3RGb3VuZEl0ZW1zXCIgaWQ9XCJuZXctdmFsdWUtb3B0aW9uXCIgW3ZhbHVlXT1cInNlYXJjaENvbnRyb2wudmFsdWVcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGFsaWNcIj57eyBzZWFyY2hDb250cm9sLnZhbHVlIH19PC9zcGFuPlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cIm9wZW4gJiYgbG9hZGluZ1BhZ2VcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cblxuPG5nLXRlbXBsYXRlICNkaXNhYmxlPlxuICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICBjbGFzcz1cImRpc2FibGVkLWlucHV0XCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|