@recursyve/nice-ui-kit.v2 15.0.0-beta.131 → 16.0.0-beta.132
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/esm2022/lib/animations/defaults.mjs +32 -0
- package/{esm2020 → esm2022}/lib/api/interceptors/transform-response.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/alert/alert.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/alert/alert.module.mjs +9 -9
- package/{esm2020 → esm2022}/lib/components/alert/alert.service.mjs +4 -4
- package/esm2022/lib/components/assets-carousel/assets-carousel.component.mjs +283 -0
- package/{esm2020 → esm2022}/lib/components/assets-carousel/assets-carousel.module.mjs +19 -19
- package/{esm2020 → esm2022}/lib/components/assets-carousel/directives/assets-carousel-active-content.directive.mjs +4 -4
- package/esm2022/lib/components/async-typeahead/async-typeahead.component.mjs +451 -0
- package/{esm2020 → esm2022}/lib/components/async-typeahead/async-typeahead.module.mjs +21 -21
- package/{esm2020 → esm2022}/lib/components/async-typeahead/providers/async-typeahead.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/base-form/base-form.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/base-form/base-form.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/base-form/form-submit.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/card/card.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/card/card.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/carousel/carousel.component.mjs +4 -4
- package/esm2022/lib/components/carousel/carousel.module.mjs +40 -0
- package/{esm2020 → esm2022}/lib/components/carousel/picture-modal/picture-modal.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/carousel/picture-modal/picture-modal.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/carousel/pipe/carousel-layout.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/collapsable/collapsable.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/collapsable/collapsable.module.mjs +7 -7
- package/{esm2020 → esm2022}/lib/components/date-range-picker/components/header/header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/date-range-picker/components/range-preset/range-preset.component.mjs +4 -4
- package/esm2022/lib/components/date-range-picker/date-range-picker.component.mjs +95 -0
- package/{esm2020 → esm2022}/lib/components/date-range-picker/date-range-picker.module.mjs +21 -21
- package/{esm2020 → esm2022}/lib/components/date-range-picker/providers/date-range-picker.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/drawer/drawer.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/drawer/drawer.module.mjs +7 -7
- package/{esm2020 → esm2022}/lib/components/drawer/drawer.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/export-bottom-sheet/export-bottom-sheet.component.mjs +4 -4
- package/esm2022/lib/components/export-bottom-sheet/export-bottom-sheet.module.mjs +45 -0
- package/{esm2020 → esm2022}/lib/components/export-bottom-sheet/providers/export-bottom-sheet.service.mjs +7 -7
- package/{esm2020 → esm2022}/lib/components/form-error/control-status.directive.mjs +4 -4
- package/esm2022/lib/components/form-error/form-error.component.mjs +53 -0
- package/{esm2020 → esm2022}/lib/components/form-error/form-error.module.mjs +5 -5
- package/esm2022/lib/components/horizontal-stepper/horizontal-stepper.component.mjs +34 -0
- package/{esm2020 → esm2022}/lib/components/horizontal-stepper/horizontal-stepper.module.mjs +9 -9
- package/{esm2020 → esm2022}/lib/components/horizontal-stepper/step.component.mjs +6 -6
- package/esm2022/lib/components/image-cropper/image-cropper.component.mjs +1269 -0
- package/{esm2020 → esm2022}/lib/components/image-cropper/image-cropper.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/layout/layout.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/layout/layout.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/loading-spinner/loading-spinner.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/loading-spinner/loading-spinner.module.mjs +9 -9
- package/{esm2020 → esm2022}/lib/components/loading-spinner/loading.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/loading-toast/loading-toast.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/loading-toast/loading-toast.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/loading-toast/loading-toast.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/loading-toast/loading-toast.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/lottie/lottie.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/lottie/lottie.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/navigation/components/hint-component-base.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/directives/show-hint.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/horizontal/components/basic/basic.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/horizontal/components/branch/branch.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/horizontal/components/divider/divider.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/horizontal/components/spacer/spacer.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/horizontal/horizontal.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/navigation.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/navigation.module.mjs +37 -37
- package/{esm2020 → esm2022}/lib/components/navigation/navigation.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/pipes/should-hide.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/pipes/should-show-hint.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/providers/hint.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/aside/aside.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/basic/basic.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/collapsable/collapsable.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/divider/divider.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/group/group.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/spacer/spacer.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/navigation/vertical/vertical.component.mjs +4 -4
- package/esm2022/lib/components/search-bar/search-bar.component.mjs +76 -0
- package/{esm2020 → esm2022}/lib/components/search-bar/search-bar.module.mjs +13 -13
- package/{esm2020 → esm2022}/lib/components/sweet-alert/sweet-alert.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/sweet-alert/sweet-alert.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/sweet-alert/sweet-alert.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/sweet-alert/sweet-alert.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/toast/toast.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/toast/toast.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/toast/toast.service.mjs +4 -4
- package/esm2022/lib/components/toggle-button-group/toggle-button-group.component.mjs +134 -0
- package/{esm2020 → esm2022}/lib/components/toggle-button-group/toggle-button-group.module.mjs +7 -7
- package/{esm2020 → esm2022}/lib/components/toggle-button-group/toggle-button.component.mjs +4 -4
- package/esm2022/lib/components/translation-form/components/textarea/translation-form-textarea.component.mjs +38 -0
- package/esm2022/lib/components/translation-form/components/textfield/translation-form-textfield.component.mjs +26 -0
- package/{esm2020 → esm2022}/lib/components/translation-form/components/translation-form.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/translation-form/components/translation-form.module.mjs +19 -19
- package/{esm2020 → esm2022}/lib/components/translation-form/directives/translation-context.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/translation-form/providers/nice-translation-form.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/translation-form/toggle/translation-toggle.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/translation-form/validators/require-for-languages.validator.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/typeahead/directives/options-scroll.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/typeahead/directives/options-scroll.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/typeahead/typeahead.component.mjs +9 -9
- package/{esm2020 → esm2022}/lib/components/typeahead/typeahead.module.mjs +25 -25
- package/{esm2020 → esm2022}/lib/directives/autofocus/autofocus.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/autofocus/autofocus.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/directives/autogrow/autogrow.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/autogrow/autogrow.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/chip-list/chip-list-items/chip-list-items.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/chip-list/chip-list.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/chip-list/chip-list.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/directives/draggable-list/draggable-list.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/draggable-list/draggable-list.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/directives/dropzone/dropzone.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/dropzone/dropzone.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/directives/image-error-placeholder/image-error-placeholder.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/image-error-placeholder/image-error-placeholder.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/directives/material/material.module.mjs +7 -7
- package/{esm2020 → esm2022}/lib/directives/material/nice-material-style.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/material/nice-rounded-style.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/modals/modal-on-click.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/modals/modal-opener.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/rerender/rerender.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/resolve/resolve.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/scroll-reset/scroll-reset.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/scroll-reset/scroll-reset.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/directives/scrollbar/scrollbar.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/scrollbar/scrollbar.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/directives/stop-propagation/click-stop-propagation.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/stop-propagation/stop-propagation.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/directives/window/prevent-close-window.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/directives/window/window-directive.module.mjs +5 -5
- package/esm2022/lib/nice.module.mjs +124 -0
- package/{esm2020 → esm2022}/lib/pipes/boolean.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/capitalize-first-letter.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/ceil.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/entries.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/find-by-key.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/first-letter.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/floor.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/join-if-defined.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/link.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/localized-boolean.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/localized-currency.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/localized-date-only.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/localized-date.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/minutes-to-time.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/number-to-ordinal-indicator.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/pad.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/phone.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/pipes.module.mjs +72 -72
- package/{esm2020 → esm2022}/lib/pipes/postal-code.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/range.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/round.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/sanitize-bypass.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/seconds-to-time.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/track-by-prop.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/providers/config/config.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/providers/config/config.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/providers/media-watcher/media-watcher.module.mjs +7 -7
- package/{esm2020 → esm2022}/lib/providers/media-watcher/media-watcher.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/providers/overlay/dynamic-overlay-container.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/providers/overlay/dynamic-overlay.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/providers/splash-screen/splash-screen.module.mjs +7 -7
- package/{esm2020 → esm2022}/lib/providers/splash-screen/splash-screen.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/providers/utils/utils.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/providers/utils/utils.service.mjs +4 -4
- package/esm2022/lib/utils/regex.utils.mjs +11 -0
- package/{fesm2020 → fesm2022}/recursyve-nice-ui-kit.v2.mjs +888 -889
- package/fesm2022/recursyve-nice-ui-kit.v2.mjs.map +1 -0
- package/lib/components/alert/alert.component.d.ts +1 -1
- package/lib/components/assets-carousel/assets-carousel.component.d.ts +1 -1
- package/lib/components/async-typeahead/async-typeahead.component.d.ts +1 -1
- package/lib/components/base-form/base-form.component.d.ts +1 -1
- package/lib/components/base-form/form-submit.directive.d.ts +1 -1
- package/lib/components/card/card.component.d.ts +1 -1
- package/lib/components/carousel/carousel.component.d.ts +1 -1
- package/lib/components/collapsable/collapsable.component.d.ts +1 -1
- package/lib/components/date-range-picker/date-range-picker.component.d.ts +1 -1
- package/lib/components/drawer/drawer.component.d.ts +1 -1
- package/lib/components/form-error/form-error.component.d.ts +1 -1
- package/lib/components/image-cropper/image-cropper.component.d.ts +2 -2
- package/lib/components/loading-spinner/loading-spinner.component.d.ts +1 -1
- package/lib/components/loading-spinner/loading.directive.d.ts +1 -1
- package/lib/components/loading-toast/loading-toast.component.d.ts +1 -1
- package/lib/components/loading-toast/loading-toast.directive.d.ts +1 -1
- package/lib/components/lottie/lottie.component.d.ts +1 -1
- package/lib/components/navigation/directives/show-hint.directive.d.ts +1 -1
- package/lib/components/navigation/horizontal/components/basic/basic.component.d.ts +1 -1
- package/lib/components/navigation/horizontal/components/branch/branch.component.d.ts +1 -1
- package/lib/components/navigation/horizontal/components/divider/divider.component.d.ts +1 -1
- package/lib/components/navigation/horizontal/components/spacer/spacer.component.d.ts +1 -1
- package/lib/components/navigation/horizontal/horizontal.component.d.ts +1 -1
- package/lib/components/navigation/vertical/components/aside/aside.component.d.ts +1 -1
- package/lib/components/navigation/vertical/components/basic/basic.component.d.ts +1 -1
- package/lib/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +1 -1
- package/lib/components/navigation/vertical/components/divider/divider.component.d.ts +1 -1
- package/lib/components/navigation/vertical/components/group/group.component.d.ts +1 -1
- package/lib/components/navigation/vertical/components/spacer/spacer.component.d.ts +1 -1
- package/lib/components/navigation/vertical/vertical.component.d.ts +1 -1
- package/lib/components/search-bar/search-bar.component.d.ts +1 -1
- package/lib/components/sweet-alert/sweet-alert.directive.d.ts +1 -1
- package/lib/components/toggle-button-group/toggle-button-group.component.d.ts +1 -1
- package/lib/components/toggle-button-group/toggle-button.component.d.ts +1 -1
- package/lib/components/translation-form/components/textarea/translation-form-textarea.component.d.ts +1 -1
- package/lib/components/translation-form/components/translation-form.component.d.ts +1 -1
- package/lib/components/translation-form/validators/require-for-languages.validator.d.ts +1 -1
- package/lib/components/typeahead/directives/options-scroll.directive.d.ts +1 -1
- package/lib/components/typeahead/typeahead.component.d.ts +1 -1
- package/lib/directives/autogrow/autogrow.directive.d.ts +1 -1
- package/lib/directives/chip-list/chip-list-items/chip-list-items.component.d.ts +1 -1
- package/lib/directives/chip-list/chip-list.directive.d.ts +1 -1
- package/lib/directives/draggable-list/draggable-list.directive.d.ts +1 -1
- package/lib/directives/image-error-placeholder/image-error-placeholder.directive.d.ts +1 -1
- package/lib/directives/modals/modal-opener.directive.d.ts +1 -1
- package/lib/directives/rerender/rerender.directive.d.ts +1 -1
- package/lib/directives/resolve/resolve.directive.d.ts +1 -1
- package/lib/directives/scrollbar/scrollbar.directive.d.ts +1 -1
- package/package.json +13 -19
- package/esm2020/lib/animations/defaults.mjs +0 -32
- package/esm2020/lib/components/assets-carousel/assets-carousel.component.mjs +0 -283
- package/esm2020/lib/components/async-typeahead/async-typeahead.component.mjs +0 -451
- package/esm2020/lib/components/carousel/carousel.module.mjs +0 -41
- package/esm2020/lib/components/date-range-picker/date-range-picker.component.mjs +0 -95
- package/esm2020/lib/components/export-bottom-sheet/export-bottom-sheet.module.mjs +0 -45
- package/esm2020/lib/components/form-error/form-error.component.mjs +0 -53
- package/esm2020/lib/components/horizontal-stepper/horizontal-stepper.component.mjs +0 -34
- package/esm2020/lib/components/image-cropper/image-cropper.component.mjs +0 -1269
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +0 -76
- package/esm2020/lib/components/toggle-button-group/toggle-button-group.component.mjs +0 -134
- package/esm2020/lib/components/translation-form/components/textarea/translation-form-textarea.component.mjs +0 -38
- package/esm2020/lib/components/translation-form/components/textfield/translation-form-textfield.component.mjs +0 -26
- package/esm2020/lib/nice.module.mjs +0 -124
- package/esm2020/lib/utils/regex.utils.mjs +0 -11
- package/fesm2015/recursyve-nice-ui-kit.v2.mjs +0 -11867
- package/fesm2015/recursyve-nice-ui-kit.v2.mjs.map +0 -1
- package/fesm2020/recursyve-nice-ui-kit.v2.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/animations/expand-collapse.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/animations/fade.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/animations/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/animations/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/animations/shake.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/animations/slide.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/animations/zoom.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/exceptions/api.exception.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/exceptions/exception.factory.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/nice.api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/alert/alert.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/alert/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/alert/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/assets-carousel/assets-carousel.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/assets-carousel/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/assets-carousel/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/async-typeahead/async-typeahead.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/async-typeahead/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/async-typeahead/providers/async-typeahead.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/async-typeahead/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/base-form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/base-form/nice-base.form.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/base-form/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/card/card.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/card/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/card/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/carousel/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/carousel/picture-modal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/carousel/picture-modal/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/carousel/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/collapsable/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/collapsable/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/date-range-picker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/date-range-picker/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/drawer/drawer.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/drawer/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/drawer/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/export-bottom-sheet/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/export-bottom-sheet/models/export-strategy.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/export-bottom-sheet/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form-error/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form-error/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/horizontal-stepper/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/horizontal-stepper/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/image-cropper/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/image-cropper/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/image-cropper/resize-canvas.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/layout/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/layout/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/loading-spinner/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/loading-spinner/loading.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/loading-spinner/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/loading-toast/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/loading-toast/loading-toast.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/loading-toast/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/loading-toast/rxjs/show-loading-toast.operator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/lottie/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/lottie/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/navigation/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/navigation/navigation.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/navigation/providers/hide-item.resolver.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/navigation/providers/hint.resolver.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/navigation/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/search-bar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/search-bar/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/sweet-alert/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/sweet-alert/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/sweet-alert/sweet-alert.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toast/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toast/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toast/rxjs/show-success-or-error-toast.operator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toast/rxjs/show-toast.operator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toast/toast.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toggle-button-group/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toggle-button-group/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/translation-form/decorators/translation-form-group.decorator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/translation-form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/translation-form/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/translation-form/translation.form.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/typeahead/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/typeahead/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/autofocus/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/autofocus/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/autogrow/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/autogrow/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/chip-async-typeahead/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/chip-async-typeahead/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/chip-list/chip-list.constant.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/chip-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/chip-list/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/draggable-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/draggable-list/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/dropzone/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/dropzone/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/image-error-placeholder/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/image-error-placeholder/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/material/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/material/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/modals/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/modals/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/rerender/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/rerender/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/resolve/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/resolve/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/scroll-reset/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/scroll-reset/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/scrollbar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/scrollbar/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/scrollbar/scrollbar.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/stop-propagation/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/stop-propagation/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/window/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/window/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/config/config.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/config/config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/config/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/config/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/media-watcher/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/media-watcher/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/splash-screen/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/splash-screen/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/utils/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/constructor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/array.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/case.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/colors.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/date.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/file.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/font-awesome.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/form-data.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/http-status.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/keyboard.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/lexorank.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/modal.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/number.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/object.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/promise.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/query-params.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/type.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/url.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/recursyve-nice-ui-kit.v2.mjs +0 -0
|
@@ -1,451 +0,0 @@
|
|
|
1
|
-
import { coerceBooleanProperty } from "@angular/cdk/coercion";
|
|
2
|
-
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Optional, Output, Self, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from "@angular/core";
|
|
3
|
-
import { FormControl, FormGroupDirective, NgControl, NgForm, Validators } from "@angular/forms";
|
|
4
|
-
import { ErrorStateMatcher, MatOption, mixinErrorState } from "@angular/material/core";
|
|
5
|
-
import { MatFormFieldControl } from "@angular/material/form-field";
|
|
6
|
-
import { debounceTime, distinctUntilChanged, firstValueFrom, Subject } from "rxjs";
|
|
7
|
-
import { take } from "rxjs/operators";
|
|
8
|
-
import * as uuid from "uuid";
|
|
9
|
-
import { isNullOrUndefined } from "../../utils";
|
|
10
|
-
import { NiceTypeaheadNewValue } from "../typeahead";
|
|
11
|
-
import { NiceAsyncTypeaheadService } from "./providers/async-typeahead.service";
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@angular/forms";
|
|
14
|
-
import * as i2 from "@angular/material/core";
|
|
15
|
-
import * as i3 from "./providers/async-typeahead.service";
|
|
16
|
-
import * as i4 from "@angular/common";
|
|
17
|
-
import * as i5 from "../typeahead/directives/options-scroll.directive";
|
|
18
|
-
import * as i6 from "@angular/material/input";
|
|
19
|
-
import * as i7 from "@angular/material/form-field";
|
|
20
|
-
import * as i8 from "@angular/material/autocomplete";
|
|
21
|
-
import * as i9 from "@angular/material/icon";
|
|
22
|
-
import * as i10 from "@angular/material/progress-spinner";
|
|
23
|
-
import * as i11 from "@angular/material/progress-bar";
|
|
24
|
-
import * as i12 from "@ngx-translate/core";
|
|
25
|
-
// Boilerplate for applying mixins to ).
|
|
26
|
-
/** @docs-private */
|
|
27
|
-
const _BaseAsyncTypeaheadComponent = mixinErrorState(class {
|
|
28
|
-
constructor(_defaultErrorStateMatcher, _parentForm, _parentFormGroup,
|
|
29
|
-
/**
|
|
30
|
-
* Form control bound to the component.
|
|
31
|
-
* Implemented as part of `MatFormFieldControl`.
|
|
32
|
-
* @docs-private
|
|
33
|
-
*/
|
|
34
|
-
ngControl) {
|
|
35
|
-
this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
|
|
36
|
-
this._parentForm = _parentForm;
|
|
37
|
-
this._parentFormGroup = _parentFormGroup;
|
|
38
|
-
this.ngControl = ngControl;
|
|
39
|
-
/**
|
|
40
|
-
* Emits whenever the component state changes and should cause the parent
|
|
41
|
-
* form field to update. Implemented as part of `MatFormFieldControl`.
|
|
42
|
-
* @docs-private
|
|
43
|
-
*/
|
|
44
|
-
this.stateChanges = new Subject();
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
// tslint:disable-next-line:max-line-length
|
|
48
|
-
export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
|
|
49
|
-
set labelFormatFn(labelFormatFn) {
|
|
50
|
-
this._labelFormatFn = labelFormatFn;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Implemented as part of MatFormFieldControl.
|
|
54
|
-
* @docs-private
|
|
55
|
-
*/
|
|
56
|
-
set disabled(value) {
|
|
57
|
-
this._disabled = coerceBooleanProperty(value);
|
|
58
|
-
if (this._disabled) {
|
|
59
|
-
this.searchControl.disable({ emitEvent: false });
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
this.searchControl.enable({ emitEvent: false });
|
|
63
|
-
}
|
|
64
|
-
// Browsers may not fire the blur event if the input is disabled too quickly.
|
|
65
|
-
// Reset from here to ensure that the element doesn't become stuck.
|
|
66
|
-
if (this.focused) {
|
|
67
|
-
this.focused = false;
|
|
68
|
-
this.stateChanges.next();
|
|
69
|
-
}
|
|
70
|
-
this.changeDetectorRef.detectChanges();
|
|
71
|
-
}
|
|
72
|
-
get disabled() {
|
|
73
|
-
if (this.ngControl && this.ngControl.disabled !== null) {
|
|
74
|
-
return this.ngControl.disabled;
|
|
75
|
-
}
|
|
76
|
-
return this._disabled;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Implemented as part of MatFormFieldControl.
|
|
80
|
-
* @docs-private
|
|
81
|
-
*/
|
|
82
|
-
set value(value) {
|
|
83
|
-
if (value !== this._value) {
|
|
84
|
-
this._value = value;
|
|
85
|
-
this.propagate(value);
|
|
86
|
-
this.stateChanges.next();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
get value() {
|
|
90
|
-
return this._value;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Implemented as part of MatFormFieldControl.
|
|
94
|
-
* @docs-private
|
|
95
|
-
*/
|
|
96
|
-
set required(value) {
|
|
97
|
-
this._required = coerceBooleanProperty(value);
|
|
98
|
-
}
|
|
99
|
-
get required() {
|
|
100
|
-
return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;
|
|
101
|
-
}
|
|
102
|
-
get shouldLabelFloat() {
|
|
103
|
-
return this.focused || !this.empty;
|
|
104
|
-
}
|
|
105
|
-
get empty() {
|
|
106
|
-
return ((!this.searchControl.value || !this.searchControl.value.length) &&
|
|
107
|
-
(!this._value || (typeof this._value === "string" && !this._value.length)));
|
|
108
|
-
}
|
|
109
|
-
get initialized() {
|
|
110
|
-
return this.service.getInitialized();
|
|
111
|
-
}
|
|
112
|
-
constructor(ngControl, parentForm, parentFormGroup, defaultErrorStateMatcher, ngZone, changeDetectorRef, service) {
|
|
113
|
-
super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
|
|
114
|
-
this.ngZone = ngZone;
|
|
115
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
116
|
-
this.service = service;
|
|
117
|
-
this.stateChanges = new Subject();
|
|
118
|
-
this.controlType = "remote-typeahead";
|
|
119
|
-
this.focused = false;
|
|
120
|
-
this.searchControl = new FormControl(null);
|
|
121
|
-
this.open = false;
|
|
122
|
-
this.panelWidth = 0;
|
|
123
|
-
this.active$ = this.service.active$;
|
|
124
|
-
this.entityRemoved = new EventEmitter();
|
|
125
|
-
this.autoReload = true;
|
|
126
|
-
this.preloadResource = false;
|
|
127
|
-
this.allowNotFoundItems = false;
|
|
128
|
-
this.panelClass = [];
|
|
129
|
-
this.bindValue = "id";
|
|
130
|
-
this.selected = new EventEmitter();
|
|
131
|
-
this._disabled = false;
|
|
132
|
-
this.id = uuid.v4();
|
|
133
|
-
this.describedBy = "";
|
|
134
|
-
this.componentInitialized = false;
|
|
135
|
-
this.propagate = () => { };
|
|
136
|
-
if (this.ngControl) {
|
|
137
|
-
this.ngControl.valueAccessor = this;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
async ngOnInit() {
|
|
141
|
-
this.service.listenForRequest();
|
|
142
|
-
if (this.ngControl) {
|
|
143
|
-
if (this.ngControl.disabled) {
|
|
144
|
-
this.searchControl.disable({ emitEvent: false });
|
|
145
|
-
}
|
|
146
|
-
this.ngControl.statusChanges.subscribe((status) => {
|
|
147
|
-
this.disabled = status === "DISABLED";
|
|
148
|
-
if (this._disabled) {
|
|
149
|
-
this.searchControl.disable({ emitEvent: false });
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
this.searchControl.enable({ emitEvent: false });
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
if (this.filterFn) {
|
|
157
|
-
this.service.setFilterFn(this.filterFn);
|
|
158
|
-
}
|
|
159
|
-
if (this.searchControl) {
|
|
160
|
-
this.valueChangesSub$ = this.searchControl.valueChanges.pipe(debounceTime(500), distinctUntilChanged()).subscribe(text => {
|
|
161
|
-
if (typeof text !== "string") {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
this.service.search(this.resource, text);
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
if (this.preloadResource) {
|
|
168
|
-
this.service.search(this.resource, "");
|
|
169
|
-
}
|
|
170
|
-
this.componentInitialized = true;
|
|
171
|
-
if (this.initialWriteValue !== undefined) {
|
|
172
|
-
await this.writeValue(this.initialWriteValue);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
ngOnDestroy() {
|
|
176
|
-
this.service.closeRequestSubscription();
|
|
177
|
-
this.valueChangesSub$.unsubscribe();
|
|
178
|
-
}
|
|
179
|
-
ngOnChanges(changes) {
|
|
180
|
-
if ("searchOptions" in changes) {
|
|
181
|
-
const change = changes.searchOptions;
|
|
182
|
-
this.service.setSearchOptions(change.currentValue);
|
|
183
|
-
if (!change.isFirstChange() && change.currentValue !== change.previousValue && this.autoReload) {
|
|
184
|
-
this.service.search(this.resource, "");
|
|
185
|
-
this.service.items$.pipe(take(1)).subscribe(() => this.checkIfValueStillExist());
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
if ("filterFn" in changes) {
|
|
189
|
-
const change = changes.filterFn;
|
|
190
|
-
if (!change.isFirstChange() && change.currentValue !== change.previousValue) {
|
|
191
|
-
this.service.setFilterFn(change.currentValue);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
this.stateChanges.next();
|
|
195
|
-
}
|
|
196
|
-
ngDoCheck() {
|
|
197
|
-
if (this.ngControl) {
|
|
198
|
-
this.updateErrorState();
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
async writeValue(value) {
|
|
202
|
-
if (!this.componentInitialized) {
|
|
203
|
-
this.initialWriteValue = value;
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
if (this._value === value || (isNullOrUndefined(this._value) && isNullOrUndefined(value))) {
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
if (!value && this._value !== value) {
|
|
210
|
-
this.onRemove(null);
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
if (value instanceof NiceTypeaheadNewValue) {
|
|
214
|
-
this.updateSearchInput();
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
await this.service.setActiveId(this.resource, value).then(() => this.updateSearchInput());
|
|
219
|
-
}
|
|
220
|
-
this.value = value;
|
|
221
|
-
}
|
|
222
|
-
registerOnChange(propagate) {
|
|
223
|
-
this.propagate = propagate;
|
|
224
|
-
}
|
|
225
|
-
registerOnTouched(fn) {
|
|
226
|
-
// NO-OP
|
|
227
|
-
}
|
|
228
|
-
onContainerClick(event) {
|
|
229
|
-
this.stateChanges.next();
|
|
230
|
-
}
|
|
231
|
-
setDescribedByIds(ids) {
|
|
232
|
-
this.describedBy = ids.join(" ");
|
|
233
|
-
}
|
|
234
|
-
getActive() {
|
|
235
|
-
return this.service.getActive();
|
|
236
|
-
}
|
|
237
|
-
onOptionActivated(event) {
|
|
238
|
-
this.activeOption = event.option;
|
|
239
|
-
}
|
|
240
|
-
onOptionSelected(event) {
|
|
241
|
-
if (event.option.id === "new-value-option") {
|
|
242
|
-
this.value = new NiceTypeaheadNewValue(this.searchControl.value);
|
|
243
|
-
}
|
|
244
|
-
else {
|
|
245
|
-
this.updateLabel(event.option.value);
|
|
246
|
-
this.service.setActive(event.option.value);
|
|
247
|
-
this.value = this.bindValue ? this.getObjectItem(this.bindValue, event.option.value) : event.option.value;
|
|
248
|
-
}
|
|
249
|
-
this.selected.emit(this.value);
|
|
250
|
-
}
|
|
251
|
-
updateState(open) {
|
|
252
|
-
this.open = open;
|
|
253
|
-
if (!this.open) {
|
|
254
|
-
this.ngZone.run(() => {
|
|
255
|
-
this.focusChanged(false);
|
|
256
|
-
this.changeDetectorRef.markForCheck();
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
if (this.open && !this.initialized) {
|
|
260
|
-
this.service.initialize(this.resource);
|
|
261
|
-
}
|
|
262
|
-
if (!this.open && this.ngControl) {
|
|
263
|
-
this.ngControl.control.markAsTouched();
|
|
264
|
-
}
|
|
265
|
-
if (!this.open) {
|
|
266
|
-
this.activeOption = null;
|
|
267
|
-
if (!this._value && this.searchControl.value) {
|
|
268
|
-
this.onRemove();
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
onRemove(event, reload = true) {
|
|
273
|
-
if (event) {
|
|
274
|
-
// event.stopPropagation();
|
|
275
|
-
}
|
|
276
|
-
if (this.disabled) {
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
this.service.setActive(null);
|
|
280
|
-
this.value = null;
|
|
281
|
-
this.searchControl.patchValue(null);
|
|
282
|
-
if (this.ngControl?.control) {
|
|
283
|
-
this.ngControl.control.markAsTouched();
|
|
284
|
-
}
|
|
285
|
-
this.stateChanges.next();
|
|
286
|
-
this.entityRemoved.emit();
|
|
287
|
-
if (reload) {
|
|
288
|
-
this.service.search(this.resource, "");
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
formatLabel(item) {
|
|
292
|
-
if (this._labelFormatFn) {
|
|
293
|
-
return this._labelFormatFn(item);
|
|
294
|
-
}
|
|
295
|
-
if (this.bindLabel) {
|
|
296
|
-
return this.getObjectItem(this.bindLabel, item);
|
|
297
|
-
}
|
|
298
|
-
if (typeof item !== "string") {
|
|
299
|
-
return this.service.format(this.resource, item);
|
|
300
|
-
}
|
|
301
|
-
return item;
|
|
302
|
-
}
|
|
303
|
-
onEndScroll() {
|
|
304
|
-
this.service.loadMore(this.resource);
|
|
305
|
-
}
|
|
306
|
-
focusChanged(isFocused) {
|
|
307
|
-
if (isFocused !== this.focused) {
|
|
308
|
-
this.focused = isFocused;
|
|
309
|
-
this.stateChanges.next();
|
|
310
|
-
if (isFocused && this.filterFn) {
|
|
311
|
-
this.service.reloadFilteredItems();
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
reload() {
|
|
316
|
-
this.service?.search(this.resource, this.searchControl.value ?? "");
|
|
317
|
-
}
|
|
318
|
-
async reloadActive() {
|
|
319
|
-
await this.service?.reloadActive(this.resource);
|
|
320
|
-
const active = this.service?.getActive();
|
|
321
|
-
this.updateLabel(active);
|
|
322
|
-
}
|
|
323
|
-
setSearchOptions(options) {
|
|
324
|
-
this.searchOptions = options;
|
|
325
|
-
this.service.setSearchOptions(options);
|
|
326
|
-
}
|
|
327
|
-
updateLabel(item) {
|
|
328
|
-
if (!item) {
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
const label = this.formatLabel(item);
|
|
332
|
-
if (label && label !== this.searchControl.value) {
|
|
333
|
-
this.searchControl.patchValue(label, { emitEvent: false });
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
getObjectItem(key, obj) {
|
|
337
|
-
const keys = key.split(".");
|
|
338
|
-
let item = obj;
|
|
339
|
-
for (const k of keys) {
|
|
340
|
-
if (!item) {
|
|
341
|
-
return item;
|
|
342
|
-
}
|
|
343
|
-
if (!item.hasOwnProperty(k)) {
|
|
344
|
-
return item;
|
|
345
|
-
}
|
|
346
|
-
item = item[k];
|
|
347
|
-
}
|
|
348
|
-
return item;
|
|
349
|
-
}
|
|
350
|
-
updateSearchInput() {
|
|
351
|
-
if (this._value instanceof NiceTypeaheadNewValue) {
|
|
352
|
-
this.updateLabel(this._value.$new);
|
|
353
|
-
return;
|
|
354
|
-
}
|
|
355
|
-
const active = this.service.getActive();
|
|
356
|
-
if (active) {
|
|
357
|
-
this.updateLabel(active);
|
|
358
|
-
return;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
async checkIfValueStillExist() {
|
|
362
|
-
if (this._value instanceof NiceTypeaheadNewValue) {
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
365
|
-
const items = await firstValueFrom(this.service.filteredItems$);
|
|
366
|
-
const item = items.find(v => (this.bindValue && typeof v === "object" ? this.getObjectItem(this.bindValue, v) : v) === this._value);
|
|
367
|
-
if (item) {
|
|
368
|
-
return;
|
|
369
|
-
}
|
|
370
|
-
if (this._value !== null && this._value !== undefined) {
|
|
371
|
-
this.onRemove(null);
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
NiceAsyncTypeaheadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceAsyncTypeaheadComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.ErrorStateMatcher }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i3.NiceAsyncTypeaheadService }], target: i0.ɵɵFactoryTarget.Component });
|
|
376
|
-
NiceAsyncTypeaheadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NiceAsyncTypeaheadComponent, selector: "nice-async-typeahead", inputs: { resource: "resource", searchOptions: "searchOptions", autoReload: "autoReload", preloadResource: "preloadResource", allowNotFoundItems: "allowNotFoundItems", panelClass: "panelClass", bindValue: "bindValue", bindLabel: "bindLabel", placeholder: "placeholder", emptyPlaceholder: "emptyPlaceholder", optionTemplate: "optionTemplate", filterFn: "filterFn", labelFormatFn: "labelFormatFn", disabled: "disabled", value: "value", required: "required" }, outputs: { entityRemoved: "entityRemoved", selected: "selected" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [
|
|
377
|
-
{
|
|
378
|
-
provide: MatFormFieldControl,
|
|
379
|
-
useExisting: NiceAsyncTypeaheadComponent
|
|
380
|
-
},
|
|
381
|
-
NiceAsyncTypeaheadService
|
|
382
|
-
], viewQueries: [{ propertyName: "input", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "options", predicate: MatOption, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"{ loading: service.loading$ | async, loadingPage: service.loadingPage$ | async, values: service.filteredItems$ | async } as ctx\">\n <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]=\"$any(disabled)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [matAutocomplete]=\"auto\"\n [required]=\"$any(required)\"\n (focus)=\"focusChanged(true)\"\n />\n <mat-icon *ngIf=\"value && !ctx.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=\"ctx.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 class=\"-mt-2\" *ngIf=\"open && ctx.loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n\n <mat-option *ngFor=\"let option of ctx.values\" [value]=\"option\">\n <ng-container\n *ngIf=\"optionTemplate; else format\"\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n >\n </ng-container>\n <ng-template #format>\n {{ formatLabel(option) }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!ctx.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=\"!ctx.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 && ctx.loadingPage\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </mat-autocomplete>\n</ng-container>\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]=\"$any(required)\"\n />\n</ng-template>\n", styles: ["nice-async-typeahead{width:100%}nice-async-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-async-typeahead .disabled-input{flex:1 1 95%}nice-async-typeahead .arrow-container{display:flex;bottom:7px;align-self:flex-end;position:relative;text-align:center;-webkit-user-select:none;user-select:none}nice-async-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: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i5.OptionsScrollDirective, selector: "mat-autocomplete[optionsScroll]", inputs: ["thresholdPercent"], outputs: ["optionsScroll"] }, { kind: "directive", type: i6.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: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
383
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceAsyncTypeaheadComponent, decorators: [{
|
|
384
|
-
type: Component,
|
|
385
|
-
args: [{ selector: "nice-async-typeahead", encapsulation: ViewEncapsulation.None, providers: [
|
|
386
|
-
{
|
|
387
|
-
provide: MatFormFieldControl,
|
|
388
|
-
useExisting: NiceAsyncTypeaheadComponent
|
|
389
|
-
},
|
|
390
|
-
NiceAsyncTypeaheadService
|
|
391
|
-
], template: "<ng-container *ngIf=\"{ loading: service.loading$ | async, loadingPage: service.loadingPage$ | async, values: service.filteredItems$ | async } as ctx\">\n <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]=\"$any(disabled)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [matAutocomplete]=\"auto\"\n [required]=\"$any(required)\"\n (focus)=\"focusChanged(true)\"\n />\n <mat-icon *ngIf=\"value && !ctx.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=\"ctx.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 class=\"-mt-2\" *ngIf=\"open && ctx.loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n\n <mat-option *ngFor=\"let option of ctx.values\" [value]=\"option\">\n <ng-container\n *ngIf=\"optionTemplate; else format\"\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n >\n </ng-container>\n <ng-template #format>\n {{ formatLabel(option) }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!ctx.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=\"!ctx.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 && ctx.loadingPage\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </mat-autocomplete>\n</ng-container>\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]=\"$any(required)\"\n />\n</ng-template>\n", styles: ["nice-async-typeahead{width:100%}nice-async-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-async-typeahead .disabled-input{flex:1 1 95%}nice-async-typeahead .arrow-container{display:flex;bottom:7px;align-self:flex-end;position:relative;text-align:center;-webkit-user-select:none;user-select:none}nice-async-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"] }]
|
|
392
|
-
}], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
|
|
393
|
-
type: Optional
|
|
394
|
-
}, {
|
|
395
|
-
type: Self
|
|
396
|
-
}] }, { type: i1.NgForm, decorators: [{
|
|
397
|
-
type: Optional
|
|
398
|
-
}] }, { type: i1.FormGroupDirective, decorators: [{
|
|
399
|
-
type: Optional
|
|
400
|
-
}] }, { type: i2.ErrorStateMatcher }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i3.NiceAsyncTypeaheadService }]; }, propDecorators: { input: [{
|
|
401
|
-
type: ViewChild,
|
|
402
|
-
args: ["searchInput"]
|
|
403
|
-
}], options: [{
|
|
404
|
-
type: ViewChildren,
|
|
405
|
-
args: [MatOption]
|
|
406
|
-
}], entityRemoved: [{
|
|
407
|
-
type: Output
|
|
408
|
-
}], resource: [{
|
|
409
|
-
type: Input
|
|
410
|
-
}], searchOptions: [{
|
|
411
|
-
type: Input
|
|
412
|
-
}], autoReload: [{
|
|
413
|
-
type: Input
|
|
414
|
-
}], preloadResource: [{
|
|
415
|
-
type: Input
|
|
416
|
-
}], allowNotFoundItems: [{
|
|
417
|
-
type: Input
|
|
418
|
-
}], panelClass: [{
|
|
419
|
-
type: Input
|
|
420
|
-
}], bindValue: [{
|
|
421
|
-
type: Input
|
|
422
|
-
}], bindLabel: [{
|
|
423
|
-
type: Input
|
|
424
|
-
}], placeholder: [{
|
|
425
|
-
type: Input
|
|
426
|
-
}], emptyPlaceholder: [{
|
|
427
|
-
type: Input
|
|
428
|
-
}], optionTemplate: [{
|
|
429
|
-
type: Input
|
|
430
|
-
}], filterFn: [{
|
|
431
|
-
type: Input
|
|
432
|
-
}], selected: [{
|
|
433
|
-
type: Output
|
|
434
|
-
}], labelFormatFn: [{
|
|
435
|
-
type: Input
|
|
436
|
-
}], disabled: [{
|
|
437
|
-
type: Input
|
|
438
|
-
}], value: [{
|
|
439
|
-
type: Input
|
|
440
|
-
}], required: [{
|
|
441
|
-
type: Input
|
|
442
|
-
}], shouldLabelFloat: [{
|
|
443
|
-
type: HostBinding,
|
|
444
|
-
args: ["class.floating"]
|
|
445
|
-
}], id: [{
|
|
446
|
-
type: HostBinding
|
|
447
|
-
}], describedBy: [{
|
|
448
|
-
type: HostBinding,
|
|
449
|
-
args: ["attr.aria-describedby"]
|
|
450
|
-
}] } });
|
|
451
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBSU4sUUFBUSxFQUFFLE1BQU0sRUFDaEIsSUFBSSxFQUVKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FB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QUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLDZCQUE2Qjt5QkFDM0M7d0JBQ0QseUJBQXlCO3FCQUM1Qjs7MEJBaUtJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzswQkFDUixRQUFRO3lLQWxKTixLQUFLO3NCQURYLFNBQVM7dUJBQUMsYUFBYTtnQkFJakIsT0FBTztzQkFEYixZQUFZO3VCQUFDLFNBQVM7Z0JBSWhCLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxlQUFlO3NCQURyQixLQUFLO2dCQUlDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxNQUFNO2dCQUlJLGFBQWE7c0JBRHZCLEtBQUs7Z0JBV0ssUUFBUTtzQkFEbEIsS0FBSztnQkFpQ0ssS0FBSztzQkFEZixLQUFLO2dCQWtCSyxRQUFRO3NCQURsQixLQUFLO2dCQVVLLGdCQUFnQjtzQkFEMUIsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBTXRCLEVBQUU7c0JBRFIsV0FBVztnQkFJTCxXQUFXO3NCQURqQixXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2VyY2lvblwiO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTmdGb3JtLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyLCBNYXRPcHRpb24sIG1peGluRXJyb3JTdGF0ZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0ICogYXMgdXVpZCBmcm9tIFwidXVpZFwiO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE5pY2VUeXBlYWhlYWROZXdWYWx1ZSB9IGZyb20gXCIuLi90eXBlYWhlYWRcIjtcbmltcG9ydCB7IE5pY2VBc3luY1R5cGVhaGVhZFNlcnZpY2UgfSBmcm9tIFwiLi9wcm92aWRlcnMvYXN5bmMtdHlwZWFoZWFkLnNlcnZpY2VcIjtcblxuLy8gQm9pbGVycGxhdGUgZm9yIGFwcGx5aW5nIG1peGlucyB0byApLlxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmNvbnN0IF9CYXNlQXN5bmNUeXBlYWhlYWRDb21wb25lbnQgPSBtaXhpbkVycm9yU3RhdGUoXG4gICAgY2xhc3Mge1xuICAgICAgICAvKipcbiAgICAgICAgICogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBzdGF0ZSBjaGFuZ2VzIGFuZCBzaG91bGQgY2F1c2UgdGhlIHBhcmVudFxuICAgICAgICAgKiBmb3JtIGZpZWxkIHRvIHVwZGF0ZS4gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgTWF0Rm9ybUZpZWxkQ29udHJvbGAuXG4gICAgICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAgICAgY29uc3RydWN0b3IoXG4gICAgICAgICAgICBwdWJsaWMgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICAgICAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICAgICAgICAgIHB1YmxpYyBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm0gY29udHJvbCBib3VuZCB0byB0aGUgY29tcG9uZW50LlxuICAgICAgICAgICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgTWF0Rm9ybUZpZWxkQ29udHJvbGAuXG4gICAgICAgICAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbFxuICAgICAgICApIHt9XG4gICAgfVxuKTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibmljZS1hc3luYy10eXBlYWhlYWRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCJhc3luYy10eXBlYWhlYWQudGVtcGxhdGUuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiYXN5bmMtdHlwZWFoZWFkLnN0eWxlLnNjc3NcIl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBOaWNlQXN5bmNUeXBlYWhlYWRDb21wb25lbnRcbiAgICAgICAgfSxcbiAgICAgICAgTmljZUFzeW5jVHlwZWFoZWFkU2VydmljZVxuICAgIF1cbn0pXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG5leHBvcnQgY2xhc3MgTmljZUFzeW5jVHlwZWFoZWFkQ29tcG9uZW50IGV4dGVuZHMgX0Jhc2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBNYXRGb3JtRmllbGRDb250cm9sPGFueT4sIERvQ2hlY2sge1xuICAgIHB1YmxpYyBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHB1YmxpYyBjb250cm9sVHlwZSA9IFwicmVtb3RlLXR5cGVhaGVhZFwiO1xuICAgIHB1YmxpYyBmb2N1c2VkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2VzU3ViJDogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyBvcGVuID0gZmFsc2U7XG4gICAgcHVibGljIHBhbmVsV2lkdGggPSAwO1xuICAgIHB1YmxpYyBhY3RpdmVPcHRpb246IE1hdE9wdGlvbjtcblxuICAgIHB1YmxpYyBhY3RpdmUkID0gdGhpcy5zZXJ2aWNlLmFjdGl2ZSQ7XG5cbiAgICBAVmlld0NoaWxkKFwic2VhcmNoSW5wdXRcIilcbiAgICBwdWJsaWMgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkcmVuKE1hdE9wdGlvbilcbiAgICBwdWJsaWMgb3B0aW9uczogTWF0T3B0aW9uW107XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZW50aXR5UmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlc291cmNlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hPcHRpb25zOiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvUmVsb2FkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHByZWxvYWRSZXNvdXJjZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWxsb3dOb3RGb3VuZEl0ZW1zID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYW5lbENsYXNzOiBzdHJpbmcgfCBzdHJpbmdbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYmluZFZhbHVlID0gXCJpZFwiO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYmluZExhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW1wdHlQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3B0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbHRlckZuOiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgbGFiZWxGb3JtYXRGbihsYWJlbEZvcm1hdEZuOiAoaXRlbTogYW55KSA9PiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbGFiZWxGb3JtYXRGbiA9IGxhYmVsRm9ybWF0Rm47XG4gICAgfVxuICAgIHByaXZhdGUgX2xhYmVsRm9ybWF0Rm46IChpdGVtOiBhbnkpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCcm93c2VycyBtYXkgbm90IGZpcmUgdGhlIGJsdXIgZXZlbnQgaWYgdGhlIGlucHV0IGlzIGRpc2FibGVkIHRvbyBxdWlja2x5LlxuICAgICAgICAvLyBSZXNldCBmcm9tIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgZG9lc24ndCBiZWNvbWUgc3R1Y2suXG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmRpc2FibGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8/IHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz8gZmFsc2U7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5mbG9hdGluZ1wiKVxuICAgIHB1YmxpYyBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoKVxuICAgIHB1YmxpYyBpZDogc3RyaW5nID0gdXVpZC52NCgpO1xuXG4gICAgQEhvc3RCaW5kaW5nKFwiYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XCIpXG4gICAgcHVibGljIGRlc2NyaWJlZEJ5ID0gXCJcIjtcblxuXG4gICAgcHJpdmF0ZSBjb21wb25lbnRJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgaW5pdGlhbFdyaXRlVmFsdWU/OiBhbnk7XG5cbiAgICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKCF0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUgfHwgIXRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZS5sZW5ndGgpICYmXG4gICAgICAgICAgICAoIXRoaXMuX3ZhbHVlIHx8ICh0eXBlb2YgdGhpcy5fdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXRoaXMuX3ZhbHVlLmxlbmd0aCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRJbml0aWFsaXplZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcm9wYWdhdGU6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgICAgICBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICAgICAgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBzZXJ2aWNlOiBOaWNlQXN5bmNUeXBlYWhlYWRTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcihkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsIHBhcmVudEZvcm0sIHBhcmVudEZvcm1Hcm91cCwgbmdDb250cm9sKTtcblxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnNlcnZpY2UubGlzdGVuRm9yUmVxdWVzdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHN0YXR1cyA9PT0gXCJESVNBQkxFRFwiO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5maWx0ZXJGbikge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNldEZpbHRlckZuKHRoaXMuZmlsdGVyRm4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWIkID0gdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUodGV4dCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VhcmNoKHRoaXMucmVzb3VyY2UsIHRleHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wcmVsb2FkUmVzb3VyY2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZWFyY2godGhpcy5yZXNvdXJjZSwgXCJcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbXBvbmVudEluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFdyaXRlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy53cml0ZVZhbHVlKHRoaXMuaW5pdGlhbFdyaXRlVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZpY2UuY2xvc2VSZXF1ZXN0U3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VzU3ViJC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChcInNlYXJjaE9wdGlvbnNcIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2UgPSBjaGFuZ2VzLnNlYXJjaE9wdGlvbnM7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0U2VhcmNoT3B0aW9ucyhjaGFuZ2UuY3VycmVudFZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKCFjaGFuZ2UuaXNGaXJzdENoYW5nZSgpICYmIGNoYW5nZS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZS5wcmV2aW91c1ZhbHVlICYmIHRoaXMuYXV0b1JlbG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZWFyY2godGhpcy5yZXNvdXJjZSwgXCJcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLml0ZW1zJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoZWNrSWZWYWx1ZVN0aWxsRXhpc3QoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXCJmaWx0ZXJGblwiIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZSA9IGNoYW5nZXMuZmlsdGVyRm47XG4gICAgICAgICAgICBpZiAoIWNoYW5nZS5pc0ZpcnN0Q2hhbmdlKCkgJiYgY2hhbmdlLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0RmlsdGVyRm4oY2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUVycm9yU3RhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudEluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxXcml0ZVZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fdmFsdWUgPT09IHZhbHVlIHx8IChpc051bGxPclVuZGVmaW5lZCh0aGlzLl92YWx1ZSkgJiYgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSAmJiB0aGlzLl92YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMub25SZW1vdmUobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VhcmNoSW5wdXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5zZXRBY3RpdmVJZCh0aGlzLnJlc291cmNlLCB2YWx1ZSkudGhlbigoKSA9PiB0aGlzLnVwZGF0ZVNlYXJjaElucHV0KCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKHByb3BhZ2F0ZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGUgPSBwcm9wYWdhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gTk8tT1BcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKFwiIFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWN0aXZlPFQgPSBhbnk+KCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEFjdGl2ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk9wdGlvbkFjdGl2YXRlZChldmVudDogTWF0QXV0b2NvbXBsZXRlQWN0aXZhdGVkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSBldmVudC5vcHRpb247XG4gICAgfVxuXG4gICAgcHVibGljIG9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50Lm9wdGlvbi5pZCA9PT0gXCJuZXctdmFsdWUtb3B0aW9uXCIpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgTmljZVR5cGVhaGVhZE5ld1ZhbHVlKHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKGV2ZW50Lm9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0QWN0aXZlKGV2ZW50Lm9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5iaW5kVmFsdWUgPyB0aGlzLmdldE9iamVjdEl0ZW0odGhpcy5iaW5kVmFsdWUsIGV2ZW50Lm9wdGlvbi52YWx1ZSkgOiBldmVudC5vcHRpb24udmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVN0YXRlKG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gb3BlbjtcblxuICAgICAgICBpZiAoIXRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzQ2hhbmdlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3BlbiAmJiAhdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmluaXRpYWxpemUodGhpcy5yZXNvdXJjZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMub3BlbiAmJiB0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSBudWxsO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl92YWx1ZSAmJiB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmUoZXZlbnQ/OiBFdmVudCwgcmVsb2FkID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIC8vIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNldEFjdGl2ZShudWxsKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5wYXRjaFZhbHVlKG51bGwpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcblxuICAgICAgICB0aGlzLmVudGl0eVJlbW92ZWQuZW1pdCgpO1xuXG4gICAgICAgIGlmIChyZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZWFyY2godGhpcy5yZXNvdXJjZSwgXCJcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0TGFiZWwoaXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuX2xhYmVsRm9ybWF0Rm4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sYWJlbEZvcm1hdEZuKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYmluZExhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RJdGVtKHRoaXMuYmluZExhYmVsLCBpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5mb3JtYXQodGhpcy5yZXNvdXJjZSwgaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FbmRTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VydmljZS5sb2FkTW9yZSh0aGlzLnJlc291cmNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNDaGFuZ2VkKGlzRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNGb2N1c2VkICE9PSB0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcblxuICAgICAgICAgICAgaWYgKGlzRm9jdXNlZCAmJiB0aGlzLmZpbHRlckZuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnJlbG9hZEZpbHRlcmVkSXRlbXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWxvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VydmljZT8uc2VhcmNoKHRoaXMucmVzb3VyY2UsIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSA/PyBcIlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVsb2FkQWN0aXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2U/LnJlbG9hZEFjdGl2ZSh0aGlzLnJlc291cmNlKTtcbiAgICAgICAgY29uc3QgYWN0aXZlID0gdGhpcy5zZXJ2aWNlPy5nZXRBY3RpdmUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVMYWJlbChhY3RpdmUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTZWFyY2hPcHRpb25zKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0U2VhcmNoT3B0aW9ucyhvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxhYmVsKGl0ZW06IHVua25vd24gfCBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZm9ybWF0TGFiZWwoaXRlbSk7XG5cbiAgICAgICAgaWYgKGxhYmVsICYmIGxhYmVsICE9PSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5wYXRjaFZhbHVlKGxhYmVsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9iamVjdEl0ZW0oa2V5OiBzdHJpbmcsIG9iajogb2JqZWN0KTogYW55IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdChcIi5cIik7XG4gICAgICAgIGxldCBpdGVtID0gb2JqO1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXRlbS5oYXNPd25Qcm9wZXJ0eShrKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1ba107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVNlYXJjaElucHV0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fdmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwodGhpcy5fdmFsdWUuJG5ldyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhY3RpdmUgPSB0aGlzLnNlcnZpY2UuZ2V0QWN0aXZlKCk7XG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwoYWN0aXZlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tJZlZhbHVlU3RpbGxFeGlzdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlIGluc3RhbmNlb2YgTmljZVR5cGVhaGVhZE5ld1ZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5maWx0ZXJlZEl0ZW1zJCk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtcy5maW5kKFxuICAgICAgICAgICAgdiA9PiAodGhpcy5iaW5kVmFsdWUgJiYgdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgPyB0aGlzLmdldE9iamVjdEl0ZW0odGhpcy5iaW5kVmFsdWUsIHYpIDogdikgPT09IHRoaXMuX3ZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fdmFsdWUgIT09IG51bGwgJiYgdGhpcy5fdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5vblJlbW92ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7IGxvYWRpbmc6IHNlcnZpY2UubG9hZGluZyQgfCBhc3luYywgbG9hZGluZ1BhZ2U6IHNlcnZpY2UubG9hZGluZ1BhZ2UkIHwgYXN5bmMsIHZhbHVlczogc2VydmljZS5maWx0ZXJlZEl0ZW1zJCB8IGFzeW5jIH0gYXMgY3R4XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXhcIiAqbmdJZj1cIiFkaXNhYmxlZDsgZWxzZSBkaXNhYmxlXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWF1dG9cIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgbmFtZT1cIm1hdC1hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiRhbnkoZGlzYWJsZWQpXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiXG4gICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiRhbnkocmVxdWlyZWQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJmb2N1c0NoYW5nZWQodHJ1ZSlcIlxuICAgICAgICAvPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJ2YWx1ZSAmJiAhY3R4LmxvYWRpbmdcIiBtYXRTdWZmaXggY2xhc3M9XCJjbG9zZS1idXR0b24gc2Vjb25kYXJ5LXRleHRcIiAoY2xpY2spPVwib25SZW1vdmUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgY2xvc2VcbiAgICAgICAgPC9tYXQtaWNvbj5cblxuICAgICAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJzZWxmLWNlbnRlclwiIFtkaWFtZXRlcl09XCIxNlwiICpuZ0lmPVwiY3R4LmxvYWRpbmdcIj48L21hdC1zcGlubmVyPlxuICAgIDwvZGl2PlxuICAgIDxtYXQtYXV0b2NvbXBsZXRlXG4gICAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW3BhbmVsV2lkdGhdPVwicGFuZWxXaWR0aFwiXG4gICAgICAgIFtjbGFzc109XCJwYW5lbENsYXNzXCJcbiAgICAgICAgKG9wdGlvbkFjdGl2YXRlZCk9XCJvbk9wdGlvbkFjdGl2YXRlZCgkZXZlbnQpXCJcbiAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIChjbG9zZWQpPVwidXBkYXRlU3RhdGUoZmFsc2UpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJ1cGRhdGVTdGF0ZSh0cnVlKVwiXG4gICAgICAgIChvcHRpb25zU2Nyb2xsKT1cIm9uRW5kU2Nyb2xsKClcIlxuICAgICAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cbiAgICA+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNsYXNzPVwiLW10LTJcIiAqbmdJZj1cIm9wZW4gJiYgY3R4LmxvYWRpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cblxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGN0eC52YWx1ZXNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZTsgZWxzZSBmb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtYXQ+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0TGFiZWwob3B0aW9uKSB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cIiFjdHgudmFsdWVzPy5sZW5ndGggJiYgIWFsbG93Tm90Rm91bmRJdGVtc1wiIGRpc2FibGVkPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5UGxhY2Vob2xkZXI7IGVsc2UgZGVmYXVsdEVtcHR5UGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICB7eyBlbXB0eVBsYWNlaG9sZGVyIH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5UGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAge3sgXCJjb21wb25lbnRzLnR5cGVhaGVhZC5ub19pdGVtX2ZvdW5kXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhY3R4LnZhbHVlcz8ubGVuZ3RoICYmIGFsbG93Tm90Rm91bmRJdGVtc1wiIGlkPVwibmV3LXZhbHVlLW9wdGlvblwiIFt2YWx1ZV09XCJzZWFyY2hDb250cm9sLnZhbHVlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0YWxpY1wiPnt7IHNlYXJjaENvbnRyb2wudmFsdWUgfX08L3NwYW4+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJvcGVuICYmIGN0eC5sb2FkaW5nUGFnZVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Rpc2FibGU+XG4gICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIGNsYXNzPVwiZGlzYWJsZWQtaW5wdXRcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgICBbcmVxdWlyZWRdPVwiJGFueShyZXF1aXJlZClcIlxuICAgIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from "@angular/common";
|
|
2
|
-
import { NgModule } from "@angular/core";
|
|
3
|
-
import { MatButtonModule } from "@angular/material/button";
|
|
4
|
-
import { MatCardModule } from "@angular/material/card";
|
|
5
|
-
import { MatIconModule } from "@angular/material/icon";
|
|
6
|
-
import { TranslateModule } from "@ngx-translate/core";
|
|
7
|
-
import { CarouselComponent } from "./carousel.component";
|
|
8
|
-
import { PictureModalComponent } from "./picture-modal";
|
|
9
|
-
import { PictureModalService } from "./picture-modal";
|
|
10
|
-
import { CarouselLayoutPipe } from "./pipe/carousel-layout.pipe";
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
export class NiceCarouselModule {
|
|
13
|
-
}
|
|
14
|
-
NiceCarouselModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceCarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
-
NiceCarouselModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: NiceCarouselModule, declarations: [CarouselComponent, PictureModalComponent, CarouselLayoutPipe], imports: [CommonModule,
|
|
16
|
-
MatCardModule,
|
|
17
|
-
MatButtonModule,
|
|
18
|
-
TranslateModule,
|
|
19
|
-
MatIconModule], exports: [CarouselComponent] });
|
|
20
|
-
NiceCarouselModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceCarouselModule, providers: [PictureModalService], imports: [CommonModule,
|
|
21
|
-
MatCardModule,
|
|
22
|
-
MatButtonModule,
|
|
23
|
-
TranslateModule,
|
|
24
|
-
MatIconModule] });
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceCarouselModule, decorators: [{
|
|
26
|
-
type: NgModule,
|
|
27
|
-
args: [{
|
|
28
|
-
imports: [
|
|
29
|
-
CommonModule,
|
|
30
|
-
MatCardModule,
|
|
31
|
-
MatButtonModule,
|
|
32
|
-
TranslateModule,
|
|
33
|
-
MatIconModule
|
|
34
|
-
],
|
|
35
|
-
exports: [CarouselComponent],
|
|
36
|
-
declarations: [CarouselComponent, PictureModalComponent, CarouselLayoutPipe],
|
|
37
|
-
entryComponents: [PictureModalComponent],
|
|
38
|
-
providers: [PictureModalService]
|
|
39
|
-
}]
|
|
40
|
-
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS11aS1raXQtdjIvc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBZWpFLE1BQU0sT0FBTyxrQkFBa0I7OytHQUFsQixrQkFBa0I7Z0hBQWxCLGtCQUFrQixpQkFKWixpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsYUFQdkUsWUFBWTtRQUNaLGFBQWE7UUFDYixlQUFlO1FBQ2YsZUFBZTtRQUNmLGFBQWEsYUFFUCxpQkFBaUI7Z0hBS2xCLGtCQUFrQixhQUZoQixDQUFDLG1CQUFtQixDQUFDLFlBVDVCLFlBQVk7UUFDWixhQUFhO1FBQ2IsZUFBZTtRQUNmLGVBQWU7UUFDZixhQUFhOzJGQU9SLGtCQUFrQjtrQkFiOUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixhQUFhO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDNUIsWUFBWSxFQUFFLENBQUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLENBQUM7b0JBQzVFLGVBQWUsRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUN4QyxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NhcmRcIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IENhcm91c2VsQ29tcG9uZW50IH0gZnJvbSBcIi4vY2Fyb3VzZWwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBQaWN0dXJlTW9kYWxDb21wb25lbnQgfSBmcm9tIFwiLi9waWN0dXJlLW1vZGFsXCI7XG5pbXBvcnQgeyBQaWN0dXJlTW9kYWxTZXJ2aWNlIH0gZnJvbSBcIi4vcGljdHVyZS1tb2RhbFwiO1xuaW1wb3J0IHsgQ2Fyb3VzZWxMYXlvdXRQaXBlIH0gZnJvbSBcIi4vcGlwZS9jYXJvdXNlbC1sYXlvdXQucGlwZVwiO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRDYXJkTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogW0Nhcm91c2VsQ29tcG9uZW50XSxcbiAgICBkZWNsYXJhdGlvbnM6IFtDYXJvdXNlbENvbXBvbmVudCwgUGljdHVyZU1vZGFsQ29tcG9uZW50LCBDYXJvdXNlbExheW91dFBpcGVdLFxuICAgIGVudHJ5Q29tcG9uZW50czogW1BpY3R1cmVNb2RhbENvbXBvbmVudF0sXG4gICAgcHJvdmlkZXJzOiBbUGljdHVyZU1vZGFsU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTmljZUNhcm91c2VsTW9kdWxlIHt9XG4iXX0=
|