@recursyve/nice-ui-kit.v2 14.0.0-beta.112 → 14.0.0-beta.113
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/esm2020/lib/components/assets-carousel/assets-carousel.component.mjs +15 -4
- package/fesm2015/recursyve-nice-ui-kit.v2.mjs +15 -2
- package/fesm2015/recursyve-nice-ui-kit.v2.mjs.map +1 -1
- package/fesm2020/recursyve-nice-ui-kit.v2.mjs +13 -2
- package/fesm2020/recursyve-nice-ui-kit.v2.mjs.map +1 -1
- package/lib/components/assets-carousel/assets-carousel.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recursyve-nice-ui-kit.v2.mjs","sources":["../../../projects/nice-ui-kit-v2/src/lib/animations/defaults.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/expand-collapse.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/fade.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/shake.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/slide.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/zoom.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/public-api.ts","../../../projects/nice-ui-kit-v2/src/lib/api/exceptions/api.exception.ts","../../../projects/nice-ui-kit-v2/src/lib/api/exceptions/exception.factory.ts","../../../projects/nice-ui-kit-v2/src/lib/api/interceptors/transform-response.interceptor.ts","../../../projects/nice-ui-kit-v2/src/lib/api/nice.api.ts","../../../projects/nice-ui-kit-v2/src/lib/components/alert/alert.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/utils/utils.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/utils/utils.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/alert/alert.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/alert/alert.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/alert/alert.module.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/type.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/array.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/case.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/colors.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/date.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/file.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/font-awesome.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/form-data.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/http-status.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/keyboard.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/lexorank.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/modal.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/number.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/object.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/promise.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/query-params.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/regex.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/url.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/components/assets-carousel/assets-carousel.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/components/assets-carousel/directives/assets-carousel-active-content.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/dropzone/dropzone.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/assets-carousel/assets-carousel.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/assets-carousel/assets-carousel.template.html","../../../projects/nice-ui-kit-v2/src/lib/directives/dropzone/dropzone.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/assets-carousel/assets-carousel.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/providers/async-typeahead.provider.ts","../../../projects/nice-ui-kit-v2/src/lib/components/typeahead/directives/options-scroll.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/typeahead/typeahead.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/typeahead/typeahead.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/typeahead/directives/options-scroll.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/typeahead/typeahead.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/async-typeahead.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/providers/async-typeahead.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/async-typeahead.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/async-typeahead.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/async-typeahead.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/base-form/base-form.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/base-form/form-submit.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/base-form/base-form.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/base-form/nice-base.form.ts","../../../projects/nice-ui-kit-v2/src/lib/components/card/card.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/card/card.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/card/card.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/picture-modal/picture-modal.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/picture-modal/picture-modal.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/picture-modal/picture-modal.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/pipe/carousel-layout.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/carousel.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/carousel.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/carousel.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/collapsable/collapsable.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/collapsable/collapsable.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/collapsable/collapsable.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/providers/date-range-picker.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/components/range-preset/range-preset.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/components/range-preset/range-preset.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/components/header/header.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/components/header/header.template.html","../../../projects/nice-ui-kit-v2/src/lib/pipes/localized-date.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/date-range-picker.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/date-range-picker.template.html","../../../projects/nice-ui-kit-v2/src/lib/pipes/boolean.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/capitalize-first-letter.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/ceil.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/entries.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/find-by-key.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/first-letter.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/floor.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/join-if-defined.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/link.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/localized-boolean.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/localized-currency.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/localized-date-only.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/minutes-to-time.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/number-to-ordinal-indicator.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/pad.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/phone.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/postal-code.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/round.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/range.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/seconds-to-time.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/sanitize-bypass.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/track-by-prop.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/pipes.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/date-range-picker.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/drawer/drawer.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/config/config.constants.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/config/config.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/config/config.module.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/media-watcher/media-watcher.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/media-watcher/media-watcher.module.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/splash-screen/splash-screen.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/splash-screen/splash-screen.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/drawer/drawer.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/drawer/drawer.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/drawer/drawer.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/export-bottom-sheet/providers/export-bottom-sheet.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/export-bottom-sheet/export-bottom-sheet.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/export-bottom-sheet/export-bottom-sheet.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/export-bottom-sheet/export-bottom-sheet.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/form-error/form-error.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/form-error/control-status.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/form-error/form-error.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/horizontal-stepper/horizontal-stepper.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/horizontal-stepper/horizontal-stepper.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/horizontal-stepper/step.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/horizontal-stepper/horizontal-stepper.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/image-cropper/resize-canvas.ts","../../../projects/nice-ui-kit-v2/src/lib/components/image-cropper/image-cropper.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/image-cropper/image-cropper.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/image-cropper/image-cropper-area.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/image-cropper/image-cropper.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/layout/layout.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/layout/layout.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/loading-spinner/loading-spinner.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/loading-spinner/loading-spinner.template.html","../../../projects/nice-ui-kit-v2/src/lib/providers/overlay/dynamic-overlay-container.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/overlay/dynamic-overlay.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/loading-spinner/loading.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/components/loading-spinner/loading.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/loading-spinner/loading-spinner.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/lottie/lottie.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/lottie/lottie.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/lottie/lottie.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/components/hint-component-base.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/navigation.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/navigation.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/basic/basic.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/basic/basic.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/divider/divider.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/divider/divider.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/pipes/should-hide.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/branch/branch.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/branch/branch.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/spacer/spacer.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/spacer/spacer.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/horizontal.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/horizontal.component.html","../../../projects/nice-ui-kit-v2/src/lib/directives/scrollbar/scrollbar.types.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/scrollbar/scrollbar.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/scrollbar/scrollbar.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/providers/hint.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/directives/show-hint.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/pipes/should-show-hint.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/basic/basic.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/basic/basic.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/divider/divider.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/divider/divider.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/spacer/spacer.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/spacer/spacer.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/collapsable/collapsable.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/collapsable/collapsable.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/group/group.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/group/group.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/aside/aside.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/aside/aside.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/vertical.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/vertical.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/navigation.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/providers/hide-item.resolver.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/providers/hint.resolver.ts","../../../projects/nice-ui-kit-v2/src/lib/components/search-bar/search-bar.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/search-bar/search-bar.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/search-bar/search-bar.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toast/toast.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toast/toast.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/toast/toast.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toast/toast.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toast/toast.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toggle-button-group/toggle-button.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toggle-button-group/toggle-button-group.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toggle-button-group/toggle-button-group.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/toggle-button-group/toggle-button-group.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/autofocus/autofocus.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/autofocus/autofocus.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/autogrow/autogrow.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/autogrow/autogrow.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list-items/chip-list-items.component.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list-items/chip-list-items.template.html","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/draggable-list/draggable-list.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/draggable-list/draggable-list.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/image-error-placeholder/image-error-placeholder.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/image-error-placeholder/image-error-placeholder.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/material/nice-material-style.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/material/nice-rounded-style.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/material/material.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/modals/modal-opener.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/modals/modal-on-click.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/scroll-reset/scroll-reset.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/scroll-reset/scroll-reset.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/stop-propagation/click-stop-propagation.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/stop-propagation/stop-propagation.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/window/prevent-close-window.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/window/window-directive.module.ts","../../../projects/nice-ui-kit-v2/src/lib/nice.module.ts","../../../projects/nice-ui-kit-v2/src/public-api.ts","../../../projects/nice-ui-kit-v2/src/recursyve-nice-ui-kit.v2.ts"],"sourcesContent":["import { animate, animation, style, transition, trigger, useAnimation } from \"@angular/animations\";\n\nexport class NiceAnimationCurves {\n static STANDARD_CURVE = \"cubic-bezier(0.4, 0.0, 0.2, 1)\";\n static DECELERATION_CURVE = \"cubic-bezier(0.0, 0.0, 0.2, 1)\";\n static ACCELERATION_CURVE = \"cubic-bezier(0.4, 0.0, 1, 1)\";\n static SHARP_CURVE = \"cubic-bezier(0.4, 0.0, 0.6, 1)\";\n}\n\nexport class NiceAnimationDurations {\n static COMPLEX = \"375ms\";\n static ENTERING = \"225ms\";\n static EXITING = \"195ms\";\n}\n\nconst customAnimation = animation([\n style({\n opacity: \"{{opacity}}\",\n transform: \"scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})\"\n }),\n animate(\"{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)\", style(\"*\"))\n], {\n params: {\n duration: \"200ms\",\n delay: \"0ms\",\n opacity: \"0\",\n scale: \"1\",\n x: \"0\",\n y: \"0\",\n z: \"0\"\n }\n});\n\nconst defaultAnimation = trigger(\"animate\", [transition(\"void => *\", [useAnimation(customAnimation)])]);\n\nexport { defaultAnimation };\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { NiceAnimationCurves, NiceAnimationDurations } from \"./defaults\";\n\n// -----------------------------------------------------------------------------------------------------\n// @ Expand / collapse\n// -----------------------------------------------------------------------------------------------------\nconst expandCollapse = trigger(\"expandCollapse\",\n [\n state(\"void, collapsed\",\n style({\n height: \"0\"\n })\n ),\n\n state(\"*, expanded\",\n style(\"*\")\n ),\n\n // Prevent the transition if the state is false\n transition(\"void <=> false, collapsed <=> false, expanded <=> false\", []),\n\n // Transition\n transition(\"void <=> *, collapsed <=> expanded\",\n animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\nexport { expandCollapse };\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { NiceAnimationCurves, NiceAnimationDurations } from \"./defaults\";\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in\n// -----------------------------------------------------------------------------------------------------\nconst fadeIn = trigger(\"fadeIn\",\n [\n state(\"void\",\n style({\n opacity: 0\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in top\n// -----------------------------------------------------------------------------------------------------\nconst fadeInTop = trigger(\"fadeInTop\",\n [\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(0, -100%, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in bottom\n// -----------------------------------------------------------------------------------------------------\nconst fadeInBottom = trigger(\"fadeInBottom\",\n [\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(0, 100%, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in left\n// -----------------------------------------------------------------------------------------------------\nconst fadeInLeft = trigger(\"fadeInLeft\",\n [\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(-100%, 0, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in right\n// -----------------------------------------------------------------------------------------------------\nconst fadeInRight = trigger(\"fadeInRight\",\n [\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(100%, 0, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out\n// -----------------------------------------------------------------------------------------------------\nconst fadeOut = trigger(\"fadeOut\",\n [\n state(\"*\",\n style({\n opacity: 1\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out top\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutTop = trigger(\"fadeOutTop\",\n [\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(0, -100%, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out bottom\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutBottom = trigger(\"fadeOutBottom\",\n [\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(0, 100%, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out left\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutLeft = trigger(\"fadeOutLeft\",\n [\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(-100%, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out right\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutRight = trigger(\"fadeOutRight\",\n [\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(100%, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\nexport { fadeIn, fadeInTop, fadeInBottom, fadeInLeft, fadeInRight, fadeOut, fadeOutTop, fadeOutBottom, fadeOutLeft, fadeOutRight };\n","import { animate, keyframes, style, transition, trigger } from \"@angular/animations\";\n\n// -----------------------------------------------------------------------------------------------------\n// @ Shake\n// -----------------------------------------------------------------------------------------------------\nconst shake = trigger(\"shake\",\n [\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *, * => true\",\n [\n animate(\"{{timings}}\",\n keyframes([\n style({\n transform: \"translate3d(0, 0, 0)\",\n offset: 0\n }),\n style({\n transform: \"translate3d(-10px, 0, 0)\",\n offset: 0.1\n }),\n style({\n transform: \"translate3d(10px, 0, 0)\",\n offset: 0.2\n }),\n style({\n transform: \"translate3d(-10px, 0, 0)\",\n offset: 0.3\n }),\n style({\n transform: \"translate3d(10px, 0, 0)\",\n offset: 0.4\n }),\n style({\n transform: \"translate3d(-10px, 0, 0)\",\n offset: 0.5\n }),\n style({\n transform: \"translate3d(10px, 0, 0)\",\n offset: 0.6\n }),\n style({\n transform: \"translate3d(-10px, 0, 0)\",\n offset: 0.7\n }),\n style({\n transform: \"translate3d(10px, 0, 0)\",\n offset: 0.8\n }),\n style({\n transform: \"translate3d(-10px, 0, 0)\",\n offset: 0.9\n }),\n style({\n transform: \"translate3d(0, 0, 0)\",\n offset: 1\n })\n ])\n )\n ],\n {\n params: {\n timings: \"0.8s cubic-bezier(0.455, 0.03, 0.515, 0.955)\"\n }\n }\n )\n ]\n);\n\nexport { shake };\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { NiceAnimationCurves, NiceAnimationDurations } from \"./defaults\";\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in top\n// -----------------------------------------------------------------------------------------------------\nconst slideInTop = trigger(\"slideInTop\",\n [\n state(\"void\",\n style({\n transform: \"translate3d(0, -100%, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in bottom\n// -----------------------------------------------------------------------------------------------------\nconst slideInBottom = trigger(\"slideInBottom\",\n [\n state(\"void\",\n style({\n transform: \"translate3d(0, 100%, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in left\n// -----------------------------------------------------------------------------------------------------\nconst slideInLeft = trigger(\"slideInLeft\",\n [\n state(\"void\",\n style({\n transform: \"translate3d(-100%, 0, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in right\n// -----------------------------------------------------------------------------------------------------\nconst slideInRight = trigger(\"slideInRight\",\n [\n state(\"void\",\n style({\n transform: \"translate3d(100%, 0, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out top\n// -----------------------------------------------------------------------------------------------------\nconst slideOutTop = trigger(\"slideOutTop\",\n [\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n transform: \"translate3d(0, -100%, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out bottom\n// -----------------------------------------------------------------------------------------------------\nconst slideOutBottom = trigger(\"slideOutBottom\",\n [\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n transform: \"translate3d(0, 100%, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out left\n// -----------------------------------------------------------------------------------------------------\nconst slideOutLeft = trigger(\"slideOutLeft\",\n [\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n transform: \"translate3d(-100%, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out right\n// -----------------------------------------------------------------------------------------------------\nconst slideOutRight = trigger(\"slideOutRight\",\n [\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n transform: \"translate3d(100%, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\nexport { slideInTop, slideInBottom, slideInLeft, slideInRight, slideOutTop, slideOutBottom, slideOutLeft, slideOutRight };\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { NiceAnimationCurves, NiceAnimationDurations } from \"./defaults\";\n\n// -----------------------------------------------------------------------------------------------------\n// @ Zoom in\n// -----------------------------------------------------------------------------------------------------\nconst zoomIn = trigger(\"zoomIn\",\n [\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"scale(0.5)\"\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"scale(1)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Zoom out\n// -----------------------------------------------------------------------------------------------------\nconst zoomOut = trigger(\"zoomOut\",\n [\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"scale(1)\"\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"scale(0.5)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\nexport { zoomIn, zoomOut };\n\n","import { defaultAnimation } from \"./defaults\";\nimport { expandCollapse } from \"./expand-collapse\";\nimport {\n fadeIn,\n fadeInBottom,\n fadeInLeft,\n fadeInRight,\n fadeInTop,\n fadeOut,\n fadeOutBottom,\n fadeOutLeft,\n fadeOutRight,\n fadeOutTop\n} from \"./fade\";\nimport { shake } from \"./shake\";\nimport { slideInBottom, slideInLeft, slideInRight, slideInTop, slideOutBottom, slideOutLeft, slideOutRight, slideOutTop } from \"./slide\";\nimport { zoomIn, zoomOut } from \"./zoom\";\n\nexport const niceAnimations = [\n defaultAnimation,\n expandCollapse,\n fadeIn, fadeInTop, fadeInBottom, fadeInLeft, fadeInRight,\n fadeOut, fadeOutTop, fadeOutBottom, fadeOutLeft, fadeOutRight,\n shake,\n slideInTop, slideInBottom, slideInLeft, slideInRight,\n slideOutTop, slideOutBottom, slideOutLeft, slideOutRight,\n zoomIn, zoomOut\n];\n","export abstract class NiceApiException<Code> {\n public abstract code: Code;\n}\n","import { HttpErrorResponse } from \"@angular/common/http\";\nimport { NiceApiException } from \"./api.exception\";\n\nexport abstract class NiceHttpExceptionFactory<Code = any> {\n public transform(error: HttpErrorResponse): NiceApiException<Code> | HttpErrorResponse {\n if (error.error?.message === undefined) {\n return error;\n }\n return this.transformCodeError(error.error.message, error.error);\n }\n\n protected abstract transformCodeError(code: Code, data: any): NiceApiException<Code>;\n}\n","import { HttpContextToken, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from \"@angular/common/http\";\nimport { Injectable, Type } from \"@angular/core\";\nimport { plainToInstance } from \"class-transformer\";\nimport { map } from \"rxjs/operators\";\n\nexport const TRANSFORM_TYPE = new HttpContextToken<Type<any>>(() => null);\n\n@Injectable()\nexport class NiceTransformResponseInterceptor implements HttpInterceptor {\n public intercept(req: HttpRequest<any>, next: HttpHandler) {\n return next.handle(req).pipe(\n map(event => {\n if (event instanceof HttpResponse) {\n const type = req.context.get(TRANSFORM_TYPE);\n if (!type) {\n return event;\n }\n\n return event.clone({\n body: plainToInstance(type, event.body)\n });\n }\n\n return event;\n })\n );\n }\n}\n","import { HttpClient, HttpContext, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Type } from \"@angular/core\";\nimport { catchError, Observable } from \"rxjs\";\nimport { AbstractConstructor, Constructor } from \"../types/constructor\";\nimport { NiceHttpExceptionFactory } from \"./exceptions/exception.factory\";\nimport { TRANSFORM_TYPE } from \"./interceptors/transform-response.interceptor\";\n\nexport interface HttpOptions {\n type?: Type<any>;\n context?: HttpContext;\n headers?: HttpHeaders | {\n [header: string]: string | string[];\n };\n responseType?: \"text\" | \"json\" | \"arraybuffer\" | \"blob\";\n params?: HttpParams | {\n [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean>;\n };\n}\n\nexport interface NiceApiDefinition {\n url(route?: string): string;\n delete<T>(route?: string, options?: HttpOptions): Observable<T>;\n get<T>(route?: string, options?: HttpOptions): Observable<T>;\n patch<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n post<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n put<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n}\n\nexport interface HasNiceApiDefinition {\n exceptionFactory: NiceHttpExceptionFactory;\n httpClient: HttpClient;\n apiUrl: string;\n path: string;\n}\n\ntype NiceApiDefinitionCtor = Constructor<NiceApiDefinition> & AbstractConstructor<NiceApiDefinition>;\n\nexport function mixinNiceApi<C extends AbstractConstructor<HasNiceApiDefinition>>(\n base: C,\n): NiceApiDefinitionCtor & C;\nexport function mixinNiceApi<C extends Constructor<HasNiceApiDefinition>>(\n base: C,\n): NiceApiDefinitionCtor & C {\n return class extends base {\n public url(route = \"\"): string {\n if (route === \"\" && (!this.path || this.path === \"\")) {\n return this.apiUrl;\n } else if (route === \"\") {\n return `${this.apiUrl}/${this.path}`;\n }\n return `${this.apiUrl}/${this.path}/${route}`;\n }\n\n public delete<T>(route = \"\", options?: HttpOptions): Observable<T> {\n return this.httpClient.delete<T>(this.url(route), this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n public get<T>(route = \"\", options?: HttpOptions): Observable<T> {\n return this.httpClient.get<T>(this.url(route), this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n public head<T>(route = \"\", options?: HttpOptions): Observable<T> {\n return this.httpClient.head<T>(this.url(route), this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n public patch<T>(route = \"\", body?: any, options?: HttpOptions): Observable<T> {\n return this.httpClient.patch<T>(this.url(route), body, this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n public post<T>(route = \"\", body?: any, options?: HttpOptions): Observable<T> {\n return this.httpClient.post<T>(this.url(route), body, this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n public put<T>(route = \"\", body?: any, options?: HttpOptions): Observable<T> {\n return this.httpClient.put<T>(this.url(route), body, this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n private transformError(error: HttpErrorResponse): Observable<any> {\n if (!this.exceptionFactory) {\n throw error;\n }\n throw this.exceptionFactory.transform(error);\n }\n\n private transformOptions(options?: HttpOptions): HttpOptions {\n if (!options) {\n return options;\n }\n\n const { type, context: c, ...values } = options;\n const context = c ?? new HttpContext();\n if (type) {\n context.set(TRANSFORM_TYPE, type);\n }\n return {\n ...values,\n responseType: values.responseType ?? \"json\",\n context\n };\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, ReplaySubject } from \"rxjs\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceAlertService {\n private readonly _onDismiss: ReplaySubject<string> = new ReplaySubject<string>(1);\n private readonly _onShow: ReplaySubject<string> = new ReplaySubject<string>(1);\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Getter for onDismiss\n */\n public get onDismiss(): Observable<any> {\n return this._onDismiss.asObservable();\n }\n\n /**\n * Getter for onShow\n */\n public get onShow(): Observable<any> {\n return this._onShow.asObservable();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Dismiss the alert\n */\n public dismiss(name: string): void {\n // Return if the name is not provided\n if (!name) {\n return;\n }\n\n // Execute the observable\n this._onDismiss.next(name);\n }\n\n /**\n * Show the dismissed alert\n */\n public show(name: string): void {\n // Return if the name is not provided\n if (!name) {\n return;\n }\n\n // Execute the observable\n this._onShow.next(name);\n }\n}\n","import { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceUtilsService {\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Generates a random id\n */\n public randomId(length: number = 10): string {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let name = \"\";\n\n for (let i = 0; i < 10; i++) {\n name += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return name;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceUtilsService } from \"./utils.service\";\n\n@NgModule({\n providers: [NiceUtilsService]\n})\nexport class NiceUtilsModule {\n constructor(private _niceUtilsService: NiceUtilsService) {}\n}\n","import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { niceAnimations } from \"../../animations\";\nimport { NiceUtilsService } from \"../../providers/utils\";\nimport { NiceAlertService } from \"./alert.service\";\nimport { NiceAlertType, NiceAlertAppearance, NiceAlertColor } from \"./alert.types\";\n\n@Component({\n selector: \"nice-alert\",\n templateUrl: \"./alert.template.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: niceAnimations,\n exportAs: \"niceAlert\"\n})\nexport class NiceAlertComponent implements OnChanges, OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_dismissible: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_dismissed: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_disableAnimation: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_showIcon: BooleanInput;\n\n @Input()\n public appearance: NiceAlertAppearance = \"soft\";\n\n @Input()\n public dismissed = false;\n\n @Input()\n public dismissible = false;\n\n @Input()\n public disableAnimation = false;\n\n @Input()\n public name: string = this._niceUtilsService.randomId();\n\n @Input()\n public showIcon = true;\n\n @Input()\n public type: NiceAlertType = \"primary\";\n\n @Input()\n public color?: NiceAlertColor;\n\n @Output()\n public readonly dismissedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n private _unsubscribeAll: Subject<void> = new Subject<void>();\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceAlertService: NiceAlertService,\n private _niceUtilsService: NiceUtilsService\n ) {}\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component classes\n */\n @HostBinding(\"class\")\n public get classList(): any {\n let types: { [className: string]: boolean } = {\n \"nice-alert-type-primary\": this.type === \"primary\",\n \"nice-alert-type-accent\": this.type === \"accent\",\n \"nice-alert-type-warn\": this.type === \"warn\",\n \"nice-alert-type-basic\": this.type === \"basic\",\n \"nice-alert-type-info\": this.type === \"info\",\n \"nice-alert-type-success\": this.type === \"success\",\n \"nice-alert-type-warning\": this.type === \"warning\",\n \"nice-alert-type-error\": this.type === \"error\"\n };\n\n if (this.color) {\n types = {\n \"nice-alert-type-primary\": this.color === \"primary\",\n \"nice-alert-type-accent\": this.color === \"accent\",\n \"nice-alert-type-warn\": this.color === \"warn\"\n };\n }\n\n return {\n \"nice-alert-appearance-border\": this.appearance === \"border\",\n \"nice-alert-appearance-fill\": this.appearance === \"fill\",\n \"nice-alert-appearance-outline\": this.appearance === \"outline\",\n \"nice-alert-appearance-soft\": this.appearance === \"soft\",\n \"nice-alert-dismissed\": this.dismissed,\n \"nice-alert-dismissible\": this.dismissible,\n \"nice-alert-show-icon\": this.showIcon,\n ...types\n };\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n *\n * @param changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Dismissed\n if (\"dismissed\" in changes) {\n // Coerce the value to a boolean\n this.dismissed = coerceBooleanProperty(changes.dismissed.currentValue);\n\n // Dismiss/show the alert\n this._toggleDismiss(this.dismissed);\n }\n\n // Dismissible\n if (\"dismissible\" in changes) {\n // Coerce the value to a boolean\n this.dismissible = coerceBooleanProperty(changes.dismissible.currentValue);\n }\n\n // Disable animation\n if (\"disableAnimation\" in changes) {\n // Coerce the value to a boolean\n this.disableAnimation = coerceBooleanProperty(changes.disableAnimation.currentValue);\n }\n\n // Show icon\n if (\"showIcon\" in changes) {\n // Coerce the value to a boolean\n this.showIcon = coerceBooleanProperty(changes.showIcon.currentValue);\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Subscribe to the dismiss calls\n this._niceAlertService.onDismiss\n .pipe(\n filter((name) => this.name === name),\n takeUntil(this._unsubscribeAll)\n )\n .subscribe(() => {\n\n // Dismiss the alert\n this.dismiss();\n });\n\n // Subscribe to the show calls\n this._niceAlertService.onShow\n .pipe(\n filter((name) => this.name === name),\n takeUntil(this._unsubscribeAll)\n )\n .subscribe(() => {\n\n // Show the alert\n this.show();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next();\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Dismiss the alert\n */\n public dismiss(): void {\n // Return if the alert is already dismissed\n if (this.dismissed) {\n return;\n }\n\n // Dismiss the alert\n this._toggleDismiss(true);\n }\n\n /**\n * Show the dismissed alert\n */\n public show(): void {\n // Return if the alert is already showing\n if (!this.dismissed) {\n return;\n }\n\n // Show the alert\n this._toggleDismiss(false);\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Dismiss/show the alert\n *\n * @param dismissed\n * @private\n */\n private _toggleDismiss(dismissed: boolean): void {\n // Return if the alert is not dismissible\n if (!this.dismissible) {\n return;\n }\n\n // Set the dismissed\n this.dismissed = dismissed;\n\n // Execute the observable\n this.dismissedChanged.next(this.dismissed);\n\n // Notify the change detector\n this._changeDetectorRef.markForCheck();\n }\n}\n","<div\n class=\"nice-alert-container\"\n *ngIf=\"!dismissible || dismissible && !dismissed\"\n [@fadeIn]=\"!dismissed && !disableAnimation\"\n [@fadeOut]=\"!dismissed && !disableAnimation\">\n\n <!-- Border -->\n <div\n class=\"nice-alert-border\"\n *ngIf=\"appearance === 'border'\"></div>\n\n <!-- Icon -->\n <div\n class=\"nice-alert-icon\"\n *ngIf=\"showIcon\">\n\n <!-- Custom icon -->\n <div class=\"nice-alert-custom-icon\">\n <ng-content select=\"[niceAlertIcon]\"></ng-content>\n </div>\n\n <!-- Default icons -->\n <div class=\"nice-alert-default-icon\">\n\n <mat-icon\n *ngIf=\"type === 'primary'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'accent'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warn'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'basic'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'info'\"\n [svgIcon]=\"'heroicons_solid:information-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'success'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warning'\"\n [svgIcon]=\"'heroicons_solid:exclamation'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'error'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n </div>\n\n </div>\n\n <!-- Content -->\n <div class=\"nice-alert-content\">\n\n <div class=\"nice-alert-title\">\n <ng-content select=\"[niceAlertTitle]\"></ng-content>\n </div>\n\n <div class=\"nice-alert-message\">\n <ng-content></ng-content>\n </div>\n\n </div>\n\n <!-- Dismiss button -->\n <button\n class=\"nice-alert-dismiss-button\"\n mat-icon-button\n (click)=\"dismiss()\">\n <mat-icon [svgIcon]=\"'heroicons_solid:x'\"></mat-icon>\n </button>\n\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { NiceAlertComponent } from \"./alert.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule\n ],\n declarations: [\n NiceAlertComponent\n ],\n exports: [\n NiceAlertComponent\n ]\n})\nexport class NiceAlertModule {\n}\n","export const isNullOrUndefined = (value: unknown): boolean => {\n return TypeUtils.isNullOrUndefined(value);\n};\n\nexport const isNotNullOrUndefined = (value: unknown): boolean => {\n return TypeUtils.isNotNullOrUndefined(value);\n};\n\nexport class TypeUtils {\n public static isNullOrUndefined(value: unknown): boolean {\n return value === null || value === undefined;\n }\n\n public static isNotNullOrUndefined(value: unknown): boolean {\n return !TypeUtils.isNullOrUndefined(value);\n }\n}\n","import { isNullOrUndefined } from \"./type.utils\";\n\nexport class ArrayUtils {\n public static joinIfDefined(array: any[], join = \" \"): string {\n return array?.filter(val => val)?.join(join);\n }\n\n public static uniqueObjects<Item>(array: Item[], keySelector: (item: Item) => unknown): Item[] {\n return Array.from(new Map(array.map(x => [keySelector(x), x])).values());\n }\n\n public static unique<T>(\n array: T[],\n comparator: (value1: T, value2: T) => boolean = (value1: T, value2: T) => value1 === value2\n ): T[] {\n if (isNullOrUndefined(array)) {\n return array;\n }\n\n const newArray: T[] = [];\n for (const value of array) {\n if (newArray.findIndex((valueInArray) => comparator(valueInArray, value)) < 0) {\n newArray.push(value);\n }\n }\n\n return newArray;\n }\n\n public static equals(arr1: any[], arr2: any[], options: { shallow: boolean, ordered: boolean } = { shallow: true, ordered: false }): boolean {\n if (options.shallow && !options.ordered) {\n return this.unorderedShallowEquals(arr1, arr2);\n }\n\n // TODO: Implement other types of equals.\n throw new Error(\"Not implemented.\");\n }\n\n private static unorderedShallowEquals(arr1: any[], arr2: any[]): boolean {\n return (arr1 ?? []).every((arr1Element) => (arr2 ?? []).includes(arr1Element))\n && (arr2 ?? []).every((arr2Element) => (arr1 ?? []).includes(arr2Element));\n }\n\n public static sortByKey(array: any[], key: string) {\n return array.sort(ArrayUtils.sortByKeyFn(key));\n }\n\n public static sortByKeyFn(key: string) {\n return (a, b) => {\n if (a[key] < b[key]) {\n return -1;\n }\n if (a[key] > b[key]) {\n return 1;\n }\n return 0;\n };\n }\n\n public static groupBy<Item, Key, Value>(\n array: Item[],\n keySelector: (item: Item) => Key,\n valueSelector: (item: Item) => Value[] | Value\n ): Map<Key, Value[]> {\n const groups: Map<Key, Value[]> = new Map<Key, Value[]>();\n for (const item of array) {\n const key: Key = keySelector(item);\n if (key == null) {\n continue;\n }\n let value: Value[] | Value = valueSelector(item);\n if (value == null) {\n continue;\n }\n\n if (!(value instanceof Array)) {\n value = [value];\n }\n\n if (!groups.has(key)) {\n groups.set(key, value);\n } else {\n groups.get(key).push(...value);\n }\n }\n return groups;\n }\n}\n\ndeclare global {\n interface Array<T> {\n distinct<T>(): Array<T>;\n\n groupBy<T>(value: T): T[];\n\n includesWithCallback(callbackfn: (value: T, index: number, array: T[]) => boolean): boolean;\n\n pushOrRemove<T>(value: T): void;\n\n replace<T>(item: T, ...newItems: T[]): Array<T>;\n\n skipNullValues(): T[];\n\n difference<T>(...not: T[]): T[];\n }\n}\n\nArray.prototype.distinct = function <T>(): T[] {\n return this.filter((value, index) => {\n return this.indexOf(value) === index;\n });\n};\n\nArray.prototype.groupBy = function <T>(property: T): T[] {\n return this.reduce((acc, obj) => {\n const key = obj[property];\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(obj);\n return acc;\n }, {});\n};\n\nArray.prototype.includesWithCallback = function <T>(callbackfn: (value: T, index: number, array: T[]) => boolean) {\n return this.findIndex(callbackfn) < 0;\n};\n\nArray.prototype.pushOrRemove = function <T>(value: T): void {\n const index = this.indexOf(value);\n if (index !== -1) {\n this.splice(index, 1);\n } else {\n this.push(value);\n }\n};\n\nArray.prototype.replace = function <T>(item: T, ...newItems: T[]): T[] {\n return [...this.slice(0, this.indexOf(item)), ...newItems, ...this.slice(this.indexOf(item) + 1, this.length)];\n};\n\nArray.prototype.skipNullValues = function <T>(): T[] {\n return this.filter(x => !!x);\n};\n\nArray.prototype.difference = function <T>(...not: T[]) {\n return this.filter(i => !not.includes(i));\n};\n","export class CaseUtils {\n // myValue -> my-value\n public static toCamelFromKebab(data: string): string {\n return data.replace(/(-\\w)/g, (m) => m[1].toUpperCase());\n }\n\n // MyValue -> my_value\n public static toSnakeCaseFromPascalCase(str: string): string {\n return str.replace(/[A-Z]/g, (letter, index) => {\n if (index === 0) {\n return letter.toLowerCase();\n }\n const pastLetter = str[index - 1] as string;\n const nextLetter = str[index + 1] as string;\n if (pastLetter.toLowerCase() === pastLetter) {\n return `_${letter.toLowerCase()}`;\n }\n if (nextLetter && nextLetter.toLowerCase() === nextLetter) {\n return `_${letter.toLowerCase()}`;\n }\n return letter.toLowerCase();\n });\n }\n\n // myValue -> my_value\n public static toSnakeCaseFromCamelCase(str: string): string {\n return this.toSnakeCaseFromPascalCase(this.capitalizeFirstLetter(str));\n }\n\n // my_value -> myValue\n public static toCamelCaseFromSnakeCase(stringToConvert: string): string {\n return stringToConvert.replace(/(^[a-z]|_[a-z])/g, (letter) => {\n if (letter.length === 1) {\n return letter;\n }\n\n return letter[1].toUpperCase();\n });\n }\n\n // MyValue -> my-value\n public static toKebabCasePascalCase(str: string): string {\n return str\n .replace(/[A-Z]/g, (letter, index) => {\n return index === 0 ? letter.toLowerCase() : \"-\" + letter.toLowerCase();\n })\n .replace(/_/g, \"-\");\n }\n\n // my_value -> MyValue\n public static toPascalCaseFromSnakeCase(str: string): string {\n return str.replace(/(^[a-z]|_[a-z])/g, (letter) => {\n if (letter.length === 1) {\n return letter.toUpperCase();\n }\n\n return letter[1].toUpperCase();\n });\n }\n\n public static capitalizeFirstLetter(str: string): string {\n const firstLetter = str.substr(0, 1);\n return firstLetter.toUpperCase() + str.substr(1);\n }\n}\n","export class ColorsUtils {\n /**\n * https://codepen.io/cferdinandi/pen/Yomroj\n *\n * (c) 2019 Chris Ferdinandi, MIT License, https://gomakethings.com\n * Derived from work by Brian Suda, https://24ways.org/2010/calculating-color-contrast/\n */\n public static contrastFromHex(hex: string): string {\n if (hex.slice(0, 1) === \"#\") {\n hex = hex.slice(1);\n }\n\n // If a three-character hex, make six-character\n if (hex.length === 3) {\n hex = hex\n .split(\"\")\n .map((i) => i + i)\n .join(\"\");\n }\n\n // Convert to RGB value\n const r = parseInt(hex.substr(0, 2), 16);\n const g = parseInt(hex.substr(2, 2), 16);\n const b = parseInt(hex.substr(4, 2), 16);\n\n // Get YIQ ratio\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n // Check contrast\n return yiq >= 128 ? \"000000\" : \"ffffff\";\n }\n}\n","import { isNullOrUndefined } from \"./type.utils\";\n\nexport class DateUtils {\n public static currentYear(): number {\n return new Date().getUTCFullYear();\n }\n\n public static extractTimeAsString(date: Date): string {\n if (!date) {\n return null;\n }\n\n const hours = date.getHours();\n const minutes = date.getMinutes();\n\n return `${(hours ?? \"\").toString().padStart(2, \"0\")}:${(minutes ?? \"\").toString().padStart(2, \"0\")}`;\n }\n\n public static setTimeFromString(date: Date, time: string): Date {\n if (isNullOrUndefined(time) || time.length === 0 || !time.includes(\":\")) {\n return date;\n }\n\n const parts = time.split(\":\");\n if (parts.length !== 2 || isNaN(+parts[0]) || isNaN(+parts[1])) {\n return date;\n }\n\n const [hours, minutes] = parts.map((part) => +part);\n const updatedDate = new Date(date);\n updatedDate.setHours(hours, minutes);\n return updatedDate;\n }\n}\n\ndeclare global {\n export interface Date {\n getSeason(): string;\n getYear(): number;\n }\n}\n\nDate.prototype.getSeason = function(): \"winter\" | \"spring\" | \"summer\" | \"fall\" {\n const month = this.getUTCMonth();\n const date = this.getUTCDate();\n\n if ((month === 11 && date >= 21) || (month >= 0 && month <= 1) || (month === 2 && date <= 19)) {\n return \"winter\";\n } else if ((month === 2 && date >= 20) || (month >= 3 && month <= 4) || (month === 5 && date <= 20)) {\n return \"spring\";\n } else if ((month === 5 && date >= 21) || (month >= 6 && month <= 7) || (month === 8 && date <= 22)) {\n return \"summer\";\n } else {\n return \"fall\";\n }\n};\n\nDate.prototype.getYear = function (): number {\n return +this.getFullYear().toString().substr(-2);\n};\n","export class FileUtils {\n public static async getFileFromUrl(url?: string, name = \"\"): Promise<File | undefined> {\n if (!url) {\n return undefined;\n }\n const res = await fetch(url);\n return new File([await res.blob()], name);\n }\n\n public static async selectFile(accept: string, multiple = false): Promise<File | File[]> {\n return new Promise(resolve => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.multiple = multiple;\n input.accept = accept;\n\n input.onchange = () => {\n if (input.files) {\n const files = Array.from(input.files);\n return resolve(multiple ? files : files[0]);\n }\n\n resolve(null);\n };\n\n input.click();\n });\n }\n\n public static downloadFile(fileName: string, content: Blob, downloadLink?: HTMLAnchorElement): void {\n if (!downloadLink) {\n downloadLink = document.createElement(\"a\");\n document.body.appendChild(downloadLink);\n downloadLink.style.display = \"none\";\n }\n\n const dataUrl = window.URL.createObjectURL(content);\n downloadLink.href = dataUrl;\n downloadLink.download = fileName;\n downloadLink.click();\n window.URL.revokeObjectURL(dataUrl);\n document.body.removeChild(downloadLink);\n }\n\n public static downloadUrl(url: string): void {\n const downloadLink = document.createElement(\"a\");\n document.body.appendChild(downloadLink);\n downloadLink.style.display = \"none\";\n downloadLink.href = url;\n downloadLink.click();\n document.body.removeChild(downloadLink);\n }\n\n public static openPrintableWindow(content: string): void {\n const win = window.open(\"\");\n if (!win) {\n return;\n }\n\n win.document.open();\n win.document.write(content);\n win.document.close();\n }\n\n public static filenameToExtension(filename: string): string {\n const re = /(?:\\.([^.]+))?$/;\n return re.exec(filename)[1];\n }\n\n public static getDataUrl(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = error => reject(error);\n });\n }\n\n public static async getFileFromDataUrl(data: string, name: string): Promise<File> {\n const base64Response = await fetch(data);\n const blob = await base64Response.blob();\n const [, type] = blob.type.split(\"/\");\n return new File([blob], `${name}.${type}`, {\n lastModified: Date.now(),\n type: blob.type\n });\n }\n}\n","export class FontAwesomeUtils {\n public static fileExtensionToIcon(extension: string): string {\n switch (extension) {\n case \"pdf\":\n return \"fa-file-pdf\";\n case \"doc\":\n case \"docx\":\n return \"fa-file-word\";\n case \"xlsx\":\n case \"xls\":\n return \"fa-file-excel\";\n case \"csv\":\n return \"fa-file-csv\";\n case \"ppt\":\n case \"pptx\":\n return \"fa-file-powerpoint\";\n case \"mp4\":\n case \"mov\":\n case \"wmv\":\n case \"webm\":\n return \"fa-file-video\";\n case \"mp3\":\n case \"wav\":\n return \"fa-file-audio\";\n case \"jpeg\":\n case \"jpg\":\n case \"png\":\n case \"gif\":\n case \"svg\":\n return \"fa-file-image\";\n case \"zip\":\n return \"fa-file-archive\";\n case \"txt\":\n return \"fa-file-alt\";\n default:\n return \"fa-file\";\n }\n }\n}\n","import { isNullOrUndefined } from \"./type.utils\";\n\nexport class FormDataUtils {\n public static appendFormDataWithDto(form: FormData, value: object): void {\n if (typeof value !== \"object\") {\n return;\n }\n\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n FormDataUtils.appendFormDataWithValue(form, value[key], key);\n }\n }\n }\n\n // FormData does not handle object and arrays, instead we add them as:\n // Object: forms.append(name[key], value) (e.g. forms.append(\"company-admin[name]\", \"digitalmomentum\"))\n // Array: forms.append(name[index], value) (e.g. forms.append(\"expressions[0]\", \"incroyable\"))\n // Recursive method that appends values, objects and arrays to the forms as name.\n public static appendFormDataWithValue(form: FormData, value, name) {\n if (isNullOrUndefined(value)) {\n return;\n }\n\n if (value instanceof Array) {\n for (let i = 0; i < value.length; ++i) {\n FormDataUtils.appendFormDataWithValue(form, value[i], name + `[${i}]`);\n }\n } else if (value instanceof Date) {\n form.append(name, value.toISOString());\n } else if (value instanceof Object) {\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n FormDataUtils.appendFormDataWithValue(form, value[key], name + `[${key}]`);\n }\n }\n } else {\n form.append(name, value);\n }\n }\n}\n","export enum HttpStatusCodes {\n CONTINUE = 100,\n SWITCHING_PROTOCOLS = 101,\n PROCESSING = 102,\n OK = 200,\n CREATED = 201,\n ACCEPTED = 202,\n NON_AUTHORITATIVE_INFORMATION = 203,\n NO_CONTENT = 204,\n RESET_CONTENT = 205,\n PARTIAL_CONTENT = 206,\n AMBIGUOUS = 300,\n MOVED_PERMANENTLY = 301,\n FOUND = 302,\n SEE_OTHER = 303,\n NOT_MODIFIED = 304,\n TEMPORARY_REDIRECT = 307,\n PERMANENT_REDIRECT = 308,\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n PAYMENT_REQUIRED = 402,\n FORBIDDEN = 403,\n NOT_FOUND = 404,\n METHOD_NOT_ALLOWED = 405,\n NOT_ACCEPTABLE = 406,\n PROXY_AUTHENTICATION_REQUIRED = 407,\n REQUEST_TIMEOUT = 408,\n CONFLICT = 409,\n GONE = 410,\n LENGTH_REQUIRED = 411,\n PRECONDITION_FAILED = 412,\n PAYLOAD_TOO_LARGE = 413,\n URI_TOO_LONG = 414,\n UNSUPPORTED_MEDIA_TYPE = 415,\n REQUESTED_RANGE_NOT_SATISFIABLE = 416,\n EXPECTATION_FAILED = 417,\n UNPROCESSABLE_ENTITY = 422,\n TOO_MANY_REQUESTS = 429,\n INTERNAL_SERVER_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n BAD_GATEWAY = 502,\n SERVICE_UNAVAILABLE = 503,\n GATEWAY_TIMEOUT = 504,\n HTTP_VERSION_NOT_SUPPORTED = 505\n}\n","export enum KeyboardCodes {\n ArrowUp = \"ArrowUp\",\n ArrowDown = \"ArrowDown\",\n Enter = \"Enter\",\n Shift = \"Shift\",\n Comma = \"Comma\"\n}\n","import { LexoRank } from \"lexorank\";\n\nexport class LexoRankUtils {\n public static compareStringFn(previousRank?: string, nextRank?: string): number {\n if (!previousRank || !nextRank) {\n return 0;\n }\n\n return LexoRank.parse(previousRank).compareTo(LexoRank.parse(nextRank));\n }\n\n public static compareFn(previousRank: LexoRank, nextRank: LexoRank): number {\n return previousRank.compareTo(nextRank);\n }\n\n public static getNewRank(afterRank?: string, beforeRank?: string): string {\n if (afterRank && beforeRank) {\n if (LexoRank.parse(beforeRank).equals(LexoRank.parse(afterRank))) {\n return LexoRank.parse(afterRank).genPrev().toString();\n }\n\n return LexoRank.parse(afterRank).between(LexoRank.parse(beforeRank)).toString();\n }\n\n if (afterRank) {\n return LexoRank.parse(afterRank).genPrev().toString();\n }\n\n if (beforeRank) {\n return LexoRank.parse(beforeRank).genNext().toString();\n }\n\n return LexoRank.middle().toString();\n }\n}\n","export interface ModalData {\n mode: ModalMode;\n}\n\nexport enum ModalMode {\n Create,\n Edit\n}\n","export class NumberUtils {\n}\n\ndeclare global {\n interface Number {\n inRange(a: number, b: number): boolean;\n }\n}\n\nNumber.prototype.inRange = function (a: number, b: number): boolean {\n return this >= a && this <= b;\n};\n","import { isNullOrUndefined } from \"./type.utils\";\n\nexport class ObjectUtils {\n public static transformStringProperties(obj: any): object {\n for (const property in obj) {\n if (obj.hasOwnProperty(property)) {\n if (typeof obj[property] === \"object\") {\n obj = ObjectUtils.transformStringProperties(obj);\n } else {\n obj = ObjectUtils.stringPropertiesToNumber(obj, property);\n }\n }\n }\n\n return obj;\n }\n\n public static stringPropertiesToNumber(obj: any, property: string): object {\n if (!isNaN(obj[property])) {\n obj[property] = +obj[property];\n }\n\n return obj;\n }\n\n public static assignDefined(target: any, source: any): object {\n Object.keys(source).map(key => {\n if (source[key] !== undefined) {\n target[key] = source[key];\n }\n });\n\n return target;\n }\n\n public static areObjectsEqual(obj1: any, obj2: any): boolean {\n const keys1 = Object.keys(obj1).sort();\n const keys2 = Object.keys(obj2).sort();\n if (keys1.length !== keys2.length) {\n return false;\n }\n if (!keys1.every((k, i) => k === keys2[i])) {\n return false;\n }\n return keys1.every(kk => {\n const v1 = obj1[kk];\n const v2 = obj2[kk];\n if (Array.isArray(v1)) {\n return ObjectUtils.areObjectsEqual(v1, v2);\n } else if (typeof v1 === \"object\" && v1 !== null) {\n return ObjectUtils.areObjectsEqual(v1, v2);\n } else {\n return v1 === v2;\n }\n });\n }\n\n public static deepCopy(obj: any): any {\n // Handle the primitive types, null and undefined\n if (obj == null || typeof obj != \"object\") {\n return obj;\n }\n\n // Handle Date\n if (obj instanceof Date) {\n const copy = new Date();\n copy.setTime(obj.getTime());\n return copy;\n }\n\n // Handle Array\n if (obj instanceof Array) {\n const copy = [];\n for (const item of obj) {\n copy.push(ObjectUtils.deepCopy(item));\n }\n return copy;\n }\n\n // Handle Object\n if (obj instanceof Object) {\n const copy = {};\n for (const attr in obj) {\n if (obj.hasOwnProperty(attr)) {\n copy[attr] = ObjectUtils.deepCopy(obj[attr]);\n }\n }\n return copy;\n }\n\n throw new Error(\"Unable to copy obj! Its type isn't supported.\");\n }\n\n // To do an immutable assignment, we need to first deep copy the model and then run the deep assign.\n public static immutableDeepAssign<Source, Target>(key: string, deepObj: Source, obj: Target): Target {\n const output = ObjectUtils.deepCopy(obj);\n ObjectUtils.deepAssign(key, deepObj, output);\n return output;\n }\n\n // Does a shallow assignment on a deep value. The value is located by the key.\n public static deepAssign<Source, Target>(key: string, deepObj: Source, obj: Target) {\n ObjectUtils.internalDeepAssign(key?.split(\".\"), deepObj, obj);\n }\n\n private static internalDeepAssign<Source, Target>(segments: string[], deepObj: Source, obj: Target) {\n // No more depth to be navigated through, we can do the shallow assignment.\n if (segments?.length === 0) {\n Object.assign(obj, deepObj);\n return;\n }\n\n if (isNullOrUndefined(obj)) {\n obj = {} as Target;\n }\n\n const segment = segments.shift();\n // If we cannot complete the key's path, we create it.\n if (!obj.hasOwnProperty(segment)) {\n obj[segment] = {};\n }\n\n ObjectUtils.internalDeepAssign(segments, deepObj, obj[segment]);\n }\n}\n","export class PromiseUtils {}\n\ndeclare global {\n export interface PromiseConstructor {\n delay(ms: number): Promise<void>;\n }\n}\n\n// tslint:disable-next-line:only-arrow-functions\nPromise.delay = function(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n};\n","import { HttpParams } from \"@angular/common/http\";\n\nexport class QueryParamsUtils {\n public static fromObject(obj: any): string {\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) {\n delete obj[key];\n }\n });\n return new HttpParams({\n fromObject: obj\n }).toString();\n }\n}\n","const lowerUpperDigit8 = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,}$/;\n\nexport class RegexUtils {\n public static email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n public static password = {\n // Used as default.\n // 8 chars, lower + upper + digit.\n lowerUpperDigit8\n };\n\n public static canadianPostalCode = /^((?!.*[DFIOQU])[A-VXYa-vxy][0-9][A-Za-z] ?[0-9][A-Za-z][0-9])?$/;\n}\n","export class UrlUtils {\n public static emailUrl(email: string): string {\n return `mailto:${email}`;\n }\n\n public static directionUrl(address: string, postalCode: string): string {\n return `https://www.google.com/maps/dir/?api=1&destination=${address}+${postalCode}`;\n }\n\n public static phoneCallUrl(phone: string, ext?: string): string {\n if (ext?.length) {\n return `tel:${phone};${ext}`;\n }\n\n return `tel:${phone}`;\n }\n\n // Takes location ref and returns fragment\n // http://localhost:4200/dashboard/profile returns [\"dashboard\", \"profile\"]\n public static getCurrentUrlFragments(): string[] {\n return window.location.href.replace(\"://\", \"\").split(\"/\").slice(1);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_ASSETS_CAROUSEL_OPTIONS = new InjectionToken(\"nice_assets_options\");\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceAssetsCarouselActiveContent]\" })\nexport class NiceAssetsCarouselActiveContentDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from \"@angular/core\";\n\n@Directive({ selector: \"[niceDropzone]\"})\nexport class NiceDropzoneDirective {\n @HostBinding(\"class.file-over\")\n public fileOver: boolean;\n\n @Output()\n public filesDropped = new EventEmitter<FileList>();\n\n // Dragover listener\n @HostListener(\"dragover\", [\"$event\"])\n public onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener(\"dragleave\", [\"$event\"])\n public onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener(\"drop\", [\"$event\"])\n public ondrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n const files = event.dataTransfer.files;\n if (files.length > 0) {\n this.filesDropped.emit(files);\n }\n }\n}\n","import {\n Component, ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n Optional,\n Output, QueryList,\n TemplateRef,\n ViewChild, ViewChildren,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CanColor, ThemePalette } from \"@angular/material/core\";\nimport { niceAnimations } from \"../../animations\";\nimport { FileUtils } from \"../../utils\";\nimport { NICE_ASSETS_CAROUSEL_OPTIONS } from \"./assets-carousel.constant\";\nimport { NiceAssetsCarouselActiveContentDirective } from \"./directives/assets-carousel-active-content.directive\";\n\nexport interface NiceAssets {\n type: \"image\" | \"video\";\n id?: number | string;\n url?: string;\n base64?: string;\n file?: File;\n}\n\nexport type NiceAssetsCarouselActionIcon = { matIcon: string; svgIcon?: string; } | { matIcon?: string; svgIcon: string; };\n\nexport interface NiceAssetsCarouselActions {\n icon: NiceAssetsCarouselActionIcon;\n name: string;\n action: (active: number) => void;\n}\n\nexport interface NiceAssetsCarouselOptions {\n actionButtons?: {\n moreOptions?: NiceAssetsCarouselActionIcon;\n addPhoto?: NiceAssetsCarouselActionIcon;\n remove?: NiceAssetsCarouselActionIcon;\n };\n addPhoto?: NiceAssetsCarouselActionIcon;\n leftArrow?: NiceAssetsCarouselActionIcon;\n rightArrow?: NiceAssetsCarouselActionIcon;\n upload?: NiceAssetsCarouselActionIcon;\n}\n\n@Component({\n selector: \"nice-assets-carousel\",\n templateUrl: \"assets-carousel.template.html\",\n styleUrls: [\"assets-carousel.theme.scss\"],\n encapsulation: ViewEncapsulation.None,\n animations: niceAnimations,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAssetsCarouselComponent),\n multi: true\n }\n ]\n})\nexport class NiceAssetsCarouselComponent implements ControlValueAccessor, CanColor {\n public _activeTranslationPosition = 0;\n public _active = 0;\n public _assets: NiceAssets[] = [];\n public _activeAsset: NiceAssets;\n public _lastAsset = true;\n public _shouldTransform = false;\n public _activeVideoElement: ElementRef<HTMLVideoElement>;\n public _assetsElement: QueryList<ElementRef<HTMLDivElement>>;\n public defaultColor: ThemePalette = \"primary\";\n\n @ViewChild(\"fileInput\")\n public inputElement: ElementRef<HTMLInputElement>;\n\n @Input()\n public color: ThemePalette = this.defaultColor;\n\n @Input()\n public edit = false;\n\n @Input()\n public accept: string[] = [\"image/*\"];\n\n @Input()\n public customActions: NiceAssetsCarouselActions[] = [];\n\n @Input()\n public multipleUpload = false;\n\n @Input()\n public visiblePreviewAsset = 4;\n\n @Input()\n public showAddAssetContainer = true;\n\n @ContentChild(NiceAssetsCarouselActiveContentDirective, { read: TemplateRef })\n public activeContent: TemplateRef<any>;\n\n @Output()\n public activeChange = new EventEmitter<number>();\n\n @Output()\n public removedAsset = new EventEmitter<NiceAssets>();\n\n public listStyle: { transform: string } = { transform: \"translateX(0px)\" };\n\n public showOverlay: boolean;\n\n private propagate: (assets: NiceAssets[]) => void;\n\n @ViewChild(\"activeVideo\")\n public set activeVideoElement(activeVideoElement: ElementRef<HTMLVideoElement>) {\n this._activeVideoElement = activeVideoElement;\n if (!this._activeVideoElement || !this._assetsElement) {\n return;\n }\n\n this.startSyncVideo();\n }\n\n @ViewChildren(\"assets\")\n public set assetsElement(assetsElement: QueryList<ElementRef<HTMLDivElement>>) {\n this._assetsElement = assetsElement;\n if (!this._activeVideoElement || !this._assetsElement) {\n return;\n }\n\n this.startSyncVideo();\n }\n\n @Input()\n public set assets(assets: NiceAssets[]) {\n this.writeValue(assets ?? []);\n }\n\n private set activeTranslationPosition(position: number) {\n this._activeTranslationPosition = position;\n this.listStyle.transform = `translateX(calc((var(--nice-assets-carousel-asset-width) + var(--nice-assets-carousel-asset-gap)) * ${position}))`;\n }\n\n private set activeAsset(position: number) {\n if (position < 0) {\n position = 0;\n }\n\n this._active = position;\n this._activeAsset = this._assets[this._active];\n this._lastAsset = this._active === this._assets.length - 1 || !this._assets.length;\n this._shouldTransform\n = ((this.edit && this.showAddAssetContainer) && this._active >= (this.visiblePreviewAsset - 1))\n || this._active >= this.visiblePreviewAsset;\n this.activeChange.emit(this._active);\n }\n\n constructor(@Optional() @Inject(NICE_ASSETS_CAROUSEL_OPTIONS) public readonly options: NiceAssetsCarouselOptions) {\n if (!this.options) {\n this.options = {\n actionButtons: {\n addPhoto: {\n matIcon: \"photo_camera\"\n },\n moreOptions: {\n matIcon: \"more_vert\"\n },\n remove: {\n matIcon: \"delete\"\n }\n },\n addPhoto: {\n matIcon: \"photo_camera\"\n },\n leftArrow: {\n matIcon: \"chevron_left\"\n },\n rightArrow: {\n matIcon: \"chevron_right\"\n },\n upload: {\n matIcon: \"file_upload\"\n }\n };\n }\n }\n\n public writeValue(assets: NiceAssets[]): void {\n this._assets = assets ?? [];\n\n if (this._assets.length === 0) {\n this._activeAsset = null;\n this._lastAsset = true;\n } else if (this._assets.length > 0) {\n this._activeAsset = this._assets[this._active];\n }\n }\n\n public registerOnChange(fn: (assets: NiceAssets[]) => void): void {\n this.propagate = fn;\n }\n\n public registerOnTouched(fn: (assets: NiceAssets[]) => void): void {}\n\n public clickLeft(): void {\n if (this._active) {\n this.activeAsset = this._active - 1;\n }\n\n if (this._activeTranslationPosition < 0) {\n this.activeTranslationPosition = this._activeTranslationPosition + 1;\n }\n }\n\n public clickRight(): void {\n if (this._lastAsset) {\n return;\n }\n\n this.activeAsset = this._active + 1;\n if (this._shouldTransform) {\n this.activeTranslationPosition = this._activeTranslationPosition - 1;\n }\n }\n\n public clickAsset(index: number): void {\n let visibleAssets = (this.edit && this.showAddAssetContainer) ? (this.visiblePreviewAsset - 2) : (this.visiblePreviewAsset - 1);\n if (index < visibleAssets) {\n visibleAssets = index;\n }\n\n if (index >= 0) {\n this.activeTranslationPosition = (index - visibleAssets) * -1;\n }\n\n this.activeAsset = index;\n }\n\n public async onFilesChange(event: Event): Promise<void> {\n const files = (event.target as HTMLInputElement)?.files;\n await this.onFilesDrop(files);\n\n this.inputElement.nativeElement.value = \"\";\n }\n\n public async onFilesDrop(files: FileList): Promise<void> {\n if (!files?.length) {\n return;\n }\n\n let newAssetsAdded = false;\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (!this.accept.some((accept) => {\n if (accept.endsWith(\"*\")) {\n return file.type.startsWith(accept.replace(\"*\", \"\"));\n }\n\n return accept === file.type;\n })) {\n continue;\n }\n\n newAssetsAdded = true;\n this._assets.push({\n file,\n type: file.type.split(\"/\").shift() as \"image\" | \"video\",\n base64: await FileUtils.getDataUrl(file)\n });\n }\n\n if (newAssetsAdded) {\n this.clickAsset(this._assets.length - 1);\n this.propagate?.(this._assets);\n }\n }\n\n public clickRemove(): void {\n this.removedAsset.emit(this._assets[this._active]);\n this._assets.splice(this._active, 1);\n\n if (this._lastAsset) {\n this.clickAsset(this._assets.length - 1);\n } else {\n this.clickAsset(this._active);\n }\n\n this.propagate?.(this._assets);\n }\n\n public clickCustom(action: NiceAssetsCarouselActions): void {\n action.action(this._active);\n }\n\n public async startSyncVideo(): Promise<void> {\n (this._assetsElement.get(this._active).nativeElement.firstElementChild as HTMLVideoElement).pause();\n (this._assetsElement.get(this._active).nativeElement.firstElementChild as HTMLVideoElement).currentTime = 0;\n\n this._activeVideoElement.nativeElement.currentTime = 0;\n await this._activeVideoElement.nativeElement.play();\n await (this._assetsElement.get(this._active).nativeElement.firstElementChild as HTMLVideoElement).play();\n }\n}\n","<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div\n class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click();\n $event.stopPropagation()\"\n >\n <ng-container\n *ngIf=\"_activeAsset && activeContent\"\n [ngTemplateOutlet]=\"activeContent\"\n [ngTemplateOutletContext]=\"{ $implicit: _activeAsset}\"\n ></ng-container>\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click(); $event.stopPropagation()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)\"\n >\n <mat-icon *ngIf=\"action.icon.matIcon\">{{ action.icon.matIcon }}</mat-icon>\n <mat-icon [svgIcon]=\"action.icon.svgIcon\" *ngIf=\"action.icon.svgIcon\"></mat-icon>\n <span>{{ action.name | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"clickRemove()\">\n <mat-icon *ngIf=\"options.actionButtons.remove.matIcon\">{{ options.actionButtons.remove.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.remove.svgIcon\" [svgIcon]=\"options.actionButtons.remove.svgIcon\"></mat-icon>\n <span>{{ \"nice_ui_kit.assets_carousel.delete\" | translate }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <div class=\"carousel\">\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button left-arrow\" mat-icon-button [disabled]=\"!_active\" (click)=\"clickLeft()\">\n <mat-icon *ngIf=\"options.leftArrow.matIcon\">{{ options.leftArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.leftArrow.svgIcon\" [svgIcon]=\"options.leftArrow.svgIcon\"></mat-icon>\n </button>\n <div class=\"asset-list-container\">\n <div *ngIf=\"showAddAssetContainer && edit\" class=\"add-asset-container\">\n <div class=\"add-asset\" matRipple (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.addPhoto.matIcon\">{{ options.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.addPhoto.svgIcon\" [svgIcon]=\"options.addPhoto.svgIcon\"></mat-icon>\n </div>\n </div>\n <div class=\"asset-list\" [ngStyle]=\"listStyle\">\n <div #assets class=\"asset\" *ngFor=\"let asset of _assets; let i = index\" (click)=\"clickAsset(i)\" [ngClass]=\"color\" [class.active]=\"_active === i\">\n <img *ngIf=\"asset.type === 'image'\" draggable=\"false\" [src]=\"asset.url ?? asset.base64\" alt=\"add-image\">\n <video *ngIf=\"asset.type === 'video'\" draggable=\"false\" loop [src]=\"asset.url ?? asset.base64\"></video>\n </div>\n </div>\n </div>\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button right-arrow\" mat-icon-button [disabled]=\"_lastAsset\" (click)=\"clickRight()\">\n <mat-icon *ngIf=\"options.rightArrow.matIcon\">{{ options.rightArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.rightArrow.svgIcon\" [svgIcon]=\"options.rightArrow.svgIcon\"></mat-icon>\n </button>\n </div>\n</div>\n\n<input #fileInput type=\"file\" hidden [accept]=\"accept\" (change)=\"onFilesChange($event)\" [multiple]=\"multipleUpload\">\n","import { NgModule } from \"@angular/core\";\nimport { NiceDropzoneDirective } from \"./dropzone.directive\";\n\n@NgModule({\n imports: [],\n declarations: [NiceDropzoneDirective],\n providers: [],\n exports: [NiceDropzoneDirective]\n})\nexport class NiceDropzoneModule {}\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceDropzoneModule } from \"../../directives/dropzone\";\n\nimport { NiceAssetsCarouselComponent, NiceAssetsCarouselOptions } from \"./assets-carousel.component\";\nimport { NICE_ASSETS_CAROUSEL_OPTIONS } from \"./assets-carousel.constant\";\nimport { NiceAssetsCarouselActiveContentDirective } from \"./directives/assets-carousel-active-content.directive\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatRippleModule,\n NiceDropzoneModule,\n TranslateModule\n ],\n declarations: [NiceAssetsCarouselComponent, NiceAssetsCarouselActiveContentDirective],\n providers: [],\n exports: [NiceAssetsCarouselComponent, NiceAssetsCarouselActiveContentDirective]\n})\nexport class NiceAssetsCarouselModule {\n public static forRoot(options?: NiceAssetsCarouselOptions): ModuleWithProviders<NiceAssetsCarouselModule> {\n if (!options) {\n options = {\n actionButtons: {}\n };\n }\n if (!options.actionButtons.moreOptions) {\n options.actionButtons.moreOptions = { matIcon: \"more_vert\" };\n }\n if (!options.actionButtons.addPhoto) {\n options.actionButtons.addPhoto = { matIcon: \"photo_camera\" };\n }\n if (!options.actionButtons.remove) {\n options.actionButtons.remove = { matIcon: \"delete\" };\n }\n if (!options.addPhoto) {\n options.addPhoto = { matIcon: \"photo_camera\" };\n }\n if (!options.leftArrow) {\n options.leftArrow = { matIcon: \"chevron_left\" };\n }\n if (!options.rightArrow) {\n options.rightArrow = { matIcon: \"chevron_right\" };\n }\n if (!options.upload) {\n options.upload = { matIcon: \"file_upload\" };\n }\n\n return {\n ngModule: NiceAssetsCarouselModule,\n providers: [\n {\n provide: NICE_ASSETS_CAROUSEL_OPTIONS,\n useValue: options\n }\n ]\n };\n }\n}\n","export interface NiceAsyncTypeaheadSearchResult<T> {\n items: T[];\n nextPage: number | null;\n}\n\nexport abstract class NiceAsyncTypeaheadProvider<T, ID = number, Options = any> {\n public abstract resource: string;\n public abstract search(searchQuery: string, page: number, options?: Options): Promise<NiceAsyncTypeaheadSearchResult<T>>;\n public abstract getById(id: ID, options?: Options): Promise<T>;\n\n public format(item: T): string {\n return \"\";\n }\n}\n","import { Directive, EventEmitter, Input, OnDestroy, Output } from \"@angular/core\";\nimport { MatAutocomplete } from \"@angular/material/autocomplete\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil, tap } from \"rxjs/operators\";\n\nexport interface IAutoCompleteScrollEvent {\n autoComplete: MatAutocomplete;\n scrollEvent: Event;\n}\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: \"mat-autocomplete[optionsScroll]\"\n})\nexport class OptionsScrollDirective implements OnDestroy {\n private _onDestroy$ = new Subject();\n\n @Input()\n public thresholdPercent = 0.99;\n\n @Output()\n public optionsScroll = new EventEmitter<IAutoCompleteScrollEvent>();\n\n constructor(public autoComplete: MatAutocomplete) {\n this.autoComplete.opened\n .pipe(\n tap(() => {\n // Note: When autocomplete raises opened, panel is not yet created (by Overlay)\n // Note: The panel will be available on next tick\n // Note: The panel wil NOT open if there are no options to display\n setTimeout(() => {\n // Note: remove listner just for safety, in case the close event is skipped.\n this.removeScrollEventListener();\n if (this.autoComplete && this.autoComplete.panel) {\n this.autoComplete.panel.nativeElement.addEventListener(\"scroll\", this.onScroll.bind(this));\n }\n });\n }),\n takeUntil(this._onDestroy$)\n )\n .subscribe();\n\n this.autoComplete.closed\n .pipe(\n tap(() => this.removeScrollEventListener()),\n takeUntil(this._onDestroy$)\n )\n .subscribe();\n }\n\n public ngOnDestroy() {\n this._onDestroy$.next(null);\n this._onDestroy$.complete();\n\n this.removeScrollEventListener();\n }\n\n public onScroll(event: Event) {\n if (this.thresholdPercent === undefined) {\n this.optionsScroll.next({ autoComplete: this.autoComplete, scrollEvent: event });\n } else {\n const target = event.target as HTMLElement;\n const threshold = (this.thresholdPercent * 100 * target.scrollHeight) / 100;\n const current = target.scrollTop + target.clientHeight;\n\n if (current > threshold) {\n this.optionsScroll.next({ autoComplete: this.autoComplete, scrollEvent: event });\n }\n }\n }\n\n private removeScrollEventListener() {\n if (this.autoComplete && this.autoComplete.panel) {\n this.autoComplete.panel.nativeElement.removeEventListener(\"scroll\", this.onScroll);\n }\n }\n}\n","import { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input, NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { ControlValueAccessor, FormControl, NgControl, Validators } from \"@angular/forms\";\nimport { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from \"@angular/material/autocomplete\";\nimport { MatOption } from \"@angular/material/core\";\nimport { MatFormFieldControl } from \"@angular/material/form-field\";\nimport { Subject, Subscription } from \"rxjs\";\nimport * as uuid from \"uuid\";\nimport { isNullOrUndefined } from \"../../utils\";\n\nexport class NiceTypeaheadNewValue {\n constructor(public $new: string) {}\n}\n\n@Component({\n selector: \"nice-typeahead\",\n templateUrl: \"typeahead.template.html\",\n styleUrls: [\"typeahead.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MatFormFieldControl,\n useExisting: NiceTypeaheadComponent\n }\n ]\n})\nexport class NiceTypeaheadComponent implements OnInit, OnDestroy, ControlValueAccessor, MatFormFieldControl<string> {\n @Input()\n public set items(items: any[] | null | undefined) {\n this._items = items ?? [];\n this.values = items ?? [];\n this.setLoading(false);\n this.setLoadingPage(false);\n this.updateSearchInput();\n this.checkIfValueStillExist();\n }\n\n @Input()\n public set labelFormatFn(labelFormatFn: (item: any) => string) {\n this._labelFormatFn = labelFormatFn;\n this.updateSearchInput();\n }\n\n @Input()\n public set required(req) {\n this._required = coerceBooleanProperty(req);\n this.stateChanges.next();\n }\n\n public get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n if (this._disabled) {\n this.searchControl.disable({ emitEvent: false });\n } else {\n this.searchControl.enable({ emitEvent: false });\n }\n this.stateChanges.next();\n }\n\n @Input()\n public set placeholder(placeholder: string) {\n this._placeholder = placeholder;\n this.stateChanges.next();\n }\n\n public get placeholder(): string {\n return this._placeholder;\n }\n\n @Input()\n public set emptyPlaceholder(emptyPlaceholder: string) {\n this._emptyPlaceholder = emptyPlaceholder;\n this.stateChanges.next();\n }\n\n public get emptyPlaceholder(): string {\n return this._emptyPlaceholder;\n }\n\n public set value(value: any) {\n if (value === this._value) {\n return;\n }\n this._value = value;\n this.propagate(this._value);\n }\n\n public get value(): any {\n return this._value;\n }\n\n public get empty(): boolean {\n return (\n (!this.searchControl.value || !this.searchControl.value.length) &&\n (!this._value || (typeof this._value === \"string\" && !this._value.length))\n );\n }\n\n public get errorState(): boolean {\n return this.ngControl ? this.ngControl.touched && this.ngControl.invalid : false;\n }\n\n @HostBinding(\"class.floating\")\n public get shouldLabelFloat(): boolean {\n return this.open || !this.empty;\n }\n\n constructor(\n @Optional() @Self() public ngControl: NgControl,\n private fm: FocusMonitor,\n private zone: NgZone,\n public elRef: ElementRef<HTMLElement>\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n fm.monitor(elRef.nativeElement, true).subscribe(origin => {\n if (this.ignoreNextFocus) {\n this.ignoreNextFocus = false;\n return;\n }\n\n this.focused = !!origin;\n this.stateChanges.next();\n if (this.focused && (!this._items || !this._items.length) && !this.loading) {\n this.searchControl.patchValue(\"\");\n }\n\n if (!this.focused && !this._value) {\n if (this.activeOption && this.activeOption.viewValue?.toLowerCase() === this.searchControl.value?.toLowerCase()) {\n this.onOptionSelected({\n option: this.activeOption,\n source: null\n });\n } else {\n if (!this.open) {\n this.onRemove();\n }\n }\n }\n });\n }\n\n private _items: any[];\n private _labelFormatFn: (item: unknown) => string;\n private _page = 0;\n\n @Input()\n public allowNotFoundItems = false;\n\n @Input()\n public panelClass: string | string[] = [];\n\n @Input()\n public bindValue: string;\n @Input()\n public bindLabel: string;\n\n /** @deprecated: Use NiceRemoteTypeahead instead */\n @Input()\n public typeahead: Subject<string>;\n /** @deprecated: Use NiceRemoteTypeahead instead */\n @Input()\n public page$: Subject<number>;\n\n @Input()\n public loading: boolean;\n @Input()\n public loadingPage: boolean;\n\n @Input()\n public searchFn: (search: string, option: any) => boolean;\n\n // tslint:disable-next-line:no-output-native\n @Output()\n public change = new EventEmitter();\n\n @ViewChild(\"searchInput\", { static: true })\n public input: ElementRef<HTMLInputElement>;\n\n @ViewChildren(MatOption)\n public options: MatOption[];\n\n public search$ = new Subject<string>();\n public searchControl = new FormControl(null);\n public values: unknown[] = [];\n public valueChangesSub$: Subscription;\n public searchSub$: Subscription;\n public open = false;\n public panelWidth = 0;\n public activeOption: MatOption;\n\n private updatingItem = false;\n private waitForItems = false;\n private ignoreNextFocus = false;\n private observer: ResizeObserver;\n\n /** MatFormField */\n private _required: boolean;\n private _disabled = false;\n private _placeholder: string;\n private _value: any;\n private _emptyPlaceholder: string;\n\n public stateChanges = new Subject<void>();\n public controlType = \"typeahead\";\n public focused = false;\n\n @HostBinding()\n public id: string = uuid.v4();\n @HostBinding(\"attr.aria-describedby\")\n public describedBy = \"\";\n\n @Input()\n public optionTemplate: TemplateRef<HTMLElement>;\n\n public propagate: (value: string) => void = () => {};\n\n public ngOnInit(): void {\n if (this.ngControl) {\n this.ngControl.statusChanges.subscribe((status) => {\n this.disabled = status === \"DISABLED\";\n });\n }\n\n this.searchSub$ = this.search$.subscribe(text => {\n if (!text || typeof text !== \"string\") {\n this.values = this._filter(\"\");\n return;\n }\n this.values = this._filter(text);\n });\n if (this.searchControl) {\n this.valueChangesSub$ = this.searchControl.valueChanges.subscribe(text => {\n if (this.updatingItem) {\n return;\n }\n\n if (this._value) {\n if (text === this.formatLabel(this.getValueItem())) {\n return;\n }\n\n this.value = null;\n }\n\n if (this.waitForItems) {\n this.waitForItems = false;\n return;\n }\n\n if (typeof text !== \"string\") {\n return;\n }\n\n if (this.typeahead) {\n this.setLoading(true);\n this._page = 0;\n this.typeahead.next(text);\n } else {\n this.search$.next(text);\n }\n });\n }\n\n this.observer = new ResizeObserver(entries => {\n this.zone.run(() => {\n this.panelWidth = entries[0].contentRect.width;\n });\n });\n\n this.observer.observe(this.elRef.nativeElement);\n }\n\n public ngOnDestroy(): void {\n this.search$?.complete();\n this.searchSub$?.unsubscribe();\n this.valueChangesSub$?.unsubscribe();\n this.stateChanges?.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n this.observer?.unobserve(this.elRef.nativeElement);\n }\n\n public onContainerClick(event: MouseEvent): void {}\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(\" \");\n }\n\n public registerOnChange(propagate: (value: string) => void): void {\n this.propagate = propagate;\n }\n\n public registerOnTouched(fn: any): void {\n // NO-OP\n }\n\n public writeValue(value: string): void {\n try {\n this.updatingItem = true;\n // If both are equal (considering null === undefined), consider that the value has not changed.\n if (this._value === value || (isNullOrUndefined(this._value) && isNullOrUndefined(value))) {\n return;\n }\n\n if (!value && this._value !== value) {\n this.onRemove(null);\n return;\n }\n this.value = value;\n if (!this._items) {\n this.waitForItems = true;\n return;\n }\n\n this.updateSearchInput();\n } finally {\n this.updatingItem = false;\n }\n }\n\n public onOptionActivated(event: MatAutocompleteActivatedEvent): void {\n this.activeOption = event.option;\n }\n\n public onOptionSelected(event: MatAutocompleteSelectedEvent): void {\n if (event.option.id === \"new-value-option\") {\n this.value = new NiceTypeaheadNewValue(this.searchControl.value);\n } else {\n this.updateLabel(event.option.value);\n this.value = this.bindValue ? this.getObjectItem(this.bindValue, event.option.value) : event.option.value;\n }\n this.change.emit(event.option.value);\n }\n\n public updateState(open: boolean): void {\n this.open = open;\n if (!this.open && this.ngControl) {\n this.ngControl.control.markAsTouched();\n }\n\n if (!this.open) {\n this.activeOption = null;\n if (!this._value) {\n this.onRemove();\n }\n }\n }\n\n public onRemove(event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.disabled) {\n return;\n }\n this.ignoreNextFocus = true;\n this.focused = false;\n this.value = null;\n this.searchControl.patchValue(null);\n if (this.ngControl?.control) {\n this.ngControl.control.markAsTouched();\n }\n this.stateChanges.next();\n this.change.emit();\n\n if (this.typeahead) {\n this.setLoading(true);\n this._page = 0;\n this.typeahead.next(\"\");\n } else {\n this.search$.next(\"\");\n }\n }\n\n public formatLabel(item: any): string {\n if (this._labelFormatFn) {\n return this._labelFormatFn(item);\n }\n\n if (this.bindLabel) {\n return this.getObjectItem(this.bindLabel, item);\n }\n\n if (typeof item !== \"string\") {\n return \"\";\n }\n\n return item;\n }\n\n private _filter(text: string): unknown[] {\n if (this._items) {\n const searchFn = this.searchFn || this.defaultSearch.bind(this);\n return this._items.filter(x => searchFn(text, x));\n }\n return [];\n }\n\n private defaultSearch(search: string, option: unknown): boolean {\n if (typeof option === \"string\") {\n return this.filterString(search, option);\n }\n\n if (typeof option !== \"object\") {\n return false;\n }\n\n if (this.bindLabel) {\n const item = this.getObjectItem(this.bindLabel, option);\n if (typeof item === \"string\") {\n return this.filterString(search, item);\n }\n } else if (this.formatLabel) {\n const item = this.formatLabel(option);\n if (typeof item === \"string\") {\n return this.filterString(search, item);\n }\n }\n\n return false;\n }\n\n private updateSearchInput(): void {\n if ((!this.waitForItems && !this._items) || !this._items) {\n return;\n }\n\n if (this._value instanceof NiceTypeaheadNewValue) {\n this.updateLabel(this._value.$new);\n return;\n }\n\n if (typeof this._value === \"object\") {\n this.updateLabel(this._value);\n return;\n }\n\n const search = this._items.find(\n v => (this.bindValue && typeof v === \"object\" ? this.getObjectItem(this.bindValue, v) : v) === this._value\n );\n if (search) {\n this.updateLabel(search);\n }\n }\n\n private filterString(text: string, value: string): boolean {\n return value.toLowerCase().includes(text.toLowerCase());\n }\n\n private updateLabel(item: unknown | string): void {\n if (!item) {\n return;\n }\n\n const label = this.formatLabel(item);\n\n if (label && label !== this.searchControl.value) {\n this.searchControl.patchValue(label, { emitEvent: false });\n }\n }\n\n public onEndScroll(): void {\n if (this.page$ && !this.loadingPage) {\n this.setLoadingPage(true);\n this._page++;\n this.page$.next(this._page);\n }\n }\n\n private getObjectItem(key: string, obj: object): any {\n const keys = key.split(\".\");\n let item = obj;\n for (const k of keys) {\n if (!item) {\n return item;\n }\n\n if (!item.hasOwnProperty(k)) {\n return item;\n }\n item = item[k];\n }\n\n return item;\n }\n\n private getValueItem(): any {\n if (!this.bindValue) {\n return this._value;\n }\n\n const keys = this.bindValue.split(\".\");\n return this._items.find(x => {\n let item = x;\n for (const k of keys) {\n if (!item) {\n return item;\n }\n\n if (!item.hasOwnProperty(k)) {\n return item;\n }\n item = item[k];\n }\n\n return item === this._value;\n });\n }\n\n private setLoading(loading: boolean): void {\n if (this.loading === undefined) {\n this.loading = loading;\n }\n }\n\n private setLoadingPage(loading: boolean): void {\n if (this.loadingPage === undefined) {\n this.loadingPage = loading;\n }\n }\n\n private checkIfValueStillExist(): void {\n if (this._value instanceof NiceTypeaheadNewValue) {\n return;\n }\n\n const item = this._items.find(\n v => (this.bindValue && typeof v === \"object\" ? this.getObjectItem(this.bindValue, v) : v) === this._value\n );\n if (item) {\n return;\n }\n\n if (this._value !== null && this._value !== undefined) {\n this.onRemove(null);\n }\n }\n}\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]=\"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","import { NgModule } from \"@angular/core\";\nimport { OptionsScrollDirective } from \"./options-scroll.directive\";\n\n@NgModule({\n declarations: [OptionsScrollDirective],\n exports: [OptionsScrollDirective]\n})\nexport class OptionScrollModule {}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\";\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { OptionScrollModule } from \"./directives/options-scroll.module\";\n\nimport { NiceTypeaheadComponent } from \"./typeahead.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n OptionScrollModule,\n MatAutocompleteModule,\n FormsModule,\n MatInputModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MatIconModule,\n MatButtonModule,\n TranslateModule\n ],\n declarations: [NiceTypeaheadComponent],\n exports: [NiceTypeaheadComponent]\n})\nexport class NiceTypeaheadModule {}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_ASYNC_TYPEAHEAD_PROVIDER = new InjectionToken(\"nice_async_typeahead_provider\");\n","import { Inject, Injectable, Optional } from \"@angular/core\";\nimport { BehaviorSubject, firstValueFrom, from, isObservable, mergeMap, Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { NICE_ASYNC_TYPEAHEAD_PROVIDER } from \"../async-typeahead.constant\";\nimport { NiceAsyncTypeaheadProvider } from \"./async-typeahead.provider\";\n\nexport class AsyncTypeaheadState {\n items: any[];\n active: any;\n loading: boolean;\n loadingPage: boolean;\n initialized: boolean;\n page: number;\n isLastPage: boolean;\n searchQuery?: string;\n excludedIds: any[];\n}\n\n@Injectable()\nexport class NiceAsyncTypeaheadService {\n private state$: BehaviorSubject<AsyncTypeaheadState> = new BehaviorSubject({\n items: [],\n active: null,\n loading: false,\n loadingPage: false,\n initialized: false,\n searchQuery: null,\n page: 0,\n isLastPage: false,\n excludedIds: []\n });\n\n public loading$ = this.state$.pipe(map(x => x.loading));\n public loadingPage$ = this.state$.pipe(map(x => x.loadingPage));\n public active$ = this.state$.pipe(map(x => x.active));\n public items$ = this.state$.pipe(map(x => x.items));\n public filteredItems$ = this.state$.pipe(map(x => x.items.filter(item => !x.excludedIds.includes(item.id))));\n\n constructor(@Optional() @Inject(NICE_ASYNC_TYPEAHEAD_PROVIDER) private readonly apis: NiceAsyncTypeaheadProvider<any>[]) {\n if (!this.apis) {\n this.apis = [];\n }\n }\n\n public async initialize(resource: string, options?: any): Promise<void> {\n const { initialized } = this.state$.getValue();\n if (initialized) {\n return;\n }\n\n return this.search(resource, \"\", options);\n }\n\n public async search(resource: string, searchQuery: string, options?: any): Promise<void> {\n const { active, initialized } = this.state$.getValue();\n\n if (active && !initialized) {\n this.state$.next({\n ...this.state$.value,\n initialized: true\n });\n return;\n }\n\n const api = this.apis.find(x => x.resource === resource);\n if (!api) {\n return;\n }\n\n try {\n this.state$.next({\n ...this.state$.value,\n loading: true,\n initialized: true,\n page: 0,\n isLastPage: false,\n searchQuery\n });\n\n const result = await api.search(searchQuery, 0, options);\n this.state$.next({\n ...this.state$.value,\n items: result.items,\n page: result.nextPage ? result.nextPage : this.state$.value.page,\n isLastPage: !result.nextPage\n });\n } catch {} finally {\n this.state$.next({\n ...this.state$.value,\n loading: false\n });\n }\n }\n\n public async loadMore(resource: string, options?: any): Promise<void> {\n const { loadingPage, isLastPage } = this.state$.getValue();\n if (loadingPage || isLastPage) {\n return;\n }\n\n const api = this.apis.find(x => x.resource === resource);\n if (!api) {\n return;\n }\n\n try {\n this.state$.next({\n ...this.state$.value,\n loadingPage: true\n });\n\n const { searchQuery, page, items } = this.state$.getValue();\n const result = await api.search(searchQuery, page, options);\n this.state$.next({\n ...this.state$.value,\n items: [...items, ...result.items],\n page: result.nextPage ? result.nextPage : this.state$.value.page,\n isLastPage: !result.nextPage\n });\n } catch {} finally {\n this.state$.next({\n ...this.state$.value,\n loadingPage: false\n });\n }\n }\n\n public getActive(): any {\n return this.state$.value.active;\n }\n\n public getInitialized(): boolean {\n return this.state$.value.initialized;\n }\n\n public setActive(entity: any | undefined): void {\n this.state$.next({\n ...this.state$.value,\n active: entity ?? null\n });\n }\n\n public async setActiveId(resource: string, id: any, options?: any): Promise<void> {\n if (!id) {\n return;\n }\n\n const api = this.apis.find(x => x.resource === resource);\n if (!api) {\n return;\n }\n\n try {\n this.state$.next({\n ...this.state$.value,\n loading: true\n });\n\n const entity = await api.getById(id, options);\n if (!entity) {\n return;\n }\n\n this.state$.next({\n ...this.state$.value,\n items: [entity],\n active: entity,\n page: 0,\n isLastPage: false\n });\n } catch {} finally {\n this.state$.next({\n ...this.state$.value,\n loading: false\n });\n }\n }\n\n public reloadActive(resource: string, options?: any): Promise<void> {\n return this.setActiveId(resource, this.state$.value.active?.id, options);\n }\n\n public reloadFilteredItems(): void {\n // TODO: Use a better way to trigger the items$ observable\n this.state$.next({\n ...this.state$.value\n });\n }\n\n public setFilterFn(filterFn: (value: any) => boolean | Promise<boolean> | Observable<boolean>): void {\n this.filteredItems$ = this.items$.pipe(mergeMap(items => {\n return from(Promise.all(items.map(async item => {\n const result = filterFn(item);\n\n const unwrappedResult = isObservable(result) ? await firstValueFrom(result) : await result;\n\n return [item, unwrappedResult];\n })));\n }\n ),\n map(items => items.filter(([item, keep]) => keep).map(([item, keep]) => item))\n );\n }\n\n public format(resource: string, item: string): string {\n const api = this.apis.find(x => x.resource === resource);\n if (!api) {\n return \"\";\n }\n\n return api.format(item);\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional, Output,\n Self,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { ControlValueAccessor, FormControl, FormGroupDirective, NgControl, NgForm, Validators } from \"@angular/forms\";\nimport { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from \"@angular/material/autocomplete\";\nimport { ErrorStateMatcher, MatOption, mixinErrorState } from \"@angular/material/core\";\nimport { MatFormFieldControl } from \"@angular/material/form-field\";\nimport { debounceTime, distinctUntilChanged, firstValueFrom, Observable, Subject, Subscription } from \"rxjs\";\nimport * as uuid from \"uuid\";\nimport { isNullOrUndefined } from \"../../utils\";\nimport { NiceTypeaheadNewValue } from \"../typeahead\";\nimport { NiceAsyncTypeaheadService } from \"./providers/async-typeahead.service\";\n\n// Boilerplate for applying mixins to ).\n/** @docs-private */\nconst _BaseAsyncTypeaheadComponent = mixinErrorState(\n class {\n /**\n * Emits whenever the component state changes and should cause the parent\n * form field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /**\n * Form control bound to the component.\n * Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n public ngControl: NgControl\n ) {}\n }\n);\n\n@Component({\n selector: \"nice-async-typeahead\",\n templateUrl: \"async-typeahead.template.html\",\n styleUrls: [\"async-typeahead.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MatFormFieldControl,\n useExisting: NiceAsyncTypeaheadComponent\n },\n NiceAsyncTypeaheadService\n ]\n})\n// tslint:disable-next-line:max-line-length\nexport class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, MatFormFieldControl<any>, DoCheck {\n public stateChanges = new Subject<void>();\n public controlType = \"remote-typeahead\";\n public focused = false;\n\n public searchControl = new FormControl(null);\n public valueChangesSub$: Subscription;\n public open = false;\n public panelWidth = 0;\n public activeOption: MatOption;\n\n public active$ = this.service.active$;\n\n @ViewChild(\"searchInput\")\n public input: ElementRef<HTMLInputElement>;\n\n @ViewChildren(MatOption)\n public options: MatOption[];\n\n @Output()\n public entityRemoved = new EventEmitter<void>();\n\n @Input()\n public resource: string;\n\n @Input()\n public searchOptions: any;\n\n @Input()\n public preloadResource = false;\n\n @Input()\n public allowNotFoundItems = false;\n\n @Input()\n public panelClass: string | string[] = [];\n\n @Input()\n public bindValue = \"id\";\n\n @Input()\n public bindLabel: string;\n\n @Input()\n public placeholder: string;\n\n @Input()\n public emptyPlaceholder: string;\n\n @Input()\n public optionTemplate: TemplateRef<HTMLElement>;\n\n @Input()\n public filterFn: (value: any) => boolean | Promise<boolean> | Observable<boolean>;\n\n @Output()\n public selected = new EventEmitter<any>();\n\n @Input()\n public set labelFormatFn(labelFormatFn: (item: any) => string) {\n this._labelFormatFn = labelFormatFn;\n }\n private _labelFormatFn: (item: any) => string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n public set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._disabled) {\n this.searchControl.disable({ emitEvent: false });\n } else {\n this.searchControl.enable({ emitEvent: false });\n }\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n public get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n public set value(value: any) {\n if (value !== this._value) {\n this._value = value;\n this.propagate(value);\n this.stateChanges.next();\n this.selected.emit(value);\n }\n }\n public get value(): string {\n return this._value;\n }\n private _value: any;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n public set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n }\n public get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n protected _required: boolean | undefined;\n\n @HostBinding(\"class.floating\")\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n @HostBinding()\n public id: string = uuid.v4();\n\n @HostBinding(\"attr.aria-describedby\")\n public describedBy = \"\";\n\n public get empty(): boolean {\n return (\n (!this.searchControl.value || !this.searchControl.value.length) &&\n (!this._value || (typeof this._value === \"string\" && !this._value.length))\n );\n }\n\n public get initialized(): boolean {\n return this.service.getInitialized();\n }\n\n public propagate: (value: string) => void = () => {};\n\n constructor(\n @Optional() @Self() ngControl: NgControl,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n defaultErrorStateMatcher: ErrorStateMatcher,\n private ngZone: NgZone,\n private changeDetectorRef: ChangeDetectorRef,\n public service: NiceAsyncTypeaheadService,\n ) {\n super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n if (this.ngControl) {\n if (this.ngControl.disabled) {\n this.searchControl.disable({ emitEvent: false });\n }\n\n this.ngControl.statusChanges.subscribe((status) => {\n this.disabled = status === \"DISABLED\";\n if (this._disabled) {\n this.searchControl.disable({ emitEvent: false });\n } else {\n this.searchControl.enable({ emitEvent: false });\n }\n });\n }\n\n if (this.filterFn) {\n this.service.setFilterFn(this.filterFn);\n }\n\n if (this.searchControl) {\n this.valueChangesSub$ = this.searchControl.valueChanges.pipe(debounceTime(500), distinctUntilChanged()).subscribe(text => {\n if (typeof text !== \"string\") {\n return;\n }\n\n this.service.search(this.resource, text, this.searchOptions);\n });\n }\n\n if (this.preloadResource) {\n this.service.search(this.resource, \"\", this.searchOptions);\n }\n }\n\n public ngOnDestroy(): void {\n this.valueChangesSub$.unsubscribe();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (\"searchOptions\" in changes) {\n const change = changes.searchOptions;\n if (!change.isFirstChange() && change.currentValue !== change.previousValue) {\n this.service.search(this.resource, \"\", change.currentValue).then(() => this.checkIfValueStillExist());\n }\n }\n\n if (\"filterFn\" in changes) {\n const change = changes.filterFn;\n if (!change.isFirstChange() && change.currentValue !== change.previousValue) {\n this.service.setFilterFn(change.currentValue);\n }\n }\n\n this.stateChanges.next();\n }\n\n public ngDoCheck(): void {\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n\n public async writeValue(value: any): Promise<void> {\n if (this._value === value || (isNullOrUndefined(this._value) && isNullOrUndefined(value))) {\n return;\n }\n\n if (!value && this._value !== value) {\n this.onRemove(null);\n return;\n }\n\n if (value instanceof NiceTypeaheadNewValue) {\n this.updateSearchInput();\n return;\n } else {\n await this.service.setActiveId(this.resource, value, this.searchOptions).then(() => this.updateSearchInput());\n }\n\n this.value = value;\n }\n\n public registerOnChange(propagate: (value: string) => void): void {\n this.propagate = propagate;\n }\n\n public registerOnTouched(fn: any): void {\n // NO-OP\n }\n\n public onContainerClick(event: MouseEvent): void {\n this.stateChanges.next();\n }\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(\" \");\n }\n\n public getActive<T = any>(): T {\n return this.service.getActive();\n }\n\n public onOptionActivated(event: MatAutocompleteActivatedEvent): void {\n this.activeOption = event.option;\n }\n\n public onOptionSelected(event: MatAutocompleteSelectedEvent): void {\n if (event.option.id === \"new-value-option\") {\n this.value = new NiceTypeaheadNewValue(this.searchControl.value);\n } else {\n this.updateLabel(event.option.value);\n this.service.setActive(event.option.value);\n this.value = this.bindValue ? this.getObjectItem(this.bindValue, event.option.value) : event.option.value;\n }\n }\n\n public updateState(open: boolean): void {\n this.open = open;\n\n if (!this.open) {\n this.ngZone.run(() => {\n this.focusChanged(false);\n this.changeDetectorRef.markForCheck();\n });\n }\n\n if (this.open && !this.initialized) {\n this.service.initialize(this.resource, this.searchOptions);\n }\n\n if (!this.open && this.ngControl) {\n this.ngControl.control.markAsTouched();\n }\n\n if (!this.open) {\n this.activeOption = null;\n if (!this._value && this.searchControl.value) {\n this.onRemove();\n }\n }\n }\n\n public onRemove(event?: Event, reload = true): void {\n if (event) {\n // event.stopPropagation();\n }\n if (this.disabled) {\n return;\n }\n this.service.setActive(null);\n this.value = null;\n this.searchControl.patchValue(null);\n if (this.ngControl?.control) {\n this.ngControl.control.markAsTouched();\n }\n this.stateChanges.next();\n\n this.entityRemoved.emit();\n\n if (reload) {\n this.service.search(this.resource, \"\", this.searchOptions);\n }\n }\n\n public formatLabel(item: any): string {\n if (this._labelFormatFn) {\n return this._labelFormatFn(item);\n }\n\n if (this.bindLabel) {\n return this.getObjectItem(this.bindLabel, item);\n }\n\n if (typeof item !== \"string\") {\n return this.service.format(this.resource, item);\n }\n\n return item;\n }\n\n public onEndScroll(): void {\n this.service.loadMore(this.resource, this.searchOptions);\n }\n\n public focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n\n if (isFocused && this.filterFn) {\n this.service.reloadFilteredItems();\n }\n }\n }\n\n public async reloadActive(): Promise<void> {\n await this.service?.reloadActive(this.resource, this.searchOptions);\n const active = this.service?.getActive();\n this.updateLabel(active);\n }\n\n private updateLabel(item: unknown | string): void {\n if (!item) {\n return;\n }\n\n const label = this.formatLabel(item);\n\n if (label && label !== this.searchControl.value) {\n this.searchControl.patchValue(label, { emitEvent: false });\n }\n }\n\n private getObjectItem(key: string, obj: object): any {\n const keys = key.split(\".\");\n let item = obj;\n for (const k of keys) {\n if (!item) {\n return item;\n }\n\n if (!item.hasOwnProperty(k)) {\n return item;\n }\n item = item[k];\n }\n\n return item;\n }\n\n private updateSearchInput(): void {\n if (this._value instanceof NiceTypeaheadNewValue) {\n this.updateLabel(this._value.$new);\n return;\n }\n\n const active = this.service.getActive();\n if (active) {\n this.updateLabel(active);\n return;\n }\n }\n\n private async checkIfValueStillExist(): Promise<void> {\n if (this._value instanceof NiceTypeaheadNewValue) {\n return;\n }\n\n const items = await firstValueFrom(this.service.filteredItems$);\n const item = items.find(\n v => (this.bindValue && typeof v === \"object\" ? this.getObjectItem(this.bindValue, v) : v) === this._value\n );\n if (item) {\n return;\n }\n\n if (this._value !== null && this._value !== undefined) {\n this.onRemove(null);\n }\n }\n}\n","<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 *ngIf=\"open && ctx.loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\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 </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","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule, Type } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\";\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { OptionScrollModule } from \"../typeahead/directives/options-scroll.module\";\n\nimport { NiceAsyncTypeaheadComponent } from \"./async-typeahead.component\";\nimport { NICE_ASYNC_TYPEAHEAD_PROVIDER } from \"./async-typeahead.constant\";\nimport { NiceAsyncTypeaheadProvider } from \"./providers/async-typeahead.provider\";\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n OptionScrollModule,\n MatInputModule,\n MatAutocompleteModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n TranslateModule\n ],\n declarations: [NiceAsyncTypeaheadComponent],\n providers: [],\n exports: [NiceAsyncTypeaheadComponent]\n})\nexport class NiceAsyncTypeaheadModule {\n public static register(providers: Type<NiceAsyncTypeaheadProvider<any, any>>[]): ModuleWithProviders<NiceAsyncTypeaheadModule> {\n return {\n ngModule: NiceAsyncTypeaheadModule,\n providers: providers.map(x => ({\n provide: NICE_ASYNC_TYPEAHEAD_PROVIDER,\n useClass: x,\n multi: true\n }))\n };\n }\n}\n","import { CdkStepper } from \"@angular/cdk/stepper\";\nimport { Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild } from \"@angular/core\";\nimport { ControlValueAccessor, FormGroup } from \"@angular/forms\";\nimport { GeneratedFormGroup } from \"@recursyve/ngx-form-generator\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { KeyboardCodes } from \"../../utils\";\n\n@Component({\n template: ``\n})\nexport abstract class NiceBaseFormComponent<Form> implements OnInit, OnDestroy, ControlValueAccessor {\n @ViewChild(CdkStepper)\n private stepper: CdkStepper;\n\n @Input()\n public loading = false;\n\n // tslint:disable-next-line:no-output-native\n @Output()\n public submit = new EventEmitter<Form>();\n\n protected unsubscribeAll$ = new Subject<void>();\n\n private propagate: (form: Form) => void = () => {};\n\n constructor(public formGroup: GeneratedFormGroup<Form>) {}\n\n public ngOnInit(): void {\n this.formGroup.valueChanges.pipe(takeUntil(this.unsubscribeAll$)).subscribe(() => {\n this.onValueChange(this.formGroup.getRawValue());\n });\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$?.next();\n this.unsubscribeAll$?.complete();\n }\n\n public registerOnChange(fn: (form: Form) => void): void {\n this.propagate = fn;\n }\n\n public registerOnTouched(fn: (form: Form) => void): void {\n // NO-OP\n }\n\n public writeValue(form: Form): void {\n if (form) {\n this.formGroup.patchValue(form);\n }\n }\n\n public clickSubmit(): void {\n if (!this.validate()) {\n return;\n }\n this.submit.emit(this.formGroup.getRawValue());\n }\n\n public clickNext(index: number): void {\n this.validateStep(index);\n if (this.stepper) {\n this.stepper.next();\n }\n }\n\n public clickPrevious(): void {\n if (this.stepper) {\n this.stepper.previous();\n }\n }\n\n protected onValueChange(value: Form): void {\n this.propagate(value);\n }\n\n public validate(): boolean {\n if (this.formGroup.valid) {\n return true;\n }\n this.formGroup.markAllAsTouched();\n return false;\n }\n\n protected validateStep(index: number): boolean {\n const group = this.getCurrentStepGroup(index);\n if (group?.valid) {\n return true;\n }\n group?.markAllAsTouched();\n return false;\n }\n\n protected getCurrentStepGroup(index: number): FormGroup | null {\n return null;\n }\n}\n","import { Directive, HostListener, Input } from \"@angular/core\";\nimport { NiceBaseFormComponent } from \"./base-form.component\";\n\n@Directive({ selector: \"[niceFormSubmit]\" })\nexport class NiceFormSubmitDirective {\n @Input()\n public form: NiceBaseFormComponent<any>;\n\n @HostListener(\"click\")\n public onClick(): void {\n this.form.clickSubmit();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceFormSubmitDirective } from \"./form-submit.directive\";\n\n@NgModule({\n declarations: [NiceFormSubmitDirective],\n exports: [NiceFormSubmitDirective]\n})\nexport class NiceBaseFormModule {}\n","export class NiceBaseForm<T, Dto> {\n\n constructor(value?: Partial<T>) {\n if (!value) {\n return;\n }\n Object.assign(this, value);\n }\n\n public toDto(): Dto {\n return {\n ...this\n } as any;\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport { Component, HostBinding, Input, OnChanges, SimpleChanges, ViewEncapsulation } from \"@angular/core\";\nimport { niceAnimations } from \"../../animations\";\nimport { NiceCardFace } from \"./card.types\";\n\n@Component({\n selector: \"nice-card\",\n templateUrl: \"./card.component.html\",\n encapsulation: ViewEncapsulation.None,\n animations: niceAnimations,\n exportAs: \"niceCard\"\n})\nexport class NiceCardComponent implements OnChanges {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_expanded: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_flippable: BooleanInput;\n\n @Input()\n public expanded = false;\n\n @Input()\n public face: NiceCardFace = \"front\";\n\n @Input()\n public flippable = false;\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component classes\n */\n @HostBinding(\"class\")\n public get classList(): any {\n return {\n \"nice-card-expanded\": this.expanded,\n \"nice-card-face-back\": this.flippable && this.face === \"back\",\n \"nice-card-face-front\": this.flippable && this.face === \"front\",\n \"nice-card-flippable\": this.flippable\n };\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Expanded\n if (\"expanded\" in changes) {\n // Coerce the value to a boolean\n this.expanded = coerceBooleanProperty(changes.expanded.currentValue);\n }\n\n // Flippable\n if (\"flippable\" in changes) {\n // Coerce the value to a boolean\n this.flippable = coerceBooleanProperty(changes.flippable.currentValue);\n }\n }\n}\n","<!-- Flippable card -->\n<ng-container *ngIf=\"flippable\">\n <!-- Front -->\n <div class=\"nice-card-front\">\n <ng-content select=\"[niceCardFront]\"></ng-content>\n </div>\n\n <!-- Back -->\n <div class=\"nice-card-back\">\n <ng-content select=\"[niceCardBack]\"></ng-content>\n </div>\n</ng-container>\n\n<!-- Normal card -->\n<ng-container *ngIf=\"!flippable\">\n <!-- Content -->\n <ng-content></ng-content>\n\n <!-- Expansion -->\n <div\n class=\"nice-card-expansion\"\n *ngIf=\"expanded\"\n [@expandCollapse]>\n <ng-content select=\"[niceCardExpansion]\"></ng-content>\n </div>\n</ng-container>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { NiceCardComponent } from \"./card.component\";\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n NiceCardComponent\n ],\n exports: [\n NiceCardComponent\n ]\n})\nexport class NiceCardModule {\n}\n","import { Component, ViewEncapsulation } from \"@angular/core\";\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: \"nice-picture-modal\",\n styleUrls: [\"picture-modal.style.scss\"],\n templateUrl: \"picture-modal.template.html\"\n})\nexport class PictureModalComponent {\n public picture: string;\n}\n","<div class=\"overlay-content\">\n <img [src]=\"picture\" />\n</div>\n","import { Overlay } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Injectable } from \"@angular/core\";\nimport { PictureModalComponent } from \"./picture-modal.component\";\n\nexport interface PictureModalConfig {\n picture?: string;\n}\n\n@Injectable()\nexport class PictureModalService {\n constructor(private overlay: Overlay) {}\n\n public open(config: PictureModalConfig) {\n const positionStrategy = this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically();\n\n const overlayRef = this.overlay.create({\n backdropClass: \"cdk-overlay-dark-backdrop\",\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n const pictureModalPortal = new ComponentPortal(PictureModalComponent);\n const pictureModalRef = overlayRef.attach(pictureModalPortal);\n\n pictureModalRef.instance.picture = config.picture;\n\n overlayRef.backdropClick().subscribe(() => overlayRef.dispose());\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"carouselLayout\" })\nexport class CarouselLayoutPipe implements PipeTransform {\n public transform(value: \"row\" | \"column\", direction: \"ltr\" | \"rtl\" | \"utd\" | \"dtu\"): string {\n if (value === \"row\") {\n return direction === \"rtl\" ? \"flex-row-reverse\" : \"flex-row\";\n }\n return direction === \"utd\" ? \"flex-col\" : \"flex-col-reverse\";\n }\n}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from \"@angular/core\";\nimport { PictureModalService } from \"./picture-modal/picture-modal.service\";\n\nexport interface Picture {\n id: number;\n url: string;\n}\n\n@Component({\n selector: \"nice-carousel\",\n templateUrl: \"carousel.template.html\",\n styleUrls: [\"./carousel.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class CarouselComponent {\n public currentImages: Picture[];\n\n @Input()\n public set images(urls: Picture[]) {\n this.currentImages = urls;\n }\n\n @Input()\n public direction: \"ltr\" | \"rtl\" | \"utd\" | \"dtu\" = \"ltr\";\n\n @Input()\n public layout: \"row\" | \"column\" = \"row\";\n\n @Input()\n public editable = false;\n\n @Output()\n public delete = new EventEmitter<Picture>();\n\n constructor(private pictureModalService: PictureModalService) {}\n\n public clickView(picture: Picture) {\n this.pictureModalService.open({\n picture: picture.url\n });\n }\n\n public clickDelete(picture: Picture) {\n this.delete.emit(picture);\n }\n}\n","<div class=\"slides-container\">\n <div class=\"slides flex\" [ngClass]=\"layout | carouselLayout: direction\">\n <div class=\"slide\" *ngFor=\"let image of currentImages\">\n <img [src]=\"image?.url\" (click)=\"clickView(image)\"/>\n <i class=\"fad fa-times-circle remove-button\" (click)=\"clickDelete(image)\" *ngIf=\"editable\"></i>\n </div>\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { CarouselComponent } from \"./carousel.component\";\nimport { PictureModalComponent } from \"./picture-modal\";\nimport { PictureModalService } from \"./picture-modal\";\nimport { CarouselLayoutPipe } from \"./pipe/carousel-layout.pipe\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatCardModule,\n MatButtonModule,\n TranslateModule,\n MatIconModule\n ],\n exports: [CarouselComponent],\n declarations: [CarouselComponent, PictureModalComponent, CarouselLayoutPipe],\n entryComponents: [PictureModalComponent],\n providers: [PictureModalService]\n})\nexport class NiceCarouselModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit, Output,\n SimpleChanges,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@Component({\n selector: \"nice-collapsable\",\n templateUrl: \"collapsable.template.html\",\n styleUrls: [\"collapsable.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceCollapsableComponent implements OnInit, OnChanges, OnDestroy {\n @Input()\n public open: boolean;\n\n @Output()\n public openChange = new EventEmitter<boolean>();\n\n public unsubscribeAll$ = new Subject<void>();\n public control = new FormControl(false);\n\n public ngOnInit(): void {\n this.control.valueChanges.pipe(takeUntil(this.unsubscribeAll$)).subscribe(open => this.openChange.emit(open));\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"open\" in changes) {\n this.control.patchValue(this.open);\n }\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n}\n","<div class=\"nice-collapse\">\n <input type=\"checkbox\" class=\"peer cursor-pointer\" [formControl]=\"control\"/>\n <div class=\"collapse-title\">\n <ng-content select=\"[niceCollapsableTitle]\"></ng-content>\n </div>\n <div class=\"collapse-content\">\n <div class=\"content\">\n <ng-content select=\"[niceCollapsableContent]\"></ng-content>\n </div>\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\n\nimport { NiceCollapsableComponent } from \"./collapsable.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n declarations: [NiceCollapsableComponent],\n providers: [],\n exports: [NiceCollapsableComponent]\n})\nexport class NiceCollapsableModule {}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\n\n@Injectable()\nexport class NiceDateRangePickerServiceService {\n public allowClear$ = new BehaviorSubject(true);\n\n public setAllowClear(allowClear: boolean): void {\n this.allowClear$.next(allowClear);\n }\n}\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { DateAdapter } from \"@angular/material/core\";\nimport { MatDateRangePicker } from \"@angular/material/datepicker\";\nimport { NiceDateRangePickerServiceService } from \"../../providers/date-range-picker.service\";\n\nconst customPresets = [\n \"today\",\n \"last_7_days\",\n \"this_week\",\n \"this_month\",\n \"this_year\",\n \"last_week\",\n \"last_month\",\n \"last_year\",\n];\n\ntype CustomPreset = typeof customPresets[number];\n\n@Component({\n selector: \"nice-range-preset\",\n templateUrl: \"range-preset.template.html\",\n styleUrls: [\"range-preset.style.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RangePresetComponent<D> {\n public readonly customPresets = customPresets;\n public readonly allowClear$ = this.service.allowClear$;\n\n constructor(\n private dateAdapter: DateAdapter<D>,\n private picker: MatDateRangePicker<D>,\n private service: NiceDateRangePickerServiceService\n ) {}\n\n public clearRange(): void {\n this.picker.select(null);\n this.picker.select(null);\n this.picker.close();\n }\n\n public selectRange(rangeName: CustomPreset): void {\n const [start, end] = this.calculateDateRange(rangeName);\n this.picker.select(start);\n this.picker.select(end);\n this.picker.close();\n }\n\n private calculateDateRange(rangeName: CustomPreset): [start: D, end: D] {\n const today = this.today;\n const year = this.dateAdapter.getYear(today);\n\n switch (rangeName) {\n case \"today\":\n return [today, today];\n case \"last_7_days\": {\n const start = this.dateAdapter.addCalendarDays(today, -6);\n return [start, today];\n }\n case \"this_week\": {\n return this.calculateWeek(today);\n }\n case \"this_month\": {\n return this.calculateMonth(today);\n }\n case \"this_year\": {\n const start = this.dateAdapter.createDate(year, 0, 1);\n const end = this.dateAdapter.createDate(year, 11, 31);\n return [start, end];\n }\n case \"last_week\": {\n const thisDayLastWeek = this.dateAdapter.addCalendarDays(today, -7);\n return this.calculateWeek(thisDayLastWeek);\n }\n case \"last_month\": {\n const thisDayLastMonth = this.dateAdapter.addCalendarMonths(today, -1);\n return this.calculateMonth(thisDayLastMonth);\n }\n case \"last_year\": {\n const start = this.dateAdapter.createDate(year - 1, 0, 1);\n const end = this.dateAdapter.createDate(year - 1, 11, 31);\n return [start, end];\n }\n default:\n return null;\n }\n }\n\n private calculateMonth(forDay: D): [start: D, end: D] {\n const year = this.dateAdapter.getYear(forDay);\n const month = this.dateAdapter.getMonth(forDay);\n const start = this.dateAdapter.createDate(year, month, 1);\n const end = this.dateAdapter.addCalendarDays(\n start,\n this.dateAdapter.getNumDaysInMonth(forDay) - 1\n );\n return [start, end];\n }\n\n private calculateWeek(forDay: D): [start: D, end: D] {\n const deltaStart = this.dateAdapter.getFirstDayOfWeek() - this.dateAdapter.getDayOfWeek(forDay);\n const start = this.dateAdapter.addCalendarDays(forDay, deltaStart);\n const end = this.dateAdapter.addCalendarDays(start, 6);\n return [start, end];\n }\n\n private get today(): D {\n const today = this.dateAdapter.getValidDateOrNull(new Date());\n if (today === null) {\n throw new Error(\"date creation failed\");\n }\n return today;\n }\n}\n","<mat-card class=\"mat-elevation-z3\">\n <button\n *ngIf=\"allowClear$ | async\"\n mat-button\n (click)=\"clearRange()\"\n >\n {{ \"nice_ui_kit.date_range_picker.clear\" | translate }}\n </button>\n\n <button\n *ngFor=\"let item of customPresets\"\n mat-button\n (click)=\"selectRange(item)\"\n >\n {{ \"nice_ui_kit.date_range_picker.presets.\" + item | translate }}\n </button>\n</mat-card>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnDestroy } from \"@angular/core\";\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from \"@angular/material/core\";\nimport { MatCalendar } from \"@angular/material/datepicker\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@Component({\n templateUrl: \"header.template.html\",\n styleUrls: [\"header.style.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HeaderComponent<D> implements OnDestroy {\n private readonly destroy$ = new Subject<void>();\n\n public toggled = false;\n\n constructor(\n private calendar: MatCalendar<D>,\n private dateAdapter: DateAdapter<D>,\n @Inject(MAT_DATE_FORMATS) private dateFormats: MatDateFormats,\n cdr: ChangeDetectorRef\n ) {\n calendar.stateChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => cdr.markForCheck());\n }\n\n public get periodLabel(): string {\n return this.dateAdapter\n .format(this.calendar.activeDate, this.dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n\n public previousClicked(mode: \"month\" | \"year\"): void {\n this.changeDate(mode, -1);\n }\n\n public nextClicked(mode: \"month\" | \"year\"): void {\n this.changeDate(mode, 1);\n }\n\n private changeDate(mode: \"month\" | \"year\", amount: -1 | 1): void {\n this.calendar.activeDate =\n mode === \"month\"\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, amount)\n : this.dateAdapter.addCalendarYears(this.calendar.activeDate, amount);\n }\n\n public clickOptions() {\n this.toggled = !this.toggled;\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n }\n}\n","<div class=\"hidden md:block\" fxHide.lt-md>\n <nice-range-preset></nice-range-preset>\n</div>\n<div class=\"block md:hidden\">\n <ng-container *ngIf=\"toggled\">\n <nice-range-preset></nice-range-preset>\n </ng-container>\n</div>\n\n<div class=\"header\">\n <button\n fxHide.gt-md\n mat-icon-button\n (click)=\"clickOptions()\"\n >\n <mat-icon>sort</mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"double-arrow\"\n (click)=\"previousClicked('year')\"\n >\n <mat-icon>keyboard_arrow_left</mat-icon>\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n <button mat-icon-button (click)=\"previousClicked('month')\">\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n\n <span class=\"header-label\">{{ periodLabel }}</span>\n\n <button mat-icon-button (click)=\"nextClicked('month')\">\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"double-arrow\"\n (click)=\"nextClicked('year')\"\n >\n <mat-icon>keyboard_arrow_right</mat-icon>\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n</div>\n","import { DatePipe } from \"@angular/common\";\nimport { Pipe, PipeTransform } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({ name: \"localizedDate\" })\nexport class LocalizedDatePipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n public transform(value: any, pattern: string = \"mediumDate\", fallbackWithNull = false, timeZone?: string): string {\n if (pattern === \"mediumDateWithoutYear\") {\n pattern = this.getMediumDateWithoutYearPattern();\n }\n\n const datePipe: DatePipe = new DatePipe(this.translateService.currentLang, timeZone);\n\n if (value instanceof Date) {\n if (isNaN(value.getTime())) {\n return fallbackWithNull ? null : this.translateService.instant(\"general.not_available\");\n }\n }\n\n if (value && value !== \"0000-00-00\") {\n return datePipe.transform(value, pattern);\n } else {\n return fallbackWithNull ? null : this.translateService.instant(\"general.not_available\");\n }\n }\n\n private getMediumDateWithoutYearPattern(): string {\n if (this.translateService.defaultLang === \"fr\") {\n return \"d MMMM\";\n }\n return \"MMMM d\";\n }\n}\n","import { Component, forwardRef, Input, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\nimport { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { MatDateRangePicker } from \"@angular/material/datepicker\";\nimport subDays from \"date-fns/subDays\";\nimport { HeaderComponent } from \"./components/header/header.component\";\n\nexport interface NiceDateRangePickerValue {\n from: Date;\n to: Date;\n}\n\n@Component({\n selector: \"nice-date-range-picker\",\n templateUrl: \"date-range-picker.template.html\",\n styleUrls: [\"date-range-picker.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceDateRangePickerComponent),\n multi: true\n }\n ]\n})\nexport class NiceDateRangePickerComponent implements OnInit, ControlValueAccessor {\n public readonly HeaderComponent = HeaderComponent;\n\n @ViewChild(MatDateRangePicker)\n private picker: MatDateRangePicker<any>;\n\n @Input()\n public min = subDays(new Date(), 3);\n\n @Input()\n public max = new Date();\n\n @Input()\n public nowIsMax = true;\n\n @Input()\n public allowClear = true;\n\n public formGroup = new FormGroup({\n from: new FormControl(),\n to: new FormControl()\n });\n public now = new Date();\n public value: NiceDateRangePickerValue;\n\n private propage: (value: NiceDateRangePickerValue) => void;\n\n public ngOnInit(): void {\n this.value = {\n from: this.min,\n to: this.max\n };\n this.formGroup.patchValue(this.value);\n\n this.formGroup.valueChanges.subscribe((_) => {\n this.value = this.formGroup.getRawValue();\n this.propage?.(this.value);\n });\n }\n\n public writeValue(value: NiceDateRangePickerValue): void {\n this.value = value;\n this.formGroup.patchValue(this.value);\n }\n\n public registerOnChange(fn: (value: NiceDateRangePickerValue) => void): void {\n this.propage = fn;\n }\n\n public registerOnTouched(fn: any): void {}\n}\n","<div class=\"nice-date-picker-container\">\n <div class=\"nice-date-picker-header\">\n <div class=\"from-to\">\n <ng-container *ngIf=\"value.from\">\n {{ value.from | localizedDate: \"longDate\" }}\n </ng-container>\n <ng-container *ngIf=\"value.to\">\n <div class=\"separator\">-</div>\n {{ value.to | localizedDate: \"longDate\" }}\n </ng-container>\n </div>\n </div>\n\n <mat-date-range-input [formGroup]=\"formGroup\" [max]=\"nowIsMax ? now : null\" [rangePicker]=\"picker\">\n <input formControlName=\"from\" class=\"hidden-input\" matStartDate placeholder=\"Start date\">\n <input formControlName=\"to\" class=\"hidden-input\" matEndDate placeholder=\"End date\">\n </mat-date-range-input>\n\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n\n <mat-date-range-picker\n [calendarHeaderComponent]=\"HeaderComponent\"\n #picker\n ></mat-date-range-picker>\n</div>\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({ name: \"boolean\" })\nexport class BooleanPipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n public transform(value: any): string {\n if (typeof value !== \"boolean\") {\n return \"\";\n }\n\n return this.translateService.instant(value ? \"general.yes\" : \"general.no\");\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { isNullOrUndefined } from \"../utils/type.utils\";\n\n@Pipe({ name: \"capitalizeFirstLetter\" })\nexport class CapitalizeFirstLetterPipe implements PipeTransform {\n public transform(value: string): string {\n if (isNullOrUndefined(value)) {\n return value;\n }\n\n return value.charAt(0).toUpperCase() + value.slice(1);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"ceil\" })\nexport class CeilPipe implements PipeTransform {\n public transform(input: number) {\n return Math.ceil(input);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"entries\" })\nexport class EntriesPipe implements PipeTransform {\n public transform<Value>(value: Value): { key: keyof Value, value: any }[] {\n const keys: { key: keyof Value, value: any }[] = [];\n\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n keys.push({\n key,\n value: value[key]\n });\n }\n }\n\n return keys;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"findByKey\" })\nexport class FindByKeyPipe implements PipeTransform {\n public transform<ArrayType, ValueType>(array: ArrayType[], value: ValueType, key = \"id\"): ArrayType {\n return (array ?? []).find((v) => v?.[key] === value);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"firstLetter\" })\nexport class FirstLetterPipe implements PipeTransform {\n public transform(value: string): string {\n return value?.[0];\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"floor\" })\nexport class FloorPipe implements PipeTransform {\n public transform(input: number) {\n return Math.floor(input);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"join\" })\nexport class JoinPipe implements PipeTransform {\n public transform(array: any[], separator = \" \", prop?: string): string {\n if (!array?.length) {\n return \"general.not_available\";\n }\n\n if (!prop) {\n return array.filter(x => x).join(separator);\n }\n return array.filter(x => x).map(x => x[prop]).join(separator);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { UrlUtils } from \"../utils/url.utils\";\n\n@Pipe({ name: \"link\" })\nexport class LinkPipe implements PipeTransform {\n public transform(value: string, type: \"mailto\"): string;\n public transform(value: { phoneNumber: string, extension?: string }, type: \"tel\"): string;\n public transform(value: { address: string, postalCode: string }, type: \"direction\"): string;\n public transform(value: any, type: \"mailto\" | \"tel\" | \"direction\"): string {\n if (!value) {\n return;\n }\n\n switch (type) {\n case \"mailto\":\n return UrlUtils.emailUrl(value);\n case \"tel\":\n return UrlUtils.phoneCallUrl(value.phoneNumber, value.extension);\n case \"direction\":\n return UrlUtils.directionUrl(value.address, value.postalCode);\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({ name: \"localizedBoolean\" })\nexport class LocalizedBooleanPipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n public transform(value: boolean): any {\n return this.translateService.instant(`general.bool_${value}`);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { CurrencyPipe } from \"@angular/common\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({ name: \"localizedCurrency\" })\nexport class LocalizedCurrencyPipe extends CurrencyPipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {\n super(translateService.currentLang);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { LocalizedDatePipe } from \"./localized-date.pipe\";\n\n@Pipe({ name: \"localizedDateOnly\" })\nexport class LocalizedDateOnlyPipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n public transform(value: any, pattern: string = \"mediumDate\", fallbackWithNull = false): string {\n const pipe = new LocalizedDatePipe(this.translateService);\n return pipe.transform(value, pattern, fallbackWithNull, \"UTC\");\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n// Formats minutes in hh:mm format.\n@Pipe({ name: \"minutesToTime\" })\nexport class MinutesToTimePipe implements PipeTransform {\n public transform(totalMinutes: number, separator: string = \":\"): string {\n const hours = `${Math.floor(totalMinutes / 60)}`.padStart(2, \"0\");\n const minutes = `${Math.floor(totalMinutes % 60)}`.padStart(2, \"0\");\n return `${hours}${separator}${minutes}`;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"numberToOrdinalIndicator\" })\nexport class NumberToOrdinalIndicatorPipe implements PipeTransform {\n public transform(value: number): string {\n switch (value) {\n case 1:\n return \"general.first\";\n case 2:\n return \"general.second\";\n case 3:\n return \"general.third\";\n default:\n return \"general.xth\";\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"pad\" })\nexport class PadPipe implements PipeTransform {\n public transform(value: number | string, length: number, direction: \"start\" | \"end\" = \"start\", maxLength = 2, fillString = \"0\"): string {\n const strValue = typeof value === \"number\" ? `${value}` : value;\n switch (direction) {\n case \"start\":\n return strValue.padStart(maxLength, fillString);\n case \"end\":\n return strValue.padEnd(maxLength, fillString);\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { MaskApplierService } from \"ngx-mask\";\n\n@Pipe({ name: \"phone\" })\nexport class PhonePipe implements PipeTransform {\n constructor(private maskApplierService: MaskApplierService) {}\n\n public transform(rawPhoneNumber: string, extension?: string): string {\n const formattedPhoneNumber = this.maskApplierService.applyMask(rawPhoneNumber, \"(000) 000-0000\");\n if (!extension) {\n return formattedPhoneNumber;\n }\n\n return `${formattedPhoneNumber} #${extension}`;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { MaskApplierService } from \"ngx-mask\";\n\n@Pipe({ name: \"postalCode\" })\nexport class PostalCodePipe implements PipeTransform {\n constructor(private maskApplierService: MaskApplierService) {}\n\n public transform(postalCode: string): string {\n if (postalCode) {\n return this.maskApplierService.applyMask(postalCode, \"S0S 0S0\");\n }\n return \"\";\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"round\" })\nexport class RoundPipe implements PipeTransform {\n public transform(input: number) {\n return Math.round(input);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"range\" })\nexport class RangePipe implements PipeTransform {\n public transform(value: number): number[] {\n const range: number[] = [];\n for (let i = 0; i < value; i++) {\n range.push(i);\n }\n return range;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n// Formats seconds in hh:mm:ss format.\n@Pipe({ name: \"secondsToTime\" })\nexport class SecondsToTimePipe implements PipeTransform {\n public transform(value: number, separator = \":\"): string {\n const hours = `${Math.floor(value / 60 / 60)}`.padStart(2, \"0\");\n const minutes = `${Math.floor(value / 60 % 60)}`.padStart(2, \"0\");\n const seconds = `${Math.floor(value % 60)}`.padStart(2, \"0\");\n return `${hours}${separator}${minutes}${separator}${seconds}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({ name: \"sanitizeBypass\" })\nexport class SanitizeBypassPipe implements PipeTransform {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n public transform(value: any, bypass: \"html\" | \"style\"): any {\n switch (bypass) {\n case \"html\":\n return this.sanitizer.bypassSecurityTrustHtml(value || '');\n case \"style\":\n return this.sanitizer.bypassSecurityTrustStyle(value || '');\n }\n }\n}\n","import { Pipe, PipeTransform, TrackByFunction } from \"@angular/core\";\n\n@Pipe({ name: \"trackByProp\" })\nexport class TrackByPropPipe<T = any> implements PipeTransform {\n public transform(prop: keyof T & string): TrackByFunction<T> {\n return (_, item) => item[prop];\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { EntriesPipe } from \"./entries.pipe\";\nimport { BooleanPipe } from \"./boolean.pipe\";\nimport { LocalizedDateOnlyPipe } from \"./localized-date-only.pipe\";\nimport { PostalCodePipe } from \"./postal-code.pipe\";\nimport { PhonePipe } from \"./phone.pipe\";\nimport { CeilPipe } from \"./ceil.pipe\";\nimport { FloorPipe } from \"./floor.pipe\";\nimport { RoundPipe } from \"./round.pipe\";\nimport { FindByKeyPipe } from \"./find-by-key.pipe\";\nimport { PadPipe } from \"./pad.pipe\";\nimport { LinkPipe } from \"./link.pipe\";\nimport { MinutesToTimePipe } from \"./minutes-to-time.pipe\";\nimport { NumberToOrdinalIndicatorPipe } from \"./number-to-ordinal-indicator.pipe\";\nimport { RangePipe } from \"./range.pipe\";\nimport { SecondsToTimePipe } from \"./seconds-to-time.pipe\";\nimport { LocalizedDatePipe } from \"./localized-date.pipe\";\nimport { LocalizedCurrencyPipe } from \"./localized-currency.pipe\";\nimport { CapitalizeFirstLetterPipe } from \"./capitalize-first-letter.pipe\";\nimport { JoinPipe } from \"./join-if-defined.pipe\";\nimport { SanitizeBypassPipe } from \"./sanitize-bypass.pipe\";\nimport { FirstLetterPipe } from \"./first-letter.pipe\";\nimport { LocalizedBooleanPipe } from \"./localized-boolean.pipe\";\nimport { TrackByPropPipe } from \"./track-by-prop.pipe\";\n\n@NgModule({\n declarations: [\n BooleanPipe,\n CapitalizeFirstLetterPipe,\n CeilPipe,\n FindByKeyPipe,\n FirstLetterPipe,\n FloorPipe,\n JoinPipe,\n EntriesPipe,\n LinkPipe,\n LocalizedBooleanPipe,\n LocalizedCurrencyPipe,\n LocalizedDatePipe,\n LocalizedDateOnlyPipe,\n MinutesToTimePipe,\n NumberToOrdinalIndicatorPipe,\n PadPipe,\n PhonePipe,\n PostalCodePipe,\n RangePipe,\n RoundPipe,\n SanitizeBypassPipe,\n SecondsToTimePipe,\n TrackByPropPipe\n ],\n providers: [\n BooleanPipe,\n CapitalizeFirstLetterPipe,\n CeilPipe,\n FindByKeyPipe,\n FirstLetterPipe,\n FloorPipe,\n JoinPipe,\n EntriesPipe,\n LinkPipe,\n LocalizedBooleanPipe,\n LocalizedCurrencyPipe,\n LocalizedDatePipe,\n LocalizedDateOnlyPipe,\n MinutesToTimePipe,\n NumberToOrdinalIndicatorPipe,\n PadPipe,\n PhonePipe,\n PostalCodePipe,\n RangePipe,\n RoundPipe,\n SanitizeBypassPipe,\n SecondsToTimePipe\n ],\n exports: [\n BooleanPipe,\n CapitalizeFirstLetterPipe,\n CeilPipe,\n FindByKeyPipe,\n FirstLetterPipe,\n FloorPipe,\n JoinPipe,\n EntriesPipe,\n LinkPipe,\n LocalizedBooleanPipe,\n LocalizedCurrencyPipe,\n LocalizedDatePipe,\n LocalizedDateOnlyPipe,\n MinutesToTimePipe,\n NumberToOrdinalIndicatorPipe,\n PadPipe,\n PhonePipe,\n PostalCodePipe,\n RangePipe,\n RoundPipe,\n SanitizeBypassPipe,\n SecondsToTimePipe,\n TrackByPropPipe\n ]\n})\nexport class NicePipesModule {\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NicePipesModule } from \"../../pipes\";\nimport { HeaderComponent } from \"./components/header/header.component\";\nimport { RangePresetComponent } from \"./components/range-preset/range-preset.component\";\nimport { NiceDateRangePickerComponent } from \"./date-range-picker.component\";\nimport { NiceDateRangePickerServiceService } from \"./providers/date-range-picker.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatDatepickerModule,\n MatFormFieldModule,\n MatCardModule,\n MatButtonModule,\n MatIconModule,\n TranslateModule,\n ReactiveFormsModule,\n NicePipesModule\n ],\n declarations: [NiceDateRangePickerComponent, RangePresetComponent, HeaderComponent],\n providers: [NiceDateRangePickerServiceService],\n exports: [NiceDateRangePickerComponent]\n})\nexport class NiceDateRangePickerModule {}\n","import { Injectable } from \"@angular/core\";\nimport { NiceDrawerComponent } from \"./drawer.component\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceDrawerService {\n private _componentRegistry: Map<string, NiceDrawerComponent> = new Map<string, NiceDrawerComponent>();\n\n /**\n * Constructor\n */\n constructor() {}\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Register drawer component\n */\n registerComponent(name: string, component: NiceDrawerComponent): void\n {\n this._componentRegistry.set(name, component);\n }\n\n /**\n * Deregister drawer component\n */\n deregisterComponent(name: string): void\n {\n this._componentRegistry.delete(name);\n }\n\n /**\n * Get drawer component from the registry\n */\n getComponent(name: string): NiceDrawerComponent | undefined\n {\n return this._componentRegistry.get(name);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_APP_CONFIG = new InjectionToken<any>(\"NICE_APP_CONFIG\");\n","import { Inject, Injectable } from \"@angular/core\";\nimport { merge } from \"lodash-es\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { NICE_APP_CONFIG } from \"./config.constants\";\nimport { NiceConfig } from \"./config.model\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceConfigService {\n private _config: BehaviorSubject<any>;\n\n /**\n * Constructor\n */\n constructor(@Inject(NICE_APP_CONFIG) config: NiceConfig) {\n // Private\n this._config = new BehaviorSubject(config);\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Setter & getter for config\n */\n public set config(value: NiceConfig) {\n // Merge the new config over to the current config\n const config = merge({}, this._config.getValue(), value);\n\n // Execute the observable\n this._config.next(config);\n }\n\n public get config$(): Observable<NiceConfig> {\n return this._config.asObservable();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Resets the config to the default\n */\n public reset(): void {\n // Set the config\n this._config.next(this.config);\n }\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { NICE_APP_CONFIG } from \"./config.constants\";\nimport { NiceConfig } from \"./config.model\";\nimport { NiceConfigService } from \"./config.service\";\n\n@NgModule()\nexport class NiceConfigModule {\n /**\n * Constructor\n */\n constructor(private _niceConfigService: NiceConfigService) {\n }\n\n /**\n * forRoot method for setting user configuration\n */\n public static forRoot(config: NiceConfig): ModuleWithProviders<NiceConfigModule> {\n return {\n ngModule: NiceConfigModule,\n providers: [\n {\n provide: NICE_APP_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","import { BreakpointObserver, Breakpoints, BreakpointState } from \"@angular/cdk/layout\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable, ReplaySubject, startWith, tap } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\n@Injectable()\nexport class NiceMediaWatcherService {\n private _onMediaChange = new ReplaySubject<{ matchingAliases: string[], matchingQueries: any }>(1);\n private _currentBreakpoints: { [key: string]: boolean };\n private _breakpoint$: Observable<BreakpointState>;\n\n public xsBreakpointActive$ = this.onMediaQueryChange$(Breakpoints.XSmall).pipe(\n startWith({ matches: false }),\n map((x) => x.matches)\n );\n public smBreakpointActive$ = this.onMediaQueryChange$(Breakpoints.Small).pipe(\n startWith({ matches: false }),\n map((x) => x.matches)\n );\n public mdBreakpointActive$ = this.onMediaQueryChange$(Breakpoints.Medium).pipe(\n startWith({ matches: false }),\n map((x) => x.matches)\n );\n public lgBreakpointActive$ = this.onMediaQueryChange$(Breakpoints.Large).pipe(\n startWith({ matches: false }),\n map((x) => x.matches)\n );\n public xlBreakpointActive$ = this.onMediaQueryChange$(Breakpoints.XLarge).pipe(\n startWith({ matches: false }),\n map((x) => x.matches)\n );\n\n /**\n * Constructor\n */\n constructor(private _breakpointObserver: BreakpointObserver) {\n this._breakpoint$ = this.onMediaQueryChange$([\n Breakpoints.XSmall,\n Breakpoints.Small,\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge\n ]).pipe(\n tap((res) => this._currentBreakpoints = res.breakpoints)\n );\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On media query change\n */\n public onMediaQueryChange$(query: string | string[]): Observable<BreakpointState> {\n return this._breakpointObserver.observe(query);\n }\n\n public asObservable(): Observable<BreakpointState> {\n return this._breakpoint$;\n }\n\n public isActive(query: string | string[]): boolean {\n if (typeof query === \"string\") {\n query = [query];\n }\n\n for (const q of query) {\n if (this.isBreakpointActive(q)) {\n return true;\n }\n }\n\n return false;\n }\n\n private isBreakpointActive(breakpoint: string): boolean {\n if (breakpoint.startsWith(\"gt-\")) {\n switch (breakpoint.replace(\"gt-\", \"\")) {\n case \"xs\":\n return this._currentBreakpoints[Breakpoints.Small]\n || this._currentBreakpoints[Breakpoints.Medium]\n || this._currentBreakpoints[Breakpoints.Large]\n || this._currentBreakpoints[Breakpoints.XLarge];\n case \"sm\":\n return this._currentBreakpoints[Breakpoints.Medium]\n || this._currentBreakpoints[Breakpoints.Large]\n || this._currentBreakpoints[Breakpoints.XLarge];\n case \"md\":\n return this._currentBreakpoints[Breakpoints.Large]\n || this._currentBreakpoints[Breakpoints.XLarge];\n case \"lg\":\n return this._currentBreakpoints[Breakpoints.XLarge];\n }\n }\n\n if (breakpoint.startsWith(\"lt-\")) {\n switch (breakpoint.replace(\"lt-\", \"\")) {\n case \"sm\":\n return this._currentBreakpoints[Breakpoints.XSmall];\n case \"md\":\n return this._currentBreakpoints[Breakpoints.XSmall]\n || this._currentBreakpoints[Breakpoints.Small];\n case \"lg\":\n return this._currentBreakpoints[Breakpoints.XSmall]\n || this._currentBreakpoints[Breakpoints.Small]\n || this._currentBreakpoints[Breakpoints.Medium];\n case \"xl\":\n return this._currentBreakpoints[Breakpoints.XSmall]\n || this._currentBreakpoints[Breakpoints.Small]\n || this._currentBreakpoints[Breakpoints.Medium]\n || this._currentBreakpoints[Breakpoints.Large];\n }\n }\n\n switch (breakpoint) {\n case \"xs\":\n return this._currentBreakpoints[Breakpoints.XSmall];\n case \"sm\":\n return this._currentBreakpoints[Breakpoints.Small];\n case \"md\":\n return this._currentBreakpoints[Breakpoints.Medium];\n case \"lg\":\n return this._currentBreakpoints[Breakpoints.Large];\n case \"xl\":\n return this._currentBreakpoints[Breakpoints.XLarge];\n }\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceMediaWatcherService } from \"./media-watcher.service\";\n\n@NgModule({\n providers: [\n NiceMediaWatcherService\n ]\n})\nexport class NiceMediaWatcherModule {\n /**\n * Constructor\n */\n constructor(private _niceMediaWatcherService: NiceMediaWatcherService) {}\n}\n","import { DOCUMENT } from \"@angular/common\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { filter, take } from \"rxjs/operators\";\n\n@Injectable()\nexport class NiceSplashScreenService {\n /**\n * Constructor\n */\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _router: Router\n ) {\n // Hide it on the first NavigationEnd event\n this._router.events\n .pipe(\n filter(event => event instanceof NavigationEnd),\n take(1)\n )\n .subscribe(() => {\n this.hide();\n });\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Show the splash screen\n */\n public show(): void {\n this._document.body.classList.remove(\"nice-splash-screen-hidden\");\n }\n\n /**\n * Hide the splash screen\n */\n public hide(): void {\n this._document.body.classList.add(\"nice-splash-screen-hidden\");\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceSplashScreenService } from \"./splash-screen.service\";\n\n@NgModule({\n providers: [\n NiceSplashScreenService\n ]\n})\nexport class NiceSplashScreenModule {\n /**\n * Constructor\n */\n constructor(private _niceSplashScreenService: NiceSplashScreenService) {}\n}\n","import { animate, AnimationBuilder, AnimationPlayer, style } from \"@angular/animations\";\nimport { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { NiceUtilsService } from \"../../providers\";\nimport { NiceDrawerService } from \"./drawer.service\";\nimport { NiceDrawerMode, NiceDrawerPosition } from \"./drawer.types\";\n\n@Component({\n selector: \"nice-drawer\",\n templateUrl: \"./drawer.component.html\",\n styleUrls: [\"./drawer.theme.scss\"],\n encapsulation: ViewEncapsulation.None,\n exportAs: \"niceDrawer\"\n})\nexport class NiceDrawerComponent implements OnChanges, OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n static ngAcceptInputType_fixed: BooleanInput;\n // tslint:disable-next-line:variable-name\n static ngAcceptInputType_opened: BooleanInput;\n // tslint:disable-next-line:variable-name\n static ngAcceptInputType_transparentOverlay: BooleanInput;\n\n @Input()\n public fixed = false;\n\n @Input()\n public mode: NiceDrawerMode = \"side\";\n\n @Input()\n public width: string | number = 320;\n\n @Input()\n public name: string = this._niceUtilsService.randomId();\n\n @Input()\n public opened = false;\n\n @Input()\n public position: NiceDrawerPosition = \"left\";\n\n @Input()\n public transparentOverlay = false;\n\n @Output()\n private readonly fixedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n private readonly modeChanged: EventEmitter<NiceDrawerMode> = new EventEmitter<NiceDrawerMode>();\n\n @Output()\n private readonly openedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n private readonly positionChanged: EventEmitter<NiceDrawerPosition> = new EventEmitter<NiceDrawerPosition>();\n\n private _animationsEnabled = false;\n private _hovered = false;\n private _overlay: HTMLElement;\n private _player: AnimationPlayer;\n\n /**\n * Constructor\n */\n constructor(\n private _animationBuilder: AnimationBuilder,\n private _elementRef: ElementRef,\n private _renderer2: Renderer2,\n private _niceDrawerService: NiceDrawerService,\n private _niceUtilsService: NiceUtilsService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component classes\n */\n @HostBinding(\"class\")\n public get classList(): any {\n return {\n \"nice-drawer-animations-enabled\": this._animationsEnabled,\n \"nice-drawer-fixed\": this.fixed,\n \"nice-drawer-hover\": this._hovered,\n [`nice-drawer-mode-${this.mode}`]: true,\n \"nice-drawer-opened\": this.opened,\n [`nice-drawer-position-${this.position}`]: true\n };\n }\n\n /**\n * Host binding for component inline styles\n */\n @HostBinding(\"style\")\n public get styleList(): any {\n const width = typeof this.width === \"number\" ? `${this.width}px` : this.width;\n const dynamicStyle = {\n \"width\": width,\n \"min-width\": width,\n \"max-width\": width\n };\n\n if (this.mode === \"side\") {\n dynamicStyle[`margin-${this.position}`] = this.opened ? 0 : `-${width}`;\n }\n\n return dynamicStyle;\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Decorated methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On mouseenter\n *\n * @private\n */\n @HostListener(\"mouseenter\")\n private _onMouseenter(): void {\n // Enable the animations\n this._enableAnimations();\n\n // Set the hovered\n this._hovered = true;\n }\n\n /**\n * On mouseleave\n *\n * @private\n */\n @HostListener(\"mouseleave\")\n private _onMouseleave(): void {\n // Enable the animations\n this._enableAnimations();\n\n // Set the hovered\n this._hovered = false;\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n *\n * @param changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Fixed\n if (\"fixed\" in changes) {\n // Coerce the value to a boolean\n this.fixed = coerceBooleanProperty(changes.fixed.currentValue);\n\n // Execute the observable\n this.fixedChanged.next(this.fixed);\n }\n\n // Mode\n if (\"mode\" in changes) {\n // Get the previous and current values\n const previousMode = changes.mode.previousValue;\n const currentMode = changes.mode.currentValue;\n\n // Disable the animations\n this._disableAnimations();\n\n // If the mode changes: 'over -> side'\n if (previousMode === \"over\" && currentMode === \"side\") {\n // Hide the overlay\n this._hideOverlay();\n }\n\n // If the mode changes: 'side -> over'\n if (previousMode === \"side\" && currentMode === \"over\") {\n // If the drawer is opened\n if (this.opened) {\n // Show the overlay\n this._showOverlay();\n }\n }\n\n // Execute the observable\n this.modeChanged.next(currentMode);\n\n // Enable the animations after a delay\n // The delay must be bigger than the current transition-duration\n // to make sure nothing will be animated while the mode is changing\n setTimeout(() => {\n this._enableAnimations();\n }, 500);\n }\n\n // Opened\n if (\"opened\" in changes) {\n // Coerce the value to a boolean\n const open = coerceBooleanProperty(changes.opened.currentValue);\n\n // Open/close the drawer\n this._toggleOpened(open);\n }\n\n // Position\n if (\"position\" in changes) {\n // Execute the observable\n this.positionChanged.next(this.position);\n }\n\n // Transparent overlay\n if (\"transparentOverlay\" in changes) {\n // Coerce the value to a boolean\n this.transparentOverlay = coerceBooleanProperty(changes.transparentOverlay.currentValue);\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Register the drawer\n this._niceDrawerService.registerComponent(this.name, this);\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Finish the animation\n if (this._player) {\n this._player.finish();\n }\n\n // Deregister the drawer from the registry\n this._niceDrawerService.deregisterComponent(this.name);\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Open the drawer\n */\n public open(): void {\n // Return if the drawer has already opened\n if (this.opened) {\n return;\n }\n\n // Open the drawer\n this._toggleOpened(true);\n }\n\n /**\n * Close the drawer\n */\n public close(): void {\n // Return if the drawer has already closed\n if (!this.opened) {\n return;\n }\n\n // Close the drawer\n this._toggleOpened(false);\n }\n\n /**\n * Toggle the drawer\n */\n public toggle(): void {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Enable the animations\n *\n * @private\n */\n private _enableAnimations(): void {\n // Return if the animations are already enabled\n if (this._animationsEnabled) {\n return;\n }\n\n // Enable the animations\n this._animationsEnabled = true;\n }\n\n /**\n * Disable the animations\n *\n * @private\n */\n private _disableAnimations(): void {\n // Return if the animations are already disabled\n if (!this._animationsEnabled) {\n return;\n }\n\n // Disable the animations\n this._animationsEnabled = false;\n }\n\n /**\n * Show the backdrop\n *\n * @private\n */\n private _showOverlay(): void {\n // Create the backdrop element\n this._overlay = this._renderer2.createElement(\"div\");\n\n // Return if overlay couldn't be create for some reason\n if (!this._overlay) {\n return;\n }\n\n // Add a class to the backdrop element\n this._overlay.classList.add(\"nice-drawer-overlay\");\n\n // Add a class depending on the fixed option\n if (this.fixed) {\n this._overlay.classList.add(\"nice-drawer-overlay-fixed\");\n }\n\n // Add a class depending on the transparentOverlay option\n if (this.transparentOverlay) {\n this._overlay.classList.add(\"nice-drawer-overlay-transparent\");\n }\n\n // Append the backdrop to the parent of the drawer\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._overlay);\n\n // Create the enter animation and attach it to the player\n this._player = this._animationBuilder.build([\n style({opacity: 0}),\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 1}))\n ]).create(this._overlay);\n\n // Once the animation is done...\n this._player.onDone(() => {\n\n // Destroy the player\n this._player.destroy();\n this._player = null;\n });\n\n // Play the animation\n this._player.play();\n\n // Add an event listener to the overlay\n this._overlay.addEventListener(\"click\", () => {\n this.close();\n });\n }\n\n /**\n * Hide the backdrop\n *\n * @private\n */\n private _hideOverlay(): void {\n if (!this._overlay) {\n return;\n }\n\n // Create the leave animation and attach it to the player\n this._player = this._animationBuilder.build([\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 0}))\n ]).create(this._overlay);\n\n // Play the animation\n this._player.play();\n\n // Once the animation is done...\n this._player.onDone(() => {\n\n // Destroy the player\n this._player.destroy();\n this._player = null;\n\n // If the backdrop still exists...\n if (this._overlay) {\n // Remove the backdrop\n this._overlay.parentNode.removeChild(this._overlay);\n this._overlay = null;\n }\n });\n }\n\n /**\n * Open/close the drawer\n *\n * @param open\n * @private\n */\n private _toggleOpened(open: boolean): void {\n // Set the opened\n this.opened = open;\n\n // Enable the animations\n this._enableAnimations();\n\n // If the mode is 'over'\n if (this.mode === \"over\") {\n // If the drawer opens, show the overlay\n if (open) {\n this._showOverlay();\n }\n // Otherwise, close the overlay\n else {\n this._hideOverlay();\n }\n }\n\n // Execute the observable\n this.openedChanged.next(open);\n }\n}\n","<div class=\"nice-drawer-toggle\">\n <ng-content select=\"[niceDrawerToggle]\"></ng-content>\n</div>\n\n<div class=\"nice-drawer-content\" [style.visibility]=\"opened ? 'visible' : 'hidden'\">\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { NiceDrawerComponent } from \"./drawer.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule\n ],\n declarations: [\n NiceDrawerComponent\n ],\n exports: [\n NiceDrawerComponent\n ]\n})\nexport class NiceDrawerModule {\n}\n","import { Injectable } from \"@angular/core\";\nimport { ExportStrategy } from \"../models/export-strategy.model\";\n\n@Injectable()\nexport abstract class ExportBottomSheetService {\n public abstract getStrategyIcon(strategy: ExportStrategy): string;\n}\n\n@Injectable()\nexport class DefaultExportBottomSheetService extends ExportBottomSheetService {\n public getStrategyIcon(strategy: ExportStrategy): string {\n switch (strategy.type) {\n case \"xlsx\":\n return \"fas fa-file-excel\";\n case \"pdf\":\n return \"fas fa-file-pdf\";\n case \"csv\":\n return \"fas fa-file-csv\";\n }\n return \"\";\n }\n}\n","import { Component, Inject } from \"@angular/core\";\nimport { MatBottomSheetRef, MAT_BOTTOM_SHEET_DATA } from \"@angular/material/bottom-sheet\";\nimport { ExportStrategy } from \"./models/export-strategy.model\";\nimport { ExportBottomSheetService } from \"./providers/export-bottom-sheet.service\";\n\nexport interface ExportBottomSheetConfig {\n exportStrategies: ExportStrategy[];\n}\n\n@Component({\n selector: \"nice-export-bottom-sheet\",\n templateUrl: \"export-bottom-sheet.template.html\"\n})\nexport class ExportBottomSheetComponent {\n constructor(\n @Inject(MAT_BOTTOM_SHEET_DATA) public exportBottomSheetConfig: ExportBottomSheetConfig,\n private bottomSheetRef: MatBottomSheetRef<ExportBottomSheetComponent>,\n private service: ExportBottomSheetService\n ) {}\n\n public getStrategyIcon(strategy: ExportStrategy): string {\n return this.service.getStrategyIcon(strategy);\n }\n\n public clickExport(strategy: ExportStrategy) {\n this.bottomSheetRef.dismiss();\n strategy.onClickExport();\n }\n}\n","<mat-nav-list>\n <a *ngFor=\"let strategy of exportBottomSheetConfig.exportStrategies\" mat-list-item (click)=\"clickExport(strategy)\">\n <i [ngClass]=\"getStrategyIcon(strategy)\" mat-list-icon></i>\n <span mat-line>{{ (\"components.export_bottom_sheet.types.\" + strategy.type) | translate }}</span>\n </a>\n</mat-nav-list>\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule, Type } from \"@angular/core\";\nimport { MatBottomSheetModule } from \"@angular/material/bottom-sheet\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ExportBottomSheetComponent } from \"./export-bottom-sheet.component\";\nimport { DefaultExportBottomSheetService, ExportBottomSheetService } from \"./providers/export-bottom-sheet.service\";\n\nexport interface ExportBottomSheetOptions {\n service: Type<ExportBottomSheetService>;\n}\n\n@NgModule({\n imports: [CommonModule, MatBottomSheetModule, MatListModule, MatIconModule, TranslateModule],\n declarations: [ExportBottomSheetComponent],\n providers: [\n {\n provide: ExportBottomSheetService,\n useClass: DefaultExportBottomSheetService\n }\n ],\n exports: [ExportBottomSheetComponent]\n})\nexport class NiceExportBottomSheetModule {\n public static forFeature(options: ExportBottomSheetOptions): ModuleWithProviders<NiceExportBottomSheetModule> {\n return {\n ngModule: NiceExportBottomSheetModule,\n providers: [\n {\n provide: ExportBottomSheetService,\n useClass: options.service\n }\n ]\n };\n }\n}\n","import { Component, Input } from \"@angular/core\";\nimport { animate, style, transition, trigger } from \"@angular/animations\";\n\n@Component({\n // tslint:disable-next-line:components-selector component-selector\n selector: \"[form-error]\",\n template: `\n <div [@animation]=\"increment\" *ngIf=\"message\">\n <mat-error>\n {{ message }}\n </mat-error>\n </div>\n `,\n animations: [\n trigger(\"animation\", [\n transition(\":increment\", [style({ opacity: 0 }), animate(\"200ms ease-in\", style({ opacity: 1 }))]),\n transition(\":enter\", [\n style({ opacity: 0, transform: \"translateY(-1rem)\" }),\n animate(\"200ms ease-in\", style({ opacity: 1, transform: \"translateY(0)\" }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ opacity: 0, transform: \"translateY(-1rem)\" }))])\n ])\n ]\n})\nexport class NiceFormErrorComponent {\n public message: string;\n public increment = 0;\n\n @Input()\n public set error(value) {\n if (value) {\n if (this.message !== value) {\n this.increment++;\n }\n }\n this.message = value;\n }\n}\n","import { AfterViewInit, ComponentRef, Directive, ElementRef, ViewContainerRef } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { MatFormField } from \"@angular/material/form-field\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { NiceFormErrorComponent } from \"./form-error.component\";\n\n@Directive({ selector: \"[niceControlStatus]\" })\nexport class NiceControlStatusDirective implements AfterViewInit {\n private ref: ComponentRef<NiceFormErrorComponent>;\n private control: NgControl;\n\n constructor(\n private el: ElementRef<HTMLElement>,\n private vcr: ViewContainerRef,\n private formField: MatFormField,\n private translateService: TranslateService\n ) {}\n\n public ngAfterViewInit() {\n this.control = this.formField._control.ngControl as NgControl;\n this.control.statusChanges.subscribe(() => this.onChange());\n }\n\n public onChange(): void {\n if (this.control.pending) {\n return;\n }\n\n if (this.control.invalid && this.control.touched) {\n for (const error in this.control.errors) {\n if (this.control.errors.hasOwnProperty(error)) {\n if (this.control.errors[error]) {\n let lastErrorKey = error;\n let param: any;\n if (error === \"pattern\") {\n lastErrorKey = this.control.errors[error].requiredPattern;\n }\n if (error === \"mask\") {\n lastErrorKey = this.control.errors[error].requiredMask;\n }\n if (error === \"minlength\" || error === \"maxlength\") {\n param = {\n value: this.control.errors[error].requiredLength\n };\n }\n if (error === \"min\") {\n param = {\n min: this.control.errors[error].min,\n actual: this.control.errors[error].actual\n };\n }\n if (error === \"max\") {\n param = {\n max: this.control.errors[error].max,\n actual: this.control.errors[error].actual\n };\n }\n\n if (typeof this.control.errors[error] === \"object\" && !param) {\n param = this.control.errors[error];\n }\n\n this.setError(this.translateService.instant(`errors.${lastErrorKey}`, param));\n break;\n }\n }\n }\n } else {\n this.setError(\"\");\n }\n }\n\n public setError(text: string): void {\n if (!this.ref) {\n this.ref = this.vcr.createComponent(NiceFormErrorComponent);\n this.el.nativeElement\n .getElementsByClassName(\"mat-form-field-wrapper\")\n .item(0)\n .getElementsByClassName(\"mat-form-field-subscript-wrapper\")\n .item(0)\n .appendChild(this.ref.location.nativeElement);\n }\n this.ref.instance.error = text;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceFormErrorComponent } from \"./form-error.component\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { CommonModule } from \"@angular/common\";\nimport { NiceControlStatusDirective } from \"./control-status.directive\";\n\n@NgModule({\n imports: [CommonModule, MatFormFieldModule],\n declarations: [NiceFormErrorComponent, NiceControlStatusDirective],\n exports: [NiceFormErrorComponent, NiceControlStatusDirective],\n entryComponents: [NiceFormErrorComponent]\n})\nexport class NiceFormErrorModule {\n}\n","import {\n Component, EventEmitter, Output,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { CdkStep, CdkStepper } from \"@angular/cdk/stepper\";\nimport { animate, state, style, transition, trigger } from \"@angular/animations\";\n\n@Component({\n selector: \"nice-horizontal-stepper\",\n templateUrl: \"horizontal-stepper.template.html\",\n styleUrls: [\"./horizontal-stepper.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: CdkStepper, useExisting: NiceHorizontalStepperComponent }],\n animations: [trigger(\"stepTransition\", [\n state(\"previous\", style({ transform: \"translate3d(-100%, 0, 0)\", visibility: \"hidden\" })),\n state(\"current\", style({ transform: \"none\", visibility: \"visible\" })),\n state(\"next\", style({ transform: \"translate3d(100%, 0, 0)\", visibility: \"hidden\" })),\n transition(\"* => *\", animate(\"500ms cubic-bezier(0.35, 0, 0.25, 1)\"))\n ])]\n})\nexport class NiceHorizontalStepperComponent extends CdkStepper {\n @Output()\n private onStepperClick = new EventEmitter<number>();\n\n public onClick(step: CdkStep, index: number): void {\n step.select();\n this.onStepperClick.emit(index);\n }\n}\n","<section class=\"stepper-container\">\n <div class=\"flex justify-center content-center items-center\">\n <button\n class=\"step\"\n *ngFor=\"let step of steps; let i = index\"\n [ngClass]=\"{ 'active': selectedIndex === i }\"\n (click)=\"onClick(step, i)\"\n >\n </button>\n </div>\n <div class=\"mat-horizontal-content-container h-full\">\n <div *ngFor=\"let step of steps; let i = index\"\n class=\"mat-horizontal-stepper-content h-full\" role=\"tabpanel\"\n [@stepTransition]=\"_getAnimationDirection(i)\"\n [id]=\"_getStepContentId(i)\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [attr.aria-expanded]=\"selectedIndex === i\">\n <ng-container [ngTemplateOutlet]=\"step.content\"></ng-container>\n </div>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from \"@angular/core\";\nimport { CdkStep } from \"@angular/cdk/stepper\";\n\n@Component({\n selector: \"nice-step\",\n template: `<ng-template><ng-content></ng-content></ng-template>`,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: CdkStep, useExisting: NiceStepComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NiceStepComponent extends CdkStep {}\n","import { NgModule } from \"@angular/core\";\nimport { NiceHorizontalStepperComponent } from \"./horizontal-stepper.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { CdkStepperModule } from \"@angular/cdk/stepper\";\nimport { NiceStepComponent } from \"./step.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n CdkStepperModule\n ],\n declarations: [NiceStepComponent, NiceHorizontalStepperComponent],\n exports: [NiceStepComponent, NiceHorizontalStepperComponent]\n})\nexport class NiceHorizontalStepperModule {}\n","/*\n * Hermite resize - fast image resize/resample using Hermite filter.\n * https://github.com/viliusle/Hermite-resize\n */\nexport function resizeCanvas(canvas: HTMLCanvasElement, width: number, height: number) {\n const width_source = canvas.width;\n const height_source = canvas.height;\n width = Math.round(width);\n height = Math.round(height);\n\n const ratio_w = width_source / width;\n const ratio_h = height_source / height;\n const ratio_w_half = Math.ceil(ratio_w / 2);\n const ratio_h_half = Math.ceil(ratio_h / 2);\n\n const ctx = canvas.getContext('2d');\n const img = ctx!.getImageData(0, 0, width_source, height_source);\n const img2 = ctx!.createImageData(width, height);\n const data = img.data;\n const data2 = img2.data;\n\n for (let j = 0; j < height; j++) {\n for (let i = 0; i < width; i++) {\n const x2 = (i + j * width) * 4;\n let weight = 0;\n let weights = 0;\n let weights_alpha = 0;\n let gx_r = 0;\n let gx_g = 0;\n let gx_b = 0;\n let gx_a = 0;\n const center_y = j * ratio_h;\n\n const xx_start = Math.floor(i * ratio_w);\n let xx_stop = Math.ceil((i + 1) * ratio_w);\n const yy_start = Math.floor(j * ratio_h);\n let yy_stop = Math.ceil((j + 1) * ratio_h);\n xx_stop = Math.min(xx_stop, width_source);\n yy_stop = Math.min(yy_stop, height_source);\n\n for (let yy = yy_start; yy < yy_stop; yy++) {\n const dy = Math.abs(center_y - yy) / ratio_h_half;\n const center_x = i * ratio_w;\n const w0 = dy * dy; // pre-calc part of w\n for (let xx = xx_start; xx < xx_stop; xx++) {\n const dx = Math.abs(center_x - xx) / ratio_w_half;\n const w = Math.sqrt(w0 + dx * dx);\n if (w >= 1) {\n // pixel too far\n continue;\n }\n // hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n const pos_x = 4 * (xx + yy * width_source);\n // alpha\n gx_a += weight * data[pos_x + 3];\n weights_alpha += weight;\n // colors\n if (data[pos_x + 3] < 255) {\n weight = weight * data[pos_x + 3] / 250;\n }\n gx_r += weight * data[pos_x];\n gx_g += weight * data[pos_x + 1];\n gx_b += weight * data[pos_x + 2];\n weights += weight;\n }\n }\n data2[x2] = gx_r / weights;\n data2[x2 + 1] = gx_g / weights;\n data2[x2 + 2] = gx_b / weights;\n data2[x2 + 3] = gx_a / weights_alpha;\n }\n }\n\n // clear and resize canvas\n canvas.width = width;\n canvas.height = height;\n\n // draw\n ctx!.putImageData(img2, 0, 0);\n return ctx;\n}\n","/**\n * Adapted from https://github.com/A-l-y-l-e/Alyle-UI/tree/10.5.3/src/lib/image-cropper\n */\n\nimport { normalizePassiveListenerOptions } from \"@angular/cdk/platform\";\nimport { ViewportRuler } from \"@angular/cdk/scrolling\";\nimport { DOCUMENT } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter, HostBinding,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { Observable, Subject } from \"rxjs\";\nimport { take, takeUntil } from \"rxjs/operators\";\nimport { resizeCanvas } from \"./resize-canvas\";\n\nconst activeEventOptions = normalizePassiveListenerOptions({ passive: false });\n\n/** Image Cropper Config */\nexport class ImgCropperConfig {\n /** Cropper area width */\n width = 250;\n /** Cropper area height */\n height = 200;\n minWidth = 40;\n minHeight = 40;\n /** If this is not defined, the new image will be automatically defined. */\n type?: string;\n /** Background color( default: null), if is null in png is transparent but not in jpg. */\n fill?: string | null;\n /**\n * Set anti-aliased (default: true)\n * @deprecated this is not necessary as the cropper will automatically resize the image\n * to the best quality\n */\n antiAliased = true;\n autoCrop?: boolean;\n output?: ImgOutput | ImgResolution = ImgResolution.Default;\n /**\n * Zoom out until the entire image fits into the cropping area.\n * default: false\n */\n extraZoomOut?: boolean;\n /**\n * Emit event `error` if the file size in bytes for the limit.\n * Note: It only works when the image is received from the `<input>` event.\n */\n maxFileSize?: number | null;\n /**\n * Whether the cropper area will be round.\n * This implies that the cropper area will maintain its aspect ratio.\n * default: false\n */\n round?: boolean;\n /**\n * Whether the cropper area is resizable.\n * default: false\n */\n resizableArea?: boolean;\n /**\n * Keep the width and height of the growing area the same according\n * to `ImgCropperConfig.width` and `ImgCropperConfig.height`\n * default: false\n */\n keepAspectRatio?: boolean;\n /**\n * Whether the cropper area is responsive.\n * By default, the width and height of the cropper area is fixed,\n * so can use when the cropper area is larger than its container,\n * otherwise this will bring problems when cropping.\n */\n responsiveArea?: boolean;\n}\n\n/**\n * The output image\n * With this option you can resize the output image.\n * If `width` or `height` are 0, this will be set automatically.\n * Both cannot be 0.\n */\nexport interface ImgOutput {\n /**\n * The cropped image will be resized to this `width`.\n */\n width: number;\n /**\n * Cropped image will be resized to this `height`.\n */\n height: number;\n}\n\n/** Image output */\nexport enum ImgResolution {\n /**\n * The output image will be equal to the initial size of the cropper area.\n */\n Default,\n /** Just crop the image without resizing */\n OriginalImage\n}\n\n/** Image output */\nexport enum ImgCropperError {\n /** The loaded image exceeds the size limit set. */\n Size,\n /** The file loaded is not image. */\n Type,\n /** When the image has not been loaded. */\n Other\n}\n\nexport interface ImgCropperEvent {\n /** Cropped image data URL */\n dataURL?: string;\n name: string | null;\n /** Filetype */\n type?: string;\n /** Cropped area width */\n areaWidth: number;\n /** Cropped area height */\n areaHeight: number;\n /** Cropped image width */\n width: number;\n /** Cropped image height */\n height: number;\n /** Original Image data URL */\n originalDataURL?: string;\n scale: number;\n /** Current rotation in degrees */\n rotation: number;\n /** Size of the image in bytes */\n size: number;\n /** Scaled offset from the left edge of the image */\n left: number;\n /** Scaled offset from the top edge of the image */\n top: number;\n /**\n * Scaled offset from the left edge of the image to center of area\n * Can be used to set image position\n */\n xOrigin: number;\n /**\n * Scaled offset from the top edge of the image to center of area\n * Can be used to set image position\n */\n yOrigin: number;\n /** @deprecated Use `xOrigin & yOrigin` instead. */\n position?: {\n x: number\n y: number\n };\n}\n\nexport interface ImgCropperErrorEvent {\n name?: string;\n /** Size of the image in bytes */\n size: number;\n /** Filetype */\n type: string;\n /** Type of error */\n error: ImgCropperError;\n errorMsg?: string;\n}\n\ninterface ImgRect {\n x: number;\n y: number;\n xc: number;\n yc: number;\n /** transform with */\n wt: number;\n ht: number;\n}\n\nexport interface ImgCropperLoaderConfig {\n name?: string | null;\n /** Filetype */\n type?: string;\n /** Cropped area width */\n areaWidth?: number;\n /** Cropped area height */\n areaHeight?: number;\n /** Cropped image width */\n width?: number;\n /** Cropped image height */\n height?: number;\n /** Original Image data URL */\n originalDataURL: string;\n scale?: number;\n /** Current rotation in degrees */\n rotation?: number;\n /** Size of the image in bytes */\n size?: number;\n /** Offset from the left edge of the image to center of area */\n xOrigin?: number;\n /** Offset from the top edge of the image to center of area */\n yOrigin?: number;\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n selector: \"nice-img-cropper, nice-image-cropper\",\n templateUrl: \"image-cropper.template.html\",\n styleUrls: [\"image-cropper.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceImageCropperComponent implements OnInit, OnDestroy {\n static readonly и = \"NiceImageCropper\";\n\n private _currentLoadConfig?: ImgCropperLoaderConfig;\n\n /** Original image */\n private _img: HTMLImageElement;\n private offset?: {\n x: number\n y: number\n left: number\n top: number\n };\n private _scale?: number;\n private _scal3Fix?: number;\n private _minScale?: number;\n private _maxScale?: number;\n /** Initial config */\n private _configPrimary: ImgCropperConfig;\n private _config: ImgCropperConfig;\n private _imgRect: ImgRect = {} as any;\n private _rotation = 0;\n // private _sizeInBytes: number | null;\n private _isSliding: boolean;\n /** Keeps track of the last pointer event that was captured by the crop area. */\n private _lastPointerEvent: MouseEvent | TouchEvent | null;\n private _startPointerEvent: {\n x: number\n y: number\n } | null;\n public _primaryAreaWidth: number;\n public _primaryAreaHeight: number;\n\n public _absoluteScale: number;\n\n /**\n * When is loaded image\n * @internal\n */\n public _isLoadedImg: boolean;\n\n /** When is loaded image & ready for crop */\n public isLoaded: boolean;\n /** When the cropper is ready to be interacted */\n public isReady: boolean;\n public isCropped: boolean;\n\n @ViewChild(\"_imgContainer\", { static: true })\n private _imgContainer: ElementRef;\n\n @ViewChild(\"_area\", { read: ElementRef })\n private _areaRef: ElementRef;\n @ViewChild(\"_imgCanvas\", { static: true })\n private _imgCanvas: ElementRef<HTMLCanvasElement>;\n\n @Input()\n public set config(val: ImgCropperConfig) {\n this._config = mergeDeep({}, new ImgCropperConfig(), val);\n this._configPrimary = mergeDeep({}, this._config);\n this._primaryAreaWidth = this.config.width;\n this._primaryAreaHeight = this.config.height;\n if (\n this._config.round\n && this.config.width !== this.config.height\n ) {\n throw new Error(`${NiceImageCropperComponent.и}: Both width and height must be equal when using \\`ImgCropperConfig.round = true\\``);\n }\n const maxFileSize = this._config.maxFileSize;\n if (maxFileSize) {\n this.maxFileSize = maxFileSize;\n }\n }\n public get config(): ImgCropperConfig {\n return this._config;\n }\n /** Set scale */\n @Input()\n public set scale(val: number | undefined) {\n this.setScale(val);\n }\n public get scale(): number | undefined {\n return this._scale;\n }\n\n /**\n * Emit event `error` if the file size for the limit.\n * Note: It only works when the image is received from the `<input>` event.\n */\n @Input()\n public maxFileSize: number;\n\n /** Get min scale */\n public get minScale(): number | undefined {\n return this._minScale;\n }\n\n @Output()\n private readonly scaleChange = new EventEmitter<number>();\n\n /** Emits minimum supported image scale */\n // tslint:disable-next-line:no-output-rename\n @Output(\"minScale\")\n private readonly minScaleChange = new EventEmitter<number>();\n\n /** Emits maximum supported image scale */\n // tslint:disable-next-line:no-output-rename\n @Output(\"maxScale\")\n private readonly maxScaleChange = new EventEmitter<number>();\n\n /** Emits when the image is loaded */\n @Output()\n private readonly imageLoaded = new EventEmitter<ImgCropperEvent>();\n\n /** Emits when the cropper is ready to be interacted */\n @Output()\n private readonly ready = new EventEmitter<ImgCropperEvent>();\n\n /** On crop new image */\n @Output()\n private readonly cropped = new EventEmitter<ImgCropperEvent>();\n\n /** Emits when the cropper is cleaned */\n @Output()\n private readonly cleaned = new EventEmitter<void>();\n\n /** Emit an error when the loaded image is not valid */\n // tslint:disable-next-line: no-output-native\n @Output()\n private readonly error = new EventEmitter<ImgCropperErrorEvent>();\n\n private _currentInputElement?: HTMLInputElement;\n\n /** Emits whenever the component is destroyed. */\n private readonly _destroy = new Subject<void>();\n\n /** Used to subscribe to global move and end events */\n protected _document: Document;\n\n constructor(\n private _renderer: Renderer2,\n readonly _elementRef: ElementRef<HTMLElement>,\n private cd: ChangeDetectorRef,\n private _ngZone: NgZone,\n @Inject(DOCUMENT) _document: any,\n viewPortRuler: ViewportRuler\n ) {\n this._document = _document;\n viewPortRuler.change()\n .pipe(takeUntil(this._destroy))\n .subscribe(() =>\n this._ngZone.run(() => this.updateCropperPosition())\n );\n }\n\n public ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => {\n const element = this._imgContainer.nativeElement;\n element.addEventListener(\"mousedown\", this._pointerDown, activeEventOptions);\n element.addEventListener(\"touchstart\", this._pointerDown, activeEventOptions);\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy.next();\n this._destroy.complete();\n const element = this._imgContainer.nativeElement;\n this._lastPointerEvent = null;\n this._removeGlobalEvents();\n element.removeEventListener(\"mousedown\", this._pointerDown, activeEventOptions);\n element.removeEventListener(\"touchstart\", this._pointerDown, activeEventOptions);\n }\n\n /** Load image with canvas */\n private _imgLoaded(imgElement: HTMLImageElement): void {\n if (imgElement) {\n this._img = imgElement;\n const canvas = this._imgCanvas.nativeElement;\n canvas.width = imgElement.width;\n canvas.height = imgElement.height;\n const ctx = canvas.getContext(\"2d\");\n ctx.clearRect(0, 0, imgElement.width, imgElement.height);\n ctx.drawImage(imgElement, 0, 0);\n\n /** set min scale */\n this._updateMinScale(canvas);\n this._updateMaxScale();\n }\n }\n\n private _setStylesForContImg(values: { x?: number, y?: number }) {\n const newStyles = { } as any;\n if (values.x != null && values.y != null) {\n const rootRect = this._rootRect();\n const x = rootRect.width / 2 - (values.x);\n const y = rootRect.height / 2 - (values.y);\n\n this._imgRect.x = (values.x);\n this._imgRect.y = (values.y);\n this._imgRect.xc = (x);\n this._imgRect.yc = (y);\n\n }\n newStyles.transform = `translate3d(${(this._imgRect.x)}px,${(this._imgRect.y)}px, 0)`;\n newStyles.transform += `scale(${this._scal3Fix})`;\n newStyles.transformOrigin = `${this._imgRect.xc}px ${this._imgRect.yc}px 0`;\n newStyles[\"-webkit-transform\"] = newStyles.transform;\n newStyles[\"-webkit-transform-origin\"] = newStyles.transformOrigin;\n for (const key in newStyles) {\n if (newStyles.hasOwnProperty(key)) {\n this._renderer.setStyle(this._imgContainer.nativeElement, key, newStyles[key]);\n }\n }\n }\n /**\n * Update area and image position only if needed,\n * this is used when window resize\n */\n public updateCropperPosition(): void {\n if (this.isLoaded) {\n this.updatePosition();\n this._updateAreaIfNeeded();\n }\n }\n\n /** Load Image from input event */\n public selectInputEvent(img: Event) {\n this._currentInputElement = img.target as HTMLInputElement;\n const _img = img.target as HTMLInputElement;\n if (_img.files && _img.files.length !== 1) {\n return;\n }\n const fileSize = _img.files[0].size;\n const fileName = _img.value.replace(/.*(\\/|\\\\)/, \"\");\n\n if (this.maxFileSize && fileSize > this.maxFileSize) {\n const cropEvent: ImgCropperErrorEvent = {\n name: fileName,\n type: _img.files[0].type,\n size: fileSize,\n error: ImgCropperError.Size\n };\n this.clean();\n this.error.emit(cropEvent as ImgCropperErrorEvent);\n return;\n }\n\n new Observable<ProgressEvent>(observer => {\n\n const reader = new FileReader();\n\n reader.onerror = err => observer.error(err);\n reader.onabort = err => observer.error(err);\n reader.onload = (ev) => setTimeout(() => {\n observer.next(ev);\n observer.complete();\n });\n\n reader.readAsDataURL(_img.files[0]);\n })\n .pipe(take(1), takeUntil(this._destroy))\n .subscribe(\n (loadEvent) => {\n const originalDataURL = (loadEvent.target as FileReader).result as string;\n\n this.loadImage({\n name: fileName,\n size: _img.files[0].size, // size in bytes\n type: this.config.type || _img.files[0].type,\n originalDataURL\n });\n\n this.cd.markForCheck();\n },\n () => {\n const cropEvent: ImgCropperErrorEvent = {\n name: fileName,\n size: fileSize,\n error: ImgCropperError.Other,\n errorMsg: \"The File could not be loaded.\",\n type: _img.files[0].type\n };\n this.clean();\n this.error.emit(cropEvent as ImgCropperErrorEvent);\n }\n );\n\n }\n\n /** Set the size of the image, the values can be 0 between 1, where 1 is the original size */\n public setScale(size?: number, noAutoCrop?: boolean) {\n // fix min scale\n const newSize = size >= this.minScale && size <= 1 ? size : this.minScale;\n\n // check\n const changed = size != null && size !== this.scale && newSize !== this.scale;\n this._scale = size;\n if (!changed) {\n return;\n }\n this._scal3Fix = newSize;\n this._updateAbsoluteScale();\n if (this.isLoaded) {\n if (changed) {\n const originPosition = {...this._imgRect};\n this.offset = {\n x: originPosition.x,\n y: originPosition.y,\n left: originPosition.xc,\n top: originPosition.yc\n };\n this._setStylesForContImg({});\n this._simulatePointerMove();\n } else {\n return;\n }\n } else if (this.minScale) {\n this._setStylesForContImg({\n ...this._getCenterPoints()\n });\n } else {\n return;\n }\n\n this.scaleChange.emit(size);\n if (!noAutoCrop) {\n this._cropIfAutoCrop();\n }\n\n }\n\n private _getCenterPoints() {\n const root = this._elementRef.nativeElement as HTMLElement;\n const img = this._imgCanvas.nativeElement;\n const x = (root.offsetWidth - (img.width)) / 2;\n const y = (root.offsetHeight - (img.height)) / 2;\n return {\n x,\n y\n };\n }\n\n /**\n * Fit to screen\n */\n public fitToScreen() {\n const container = this._elementRef.nativeElement as HTMLElement;\n const min = {\n width: container.offsetWidth,\n height: container.offsetHeight\n };\n const { width, height } = this._img;\n const minScale = {\n width: min.width / width,\n height: min.height / height\n };\n const result = Math.max(minScale.width, minScale.height);\n this.setScale(result);\n }\n\n public fit() {\n this.setScale(this.minScale);\n }\n\n private _pointerDown = (event: TouchEvent | MouseEvent) => {\n // Don't do anything if the\n // user is using anything other than the main mouse button.\n if (this._isSliding || (!isTouchEvent(event) && event.button !== 0)) {\n return;\n }\n\n this._ngZone.run(() => {\n this._isSliding = true;\n this.offset = {\n x: this._imgRect.x,\n y: this._imgRect.y,\n left: this._imgRect.xc,\n top: this._imgRect.yc\n };\n this._lastPointerEvent = event;\n this._startPointerEvent = getGesturePointFromEvent(event);\n event.preventDefault();\n this._bindGlobalEvents(event);\n });\n\n }\n\n /**\n * Simulate pointerMove with clientX = 0 and clientY = 0,\n * this is used by `setScale` and `rotate`\n */\n private _simulatePointerMove() {\n this._isSliding = true;\n this._startPointerEvent = {\n x: 0,\n y: 0\n };\n this._pointerMove({\n clientX: 0,\n clientY: 0,\n type: \"n\",\n preventDefault: () => {}\n } as MouseEvent);\n this._isSliding = false;\n this._startPointerEvent = null;\n }\n\n public _markForCheck() {\n this.cd.markForCheck();\n }\n\n /**\n * Called when the user has moved their pointer after\n * starting to drag.\n */\n private _pointerMove = (event: TouchEvent | MouseEvent) => {\n if (this._isSliding) {\n event.preventDefault();\n this._lastPointerEvent = event;\n let x: number | undefined;\n let y: number | undefined;\n const canvas = this._imgCanvas.nativeElement;\n const scaleFix = this._scal3Fix;\n const config = this.config;\n const startP = this.offset;\n const point = getGesturePointFromEvent(event);\n const deltaX = point.x - this._startPointerEvent.x;\n const deltaY = point.y - this._startPointerEvent.y;\n if (!scaleFix || !startP) {\n return;\n }\n\n const isMinScaleY = canvas.height * scaleFix < config.height && config.extraZoomOut;\n const isMinScaleX = canvas.width * scaleFix < config.width && config.extraZoomOut;\n\n const limitLeft = (config.width / 2 / scaleFix) >= startP.left - (deltaX / scaleFix);\n const limitRight = (config.width / 2 / scaleFix) +\n (canvas.width) - (startP.left - (deltaX / scaleFix)) <= config.width / scaleFix;\n const limitTop = ((config.height / 2 / scaleFix) >= (startP.top - (deltaY / scaleFix)));\n const limitBottom = (\n ((config.height / 2 / scaleFix) + (canvas.height) - (startP.top - (deltaY / scaleFix))) <= (config.height / scaleFix)\n );\n\n // Limit for left\n if ((limitLeft && !isMinScaleX) || (!limitLeft && isMinScaleX)) {\n x = startP.x + (startP.left) - (config.width / 2 / scaleFix);\n }\n\n // Limit for right\n if ((limitRight && !isMinScaleX) || (!limitRight && isMinScaleX)) {\n x = startP.x + (startP.left) + (config.width / 2 / scaleFix) - canvas.width;\n }\n\n // Limit for top\n if ((limitTop && !isMinScaleY) || (!limitTop && isMinScaleY)) {\n y = startP.y + (startP.top) - (config.height / 2 / scaleFix);\n }\n\n // Limit for bottom\n if ((limitBottom && !isMinScaleY) || (!limitBottom && isMinScaleY)) {\n y = startP.y + (startP.top) + (config.height / 2 / scaleFix) - canvas.height;\n }\n\n // When press shiftKey, deprecated\n // if (event.srcEvent && event.srcEvent.shiftKey) {\n // if (Math.abs(event.deltaX) === Math.max(Math.abs(event.deltaX), Math.abs(event.deltaY))) {\n // y = this.offset.top;\n // } else {\n // x = this.offset.left;\n // }\n // }\n\n if (x === void 0) { x = (deltaX / scaleFix) + (startP.x); }\n if (y === void 0) { y = (deltaY / scaleFix) + (startP.y); }\n this._setStylesForContImg({\n x, y\n });\n }\n }\n\n public updatePosition(): void;\n public updatePosition(xOrigin: number, yOrigin: number): void;\n public updatePosition(xOrigin?: number, yOrigin?: number): void {\n const hostRect = this._rootRect();\n const areaRect = this._areaCropperRect();\n const areaWidth = areaRect.width > hostRect.width\n ? hostRect.width\n : areaRect.width;\n const areaHeight = areaRect.height > hostRect.height\n ? hostRect.height\n : areaRect.height;\n let x: number;\n let y: number;\n if (xOrigin == null && yOrigin == null) {\n xOrigin = this._imgRect.xc;\n yOrigin = this._imgRect.yc;\n }\n x = (areaRect.left - hostRect.left);\n y = (areaRect.top - hostRect.top);\n x -= (xOrigin - (areaWidth / 2));\n y -= (yOrigin - (areaHeight / 2));\n\n this._setStylesForContImg({\n x, y\n });\n }\n\n public _slideEnd() {\n this._cropIfAutoCrop();\n }\n\n private _cropIfAutoCrop() {\n if (this.config.autoCrop) {\n this.crop();\n }\n }\n\n /** + */\n public zoomIn() {\n const scale = this._scal3Fix + .05;\n if (scale > this.minScale && scale <= this._maxScale) {\n this.setScale(scale);\n } else {\n this.setScale(this._maxScale);\n }\n }\n\n /** Clean the img cropper */\n public clean() {\n // fix choosing the same image does not load\n if (this._currentInputElement) {\n this._currentInputElement.value = \"\";\n this._currentInputElement = null;\n }\n if (this.isLoaded) {\n this._imgRect = { } as any;\n this.offset = undefined;\n this.scale = undefined as any;\n this._scal3Fix = undefined;\n this._rotation = 0;\n this._minScale = undefined;\n this._isLoadedImg = false;\n this.isLoaded = false;\n this.isCropped = false;\n this._currentLoadConfig = undefined;\n this.config = this._configPrimary;\n const canvas = this._imgCanvas.nativeElement;\n canvas.width = 0;\n canvas.height = 0;\n this.cleaned.emit(null);\n this.cd.markForCheck();\n }\n }\n\n /** - */\n public zoomOut() {\n const scale = this._scal3Fix - .05;\n if (scale > this.minScale && scale <= this._maxScale) {\n this.setScale(scale);\n } else {\n this.fit();\n }\n }\n public center() {\n const newStyles = {\n ...this._getCenterPoints()\n };\n this._setStylesForContImg(newStyles);\n this._cropIfAutoCrop();\n }\n /**\n * load an image from a given configuration,\n * or from the result of a cropped image\n */\n public loadImage(config: ImgCropperLoaderConfig | string, fn?: () => void) {\n this.clean();\n const _config = this._currentLoadConfig = typeof config === \"string\"\n ? { originalDataURL: config }\n : { ...config };\n let src = _config.originalDataURL;\n this._primaryAreaWidth = this._configPrimary.width;\n this._primaryAreaHeight = this._configPrimary.height;\n if (_config.areaWidth && _config.areaHeight) {\n this.config.width = _config.areaWidth;\n this.config.height = _config.areaHeight;\n }\n src = normalizeSVG(src);\n\n const img = createHtmlImg(src);\n\n const cropEvent = { ..._config } as ImgCropperEvent;\n\n new Observable<void>(observer => {\n\n img.onerror = err => observer.error(err);\n img.onabort = err => observer.error(err);\n img.onload = () => observer.next(null);\n })\n .pipe(take(1), takeUntil(this._destroy))\n .subscribe(\n () => {\n this._imgLoaded(img);\n this._isLoadedImg = true;\n this.imageLoaded.emit(cropEvent);\n this.cd.markForCheck();\n this._ngZone.runOutsideAngular(() => {\n this._ngZone\n .onStable\n .asObservable()\n .pipe(take(1), takeUntil(this._destroy))\n .subscribe(\n () => setTimeout(() => this._ngZone.run(() => this._positionImg(cropEvent, fn)))\n );\n });\n },\n () => {\n const error: ImgCropperErrorEvent = {\n name: _config.name,\n error: ImgCropperError.Type,\n type: _config.type,\n size: _config.size\n };\n this.error.emit(error);\n }\n );\n }\n\n private _updateAreaIfNeeded() {\n if (!this._config.responsiveArea) {\n return;\n }\n\n const rootRect = this._rootRect();\n const areaRect = this._areaCropperRect();\n const minWidth = this.config.minWidth || 1;\n const minHeight = this.config.minHeight || 1;\n if (!(\n areaRect.width > rootRect.width\n || areaRect.height > rootRect.height\n || areaRect.width < this._primaryAreaWidth\n || areaRect.height < this._primaryAreaHeight\n )) {\n return;\n }\n const areaWidthConf = Math.max(this.config.width, minWidth);\n const areaWidthMax = Math.max(rootRect.width, minWidth);\n const minHost = Math.min(\n Math.max(rootRect.width, minWidth), Math.max(rootRect.height, minHeight)\n );\n const currentScale = this._scal3Fix;\n let newScale = 0;\n const roundConf = this.config.round;\n\n if (roundConf) {\n this.config.width = this.config.height = minHost;\n } else {\n if (areaWidthConf === areaRect.width) {\n if (areaWidthMax > this._primaryAreaWidth) {\n this.config.width = this._primaryAreaWidth;\n this.config.height = (this._primaryAreaWidth * areaRect.height) / areaRect.width;\n newScale = (currentScale * this._primaryAreaWidth) / areaRect.width;\n } else {\n this.config.width = areaWidthMax;\n this.config.height = (areaWidthMax * areaRect.height) / areaRect.width;\n newScale = (currentScale * areaWidthMax) / areaRect.width;\n }\n this._updateMinScale();\n this._updateMaxScale();\n this.setScale(newScale, true);\n this._markForCheck();\n }\n }\n }\n\n private _updateAbsoluteScale() {\n const scale = this._scal3Fix / (this.config.width / this._primaryAreaWidth);\n this._absoluteScale = scale;\n }\n\n /**\n * Load Image from URL\n * @deprecated Use `loadImage` instead of `setImageUrl`\n * @param src URL\n * @param fn function that will be called before emit the event loaded\n */\n public setImageUrl(src: string, fn?: () => void) {\n this.loadImage(src, fn);\n }\n\n private _positionImg(cropEvent: ImgCropperEvent, fn?: () => void) {\n const loadConfig = this._currentLoadConfig;\n this._updateMinScale(this._imgCanvas.nativeElement);\n this._updateMaxScale();\n this.isLoaded = false;\n if (fn) {\n fn();\n } else {\n if (loadConfig.scale) {\n this.setScale(loadConfig.scale, true);\n } else {\n this.setScale(this.minScale, true);\n }\n this.rotate(loadConfig.rotation || 0);\n this._updateAreaIfNeeded();\n this._markForCheck();\n this._ngZone.runOutsideAngular(() => {\n this._ngZone\n .onStable\n .asObservable()\n .pipe(take(1), takeUntil(this._destroy))\n .subscribe(() => {\n if (loadConfig.xOrigin != null && loadConfig.yOrigin != null) {\n this.updatePosition(loadConfig.xOrigin, loadConfig.yOrigin);\n }\n this._updateAreaIfNeeded();\n this.isLoaded = true;\n this._cropIfAutoCrop();\n this._ngZone.run(() => {\n this._markForCheck();\n this.ready.emit(cropEvent);\n });\n });\n });\n }\n }\n\n public rotate(degrees: number) {\n let validDegrees = _normalizeDegrees(degrees);\n // If negative convert to positive\n if (validDegrees < 0) {\n validDegrees += 360;\n }\n const newRotation = _normalizeDegrees((this._rotation || 0) + validDegrees);\n if (newRotation === this._rotation) {\n return;\n }\n const degreesRad = validDegrees * Math.PI / 180;\n const canvas = this._imgCanvas.nativeElement;\n const canvasClon = createCanvasImg(canvas);\n const ctx = canvas.getContext(\"2d\");\n this._rotation = newRotation;\n\n // clear\n ctx.clearRect(0, 0, canvasClon.width, canvasClon.height);\n\n // rotate canvas image\n const transform = `rotate(${validDegrees}deg) scale(${1 / this._scal3Fix})`;\n const transformOrigin = `${this._imgRect.xc}px ${this._imgRect.yc}px 0`;\n canvas.style.transform = transform;\n // tslint:disable-next-line: deprecation\n canvas.style.webkitTransform = transform;\n canvas.style.transformOrigin = transformOrigin;\n // tslint:disable-next-line: deprecation\n canvas.style.webkitTransformOrigin = transformOrigin;\n\n const { left, top } = canvas.getBoundingClientRect() as DOMRect;\n\n // save rect\n const canvasRect = canvas.getBoundingClientRect();\n\n // remove rotate styles\n canvas.removeAttribute(\"style\");\n\n // set w & h\n const w = canvasRect.width;\n const h = canvasRect.height;\n ctx.canvas.width = w;\n ctx.canvas.height = h;\n\n // clear\n ctx.clearRect(0, 0, w, h);\n\n // translate and rotate\n ctx.translate(w / 2, h / 2);\n ctx.rotate(degreesRad);\n ctx.drawImage(canvasClon, -canvasClon.width / 2, -canvasClon.height / 2);\n\n // Update min scale\n this._updateMinScale(canvas);\n this._updateMaxScale();\n\n // set the minimum scale, only if necessary\n if (this.scale < this.minScale) {\n this.setScale(0, true);\n } // ↑ no AutoCrop\n\n const rootRect = this._rootRect();\n\n this._setStylesForContImg({\n x: (left - rootRect.left),\n y: (top - rootRect.top)\n });\n\n // keep image inside the frame\n const originPosition = {...this._imgRect};\n this.offset = {\n x: originPosition.x,\n y: originPosition.y,\n left: originPosition.xc,\n top: originPosition.yc\n };\n this._setStylesForContImg({});\n this._simulatePointerMove();\n\n this._cropIfAutoCrop();\n }\n\n public _updateMinScale(canvas?: HTMLCanvasElement) {\n if (!canvas) {\n canvas = this._imgCanvas.nativeElement;\n }\n const config = this.config;\n const minScale = (config.extraZoomOut ? Math.min : Math.max)(\n config.width / canvas.width,\n config.height / canvas.height);\n this._minScale = minScale;\n this.minScaleChange.emit(minScale);\n }\n\n private _updateMaxScale() {\n const maxScale = (this.config.width / this._primaryAreaWidth);\n this._maxScale = maxScale;\n this.maxScaleChange.emit(maxScale);\n }\n\n /**\n * Resize & crop image\n */\n public crop(config?: ImgCropperConfig): ImgCropperEvent {\n const newConfig = config\n ? mergeDeep({ }, this.config || new ImgCropperConfig(), config) : this.config;\n const cropEvent = this._imgCrop(newConfig);\n this.cd.markForCheck();\n return cropEvent;\n }\n\n /**\n * @docs-private\n */\n private _imgCrop(myConfig: ImgCropperConfig) {\n const canvasElement: HTMLCanvasElement = document.createElement(\"canvas\");\n const areaRect = this._areaCropperRect();\n const canvasRect = this._canvasRect();\n const scaleFix = this._scal3Fix;\n const left = (areaRect.left - canvasRect.left) / scaleFix;\n const top = (areaRect.top - canvasRect.top) / scaleFix;\n const { output } = myConfig;\n const currentImageLoadConfig = this._currentLoadConfig;\n const area = {\n width: myConfig.width,\n height: myConfig.height\n };\n canvasElement.width = area.width / scaleFix;\n canvasElement.height = area.height / scaleFix;\n const ctx = canvasElement.getContext(\"2d\");\n if (myConfig.fill) {\n ctx.fillStyle = myConfig.fill;\n ctx.fillRect(0, 0, canvasElement.width, canvasElement.height);\n }\n ctx.drawImage(this._imgCanvas.nativeElement,\n -(left), -(top),\n );\n const result = canvasElement;\n if (myConfig.output === ImgResolution.Default) {\n resizeCanvas(\n result,\n this._configPrimary.width,\n this._configPrimary.height);\n } else if (typeof output === \"object\") {\n if (output.width && output.height) {\n resizeCanvas(result, output.width, output.height);\n } else if (output.width) {\n const newHeight = area.height * output.width / area.width;\n resizeCanvas(result, output.width, newHeight);\n } else if (output.height) {\n const newWidth = area.width * output.height / area.height;\n resizeCanvas(result, newWidth, output.height);\n }\n }\n const type = currentImageLoadConfig.originalDataURL.startsWith(\"http\")\n ? currentImageLoadConfig.type || myConfig.type\n : myConfig.type || currentImageLoadConfig.type;\n const dataURL = result.toDataURL(type);\n const cropEvent: ImgCropperEvent = {\n dataURL,\n type,\n name: currentImageLoadConfig.name,\n areaWidth: this._primaryAreaWidth,\n areaHeight: this._primaryAreaHeight,\n width: result.width,\n height: result.height,\n originalDataURL: currentImageLoadConfig.originalDataURL,\n scale: this._absoluteScale,\n rotation: this._rotation,\n left: (areaRect.left - canvasRect.left) / this._scal3Fix,\n top: (areaRect.top - canvasRect.top) / this._scal3Fix,\n size: currentImageLoadConfig.size,\n xOrigin: this._imgRect.xc,\n yOrigin: this._imgRect.yc,\n position: {\n x: this._imgRect.xc,\n y: this._imgRect.yc\n }\n };\n\n this.isCropped = true;\n this.cropped.emit(cropEvent);\n return cropEvent;\n }\n\n public _rootRect(): DOMRect {\n return this._elementRef.nativeElement.getBoundingClientRect() as DOMRect;\n }\n\n public _areaCropperRect(): DOMRect {\n return this._areaRef.nativeElement.getBoundingClientRect() as DOMRect;\n }\n\n public _canvasRect(): DOMRect {\n return this._imgCanvas.nativeElement.getBoundingClientRect();\n }\n\n\n /** Called when the user has lifted their pointer. */\n private _pointerUp = (event: TouchEvent | MouseEvent) => {\n if (this._isSliding) {\n event.preventDefault();\n this._removeGlobalEvents();\n this._isSliding = false;\n this._startPointerEvent = null;\n this._cropIfAutoCrop();\n }\n }\n\n /** Called when the window has lost focus. */\n private _windowBlur = () => {\n // If the window is blurred while dragging we need to stop dragging because the\n // browser won't dispatch the `mouseup` and `touchend` events anymore.\n if (this._lastPointerEvent) {\n this._pointerUp(this._lastPointerEvent);\n }\n }\n\n private _bindGlobalEvents(triggerEvent: TouchEvent | MouseEvent) {\n const element = this._document;\n const isTouch = isTouchEvent(triggerEvent);\n const moveEventName = isTouch ? \"touchmove\" : \"mousemove\";\n const endEventName = isTouch ? \"touchend\" : \"mouseup\";\n element.addEventListener(moveEventName, this._pointerMove, activeEventOptions);\n element.addEventListener(endEventName, this._pointerUp, activeEventOptions);\n\n if (isTouch) {\n element.addEventListener(\"touchcancel\", this._pointerUp, activeEventOptions);\n }\n\n const window = this._getWindow();\n\n if (typeof window !== \"undefined\" && window) {\n window.addEventListener(\"blur\", this._windowBlur);\n }\n }\n\n /** Removes any global event listeners that we may have added. */\n private _removeGlobalEvents() {\n const element = this._document;\n element.removeEventListener(\"mousemove\", this._pointerMove, activeEventOptions);\n element.removeEventListener(\"mouseup\", this._pointerUp, activeEventOptions);\n element.removeEventListener(\"touchmove\", this._pointerMove, activeEventOptions);\n element.removeEventListener(\"touchend\", this._pointerUp, activeEventOptions);\n element.removeEventListener(\"touchcancel\", this._pointerUp, activeEventOptions);\n\n const window = this._getWindow();\n\n if (typeof window !== \"undefined\" && window) {\n window.removeEventListener(\"blur\", this._windowBlur);\n }\n }\n\n /** Use defaultView of injected document if available or fallback to global window reference */\n private _getWindow(): Window {\n return this._document.defaultView || window;\n }\n\n}\n\n/**\n * Normalize degrees for cropper rotation\n * @docs-private\n */\nexport function _normalizeDegrees(n: number) {\n const de = n % 360;\n if (de % 90) {\n throw new Error(`LyCropper: Invalid \\`${n}\\` degree, only accepted values: 0, 90, 180, 270 & 360.`);\n }\n return de;\n}\n\n/**\n * @docs-private\n */\nfunction createCanvasImg(img: HTMLCanvasElement | HTMLImageElement) {\n\n // create a new canvas\n const newCanvas = document.createElement(\"canvas\");\n const context = newCanvas.getContext(\"2d\");\n\n // set dimensions\n newCanvas.width = img.width;\n newCanvas.height = img.height;\n\n // apply the old canvas to the new one\n context.drawImage(img, 0, 0);\n\n // return the new canvas\n return newCanvas;\n}\n\n\nconst DATA_IMAGE_SVG_PREFIX = \"data:image/svg+xml;base64,\";\n\nfunction normalizeSVG(dataURL: string) {\n if (window.atob && isSvgImage(dataURL)) {\n const len = dataURL.length / 5;\n const text = window.atob(dataURL.replace(DATA_IMAGE_SVG_PREFIX, \"\"));\n const span = document.createElement(\"span\");\n span.innerHTML = text;\n const svg = span.querySelector(\"svg\");\n span.setAttribute(\"style\", \"display:none\");\n document.body.appendChild(span);\n const width = parseFloat(getComputedStyle(svg).width) || 1;\n const height = parseFloat(getComputedStyle(svg).height) || 1;\n const max = Math.max(width, height);\n\n svg.setAttribute(\"width\", `${len / (width / max)}px`);\n svg.setAttribute(\"height\", `${len / (height / max)}px`);\n const result = DATA_IMAGE_SVG_PREFIX + window.btoa(span.innerHTML);\n document.body.removeChild(span);\n return result;\n }\n return dataURL;\n}\n\nfunction isSvgImage(dataUrl: string) {\n return dataUrl.startsWith(DATA_IMAGE_SVG_PREFIX);\n}\n\nfunction createHtmlImg(src: string) {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.src = src;\n return img;\n}\n\n\nfunction getGesturePointFromEvent(event: TouchEvent | MouseEvent) {\n\n // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n const point = isTouchEvent(event)\n ? (event.touches[0] || event.changedTouches[0])\n : event;\n\n return {\n x: point.clientX,\n y: point.clientY\n };\n}\n\n/** Returns whether an event is a touch event. */\nfunction isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\n return event.type[0] === \"t\";\n}\n\nexport function round(n: number) {\n return Math.round(n);\n}\n\n/**\n * Simple object check.\n * @param item\n */\nfunction isObject(item) {\n return (item && typeof item === \"object\" && !Array.isArray(item));\n}\n\nexport function mergeDeep<T, U>(target: T, source: U): T & U;\nexport function mergeDeep<T, U, V>(target: T, source1: U, source2: V): T & U & V;\nexport function mergeDeep<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;\nexport function mergeDeep(target: object, ...sources: any[]): any;\n\n/**\n * Deep merge two objects.\n * @param target\n * @param ...sources\n */\nexport function mergeDeep(target: any, ...sources: any[]) {\n if (!sources.length) { return target; }\n const source = sources.shift();\n\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) { Object.assign(target, { [key]: {} }); }\n mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return mergeDeep(target, ...sources);\n}\n\n\n/**\n * We have the cropper area in the same file to fix the build\n */\n\n@Component({\n selector: \"nice-cropper-area\",\n templateUrl: \"./image-cropper-area.template.html\",\n styleUrls: [\"./image-cropper-area.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceCropperAreaComponent implements OnDestroy {\n @ViewChild(\"resizer\")\n private readonly _resizer?: ElementRef;\n\n @Input()\n public keepAspectRatio: boolean;\n\n @Input()\n @HostBinding(\"class.round\")\n public round: boolean;\n\n /** Used to subscribe to global move and end events */\n protected _document: Document;\n private _isSliding: boolean;\n\n /** Keeps track of the last pointer event that was captured by the crop area. */\n private _lastPointerEvent: MouseEvent | TouchEvent | null;\n private _startPointerEvent: {\n x: number\n y: number\n } | null;\n private _currentWidth: number;\n private _currentHeight: number;\n private _startAreaRect: DOMRect;\n private _startImgRect: DOMRect;\n\n constructor(\n @Inject(DOCUMENT) _document: any,\n private readonly _elementRef: ElementRef,\n private readonly _cropper: NiceImageCropperComponent,\n private readonly _ngZone: NgZone,\n ) {\n this._document = _document;\n }\n\n private _resizableArea: boolean;\n\n @Input()\n public set resizableArea(val: boolean) {\n if (val !== this._resizableArea) {\n this._resizableArea = val;\n Promise.resolve(null).then(() => {\n if (val) {\n this._removeResizableArea();\n this._addResizableArea();\n } else {\n this._removeResizableArea();\n }\n });\n }\n }\n public get resizableArea() {\n return this._resizableArea;\n }\n\n public ngOnDestroy() {\n this._removeResizableArea();\n }\n\n private _addResizableArea() {\n this._ngZone.runOutsideAngular(() => {\n const element = this._resizer.nativeElement;\n element.addEventListener(\"mousedown\", this._pointerDown, activeEventOptions);\n element.addEventListener(\"touchstart\", this._pointerDown, activeEventOptions);\n });\n }\n\n private _removeResizableArea() {\n const element = this._resizer?.nativeElement;\n if (element) {\n this._lastPointerEvent = null;\n this._removeGlobalEvents();\n element.removeEventListener(\"mousedown\", this._pointerDown, activeEventOptions);\n element.removeEventListener(\"touchstart\", this._pointerDown, activeEventOptions);\n }\n }\n\n private _pointerDown = (event: MouseEvent | TouchEvent) => {\n // Don't do anything if the\n // user is using anything other than the main mouse button.\n if (this._isSliding || (!isTouchEvent(event) && event.button !== 0)) {\n return;\n }\n\n event.preventDefault();\n\n this._ngZone.run(() => {\n this._isSliding = true;\n this._lastPointerEvent = event;\n this._startPointerEvent = getGesturePointFromEvent(event);\n this._startAreaRect = this._cropper._areaCropperRect();\n this._startImgRect = this._cropper._canvasRect();\n event.preventDefault();\n this._bindGlobalEvents(event);\n });\n }\n\n private _pointerMove = (event: MouseEvent | TouchEvent) => {\n if (this._isSliding) {\n event.preventDefault();\n this._lastPointerEvent = event;\n const element: HTMLDivElement = this._elementRef.nativeElement;\n const {width, height, minWidth, minHeight} = this._cropper.config;\n const point = getGesturePointFromEvent(event);\n const deltaX = point.x - this._startPointerEvent.x;\n const deltaY = point.y - this._startPointerEvent.y;\n const startAreaRect = this._startAreaRect;\n const startImgRect = this._startImgRect;\n const isRound = this.round;\n const keepAspectRatio = this._cropper.config.keepAspectRatio || event.shiftKey;\n let newWidth = 0;\n let newHeight = 0;\n const rootRect = this._cropper._rootRect();\n\n if (isRound) {\n // The distance from the center of the cropper area to the pointer\n const originX = ((width / 2 / Math.sqrt(2)) + deltaX);\n const originY = ((height / 2 / Math.sqrt(2)) + deltaY);\n\n // Leg\n const side = Math.sqrt(originX ** 2 + originY ** 2);\n newWidth = newHeight = side * 2;\n\n } else if (keepAspectRatio) {\n newWidth = width + deltaX * 2;\n newHeight = height + deltaY * 2;\n if (width !== height) {\n if (width > height) {\n newHeight = height / (width / newWidth);\n } else if (height > width) {\n newWidth = width / (height / newHeight);\n }\n } else {\n newWidth = newHeight = Math.max(newWidth, newHeight);\n }\n } else {\n newWidth = width + deltaX * 2;\n newHeight = height + deltaY * 2;\n }\n\n // To min width\n if (newWidth < minWidth) {\n newWidth = minWidth;\n }\n // To min height\n if (newHeight < minHeight) {\n newHeight = minHeight;\n }\n\n // Do not overflow the cropper area\n const centerX = startAreaRect.x + startAreaRect.width / 2;\n const centerY = startAreaRect.y + startAreaRect.height / 2;\n const topOverflow = startImgRect.y > centerY - (newHeight / 2);\n const bottomOverflow = centerY + (newHeight / 2) > startImgRect.bottom;\n const minHeightOnOverflow = Math.min((centerY - startImgRect.y) * 2, (startImgRect.bottom - centerY) * 2);\n const leftOverflow = startImgRect.x > centerX - (newWidth / 2);\n const rightOverflow = centerX + (newWidth / 2) > startImgRect.right;\n const minWidthOnOverflow = Math.min((centerX - startImgRect.x) * 2, (startImgRect.right - centerX) * 2);\n const minOnOverflow = Math.min(minWidthOnOverflow, minHeightOnOverflow);\n if (round) {\n if (topOverflow || bottomOverflow || leftOverflow || rightOverflow) {\n newHeight = newWidth = minOnOverflow;\n }\n } else if (keepAspectRatio) {\n const newNewWidth: number[] = [];\n const newNewHeight: number[] = [];\n if ((topOverflow || bottomOverflow) && Math.min()) {\n newHeight = minHeightOnOverflow;\n newNewHeight.push(newHeight);\n newWidth = width / (height / minHeightOnOverflow);\n newNewWidth.push(newWidth);\n }\n if ((leftOverflow || rightOverflow)) {\n newWidth = minWidthOnOverflow;\n newNewWidth.push(newWidth);\n newHeight = height / (width / minWidthOnOverflow);\n newNewHeight.push(newHeight);\n }\n if (newNewWidth.length === 2) {\n newWidth = Math.min(...newNewWidth);\n }\n if (newNewHeight.length === 2) {\n newHeight = Math.min(...newNewHeight);\n }\n } else {\n if (topOverflow || bottomOverflow) {\n newHeight = minHeightOnOverflow;\n }\n if (leftOverflow || rightOverflow) {\n newWidth = minWidthOnOverflow;\n }\n }\n\n // Do not overflow the container\n if (round) {\n const min = Math.min(rootRect.width, rootRect.height);\n if (newWidth > min) {\n newWidth = newHeight = min;\n } else if (newHeight > min) {\n newWidth = newHeight = min;\n }\n } else if (keepAspectRatio) {\n if (newWidth > rootRect.width) {\n newWidth = rootRect.width;\n newHeight = height / (width / rootRect.width);\n } else if (newHeight > rootRect.height) {\n newWidth = width / (height / rootRect.height);\n newHeight = rootRect.height;\n }\n } else {\n if (newWidth > rootRect.width) {\n newWidth = rootRect.width;\n } else if (newHeight > rootRect.height) {\n newHeight = rootRect.height;\n }\n }\n\n\n // round values\n newWidth = Math.round(newWidth);\n newHeight = Math.round(newHeight);\n\n element.style.width = `${newWidth}px`;\n element.style.height = `${newHeight}px`;\n this._currentWidth = newWidth;\n this._currentHeight = newHeight;\n }\n }\n\n /** Called when the user has lifted their pointer. */\n private _pointerUp = (event: TouchEvent | MouseEvent) => {\n if (this._isSliding) {\n event.preventDefault();\n this._removeGlobalEvents();\n this._cropper._primaryAreaWidth = this._cropper.config.width = this._currentWidth;\n this._cropper._primaryAreaHeight = this._cropper.config.height = this._currentHeight;\n this._cropper.config = this._cropper.config;\n this._cropper._updateMinScale();\n this._isSliding = false;\n this._startPointerEvent = null;\n }\n }\n\n /** Called when the window has lost focus. */\n private _windowBlur = () => {\n // If the window is blurred while dragging we need to stop dragging because the\n // browser won't dispatch the `mouseup` and `touchend` events anymore.\n if (this._lastPointerEvent) {\n this._pointerUp(this._lastPointerEvent);\n }\n }\n\n private _bindGlobalEvents(triggerEvent: TouchEvent | MouseEvent) {\n const element = this._document;\n const isTouch = isTouchEvent(triggerEvent);\n const moveEventName = isTouch ? \"touchmove\" : \"mousemove\";\n const endEventName = isTouch ? \"touchend\" : \"mouseup\";\n element.addEventListener(moveEventName, this._pointerMove, activeEventOptions);\n element.addEventListener(endEventName, this._pointerUp, activeEventOptions);\n\n if (isTouch) {\n element.addEventListener(\"touchcancel\", this._pointerUp, activeEventOptions);\n }\n\n const window = this._getWindow();\n\n if (typeof window !== \"undefined\" && window) {\n window.addEventListener(\"blur\", this._windowBlur);\n }\n }\n\n /** Removes any global event listeners that we may have added. */\n private _removeGlobalEvents() {\n const element = this._document;\n element.removeEventListener(\"mousemove\", this._pointerMove, activeEventOptions);\n element.removeEventListener(\"mouseup\", this._pointerUp, activeEventOptions);\n element.removeEventListener(\"touchmove\", this._pointerMove, activeEventOptions);\n element.removeEventListener(\"touchend\", this._pointerUp, activeEventOptions);\n element.removeEventListener(\"touchcancel\", this._pointerUp, activeEventOptions);\n\n const window = this._getWindow();\n\n if (typeof window !== \"undefined\" && window) {\n window.removeEventListener(\"blur\", this._windowBlur);\n }\n }\n\n /** Use defaultView of injected document if available or fallback to global window reference */\n private _getWindow(): Window {\n return this._document.defaultView || window;\n }\n}\n","<!-- (selectstart): On Safari starting to slide temporarily triggers text selection mode which\nshow the wrong cursor. We prevent it by stopping the `selectstart` event. -->\n<div class=\"image-container\" #_imgContainer\n (selectstart)=\"$event.preventDefault()\"\n>\n <canvas #_imgCanvas></canvas>\n</div>\n<nice-cropper-area\n #_area\n *ngIf=\"_isLoadedImg\"\n [round]=\"!!config.round\"\n [resizableArea]=\"!!config.resizableArea\"\n [keepAspectRatio]=\"!!config.keepAspectRatio\"\n [ngStyle]=\"{\n width: config.width + 'px',\n height: config.height + 'px'\n }\"\n></nice-cropper-area>\n<button class=\"close-button\" mat-icon-button *ngIf=\"_isLoadedImg\" (click)=\"clean()\">\n <mat-icon>arrow_back</mat-icon>\n</button>\n","<div class=\"resizer\" #resizer *ngIf=\"resizableArea\"></div>\n","/**\n * Adapted from https://github.com/A-l-y-l-e/Alyle-UI/tree/10.5.3/src/lib/image-cropper\n */\n\nimport { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\n\nimport { NiceCropperAreaComponent, NiceImageCropperComponent } from \"./image-cropper.component\";\n\n@NgModule({\n imports: [CommonModule, MatButtonModule, MatIconModule],\n declarations: [NiceImageCropperComponent, NiceCropperAreaComponent],\n exports: [NiceImageCropperComponent]\n})\nexport class NiceImageCropperModule {}\n","import { DOCUMENT } from \"@angular/common\";\nimport { Component, Inject, OnDestroy, OnInit, Renderer2 } from \"@angular/core\";\nimport { combineLatest, Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { NiceConfigService, NiceMediaWatcherService } from \"../../providers\";\nimport { NiceConfig, Scheme } from \"../../providers/config/config.model\";\n\n@Component({\n selector: \"nice-layout\",\n template: `<ng-content></ng-content>`\n})\nexport class NiceLayoutComponent implements OnInit, OnDestroy {\n private config: NiceConfig;\n private scheme: Scheme;\n private theme: string;\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n /**\n * Constructor\n */\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _renderer2: Renderer2,\n private _niceConfigService: NiceConfigService,\n private _niceMediaWatcherService: NiceMediaWatcherService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Set the theme and scheme based on the configuration\n combineLatest([\n this._niceConfigService.config$,\n this._niceMediaWatcherService.onMediaQueryChange$([\"(prefers-color-scheme: dark)\", \"(prefers-color-scheme: light)\"])\n ]).pipe(\n takeUntil(this._unsubscribeAll),\n map(([config, mql]) => {\n const options = {\n scheme: config.scheme,\n theme: config.theme\n };\n\n if (config.scheme === \"auto\") {\n options.scheme = mql.breakpoints[\"(prefers-color-scheme: dark)\"] ? \"dark\" : \"light\";\n }\n\n return options;\n })\n ).subscribe((options) => {\n this.scheme = options.scheme;\n this.theme = options.theme;\n\n this._updateScheme();\n this._updateTheme();\n });\n\n // Subscribe to config changes\n this._niceConfigService.config$\n .pipe(takeUntil(this._unsubscribeAll))\n .subscribe((config: NiceConfig) => {\n this.config = config;\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n /**\n * Update the selected scheme\n *\n * @private\n */\n private _updateScheme(): void {\n // Remove class names for all schemes\n this._document.body.classList.remove(\"light\", \"dark\");\n\n // Add class name for the currently selected scheme\n this._document.body.classList.add(this.scheme);\n }\n\n /**\n * Update the selected theme\n *\n * @private\n */\n private _updateTheme(): void {\n // Find the class name for the previously selected theme and remove it\n this._document.body.classList.forEach((className: string) => {\n if (className.startsWith(\"theme-\")) {\n this._document.body.classList.remove(className, className.split(\"-\")[1]);\n }\n });\n\n // Add class name for the currently selected theme\n this._document.body.classList.add(`theme-${this.theme}`);\n }\n}\n","import { NgModule } from \"@angular/core\";\n\nimport { NiceLayoutComponent } from \"./layout.component\";\n\n@NgModule({\n imports: [],\n declarations: [NiceLayoutComponent],\n providers: [],\n exports: [NiceLayoutComponent]\n})\nexport class NiceLayoutModule {}\n","import { Component, Input } from \"@angular/core\";\nimport { ProgressSpinnerMode } from \"@angular/material/progress-spinner\";\n\n@Component({\n selector: \"nice-loading-spinner\",\n templateUrl: \"loading-spinner.template.html\",\n styleUrls: [\"./loading-spinner.style.scss\"]\n})\nexport class NiceLoadingSpinnerComponent {\n @Input()\n public loading: boolean;\n\n @Input()\n mode: ProgressSpinnerMode = \"indeterminate\";\n\n @Input()\n diameter = 50;\n}\n","<mat-spinner [diameter]=\"diameter\" [mode]=\"mode\" [color]=\"'accent'\"></mat-spinner>\n","import { OverlayContainer } from \"@angular/cdk/overlay\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class DynamicOverlayContainer extends OverlayContainer {\n public setContainerElement(containerElement: HTMLElement): void {\n this._containerElement = containerElement;\n }\n}\n","import { Overlay, OverlayKeyboardDispatcher, OverlayPositionBuilder, ScrollStrategyOptions, OverlayOutsideClickDispatcher } from \"@angular/cdk/overlay\";\nimport { ComponentFactoryResolver, Inject, Injectable, Injector, NgZone, Renderer2, RendererFactory2 } from \"@angular/core\";\nimport { DynamicOverlayContainer } from \"./dynamic-overlay-container.service\";\nimport { Directionality } from \"@angular/cdk/bidi\";\nimport { DOCUMENT, Location } from \"@angular/common\";\n\n@Injectable({ providedIn: \"root\" })\nexport class DynamicOverlay extends Overlay {\n private readonly _dynamicOverlayContainer: DynamicOverlayContainer;\n private renderer: Renderer2;\n\n constructor(\n @Inject(DOCUMENT) _document: any,\n scrollStrategies: ScrollStrategyOptions,\n _overlayContainer: DynamicOverlayContainer,\n _componentFactoryResolver: ComponentFactoryResolver,\n _positionBuilder: OverlayPositionBuilder,\n _keyboardDispatcher: OverlayKeyboardDispatcher,\n _injector: Injector,\n _ngZone: NgZone,\n _directionality: Directionality,\n rendererFactory: RendererFactory2,\n _location: Location,\n _outsideClickDispatcher: OverlayOutsideClickDispatcher\n ) {\n super(\n scrollStrategies,\n _overlayContainer,\n _componentFactoryResolver,\n _positionBuilder,\n _keyboardDispatcher,\n _injector,\n _ngZone,\n _document,\n _directionality,\n _location,\n _outsideClickDispatcher\n );\n this.renderer = rendererFactory.createRenderer(null, null);\n\n this._dynamicOverlayContainer = _overlayContainer;\n }\n\n public setContainerElement(containerElement: HTMLElement): void {\n this.renderer.setStyle(containerElement, \"transform\", \"translateZ(0)\");\n this._dynamicOverlayContainer.setContainerElement(containerElement);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_LOADING_OPTIONS = new InjectionToken(\"nice_loading_options\");\n","import { Directive, ElementRef, Inject, Input, Optional, Type } from \"@angular/core\";\nimport { OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { DynamicOverlay } from \"../../providers/overlay/dynamic-overlay.service\";\nimport { NiceLoadingSpinnerComponent } from \"./loading-spinner.component\";\nimport { NICE_LOADING_OPTIONS } from \"./loading.constant\";\n\nexport interface NiceLoadingOptions {\n customLoading?: Type<any>;\n}\n\n@Directive({ selector: \"[niceLoadingOverlay]\" })\nexport class NiceLoadingDirective {\n private overlayRef: OverlayRef;\n private _loading = false;\n\n @Input(\"niceLoadingOverlay\")\n public set loading(loading: boolean | null) {\n setTimeout(() => {\n if (loading === this._loading) {\n return;\n }\n this._loading = loading;\n if (!this.overlayRef) {\n this.overlay.setContainerElement(this.elRef.nativeElement);\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n hasBackdrop: true,\n panelClass: \"nice-loading-overlay\"\n });\n }\n if (this._loading) {\n this.overlayRef.attach(new ComponentPortal(this.options?.customLoading ?? NiceLoadingSpinnerComponent));\n } else {\n this.overlayRef.detach();\n }\n }, 0);\n }\n\n constructor(\n @Optional() @Inject(NICE_LOADING_OPTIONS) private options: NiceLoadingOptions,\n private elRef: ElementRef,\n private overlay: DynamicOverlay\n ) {}\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { DynamicOverlayContainer } from \"../../providers/overlay/dynamic-overlay-container.service\";\nimport { DynamicOverlay } from \"../../providers/overlay/dynamic-overlay.service\";\nimport { NiceLoadingSpinnerComponent } from \"./loading-spinner.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\nimport { NiceLoadingDirective, NiceLoadingOptions } from \"./loading.directive\";\nimport { NICE_LOADING_OPTIONS } from \"./loading.constant\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatProgressSpinnerModule\n ],\n declarations: [\n NiceLoadingSpinnerComponent,\n NiceLoadingDirective\n ],\n providers: [DynamicOverlayContainer, DynamicOverlay],\n exports: [\n NiceLoadingSpinnerComponent,\n NiceLoadingDirective\n ]\n})\nexport class NiceLoadingSpinnerModule {\n public static forRoot(options?: NiceLoadingOptions): ModuleWithProviders<NiceLoadingSpinnerModule> {\n return {\n ngModule: NiceLoadingSpinnerModule,\n providers: [\n {\n provide: NICE_LOADING_OPTIONS,\n useValue: options\n }\n ]\n };\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Input, OnInit, Output, PLATFORM_ID, ViewChild } from \"@angular/core\";\nimport { isPlatformServer } from \"@angular/common\";\n\n@Component({\n selector: \"nice-lottie\",\n templateUrl: \"lottie.template.html\"\n})\nexport class NiceLottieComponent implements OnInit, AfterViewInit {\n private _options: import(\"lottie-web\").AnimationConfigWithPath | import(\"lottie-web\").AnimationConfigWithData;\n private _lottie: typeof import(\"lottie-web\").default;\n\n @Input()\n public options: any;\n @Input()\n public width: number;\n @Input()\n public height: number;\n\n @Output()\n public animCreated: EventEmitter<any> = new EventEmitter();\n\n @ViewChild(\"animationContainer\")\n public animationContainer: ElementRef;\n\n public viewWidth: string;\n public viewHeight: string;\n\n constructor(@Inject(PLATFORM_ID) private platformId: string) {\n }\n\n public ngOnInit(): void {\n this.viewWidth = this.width + \"px\" || \"100%\";\n this.viewHeight = this.height + \"px\" || \"100%\";\n }\n\n public async ngAfterViewInit(): Promise<void> {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this._lottie = (await import(\"lottie-web\")).default;\n this._options = {\n container: this.animationContainer.nativeElement,\n renderer: this.options.renderer || \"svg\",\n loop: this.options.loop !== false,\n autoplay: this.options.autoplay !== false,\n animationData: this.options.animationData,\n path: this.options.path || \"\",\n rendererSettings: this.options.rendererSettings || {}\n };\n\n const anim: any = this._lottie.loadAnimation(this._options);\n this.animCreated.emit(anim);\n }\n}\n","<div #animationContainer\n [ngStyle]=\"{'width': viewWidth, 'height': viewHeight, 'overflow':'hidden', 'margin': '0 auto'}\">\n</div>\n","import { NgModule } from \"@angular/core\";\nimport { NiceLottieComponent } from \"./lottie.component\";\nimport { CommonModule } from \"@angular/common\";\n\n@NgModule({\n imports: [CommonModule],\n declarations: [NiceLottieComponent],\n exports: [NiceLottieComponent]\n})\nexport class NiceLottieModule {}\n","import { ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener, OnDestroy } from \"@angular/core\";\nimport { Observable, Subject } from \"rxjs\";\n\n@Directive()\n// tslint:disable-next-line:class-name directive-class-suffix\nexport abstract class _HintComponentBase implements OnDestroy {\n\n /** The timeout ID of any current timer set to show the tooltip */\n private _showTimeoutId: number | undefined;\n\n /** The timeout ID of any current timer set to hide the tooltip */\n private _hideTimeoutId: number | undefined;\n\n /** Element that caused the tooltip to open. */\n _triggerElement: HTMLElement;\n\n /** Amount of milliseconds to delay the closing sequence. */\n _mouseLeaveHideDelay: number;\n\n /** Reference to the internal tooltip element. */\n abstract _hint: ElementRef<HTMLElement>;\n\n /** Whether interactions on the page should close the tooltip */\n private _closeOnInteraction = false;\n\n /** Whether the tooltip is currently visible. */\n private _isVisible = false;\n\n /** Subject for notifying that the tooltip has been hidden from the view */\n private readonly _onHide: Subject<void> = new Subject();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n /**\n * Shows the tooltip with an animation originating from the provided origin\n * @param delay Amount of milliseconds to the delay showing the tooltip.\n */\n show(delay: number): void {\n // Cancel the delayed hide if it is scheduled\n clearTimeout(this._hideTimeoutId);\n\n this._showTimeoutId = setTimeout(() => {\n this._toggleVisibility(true);\n this._showTimeoutId = undefined;\n }, delay) as unknown as number;\n }\n\n /**\n * Begins the animation to hide the tooltip after the provided delay in ms.\n * @param delay Amount of milliseconds to delay showing the tooltip.\n */\n hide(delay: number): void {\n // Cancel the delayed show if it is scheduled\n clearTimeout(this._showTimeoutId);\n\n this._hideTimeoutId = setTimeout(() => {\n this._toggleVisibility(false);\n this._hideTimeoutId = undefined;\n }, delay) as unknown as number;\n }\n\n /** Returns an observable that notifies when the tooltip has been hidden from view. */\n afterHidden(): Observable<void> {\n return this._onHide;\n }\n\n /** Whether the tooltip is being displayed. */\n isVisible(): boolean {\n return this._isVisible;\n }\n\n ngOnDestroy() {\n this._cancelPendingAnimations();\n this._onHide.complete();\n this._triggerElement = null;\n }\n\n /**\n * Interactions on the HTML body should close the tooltip immediately as defined in the\n * material design spec.\n * https://material.io/design/components/tooltips.html#behavior\n */\n _handleBodyInteraction(): void {\n if (this._closeOnInteraction) {\n this.hide(0);\n }\n }\n\n /**\n * Marks that the tooltip needs to be checked in the next change detection run.\n * Mainly used for rendering the initial text before positioning a tooltip, which\n * can be problematic in components with OnPush change detection.\n */\n _markForCheck(): void {\n this._changeDetectorRef.markForCheck();\n }\n\n @HostListener(\"mouseleave\", [\"$event\"])\n _handleMouseLeave({relatedTarget}: MouseEvent) {\n if (!relatedTarget || !this._triggerElement.contains(relatedTarget as Node)) {\n if (this.isVisible()) {\n this.hide(this._mouseLeaveHideDelay);\n } else {\n this._finalizeAnimation(false);\n }\n }\n }\n\n /**\n * Callback for when the timeout in this.show() gets completed.\n * This method is only needed by the mdc-tooltip, and so it is only implemented\n * in the mdc-tooltip, not here.\n */\n protected _onShow(): void {}\n\n /** Cancels any pending animation sequences. */\n _cancelPendingAnimations() {\n clearTimeout(this._showTimeoutId);\n clearTimeout(this._hideTimeoutId);\n this._showTimeoutId = this._hideTimeoutId = undefined;\n }\n\n /** Handles the cleanup after an animation has finished. */\n private _finalizeAnimation(toVisible: boolean) {\n if (toVisible) {\n this._closeOnInteraction = true;\n } else if (!this.isVisible()) {\n this._onHide.next();\n }\n }\n\n /** Toggles the visibility of the tooltip element. */\n private _toggleVisibility(isVisible: boolean) {\n // We set the classes directly here ourselves so that toggling the tooltip state\n // isn't bound by change detection. This allows us to hide it even if the\n // view ref has been detached from the CD tree.\n this._isVisible = isVisible;\n\n if (isVisible) {\n this._onShow();\n }\n }\n}\n","import { Injectable, OnDestroy } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, NavigationEnd, Router } from \"@angular/router\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationItem } from \"./navigation.types\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceNavigationService implements OnDestroy {\n private _onNavigationChanged = new BehaviorSubject<any>(null);\n private _onNavigationRegistered = new BehaviorSubject<any>(null);\n private _onNavigationUnregistered = new BehaviorSubject<any>(null);\n private _defaultNavigationKey: string;\n private _currentNavigationKey: string;\n private _componentRegistry: Map<string, any> = new Map<string, any>();\n private _navigationStore: Map<string, NiceNavigationItem[]> = new Map<string, any>();\n\n protected _unsubscribeAll: Subject<any>;\n\n /**\n * Constructor\n */\n constructor(private router: Router) {\n this._unsubscribeAll = new Subject();\n this.listenOnRouteChange();\n }\n\n public get onNavigationChanged(): Observable<any> {\n return this._onNavigationChanged.asObservable();\n }\n\n public get onNavigationRegistered(): Observable<any> {\n return this._onNavigationRegistered.asObservable();\n }\n\n public get onNavigationUnregistered(): Observable<any> {\n return this._onNavigationUnregistered.asObservable();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n public ngOnDestroy(): void {\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n /**\n * Register navigation component\n */\n public registerComponent(name: string, component: any): void {\n this._componentRegistry.set(name, component);\n }\n\n /**\n * Deregister navigation component\n */\n public deregisterComponent(name: string): void {\n this._componentRegistry.delete(name);\n }\n\n /**\n * Get navigation component from the registry\n */\n public getComponent(name: string): any {\n return this._componentRegistry.get(name);\n }\n\n /**\n * Store the given navigation with the given key\n */\n public storeNavigation(key: string, navigation: NiceNavigationItem[], isDefault = false): void {\n // Add to the store\n this._navigationStore.set(key, navigation);\n\n // Notify the subject\n this._onNavigationRegistered.next([key, navigation, key === this._currentNavigationKey]);\n\n if (isDefault) {\n this._defaultNavigationKey = key;\n }\n }\n\n /**\n * Get navigation from storage by key\n */\n public getNavigation(key: string): NiceNavigationItem[] {\n return this._navigationStore.get(key) ?? [];\n }\n\n /**\n * Delete the navigation from the storage\n */\n public deleteNavigation(key: string): void {\n // Check if the navigation exists\n if (!this._navigationStore.has(key)) {\n console.warn(`Navigation with the key '${key}' does not exist in the store.`);\n }\n\n // Delete from the storage\n this._navigationStore.delete(key);\n\n // Notify the subject\n this._onNavigationUnregistered.next(key);\n }\n\n /**\n * Utility function that returns a flattened\n * version of the given navigation array\n */\n public getFlatNavigation(navigation: NiceNavigationItem[], flatNavigation: NiceNavigationItem[] = []): NiceNavigationItem[] {\n for (const item of navigation) {\n if (item.type === \"basic\") {\n flatNavigation.push(item);\n continue;\n }\n\n if (item.type === \"aside\" || item.type === \"collapsable\" || item.type === \"group\") {\n if (item.children) {\n this.getFlatNavigation(item.children, flatNavigation);\n }\n }\n }\n\n return flatNavigation;\n }\n\n /**\n * Utility function that returns the item\n * with the given id from given navigation\n */\n public getItem(id: string, navigation: NiceNavigationItem[]): NiceNavigationItem | null {\n for (const item of navigation) {\n if (item.id === id) {\n return item;\n }\n\n if (item.children) {\n const childItem = this.getItem(id, item.children);\n\n if (childItem) {\n return childItem;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Utility function that returns the item's parent\n * with the given id from given navigation\n */\n public getItemParent(\n id: string,\n navigation: NiceNavigationItem[],\n parent: NiceNavigationItem[] | NiceNavigationItem\n ): NiceNavigationItem[] | NiceNavigationItem | null {\n for (const item of navigation) {\n if (item.id === id) {\n return parent;\n }\n\n if (item.children) {\n const childItem = this.getItemParent(id, item.children, item);\n\n if (childItem) {\n return childItem;\n }\n }\n }\n\n return null;\n }\n\n public getCurrentNavigation(): NiceNavigationItem[] {\n if (!this._currentNavigationKey) {\n console.warn(`The current navigation is not set.`);\n return;\n }\n\n return this.getNavigation(this._currentNavigationKey);\n }\n\n public setCurrentNavigation(key: string): void {\n // Check if the sidebar exists\n if (!this._navigationStore.has(key)) {\n console.warn(`Navigation with the key '${key}' does not exist in the store.`);\n }\n\n if (this._currentNavigationKey === key) {\n return;\n }\n\n // Set the current adminNavigation key\n this._currentNavigationKey = key;\n\n // Notify the subject\n this._onNavigationChanged.next(key);\n }\n\n private listenOnRouteChange(): void {\n this.router.events.pipe(\n takeUntil(this._unsubscribeAll),\n filter((e) => e instanceof NavigationEnd)\n ).subscribe(() => {\n const route = this.lastChild(this.router.routerState.snapshot.root);\n if (route.data.navigationKey) {\n this.setCurrentNavigation(route.data.navigationKey);\n } else if (this._defaultNavigationKey) {\n this.setCurrentNavigation(this._defaultNavigationKey);\n }\n });\n }\n\n private lastChild(route: ActivatedRouteSnapshot): ActivatedRouteSnapshot {\n if (route.firstChild) {\n return this.lastChild(route.firstChild);\n } else {\n return route;\n }\n }\n}\n","import { ChangeDetectorRef, Component, Directive, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from \"@angular/core\";\nimport { distinctUntilChanged, ReplaySubject, startWith, Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { NiceUtilsService } from \"../../providers\";\nimport { NiceNavigationService } from \"./navigation.service\";\nimport { NiceNavigationItem } from \"./navigation.types\";\n\n@Component({\n template: ``\n})\nexport class NiceNavigationComponent implements OnInit, OnDestroy, OnChanges {\n protected _navigation: NiceNavigationItem[];\n protected _unsubscribeAll: Subject<any>;\n\n public animateNextNavChange = false;\n public onRefreshed = new ReplaySubject<boolean>(1);\n public name: string;\n\n constructor(\n protected _changeDetectorRef: ChangeDetectorRef,\n protected _niceNavigationService: NiceNavigationService,\n protected _niceUtilsService: NiceUtilsService\n ) {\n this._unsubscribeAll = new Subject();\n }\n\n public ngOnInit(): void {\n // Make sure the name input is not an empty string\n if (this.name === \"\") {\n this.name = this._niceUtilsService.randomId();\n }\n\n // Register the navigation component\n this._niceNavigationService.registerComponent(this.name, this);\n\n this._niceNavigationService.onNavigationChanged.pipe(\n distinctUntilChanged(),\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n this.animateNextNavChange = !!this._navigation?.length;\n this._navigation = this._niceNavigationService.getCurrentNavigation();\n this._changeDetectorRef.markForCheck();\n });\n\n this._niceNavigationService.onNavigationRegistered.pipe(\n filter((x) => !!x),\n distinctUntilChanged(),\n takeUntil(this._unsubscribeAll)\n ).subscribe(([_, __, isActive]) => {\n if (!isActive) {\n return;\n }\n\n this.animateNextNavChange = !!this._navigation?.length;\n this._navigation = this._niceNavigationService.getCurrentNavigation();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n // Deregister the navigation component from the registry\n this._niceNavigationService.deregisterComponent(this.name);\n\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n // Navigation\n if (\"navigation\" in changes) {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Refresh the component to apply the changes\n */\n public refresh(): void {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n\n // Execute the observable\n this.onRefreshed.next(true);\n }\n\n /**\n * Track by function for ngFor loops\n */\n public trackByFn(index: number, item: any): any {\n return item.id || index;\n }\n}\n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-horizontal-navigation-basic-item\",\n templateUrl: \"./basic.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceHorizontalNavigationBasicItemComponent implements OnInit, OnDestroy {\n private _niceHorizontalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceHorizontalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceHorizontalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Item wrapper -->\n<div\n class=\"nice-horizontal-navigation-item-wrapper\"\n [class.nice-horizontal-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n>\n <!-- Item with an internal link -->\n <div\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\"\n [ngClass]=\"{ 'nice-horizontal-navigation-item-active-forced': item.active }\"\n [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'nice-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"{ exact: item.exactMatch || false }\"\n [queryParams]=\"item?.queryParams\"\n [state]=\"item?.state\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item with an external link -->\n <a\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"item.link && item.externalLink && !item.function && !item.disabled\"\n [href]=\"item.link\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with a function -->\n <div\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"!item.link && item.function && !item.disabled\"\n [ngClass]=\"{ 'nice-horizontal-navigation-item-active-forced': item.active }\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item with an internal link and function -->\n <div\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"item.link && !item.externalLink && item.function && !item.disabled\"\n [ngClass]=\"{ 'nice-horizontal-navigation-item-active-forced': item.active }\"\n [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'nice-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"{ exact: item.exactMatch || false }\"\n [queryParams]=\"item?.queryParams\"\n [state]=\"item?.state\"\n (click)=\"item.function(item)\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item with an external link and function -->\n <a\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"item.link && item.externalLink && item.function && !item.disabled\"\n [href]=\"item.link\"\n (click)=\"item.function(item)\"\n mat-menu-item\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with a no link and no function -->\n <div\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"!item.link && !item.function && !item.disabled\"\n [ngClass]=\"{'nice-horizontal-navigation-item-active-forced': item.active}\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item is disabled -->\n <div\n class=\"nice-horizontal-navigation-item nice-horizontal-navigation-item-disabled\"\n *ngIf=\"item.disabled\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n <!-- Icon -->\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <span class=\"nice-vertical-navigation-item-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></span>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType === 'svg'\"\n ></mat-icon>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-horizontal-navigation-item-title-wrapper\">\n <div class=\"nice-horizontal-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n </div>\n <div\n class=\"nice-horizontal-navigation-item-subtitle text-hint\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-horizontal-navigation-item-badge\"\n *ngIf=\"item.badge\"\n >\n <div\n class=\"nice-horizontal-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\">\n {{ item.badge.title | translate }}\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-horizontal-navigation-divider-item\",\n templateUrl: \"./divider.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceHorizontalNavigationDividerItemComponent implements OnInit, OnDestroy {\n private _niceHorizontalNavigationComponent;\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceHorizontalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceHorizontalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Divider -->\n<div\n class=\"nice-horizontal-navigation-item-wrapper divider\"\n [ngClass]=\"item.classes?.wrapper\"\n></div>\n","import { Injector, Pipe, PipeTransform } from \"@angular/core\";\nimport { Observable, of } from \"rxjs\";\nimport { NiceNavigationItem } from \"../navigation.types\";\nimport { NavigationHideItemResolver } from \"../providers/hide-item.resolver\";\n\n@Pipe({ name: \"niceShouldHide\" })\nexport class NiceShouldHidePipe implements PipeTransform {\n constructor(private injector: Injector) {}\n\n public transform(value: NiceNavigationItem): Observable<boolean> {\n if (!value.hidden) {\n return of(false);\n }\n\n if (typeof value === \"boolean\") {\n return of(true);\n }\n\n if (typeof value.hidden !== \"function\") {\n return of(false);\n }\n\n const resolver = this.injector.get(value.hidden, null) as NavigationHideItemResolver;\n if (!resolver) {\n return of((value.hidden as (item: NiceNavigationItem) => boolean)(value));\n }\n\n return resolver.shouldHide(value);\n }\n}\n","import { BooleanInput } from \"@angular/cdk/coercion\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from \"@angular/core\";\nimport { MatMenu } from \"@angular/material/menu\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-horizontal-navigation-branch-item\",\n templateUrl: \"./branch.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceHorizontalNavigationBranchItemComponent implements OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_child: BooleanInput;\n\n private _niceHorizontalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public child = false;\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n @ViewChild(\"matMenu\", { static: true })\n public matMenu: MatMenu;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceHorizontalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceHorizontalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Trigger the change detection\n */\n public triggerChangeDetection(): void {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n }\n}\n","<div\n *ngIf=\"!child\"\n [ngClass]=\"{\n 'nice-horizontal-navigation-menu-active': trigger.menuOpen,\n 'nice-horizontal-navigation-menu-active-forced': item.active\n }\"\n [matMenuTriggerFor]=\"matMenu\"\n (onMenuOpen)=\"triggerChangeDetection()\"\n (onMenuClose)=\"triggerChangeDetection()\"\n #trigger=\"matMenuTrigger\"\n>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n</div>\n\n<mat-menu\n class=\"nice-horizontal-navigation-menu-panel\"\n [overlapTrigger]=\"false\"\n #matMenu=\"matMenu\"\n>\n <ng-container *ngFor=\"let item of item.children\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"!(item | niceShouldHide | async)\">\n <!-- Basic -->\n <div\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'basic'\"\n [disabled]=\"item.disabled\"\n mat-menu-item\n >\n <nice-horizontal-navigation-basic-item\n [item]=\"item\"\n [name]=\"name\"\n ></nice-horizontal-navigation-basic-item>\n </div>\n\n <!-- Branch: aside, collapsable, group -->\n <div\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'aside' || item.type === 'collapsable' || item.type === 'group'\"\n [disabled]=\"item.disabled\"\n [matMenuTriggerFor]=\"branch.matMenu\"\n mat-menu-item\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <nice-horizontal-navigation-branch-item\n [child]=\"true\"\n [item]=\"item\"\n [name]=\"name\"\n #branch\n ></nice-horizontal-navigation-branch-item>\n </div>\n\n <!-- Divider -->\n <div\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'divider'\"\n mat-menu-item\n >\n <nice-horizontal-navigation-divider-item\n [item]=\"item\"\n [name]=\"name\"\n ></nice-horizontal-navigation-divider-item>\n </div>\n </ng-container>\n </ng-container>\n</mat-menu>\n\n<!-- Item template -->\n<ng-template\n let-item\n #itemTemplate\n>\n <div\n class=\"nice-horizontal-navigation-item-wrapper\"\n [class.nice-horizontal-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n >\n <div\n class=\"nice-horizontal-navigation-item\"\n [ngClass]=\"{\n 'nice-horizontal-navigation-item-disabled': item.disabled,\n 'nice-horizontal-navigation-item-active-forced': item.active\n }\">\n\n <!-- Icon -->\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <span class=\"nice-vertical-navigation-item-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></span>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType === 'svg'\"\n ></mat-icon>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-horizontal-navigation-item-title-wrapper\">\n <div class=\"nice-horizontal-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n </div>\n <div\n class=\"nice-horizontal-navigation-item-subtitle text-hint\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-horizontal-navigation-item-badge\"\n *ngIf=\"item.badge\">\n <div\n class=\"nice-horizontal-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\"\n >\n {{ item.badge.title | translate }}\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-horizontal-navigation-spacer-item\",\n templateUrl: \"./spacer.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceHorizontalNavigationSpacerItemComponent implements OnInit, OnDestroy {\n private _niceHorizontalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceHorizontalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceHorizontalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Spacer -->\n<div\n class=\"nice-horizontal-navigation-item-wrapper\"\n [ngClass]=\"item.classes?.wrapper\"\n></div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation } from \"@angular/core\";\nimport { niceAnimations } from \"../../../animations\";\nimport { NiceUtilsService } from \"../../../providers/utils\";\nimport { NiceNavigationComponent } from \"../navigation.component\";\nimport { NiceNavigationService } from \"../navigation.service\";\nimport { NiceNavigationItem } from \"../navigation.types\";\n\n@Component({\n selector: \"nice-horizontal-navigation\",\n templateUrl: \"./horizontal.component.html\",\n animations: niceAnimations,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: \"niceHorizontalNavigation\"\n})\nexport class NiceHorizontalNavigationComponent extends NiceNavigationComponent {\n @Input()\n public name: string = this._niceUtilsService.randomId();\n\n @Input()\n public set navigation(navigation: NiceNavigationItem[]) {\n this._navigation = navigation;\n this._changeDetectorRef.markForCheck();\n }\n public get navigation(): NiceNavigationItem[] {\n return this._navigation;\n }\n\n /**\n * Constructor\n */\n constructor(\n _changeDetectorRef: ChangeDetectorRef,\n _niceNavigationService: NiceNavigationService,\n _niceUtilsService: NiceUtilsService\n ) {\n super(_changeDetectorRef, _niceNavigationService, _niceUtilsService);\n }\n}\n","<div class=\"nice-horizontal-navigation-wrapper\">\n <ng-container *ngFor=\"let item of navigation\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"!(item | niceShouldHide | async)\">\n <!-- Basic -->\n <nice-horizontal-navigation-basic-item\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'basic'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-horizontal-navigation-basic-item>\n\n <!-- Branch: aside, collapsable, group -->\n <nice-horizontal-navigation-branch-item\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'aside' || item.type === 'collapsable' || item.type === 'group'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-horizontal-navigation-branch-item>\n\n <!-- Spacer -->\n <nice-horizontal-navigation-spacer-item\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'spacer'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-horizontal-navigation-spacer-item>\n </ng-container>\n </ng-container>\n</div>\n","export class ScrollbarGeometry {\n public x: number;\n public y: number;\n\n public w: number;\n public h: number;\n\n constructor(x: number, y: number, w: number, h: number) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n}\n\nexport class ScrollbarPosition {\n public x: number | \"start\" | \"end\";\n public y: number | \"start\" | \"end\";\n\n constructor(x: number | \"start\" | \"end\", y: number | \"start\" | \"end\") {\n this.x = x;\n this.y = y;\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { Directive, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { ScrollbarGeometry, ScrollbarPosition } from \"./scrollbar.types\";\nimport { merge } from \"lodash-es\";\nimport PerfectScrollbar from \"perfect-scrollbar\";\nimport { fromEvent, Subject } from \"rxjs\";\nimport { debounceTime, takeUntil } from \"rxjs/operators\";\n\n/**\n * Wrapper directive for the Perfect Scrollbar: https://github.com/mdbootstrap/perfect-scrollbar\n */\n@Directive({\n selector: \"[niceScrollbar]\",\n exportAs: \"niceScrollbar\"\n})\nexport class NiceScrollbarDirective implements OnChanges, OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_niceScrollbar: BooleanInput;\n\n private _animation: number;\n private _options: PerfectScrollbar.Options;\n private _ps: PerfectScrollbar;\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n @Input()\n public niceScrollbar = true;\n\n @Input()\n public niceScrollbarOptions: PerfectScrollbar.Options;\n\n /**\n * Constructor\n */\n constructor(\n private _elementRef: ElementRef,\n private _platform: Platform,\n private _router: Router\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Getter for _elementRef\n */\n public get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n /**\n * Getter for _ps\n */\n public get ps(): PerfectScrollbar | null {\n return this._ps;\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Enabled\n if (\"niceScrollbar\" in changes) {\n // Interpret empty string as 'true'\n this.niceScrollbar = coerceBooleanProperty(changes.niceScrollbar.currentValue);\n\n // If enabled, init the directive\n if (this.niceScrollbar) {\n this._init();\n }\n // Otherwise destroy it\n else {\n this._destroy();\n }\n }\n\n // Scrollbar options\n if (\"niceScrollbarOptions\" in changes) {\n // Merge the options\n this._options = merge({}, this._options, changes.niceScrollbarOptions.currentValue);\n\n // Return if not initialized\n if (!this._ps) {\n return;\n }\n\n // Destroy and re-init the PerfectScrollbar to update its options\n setTimeout(() => {\n this._destroy();\n });\n\n setTimeout(() => {\n this._init();\n });\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Subscribe to window resize event\n fromEvent(window, \"resize\")\n .pipe(\n takeUntil(this._unsubscribeAll),\n debounceTime(150)\n )\n .subscribe(() => {\n\n // Update the PerfectScrollbar\n this.update();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n this._destroy();\n\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Is enabled\n */\n public isEnabled(): boolean {\n return this.niceScrollbar;\n }\n\n /**\n * Update the scrollbar\n */\n public update(): void {\n // Return if not initialized\n if (!this._ps) {\n return;\n }\n\n // Update the PerfectScrollbar\n this._ps.update();\n }\n\n /**\n * Destroy the scrollbar\n */\n public destroy(): void {\n this.ngOnDestroy();\n }\n\n /**\n * Returns the geometry of the scrollable element\n */\n public geometry(prefix: string = \"scroll\"): ScrollbarGeometry {\n return new ScrollbarGeometry(\n this._elementRef.nativeElement[prefix + \"Left\"],\n this._elementRef.nativeElement[prefix + \"Top\"],\n this._elementRef.nativeElement[prefix + \"Width\"],\n this._elementRef.nativeElement[prefix + \"Height\"]);\n }\n\n /**\n * Returns the position of the scrollable element\n */\n public position(absolute: boolean = false): ScrollbarPosition {\n let scrollbarPosition;\n\n if (!absolute && this._ps) {\n scrollbarPosition = new ScrollbarPosition(\n this._ps.reach.x || 0,\n this._ps.reach.y || 0\n );\n } else {\n scrollbarPosition = new ScrollbarPosition(\n this._elementRef.nativeElement.scrollLeft,\n this._elementRef.nativeElement.scrollTop\n );\n }\n\n return scrollbarPosition;\n }\n\n /**\n * Scroll to\n */\n public scrollTo(x: number, y?: number, speed?: number): void {\n if (y == null && speed == null) {\n this.animateScrolling(\"scrollTop\", x, speed);\n } else {\n if (x != null) {\n this.animateScrolling(\"scrollLeft\", x, speed);\n }\n\n if (y != null) {\n this.animateScrolling(\"scrollTop\", y, speed);\n }\n }\n }\n\n /**\n * Scroll to X\n */\n public scrollToX(x: number, speed?: number): void {\n this.animateScrolling(\"scrollLeft\", x, speed);\n }\n\n /**\n * Scroll to Y\n */\n public scrollToY(y: number, speed?: number): void {\n this.animateScrolling(\"scrollTop\", y, speed);\n }\n\n /**\n * Scroll to top\n */\n public scrollToTop(offset: number = 0, speed?: number): void {\n this.animateScrolling(\"scrollTop\", offset, speed);\n }\n\n /**\n * Scroll to bottom\n */\n public scrollToBottom(offset: number = 0, speed?: number): void {\n const top = this._elementRef.nativeElement.scrollHeight - this._elementRef.nativeElement.clientHeight;\n this.animateScrolling(\"scrollTop\", top - offset, speed);\n }\n\n /**\n * Scroll to left\n */\n public scrollToLeft(offset: number = 0, speed?: number): void {\n this.animateScrolling(\"scrollLeft\", offset, speed);\n }\n\n /**\n * Scroll to right\n */\n public scrollToRight(offset: number = 0, speed?: number): void {\n const left = this._elementRef.nativeElement.scrollWidth - this._elementRef.nativeElement.clientWidth;\n this.animateScrolling(\"scrollLeft\", left - offset, speed);\n }\n\n /**\n * Scroll to element\n */\n public scrollToElement(qs: string, offset: number = 0, ignoreVisible: boolean = false, speed?: number): void {\n const element = this._elementRef.nativeElement.querySelector(qs);\n\n if (!element) {\n return;\n }\n\n const elementPos = element.getBoundingClientRect();\n const scrollerPos = this._elementRef.nativeElement.getBoundingClientRect();\n\n if (this._elementRef.nativeElement.classList.contains(\"ps--active-x\")) {\n if (ignoreVisible && elementPos.right <= (scrollerPos.right - Math.abs(offset))) {\n return;\n }\n\n const currentPos = this._elementRef.nativeElement.scrollLeft;\n const position = elementPos.left - scrollerPos.left + currentPos;\n\n this.animateScrolling(\"scrollLeft\", position + offset, speed);\n }\n\n if (this._elementRef.nativeElement.classList.contains(\"ps--active-y\")) {\n if (ignoreVisible && elementPos.bottom <= (scrollerPos.bottom - Math.abs(offset))) {\n return;\n }\n\n const currentPos = this._elementRef.nativeElement.scrollTop;\n const position = elementPos.top - scrollerPos.top + currentPos;\n\n this.animateScrolling(\"scrollTop\", position + offset, speed);\n }\n }\n\n /**\n * Animate scrolling\n */\n public animateScrolling(target: string, value: number, speed?: number): void {\n if (this._animation) {\n window.cancelAnimationFrame(this._animation);\n this._animation = null;\n }\n\n if (!speed || typeof window === \"undefined\") {\n this._elementRef.nativeElement[target] = value;\n } else if (value !== this._elementRef.nativeElement[target]) {\n let newValue = 0;\n let scrollCount = 0;\n\n let oldTimestamp = performance.now();\n let oldValue = this._elementRef.nativeElement[target];\n\n const cosParameter = (oldValue - value) / 2;\n\n const step = (newTimestamp: number) => {\n scrollCount += Math.PI / (speed / (newTimestamp - oldTimestamp));\n newValue = Math.round(value + cosParameter + cosParameter * Math.cos(scrollCount));\n\n // Only continue animation if scroll position has not changed\n if (this._elementRef.nativeElement[target] === oldValue) {\n if (scrollCount >= Math.PI) {\n this.animateScrolling(target, value, 0);\n } else {\n this._elementRef.nativeElement[target] = newValue;\n\n // On a zoomed out page the resulting offset may differ\n oldValue = this._elementRef.nativeElement[target];\n oldTimestamp = newTimestamp;\n\n this._animation = window.requestAnimationFrame(step);\n }\n }\n };\n\n window.requestAnimationFrame(step);\n }\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Initialize\n */\n private _init(): void {\n // Return if already initialized\n if (this._ps) {\n return;\n }\n\n // Return if on mobile or not on browser\n if (this._platform.ANDROID || this._platform.IOS || !this._platform.isBrowser) {\n this.niceScrollbar = false;\n return;\n }\n\n // Initialize the PerfectScrollbar\n this._ps = new PerfectScrollbar(this._elementRef.nativeElement, {...this._options});\n }\n\n /**\n * Destroy\n */\n private _destroy(): void {\n // Return if not initialized\n if (!this._ps) {\n return;\n }\n\n // Destroy the PerfectScrollbar\n this._ps.destroy();\n\n // Clean up\n this._ps = null;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceScrollbarDirective } from \"./scrollbar.directive\";\n\n@NgModule({\n declarations: [\n NiceScrollbarDirective\n ],\n exports: [\n NiceScrollbarDirective\n ]\n})\nexport class NiceScrollbarModule {}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\n\n@Injectable()\nexport class NiceNavigationHintService {\n public hasActiveHint$ = new BehaviorSubject(false);\n\n public get hasActiveHint(): boolean {\n return this.hasActiveHint$.value;\n }\n\n public setActiveHint(isActive: boolean): void {\n this.hasActiveHint$.next(isActive);\n }\n}\n","import { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { AfterViewInit, Directive, ElementRef, Input, NgZone, OnDestroy, ViewContainerRef } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { _HintComponentBase } from \"../components/hint-component-base\";\nimport { NiceNavigationItem } from \"../navigation.types\";\nimport { NiceNavigationHintService } from \"../providers/hint.service\";\n\n@Directive({ selector: \"[niceShowHint]\" })\nexport class NiceShowHintDirective<T extends _HintComponentBase> implements AfterViewInit, OnDestroy {\n @Input()\n public shouldShow = false;\n\n @Input()\n public item: NiceNavigationItem;\n\n private _pointerExitEventsInitialized = false;\n private _portal: ComponentPortal<any>;\n private _hintInstance: T;\n private _overlayRef: OverlayRef;\n\n private readonly _passiveListeners: (readonly [string, EventListenerOrEventListenerObject])[] = [];\n private readonly unsubscribeAll$ = new Subject<void>();\n\n constructor(\n private _overlay: Overlay,\n private _elementRef: ElementRef<HTMLElement>,\n private _viewContainerRef: ViewContainerRef,\n private _ngZone: NgZone,\n private _platform: Platform,\n private _focusMonitor: FocusMonitor,\n private _hintService: NiceNavigationHintService\n ) {}\n\n public ngAfterViewInit(): void {\n this._setupPointerEnterEventsIfNeeded();\n\n this._focusMonitor\n .monitor(this._elementRef)\n .pipe(takeUntil(this.unsubscribeAll$))\n .subscribe(origin => {\n // Note that the focus monitor runs outside the Angular zone.\n if (!origin) {\n this._ngZone.run(() => this.hide());\n } else if (origin === \"keyboard\") {\n this._ngZone.run(() => this.show());\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n public show(): void {\n if (!this.shouldShow || !this.item.hint || this._isHintVisible()) {\n return;\n }\n\n const overlayRef = this._createOverlay();\n this._portal = this._portal || new ComponentPortal<any>(this.item.hint.component);\n this._detach();\n this._hintInstance = overlayRef.attach(this._portal).instance;\n\n this._hintInstance._triggerElement = this._elementRef.nativeElement;\n this._hintInstance\n .afterHidden()\n .pipe(takeUntil(this.unsubscribeAll$))\n .subscribe(() => this._detach());\n\n this._hintService.setActiveHint(true);\n }\n\n public hide(): void {\n const instance = this._hintInstance;\n\n if (instance) {\n if (instance.isVisible()) {\n instance.hide(0);\n } else {\n instance._cancelPendingAnimations();\n this._detach();\n }\n }\n }\n\n private _createOverlay(): OverlayRef {\n if (this._overlayRef) {\n const existingStrategy = this._overlayRef.getConfig()\n .positionStrategy as FlexibleConnectedPositionStrategy;\n\n // @ts-ignore\n if (!origin && existingStrategy._origin instanceof ElementRef) {\n return this._overlayRef;\n }\n\n this._detach();\n }\n\n // Create connected position strategy that listens for scroll events to reposition.\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .withPositions([\n {\n originX: \"center\",\n originY: \"bottom\",\n overlayX: \"start\",\n overlayY: \"top\",\n offsetY: 8\n }\n ])\n .withFlexibleDimensions(false);\n\n strategy.positionChanges.pipe(takeUntil(this.unsubscribeAll$)).subscribe(change => {\n if (this._hintInstance) {\n if (change.scrollableViewProperties.isOverlayClipped) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this._ngZone.run(() => this.hide());\n }\n }\n });\n\n this._overlayRef = this._overlay.create({\n positionStrategy: strategy\n });\n\n this._overlayRef\n .detachments()\n .pipe(takeUntil(this.unsubscribeAll$))\n .subscribe(() => this._detach());\n\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.unsubscribeAll$))\n .subscribe(() => this._hintInstance?._handleBodyInteraction());\n\n return this._overlayRef;\n }\n\n private _detach() {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n }\n\n this._hintInstance = null;\n this._hintService.setActiveHint(false);\n }\n\n private _isHintVisible(): boolean {\n return !!this._hintInstance;\n }\n\n private _setupPointerEnterEventsIfNeeded() {\n // Optimization: Defer hooking up events if there's no message or the tooltip is disabled.\n if (this._passiveListeners.length) {\n return;\n }\n\n // The mouse events shouldn't be bound on mobile devices, because they can prevent the\n // first tap from firing its click event or can cause the tooltip to open for clicks.\n if (this._platformSupportsMouseEvents()) {\n this._passiveListeners.push([\n \"mouseenter\",\n () => {\n this._setupPointerExitEventsIfNeeded();\n this.show();\n },\n ]);\n }\n\n this._addListeners(this._passiveListeners);\n }\n\n private _setupPointerExitEventsIfNeeded() {\n if (this._pointerExitEventsInitialized) {\n return;\n }\n this._pointerExitEventsInitialized = true;\n\n const exitListeners: (readonly [string, EventListenerOrEventListenerObject])[] = [];\n if (this._platformSupportsMouseEvents()) {\n exitListeners.push(\n [\n \"mouseleave\",\n event => {\n const newTarget = (event as MouseEvent).relatedTarget as Node | null;\n if (!newTarget || !this._overlayRef?.overlayElement.contains(newTarget)) {\n this.hide();\n }\n },\n ]\n );\n }\n\n this._addListeners(exitListeners);\n this._passiveListeners.push(...exitListeners);\n }\n\n private _platformSupportsMouseEvents() {\n return !this._platform.IOS && !this._platform.ANDROID;\n }\n\n private _addListeners(listeners: (readonly [string, EventListenerOrEventListenerObject])[]) {\n listeners.forEach(([event, listener]) => {\n this._elementRef.nativeElement.addEventListener(event, listener);\n });\n }\n}\n","import { Injector, Pipe, PipeTransform } from \"@angular/core\";\nimport { Observable, combineLatest, of } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { NiceNavigationItem } from \"../navigation.types\";\n\n@Pipe({ name: \"niceShouldShowHint\" })\nexport class NiceShouldShowHintPipe implements PipeTransform {\n constructor(private injector: Injector) {}\n\n public transform(value: NiceNavigationItem | NiceNavigationItem[]): Observable<boolean> {\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n return combineLatest(value.map(x => this.transformHint(x))).pipe(map(res => res.some(x => x)));\n }\n\n private transformHint(value: NiceNavigationItem): Observable<boolean> {\n if (!value.hint) {\n return of(false);\n }\n\n const resolver = this.injector.get(value.hint.resolver);\n if (!resolver) {\n return of(false);\n }\n\n return resolver.shouldShowHint();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { NiceUtilsService } from \"../../../../../providers/utils\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-basic-item\",\n templateUrl: \"./basic.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationBasicItemComponent implements OnInit, OnDestroy {\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n public itemActive$ = this._route.url.pipe(\n map(() => {\n const url = this._router.url.split(\"?\").shift();\n if (this.item.exactMatch === true) {\n return url === this.item.link;\n }\n return url.startsWith(this.item.link) && url.length >= this.item.link.length;\n })\n );\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService,\n private _niceUtilsService: NiceUtilsService,\n private _route: ActivatedRoute,\n private _router: Router\n ) {}\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Item wrapper -->\n<div\n class=\"nice-vertical-navigation-item-wrapper\"\n [class.nice-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n>\n\n <!-- Item with an internal link -->\n <a\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\"\n [ngClass]=\"{'nice-vertical-navigation-item-active-forced': item.active}\"\n [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'nice-vertical-navigation-item-active'\"\n [routerLinkActiveOptions]=\"{exact: item.exactMatch || false}\"\n [queryParams]=\"item?.queryParams\"\n [state]=\"item?.state\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with an external link -->\n <a\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"item.link && item.externalLink && !item.function && !item.disabled\"\n [href]=\"item.link\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with a function -->\n <div\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"!item.link && item.function && !item.disabled\"\n [ngClass]=\"{'nice-vertical-navigation-item-active-forced': item.active}\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item with an internal link and function -->\n <a\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"item.link && !item.externalLink && item.function && !item.disabled\"\n [ngClass]=\"{'nice-vertical-navigation-item-active-forced': item.active}\"\n [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'nice-vertical-navigation-item-active'\"\n [routerLinkActiveOptions]=\"{exact: item.exactMatch || false}\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with an external link and function -->\n <a\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"item.link && item.externalLink && item.function && !item.disabled\"\n [href]=\"item.link\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with a no link and no function -->\n <div\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"!item.link && !item.function && !item.disabled\"\n [ngClass]=\"{'nice-vertical-navigation-item-active-forced': item.active}\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item is disabled -->\n <div\n class=\"nice-vertical-navigation-item nice-vertical-navigation-item-disabled\"\n *ngIf=\"item.disabled\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n <ng-container *ngIf=\"{ showHint: item | niceShouldShowHint | async } as ctx\">\n <!-- Icon -->\n <div class=\"nice-vertical-navigation-item-icon-wrapper\">\n <ng-container *ngIf=\"itemActive$ | async; else notActive\">\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.activeIcon || item.icon }}\n </mat-icon>\n\n <i class=\"nice-vertical-navigation-item-icon fontawesome\" [ngClass]=\"item.activeIcon || item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></i>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.activeIcon || item.icon\"\n *ngIf=\"item.icon && item.iconType == 'svg'\"\n ></mat-icon>\n </ng-container>\n\n <ng-template #notActive>\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <i class=\"nice-vertical-navigation-item-icon fontawesome\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></i>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType == 'svg'\"\n ></mat-icon>\n </ng-template>\n\n <div *ngIf=\"ctx.showHint && item.icon\" class=\"nice-vertical-navigation-hint\"></div>\n </div>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-vertical-navigation-item-title-wrapper\">\n <div class=\"nice-vertical-navigation-item-title\" niceShowHint [shouldShow]=\"ctx.showHint\" [item]=\"item\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n\n <div *ngIf=\"ctx.showHint\" class=\"nice-vertical-navigation-hint\"></div>\n </div>\n <div\n class=\"nice-vertical-navigation-item-subtitle\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-vertical-navigation-item-badge\"\n *ngIf=\"item.badge\"\n >\n <div\n class=\"nice-vertical-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\"\n >\n {{ item.badge.title | translate }}\n </div>\n </div>\n </ng-container>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-divider-item\",\n templateUrl: \"./divider.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationDividerItemComponent implements OnInit, OnDestroy {\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {}\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Divider -->\n<div\n class=\"nice-vertical-navigation-item-wrapper divider\"\n [ngClass]=\"item.classes?.wrapper\"\n></div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-spacer-item\",\n templateUrl: \"./spacer.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationSpacerItemComponent implements OnInit, OnDestroy {\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Spacer -->\n<div\n class=\"nice-vertical-navigation-item-wrapper\"\n [ngClass]=\"item.classes?.wrapper\"\n></div>\n","import { BooleanInput } from \"@angular/cdk/coercion\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { BehaviorSubject, Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { niceAnimations } from \"../../../../../animations\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-collapsable-item\",\n templateUrl: \"./collapsable.component.html\",\n styles: [],\n animations: niceAnimations,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationCollapsableItemComponent implements OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_autoCollapse: BooleanInput;\n\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public autoCollapse: boolean;\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n public isCollapsed = true;\n public isExpanded = false;\n\n public hasChildActivated$ = new BehaviorSubject(false);\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _router: Router,\n private _niceNavigationService: NiceNavigationService\n ) {}\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component classes\n */\n @HostBinding(\"class\")\n public get classList(): any {\n return {\n \"nice-vertical-navigation-item-collapsed\": this.isCollapsed,\n \"nice-vertical-navigation-item-expanded\": this.isExpanded\n };\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // If the item has a children that has a matching url with the current url, expand...\n if (this._hasActiveChild(this.item, this._router.url)) {\n this.hasChildActivated$.next(true);\n this.expand();\n }\n // Otherwise...\n else {\n // If the autoCollapse is on, collapse...\n if (this.autoCollapse) {\n this.hasChildActivated$.next(false);\n this.collapse();\n }\n }\n\n // Listen for the onCollapsableItemCollapsed from the service\n this._niceVerticalNavigationComponent.onCollapsableItemCollapsed\n .pipe(takeUntil(this._unsubscribeAll))\n .subscribe((collapsedItem) => {\n\n // Check if the collapsed item is null\n if (collapsedItem === null) {\n return;\n }\n\n // Collapse if this is a children of the collapsed item\n if (this._isChildrenOf(collapsedItem, this.item)) {\n this.collapse();\n }\n });\n\n // Listen for the onCollapsableItemExpanded from the service if the autoCollapse is on\n if (this.autoCollapse) {\n this._niceVerticalNavigationComponent.onCollapsableItemExpanded\n .pipe(takeUntil(this._unsubscribeAll))\n .subscribe((expandedItem) => {\n\n // Check if the expanded item is null\n if (expandedItem === null) {\n return;\n }\n\n // Check if this is a parent of the expanded item\n if (this._isChildrenOf(this.item, expandedItem)) {\n return;\n }\n\n // Check if this has a children with a matching url with the current active url\n if (this._hasActiveChild(this.item, this._router.url)) {\n return;\n }\n\n // Check if this is the expanded item\n if (this.item === expandedItem) {\n return;\n }\n\n // If none of the above conditions are matched, collapse this item\n this.collapse();\n });\n }\n\n // Attach a listener to the NavigationEnd event\n this._router.events\n .pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n takeUntil(this._unsubscribeAll)\n )\n .subscribe((event: NavigationEnd) => {\n\n // If the item has a children that has a matching url with the current url, expand...\n if (this._hasActiveChild(this.item, event.urlAfterRedirects)) {\n this.hasChildActivated$.next(true);\n this.expand();\n }\n // Otherwise...\n else {\n this.hasChildActivated$.next(false);\n\n // If the autoCollapse is on, collapse...\n if (this.autoCollapse) {\n this.collapse();\n }\n }\n });\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Check if the given item has the given url\n * in one of its children\n */\n private _hasActiveChild(item: NiceNavigationItem, currentUrl: string): boolean {\n const children = item.children;\n\n if (!children) {\n return false;\n }\n\n for (const child of children) {\n if (child.children) {\n if (this._hasActiveChild(child, currentUrl)) {\n return true;\n }\n }\n\n // Check if the child has a link and is active\n if (child.link && this._router.isActive(child.link, child.exactMatch || false)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Check if this is a children\n * of the given item\n */\n private _isChildrenOf(parent: NiceNavigationItem, item: NiceNavigationItem): boolean {\n const children = parent.children;\n\n if (!children) {\n return false;\n }\n\n if (children.indexOf(item) > -1) {\n return true;\n }\n\n for (const child of children) {\n if (child.children) {\n if (this._isChildrenOf(child, item)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Collapse\n */\n public collapse(): void {\n // Return if the item is disabled\n if (this.item.disabled) {\n return;\n }\n\n // Return if the item is already collapsed\n if (this.isCollapsed) {\n return;\n }\n\n // Collapse it\n this.isCollapsed = true;\n this.isExpanded = !this.isCollapsed;\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n\n // Execute the observable\n this._niceVerticalNavigationComponent.onCollapsableItemCollapsed.next(this.item);\n }\n\n /**\n * Expand\n */\n public expand(): void {\n // Return if the item is disabled\n if (this.item.disabled) {\n return;\n }\n\n // Return if the item is already expanded\n if (!this.isCollapsed) {\n return;\n }\n\n // Expand it\n this.isCollapsed = false;\n this.isExpanded = !this.isCollapsed;\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n\n // Execute the observable\n this._niceVerticalNavigationComponent.onCollapsableItemExpanded.next(this.item);\n }\n\n /**\n * Toggle collapsable\n */\n public toggleCollapsable(): void {\n // Toggle collapse/expand\n if (this.isCollapsed) {\n this.expand();\n } else {\n this.collapse();\n }\n }\n\n /**\n * Track by function for ngFor loops\n */\n public trackByFn(index: number, item: any): any {\n return item.id || index;\n }\n}\n","<div\n class=\"nice-vertical-navigation-item-wrapper\"\n [class.nice-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n>\n <div\n class=\"nice-vertical-navigation-item\"\n [ngClass]=\"{ 'nice-vertical-navigation-item-disabled': item.disabled }\"\n [class.child-activated]=\"hasChildActivated$ | async\"\n (click)=\"toggleCollapsable()\"\n *ngIf=\"{ showHint: item.children ?? [] | niceShouldShowHint | async } as ctx\"\n >\n <!-- Icon -->\n <div class=\"nice-vertical-navigation-item-icon-wrapper\" style=\"position: relative\">\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <i class=\"nice-vertical-navigation-item-icon fontawesome\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></i>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType == 'svg'\"\n ></mat-icon>\n\n <div *ngIf=\"ctx.showHint && item.icon\" class=\"nice-vertical-navigation-hint\"></div>\n </div>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-vertical-navigation-item-title-wrapper\">\n <div class=\"nice-vertical-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n\n <div *ngIf=\"ctx.showHint && isCollapsed\" class=\"nice-vertical-navigation-hint\"></div>\n </div>\n <div\n class=\"nice-vertical-navigation-item-subtitle\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-vertical-navigation-item-badge\"\n *ngIf=\"item.badge\">\n\n <div\n class=\"nice-vertical-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\"\n >\n {{ item.badge.title | translate }}\n </div>\n </div>\n\n <!-- Arrow -->\n <mat-icon class=\"nice-vertical-navigation-item-arrow icon-size-4\">chevron_right</mat-icon>\n </div>\n</div>\n\n<div\n class=\"nice-vertical-navigation-item-children\"\n *ngIf=\"!isCollapsed\"\n @expandCollapse\n>\n <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"!(item | niceShouldHide | async)\">\n <!-- Basic -->\n <nice-vertical-navigation-basic-item\n *ngIf=\"item.type === 'basic'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-basic-item>\n\n <!-- Collapsable -->\n <nice-vertical-navigation-collapsable-item\n *ngIf=\"item.type === 'collapsable'\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-collapsable-item>\n\n <!-- Divider -->\n <nice-vertical-navigation-divider-item\n *ngIf=\"item.type === 'divider'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-divider-item>\n\n <!-- Group -->\n<!-- <nice-vertical-navigation-group-item\n *ngIf=\"item.type === 'group'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-group-item>-->\n\n <!-- Spacer -->\n <nice-vertical-navigation-spacer-item\n *ngIf=\"item.type === 'spacer'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-spacer-item>\n </ng-container>\n </ng-container>\n</div>\n","import { BooleanInput } from \"@angular/cdk/coercion\";\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-group-item\",\n templateUrl: \"./group.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationGroupItemComponent implements OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_autoCollapse: BooleanInput;\n\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public autoCollapse: boolean;\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Track by function for ngFor loops\n */\n public trackByFn(index: number, item: any): any {\n return item.id || index;\n }\n}\n","<!-- Item wrapper -->\n<div\n class=\"nice-vertical-navigation-item-wrapper\"\n [class.nice-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n>\n <div class=\"nice-vertical-navigation-item\">\n <!-- Icon -->\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <span class=\"nice-vertical-navigation-item-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></span>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType === 'svg'\"\n ></mat-icon>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-vertical-navigation-item-title-wrapper\" *ngIf=\"item.title || item.subtitle\">\n <div class=\"nice-vertical-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n </div>\n <div\n class=\"nice-vertical-navigation-item-subtitle\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-vertical-navigation-item-badge\"\n *ngIf=\"item.badge\"\n >\n <div\n class=\"nice-vertical-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\"\n >\n {{ item.badge.title | translate }}\n </div>\n </div>\n </div>\n</div>\n\n<ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"!(item | niceShouldHide | async)\">\n <!-- Basic -->\n <nice-vertical-navigation-basic-item\n *ngIf=\"item.type === 'basic'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-basic-item>\n\n <!-- Collapsable -->\n <nice-vertical-navigation-collapsable-item\n *ngIf=\"item.type === 'collapsable'\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-collapsable-item>\n\n <!-- Divider -->\n <nice-vertical-navigation-divider-item\n *ngIf=\"item.type === 'divider'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-divider-item>\n\n <!-- Group -->\n <nice-vertical-navigation-group-item\n *ngIf=\"item.type === 'group'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-group-item>\n\n <!-- Spacer -->\n <nice-vertical-navigation-spacer-item\n *ngIf=\"item.type === 'spacer'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-spacer-item>\n </ng-container>\n</ng-container>\n","import { BooleanInput } from \"@angular/cdk/coercion\";\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-aside-item\",\n templateUrl: \"./aside.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationAsideItemComponent implements OnChanges, OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_autoCollapse: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_skipChildren: BooleanInput;\n\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public activeItemId: string;\n\n @Input()\n public autoCollapse: boolean;\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n @Input()\n public skipChildren: boolean;\n\n public active = false;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _router: Router,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Active item id\n if (\"activeItemId\" in changes) {\n // Mark if active\n this._markIfActive(this._router.url);\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Mark if active\n this._markIfActive(this._router.url);\n\n // Attach a listener to the NavigationEnd event\n this._router.events\n .pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n takeUntil(this._unsubscribeAll)\n )\n .subscribe((event: NavigationEnd) => {\n\n // Mark if active\n this._markIfActive(event.urlAfterRedirects);\n });\n\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Check if the given item has the given url\n * in one of its children\n */\n private _hasActiveChild(item: NiceNavigationItem, currentUrl: string): boolean {\n const children = item.children;\n\n if (!children) {\n return false;\n }\n\n for (const child of children) {\n if (child.children) {\n if (this._hasActiveChild(child, currentUrl)) {\n return true;\n }\n }\n\n // Skip items other than 'basic'\n if (child.type !== \"basic\") {\n continue;\n }\n\n // Check if the child has a link and is active\n if (child.link && this._router.isActive(child.link, child.exactMatch || false)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Decide and mark if the item is active\n */\n private _markIfActive(currentUrl: string): void {\n // Check if the activeItemId is equals to this item id\n this.active = this.activeItemId === this.item.id;\n\n // If the aside has a children that is active,\n // always mark it as active\n if (this._hasActiveChild(this.item, currentUrl)) {\n this.active = true;\n }\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Track by function for ngFor loops\n */\n public trackByFn(index: number, item: any): any {\n return item.id || index;\n }\n}\n","<div\n class=\"nice-vertical-navigation-item-wrapper\"\n [class.nice-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n>\n <div\n class=\"nice-vertical-navigation-item\"\n [ngClass]=\"{\n 'nice-vertical-navigation-item-active': active,\n 'nice-vertical-navigation-item-disabled': item.disabled,\n 'nice-vertical-navigation-item-active-forced': item.active\n }\"\n >\n <!-- Icon -->\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <span class=\"nice-vertical-navigation-item-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></span>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType === 'svg'\"\n ></mat-icon>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-vertical-navigation-item-title-wrapper\">\n <div class=\"nice-vertical-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n </div>\n <div\n class=\"nice-vertical-navigation-item-subtitle\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-vertical-navigation-item-badge\"\n *ngIf=\"item.badge\"\n >\n <div\n class=\"nice-vertical-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\"\n >\n {{ item.badge.title | translate }}\n </div>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"!skipChildren\">\n <div class=\"nice-vertical-navigation-item-children\">\n <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n <!-- Basic -->\n <nice-vertical-navigation-basic-item\n *ngIf=\"item.type === 'basic'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-basic-item>\n\n <!-- Collapsable -->\n <nice-vertical-navigation-collapsable-item\n *ngIf=\"item.type === 'collapsable'\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-collapsable-item>\n\n <!-- Divider -->\n <nice-vertical-navigation-divider-item\n *ngIf=\"item.type === 'divider'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-divider-item>\n\n <!-- Group -->\n <nice-vertical-navigation-group-item\n *ngIf=\"item.type === 'group'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-group-item>\n\n <!-- Spacer -->\n <nice-vertical-navigation-spacer-item\n *ngIf=\"item.type === 'spacer'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-spacer-item>\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\n","import { animate, AnimationBuilder, AnimationPlayer, style } from \"@angular/animations\";\nimport { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport { ScrollStrategy, ScrollStrategyOptions } from \"@angular/cdk/overlay\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { merge, ReplaySubject, Subscription } from \"rxjs\";\nimport { delay, filter, takeUntil } from \"rxjs/operators\";\nimport { niceAnimations } from \"../../../animations\";\nimport { NiceScrollbarDirective } from \"../../../directives/scrollbar\";\nimport { NiceUtilsService } from \"../../../providers/utils\";\nimport { NiceNavigationComponent } from \"../navigation.component\";\nimport { NiceNavigationService } from \"../navigation.service\";\nimport {\n NiceNavigationItem,\n NiceVerticalNavigationAppearance,\n NiceVerticalNavigationMode,\n NiceVerticalNavigationPosition\n} from \"../navigation.types\";\nimport { NiceNavigationHintService } from \"../providers/hint.service\";\n\n@Component({\n selector: \"nice-vertical-navigation\",\n templateUrl: \"./vertical.component.html\",\n animations: niceAnimations,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: \"niceVerticalNavigation\"\n})\nexport class NiceVerticalNavigationComponent extends NiceNavigationComponent implements OnChanges, OnInit, AfterViewInit {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_inner: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_opened: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_transparentOverlay: BooleanInput;\n\n private _forceHovered = false;\n private _animationsEnabled = false;\n private _asideOverlay: HTMLElement;\n private readonly _handleAsideOverlayClick: any;\n private readonly _handleOverlayClick: any;\n private _overlay: HTMLElement;\n private _player: AnimationPlayer;\n private _scrollStrategy: ScrollStrategy = this._scrollStrategyOptions.block();\n private _niceScrollbarDirectives!: QueryList<NiceScrollbarDirective>;\n private _niceScrollbarDirectivesSubscription: Subscription;\n\n @Input()\n public name: string = this._niceUtilsService.randomId();\n\n @Input()\n public appearance: NiceVerticalNavigationAppearance = \"default\";\n\n @Input()\n public autoCollapse = true;\n\n @Input()\n public inner = false;\n\n @Input()\n public mode: NiceVerticalNavigationMode = \"side\";\n\n @Input()\n public opened = true;\n\n @Input()\n public hovered = false;\n\n @Input()\n public hasHint = false;\n\n @Input()\n public position: NiceVerticalNavigationPosition = \"left\";\n\n @Input()\n public transparentOverlay = false;\n\n @Output()\n public readonly appearanceChanged = new EventEmitter<NiceVerticalNavigationAppearance>();\n\n @Output()\n public readonly modeChanged = new EventEmitter<NiceVerticalNavigationMode>();\n\n @Output()\n public readonly openedChanged = new EventEmitter<boolean>();\n\n @Output()\n public readonly hoveredChanged = new EventEmitter<boolean>();\n\n @Output()\n public readonly positionChanged = new EventEmitter<NiceVerticalNavigationPosition>();\n\n @ViewChild(\"navigationContent\")\n private _navigationContentEl: ElementRef;\n\n @Input()\n public set navigation(navigation: NiceNavigationItem[]) {\n this._navigation = navigation;\n this._changeDetectorRef.markForCheck();\n }\n public get navigation(): NiceNavigationItem[] {\n return this._navigation;\n }\n\n public set forceHovered(forceHovered: boolean) {\n this._forceHovered = forceHovered;\n this.hoveredChanged.next((this.hovered || this._forceHovered) || this.hasHint);\n this._changeDetectorRef.markForCheck();\n }\n\n public activeAsideItemId: string | null = null;\n public onCollapsableItemCollapsed = new ReplaySubject<NiceNavigationItem>(1);\n public onCollapsableItemExpanded = new ReplaySubject<NiceNavigationItem>(1);\n\n /**\n * Constructor\n */\n constructor(\n _changeDetectorRef: ChangeDetectorRef,\n _niceNavigationService: NiceNavigationService,\n _niceUtilsService: NiceUtilsService,\n private _animationBuilder: AnimationBuilder,\n private _elementRef: ElementRef,\n private _renderer2: Renderer2,\n private _router: Router,\n private _scrollStrategyOptions: ScrollStrategyOptions,\n private _hintService: NiceNavigationHintService\n ) {\n super(_changeDetectorRef, _niceNavigationService, _niceUtilsService);\n\n this._handleAsideOverlayClick = () => {\n this.closeAside();\n };\n this._handleOverlayClick = () => {\n this.close();\n };\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component classes\n */\n @HostBinding(\"class\")\n public get classList(): any {\n return {\n \"nice-vertical-navigation-animations-enabled\": this._animationsEnabled,\n [`nice-vertical-navigation-appearance-${this.appearance}`]: true,\n \"nice-vertical-navigation-hover\": this.hovered || this._forceHovered,\n \"nice-vertical-navigation-inner\": this.inner,\n \"nice-vertical-navigation-mode-over\": this.mode === \"over\",\n \"nice-vertical-navigation-mode-side\": this.mode === \"side\",\n \"nice-vertical-navigation-opened\": this.opened,\n \"nice-vertical-navigation-position-left\": this.position === \"left\",\n \"nice-vertical-navigation-position-right\": this.position === \"right\",\n \"nice-vertical-navigation-has-hint\": this.hasHint\n };\n }\n\n /**\n * Host binding for component inline styles\n */\n @HostBinding(\"style\")\n public get styleList(): any {\n return {\n \"visibility\": this.opened ? \"visible\" : \"hidden\"\n };\n }\n\n /**\n * Setter for niceScrollbarDirectives\n */\n @ViewChildren(NiceScrollbarDirective)\n public set niceScrollbarDirectives(niceScrollbarDirectives: QueryList<NiceScrollbarDirective>) {\n // Store the directives\n this._niceScrollbarDirectives = niceScrollbarDirectives;\n\n // Return if there are no directives\n if (niceScrollbarDirectives.length === 0) {\n return;\n }\n\n // Unsubscribe the previous subscriptions\n if (this._niceScrollbarDirectivesSubscription) {\n this._niceScrollbarDirectivesSubscription.unsubscribe();\n }\n\n // Update the scrollbars on collapsable items' collapse/expand\n this._niceScrollbarDirectivesSubscription =\n merge(\n this.onCollapsableItemCollapsed,\n this.onCollapsableItemExpanded\n )\n .pipe(\n takeUntil(this._unsubscribeAll),\n delay(250)\n )\n .subscribe(() => {\n\n // Loop through the scrollbars and update them\n niceScrollbarDirectives.forEach((niceScrollbarDirective) => {\n niceScrollbarDirective.update();\n });\n });\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n *\n * @param changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n\n // Appearance\n if (\"appearance\" in changes) {\n // Execute the observable\n this.appearanceChanged.next(changes.appearance.currentValue);\n }\n\n // Inner\n if (\"inner\" in changes) {\n // Coerce the value to a boolean\n this.inner = coerceBooleanProperty(changes.inner.currentValue);\n }\n\n // Mode\n if (\"mode\" in changes) {\n // Get the previous and current values\n const currentMode = changes.mode.currentValue;\n const previousMode = changes.mode.previousValue;\n\n // Disable the animations\n this._disableAnimations();\n\n // If the mode changes: 'over -> side'\n if (previousMode === \"over\" && currentMode === \"side\") {\n // Hide the overlay\n this._hideOverlay();\n }\n\n // If the mode changes: 'side -> over'\n if (previousMode === \"side\" && currentMode === \"over\") {\n // Close the aside\n this.closeAside();\n\n // If the navigation is opened\n if (this.opened) {\n // Show the overlay\n this._showOverlay();\n }\n }\n\n // Execute the observable\n this.modeChanged.next(currentMode);\n\n // Enable the animations after a delay\n // The delay must be bigger than the current transition-duration\n // to make sure nothing will be animated while the mode changing\n setTimeout(() => {\n this._enableAnimations();\n }, 500);\n }\n\n // Opened\n if (\"opened\" in changes) {\n // Coerce the value to a boolean\n this.opened = coerceBooleanProperty(changes.opened.currentValue);\n\n // Open/close the navigation\n this._toggleOpened(this.opened);\n }\n\n // Position\n if (\"position\" in changes) {\n // Execute the observable\n this.positionChanged.next(changes.position.currentValue);\n }\n\n // Transparent overlay\n if (\"transparentOverlay\" in changes) {\n // Coerce the value to a boolean\n this.transparentOverlay = coerceBooleanProperty(changes.transparentOverlay.currentValue);\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n super.ngOnInit();\n\n // Make sure the name input is not an empty string\n if (this.name === \"\") {\n this.name = this._niceUtilsService.randomId();\n }\n\n // Subscribe to the 'NavigationEnd' event\n this._router.events\n .pipe(\n filter(event => event instanceof NavigationEnd),\n takeUntil(this._unsubscribeAll)\n )\n .subscribe(() => {\n // If the mode is 'over' and the navigation is opened...\n if (this.mode === \"over\" && this.opened) {\n // Close the navigation\n this.close();\n }\n\n // If the mode is 'side' and the aside is active...\n if (this.mode === \"side\" && this.activeAsideItemId) {\n // Close the aside\n this.closeAside();\n }\n });\n\n this._hintService.hasActiveHint$.pipe(takeUntil(this._unsubscribeAll)).subscribe(hasHint => {\n this.hasHint = hasHint;\n this.hoveredChanged.next((this.hovered || this._forceHovered) || this.hasHint);\n });\n }\n\n /**\n * After view init\n */\n public ngAfterViewInit(): void {\n setTimeout(() => {\n\n // Return if 'navigation content' element does not exist\n if (!this._navigationContentEl) {\n return;\n }\n\n // If 'navigation content' element doesn't have\n // perfect scrollbar activated on it...\n if (!this._navigationContentEl.nativeElement.classList.contains(\"ps\")) {\n // Find the active item\n const activeItem = this._navigationContentEl.nativeElement.querySelector(\".nice-vertical-navigation-item-active\");\n\n // If the active item exists, scroll it into view\n if (activeItem) {\n activeItem.scrollIntoView();\n }\n }\n // Otherwise\n else {\n // Go through all the scrollbar directives\n this._niceScrollbarDirectives.forEach((niceScrollbarDirective) => {\n\n // Skip if not enabled\n if (!niceScrollbarDirective.isEnabled()) {\n return;\n }\n\n // Scroll to the active element\n niceScrollbarDirective.scrollToElement(\".nice-vertical-navigation-item-active\", -120, true);\n });\n }\n });\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Open the navigation\n */\n public open(): void {\n // Return if the navigation is already open\n if (this.opened) {\n return;\n }\n\n // Set the opened\n this._toggleOpened(true);\n }\n\n /**\n * Close the navigation\n */\n public close(): void {\n // Return if the navigation is already closed\n if (!this.opened) {\n return;\n }\n\n // Close the aside\n this.closeAside();\n\n // Set the opened\n this._toggleOpened(false);\n }\n\n /**\n * Toggle the navigation\n */\n public toggle(): void {\n // Toggle\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Open the aside\n */\n public openAside(item: NiceNavigationItem): void {\n // Return if the item is disabled\n if (item.disabled || !item.id) {\n return;\n }\n\n // Open\n this.activeAsideItemId = item.id;\n\n // Show the aside overlay\n this._showAsideOverlay();\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Close the aside\n */\n public closeAside(): void {\n // Close\n this.activeAsideItemId = null;\n\n // Hide the aside overlay\n this._hideAsideOverlay();\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Toggle the aside\n */\n public toggleAside(item: NiceNavigationItem): void {\n // Toggle\n if (this.activeAsideItemId === item.id) {\n this.closeAside();\n } else {\n this.openAside(item);\n }\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Enable the animations\n *\n * @private\n */\n private _enableAnimations(): void {\n // Return if the animations are already enabled\n if (this._animationsEnabled) {\n return;\n }\n\n // Enable the animations\n this._animationsEnabled = true;\n }\n\n /**\n * Disable the animations\n *\n * @private\n */\n private _disableAnimations(): void {\n // Return if the animations are already disabled\n if (!this._animationsEnabled) {\n return;\n }\n\n // Disable the animations\n this._animationsEnabled = false;\n }\n\n /**\n * Show the overlay\n *\n * @private\n */\n private _showOverlay(): void {\n // Return if there is already an overlay\n if (this._asideOverlay) {\n return;\n }\n\n // Create the overlay element\n this._overlay = this._renderer2.createElement(\"div\");\n\n // Add a class to the overlay element\n this._overlay.classList.add(\"nice-vertical-navigation-overlay\");\n\n // Add a class depending on the transparentOverlay option\n if (this.transparentOverlay) {\n this._overlay.classList.add(\"nice-vertical-navigation-overlay-transparent\");\n }\n\n // Append the overlay to the parent of the navigation\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._overlay);\n\n // Enable block scroll strategy\n this._scrollStrategy.enable();\n\n // Create the enter animation and attach it to the player\n this._player = this._animationBuilder.build([\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 1}))\n ]).create(this._overlay);\n\n // Play the animation\n this._player.play();\n\n // Add an event listener to the overlay\n this._overlay.addEventListener(\"click\", this._handleOverlayClick);\n }\n\n /**\n * Hide the overlay\n *\n * @private\n */\n private _hideOverlay(): void {\n if (!this._overlay) {\n return;\n }\n\n // Create the leave animation and attach it to the player\n this._player = this._animationBuilder.build([\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 0}))\n ]).create(this._overlay);\n\n // Play the animation\n this._player.play();\n\n // Once the animation is done...\n this._player.onDone(() => {\n\n // If the overlay still exists...\n if (this._overlay) {\n // Remove the event listener\n this._overlay.removeEventListener(\"click\", this._handleOverlayClick);\n\n // Remove the overlay\n this._overlay.parentNode.removeChild(this._overlay);\n this._overlay = null;\n }\n\n // Disable block scroll strategy\n this._scrollStrategy.disable();\n });\n }\n\n /**\n * Show the aside overlay\n *\n * @private\n */\n private _showAsideOverlay(): void {\n // Return if there is already an overlay\n if (this._asideOverlay) {\n return;\n }\n\n // Create the aside overlay element\n this._asideOverlay = this._renderer2.createElement(\"div\");\n\n // Add a class to the aside overlay element\n this._asideOverlay.classList.add(\"nice-vertical-navigation-aside-overlay\");\n\n // Append the aside overlay to the parent of the navigation\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._asideOverlay);\n\n // Create the enter animation and attach it to the player\n this._player =\n this._animationBuilder\n .build([\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 1}))\n ]).create(this._asideOverlay);\n\n // Play the animation\n this._player.play();\n\n // Add an event listener to the aside overlay\n this._asideOverlay.addEventListener(\"click\", this._handleAsideOverlayClick);\n }\n\n /**\n * Hide the aside overlay\n *\n * @private\n */\n private _hideAsideOverlay(): void {\n if (!this._asideOverlay) {\n return;\n }\n\n // Create the leave animation and attach it to the player\n this._player =\n this._animationBuilder\n .build([\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 0}))\n ]).create(this._asideOverlay);\n\n // Play the animation\n this._player.play();\n\n // Once the animation is done...\n this._player.onDone(() => {\n\n // If the aside overlay still exists...\n if (this._asideOverlay) {\n // Remove the event listener\n this._asideOverlay.removeEventListener(\"click\", this._handleAsideOverlayClick);\n\n // Remove the aside overlay\n this._asideOverlay.parentNode.removeChild(this._asideOverlay);\n this._asideOverlay = null;\n }\n });\n }\n\n /**\n * On mouseenter\n */\n @HostListener(\"mouseenter\")\n public _onMouseenter(): void {\n // Enable the animations\n this._enableAnimations();\n\n // Set the hovered\n this.hovered = true;\n this.hoveredChanged.next(this.hovered || this._forceHovered);\n }\n\n /**\n * On mouseleave\n */\n @HostListener(\"mouseleave\")\n public _onMouseleave(): void {\n // Enable the animations\n this._enableAnimations();\n\n // Set the hovered\n this.hovered = false;\n this.hoveredChanged.next(this.hovered || this._forceHovered || this.hasHint);\n }\n\n /**\n * Open/close the navigation\n *\n * @param open\n * @private\n */\n private _toggleOpened(open: boolean): void {\n // Set the opened\n this.opened = open;\n\n // Enable the animations\n this._enableAnimations();\n\n // If the navigation opened, and the mode\n // is 'over', show the overlay\n if (this.mode === \"over\") {\n if (this.opened) {\n this._showOverlay();\n } else {\n this._hideOverlay();\n }\n }\n\n // Execute the observable\n this.openedChanged.next(open);\n }\n}\n","<div class=\"nice-vertical-navigation-wrapper\">\n <!-- Header -->\n <div class=\"nice-vertical-navigation-header\">\n <ng-content select=\"[niceVerticalNavigationHeader]\"></ng-content>\n </div>\n\n <!-- Content -->\n <div\n class=\"nice-vertical-navigation-content\"\n niceScrollbar\n [niceScrollbarOptions]=\"{ wheelPropagation: inner, suppressScrollX: true }\"\n #navigationContent\n >\n <!-- Content header -->\n <div class=\"nice-vertical-navigation-content-header\">\n <ng-content select=\"[niceVerticalNavigationContentHeader]\"></ng-content>\n </div>\n\n <!-- Items -->\n <div *ngFor=\"let item of navigation; trackBy: trackByFn\" [@.disabled]=\"!animateNextNavChange\" @slideInRight>\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"!(item | niceShouldHide | async)\">\n <!-- Aside -->\n <nice-vertical-navigation-aside-item\n *ngIf=\"item.type === 'aside'\"\n [item]=\"item\"\n [name]=\"name\"\n [activeItemId]=\"activeAsideItemId\"\n [autoCollapse]=\"autoCollapse\"\n [skipChildren]=\"true\"\n (click)=\"toggleAside(item)\"\n ></nice-vertical-navigation-aside-item>\n\n <!-- Basic -->\n <nice-vertical-navigation-basic-item\n *ngIf=\"item.type === 'basic'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-basic-item>\n\n <!-- Collapsable -->\n <nice-vertical-navigation-collapsable-item\n *ngIf=\"item.type === 'collapsable'\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-collapsable-item>\n\n <!-- Divider -->\n <nice-vertical-navigation-divider-item\n *ngIf=\"item.type === 'divider'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-divider-item>\n\n <!-- Group -->\n <nice-vertical-navigation-group-item\n *ngIf=\"item.type === 'group'\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-group-item>\n\n <!-- Spacer -->\n <nice-vertical-navigation-spacer-item\n *ngIf=\"item.type === 'spacer'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-spacer-item>\n </ng-container>\n </div>\n\n <!-- Content footer -->\n <div class=\"nice-vertical-navigation-content-footer\">\n <ng-content select=\"[niceVerticalNavigationContentFooter]\"></ng-content>\n </div>\n\n </div>\n\n <!-- Footer -->\n <div class=\"nice-vertical-navigation-footer\">\n <ng-content select=\"[niceVerticalNavigationFooter]\"></ng-content>\n </div>\n</div>\n\n<!-- Aside -->\n<div\n class=\"nice-vertical-navigation-aside-wrapper\"\n *ngIf=\"activeAsideItemId\"\n niceScrollbar\n [niceScrollbarOptions]=\"{ wheelPropagation: false, suppressScrollX: true }\"\n [@fadeInLeft]=\"position === 'left'\"\n [@fadeInRight]=\"position === 'right'\"\n [@fadeOutLeft]=\"position === 'left'\"\n [@fadeOutRight]=\"position === 'right'\"\n>\n\n <!-- Items -->\n <ng-container *ngFor=\"let item of navigation; trackBy: trackByFn\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n <!-- Aside -->\n <nice-vertical-navigation-aside-item\n *ngIf=\"item.type === 'aside' && item.id === activeAsideItemId\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-aside-item>\n </ng-container>\n </ng-container>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatDividerModule } from \"@angular/material/divider\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { RouterModule } from \"@angular/router\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceScrollbarModule } from \"../../directives/scrollbar\";\nimport { NiceShowHintDirective } from \"./directives/show-hint.directive\";\nimport { NiceHorizontalNavigationBasicItemComponent } from \"./horizontal/components/basic/basic.component\";\nimport { NiceHorizontalNavigationBranchItemComponent } from \"./horizontal/components/branch/branch.component\";\nimport { NiceHorizontalNavigationDividerItemComponent } from \"./horizontal/components/divider/divider.component\";\nimport { NiceHorizontalNavigationSpacerItemComponent } from \"./horizontal/components/spacer/spacer.component\";\nimport { NiceHorizontalNavigationComponent } from \"./horizontal/horizontal.component\";\nimport { NiceNavigationComponent } from \"./navigation.component\";\nimport { NiceShouldHidePipe } from \"./pipes/should-hide.pipe\";\nimport { NiceShouldShowHintPipe } from \"./pipes/should-show-hint.pipe\";\nimport { NiceNavigationHintService } from \"./providers/hint.service\";\nimport { NiceVerticalNavigationAsideItemComponent } from \"./vertical/components/aside/aside.component\";\nimport { NiceVerticalNavigationBasicItemComponent } from \"./vertical/components/basic/basic.component\";\nimport { NiceVerticalNavigationCollapsableItemComponent } from \"./vertical/components/collapsable/collapsable.component\";\nimport { NiceVerticalNavigationDividerItemComponent } from \"./vertical/components/divider/divider.component\";\nimport { NiceVerticalNavigationGroupItemComponent } from \"./vertical/components/group/group.component\";\nimport { NiceVerticalNavigationSpacerItemComponent } from \"./vertical/components/spacer/spacer.component\";\nimport { NiceVerticalNavigationComponent } from \"./vertical/vertical.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n MatButtonModule,\n MatDividerModule,\n MatIconModule,\n MatMenuModule,\n MatTooltipModule,\n NiceScrollbarModule,\n TranslateModule,\n ],\n declarations: [\n NiceNavigationComponent,\n NiceHorizontalNavigationBasicItemComponent,\n NiceHorizontalNavigationBranchItemComponent,\n NiceHorizontalNavigationDividerItemComponent,\n NiceHorizontalNavigationSpacerItemComponent,\n NiceHorizontalNavigationComponent,\n NiceVerticalNavigationAsideItemComponent,\n NiceVerticalNavigationBasicItemComponent,\n NiceVerticalNavigationCollapsableItemComponent,\n NiceVerticalNavigationDividerItemComponent,\n NiceVerticalNavigationGroupItemComponent,\n NiceVerticalNavigationSpacerItemComponent,\n NiceVerticalNavigationComponent,\n\n NiceShouldHidePipe,\n NiceShouldShowHintPipe,\n NiceShowHintDirective\n ],\n providers: [NiceNavigationHintService],\n exports: [\n NiceHorizontalNavigationComponent,\n NiceVerticalNavigationComponent\n ]\n})\nexport class NiceNavigationModule {\n}\n","import { Observable } from \"rxjs\";\nimport { NiceNavigationItem } from \"../navigation.types\";\n\nexport abstract class NavigationHideItemResolver {\n public abstract shouldHide(item: NiceNavigationItem): Observable<boolean>;\n}\n","import { Observable } from \"rxjs\";\n\nexport abstract class NavigationHintResolver {\n public abstract shouldShowHint(): Observable<boolean>;\n}\n","import { Component, EventEmitter, forwardRef, HostBinding, Input, Output } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { niceAnimations } from \"../../animations\";\n\n@Component({\n selector: \"nice-search-bar\",\n templateUrl: \"./search-bar.template.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceSearchBarComponent),\n multi: true\n }\n ],\n animations: niceAnimations\n})\nexport class NiceSearchBarComponent implements ControlValueAccessor {\n @Input()\n public collapsed = true;\n\n @Output()\n public collapse = new EventEmitter<boolean>();\n\n public searchValue: string;\n public opened = false;\n\n private propagateChanges = (value: string) => {};\n\n @HostBinding(\"class\")\n public get classList(): any {\n return {\n \"search-opened\": this.opened\n };\n }\n\n public toggleCollapsed(): void {\n this.collapsed = !this.collapsed;\n this.collapse.emit(this.collapsed);\n }\n\n public registerOnChange(fn: (value: string) => void): void {\n this.propagateChanges = fn;\n }\n\n public registerOnTouched(fn: any): void {\n // NO-OP\n }\n\n public writeValue(value: string): void {\n this.searchValue = value;\n }\n\n public onSearchChange(value: string) {\n this.propagateChanges(value);\n }\n\n public open(): void {\n if (this.opened) {\n return;\n }\n\n this.opened = true;\n }\n\n public close(): void {\n if (!this.opened) {\n return;\n }\n\n this.searchValue = \"\";\n this.opened = false;\n }\n}\n","<button mat-icon-button *ngIf=\"!opened\" (click)=\"open()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:search'\"></mat-icon>\n</button>\n\n<div class=\"absolute inset-0 flex items-center flex-shrink-0 z-99 bg-default\" *ngIf=\"opened\" @slideInTop @slideOutTop >\n <mat-icon class=\"absolute ml-6 sm:ml-8\" [svgIcon]=\"'heroicons_outline:search'\"></mat-icon>\n <input class=\"w-full h-full px-16 sm:px-18 bg-transparent\" [ngModel]=\"searchValue\" (ngModelChange)=\"onSearchChange($event)\">\n <button class=\"absolute top-1/2 right-5 sm:right-7 flex-shrink-0 w-10 h-10 -mt-5\" mat-icon-button (click)=\"close()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:x'\"></mat-icon>\n </button>\n</div>\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { RouterModule } from \"@angular/router\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { NiceSearchBarComponent } from \"./search-bar.component\";\nimport { FormsModule } from \"@angular/forms\";\n\n@NgModule({\n declarations: [\n NiceSearchBarComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n\n MatButtonModule,\n MatIconModule,\n FormsModule\n ],\n exports: [\n NiceSearchBarComponent\n ]\n})\nexport class NiceSearchBarModule {\n}\n","import { Component, Inject, OnInit, ViewEncapsulation } from \"@angular/core\";\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\n\nexport interface NiceAlertConfig {\n type: \"success\" | \"warning\" | \"info\";\n title?: string;\n message?: string;\n buttons: string[];\n}\n\n@Component({\n selector: \"nice-alert\",\n templateUrl: \"sweet-alert.template.html\",\n styleUrls: [\"sweet-alert.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceSweetAlertComponent implements OnInit {\n public lottieConfig = {\n path: \"assets/animations/success.json\",\n autoplay: true,\n loop: false\n };\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public alertConfig: NiceAlertConfig,\n private dialogRef: MatDialogRef<NiceSweetAlertComponent>\n ) {\n this.lottieConfig.path = this.getAnimationPath();\n }\n\n public ngOnInit() {}\n\n public handleAnimation(animation) {\n animation.setSpeed(1.0);\n }\n\n public confirm() {\n this.dialogRef.close(true);\n }\n\n public close() {\n this.dialogRef.close(false);\n }\n\n public getAnimationPath(): string {\n switch (this.alertConfig.type) {\n case \"success\":\n return \"assets/animations/success.json\";\n case \"warning\":\n return \"assets/animations/warning.json\";\n case \"info\":\n return \"assets/animations/info.json\";\n }\n }\n\n public getConfirmButtonClass(): string {\n switch (this.alertConfig.type) {\n case \"success\":\n return \"mat-accent\";\n case \"warning\":\n return \"mat-warn\";\n case \"info\":\n return \"bg-light-blue-500\";\n }\n }\n}\n","<mat-dialog-content class=\"mat-typography mb-12 text-center\">\n <nice-lottie\n [options]=\"lottieConfig\"\n [width]=\"250\"\n (animCreated)=\"handleAnimation($event)\"\n ></nice-lottie>\n <h2 class=\"mt-8\">{{ alertConfig?.title }}</h2>\n <span [innerHTML]=\"alertConfig?.message\"></span>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <ng-container *ngFor=\"let button of alertConfig.buttons; let i = index\">\n <button mat-raised-button class=\"mr-4\" [ngClass]=\"getConfirmButtonClass()\" *ngIf=\"i === 0\" (click)=\"confirm()\">\n {{ button }}\n </button>\n <button mat-button (click)=\"close()\" *ngIf=\"i !== 0\">{{ button }}</button>\n </ng-container>\n</mat-dialog-actions>\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_ALERT_OPTIONS = new InjectionToken(\"nice_alert_options\");\n","import { Inject, Injectable, Optional, Type } from \"@angular/core\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { map, switchMap } from \"rxjs/operators\";\nimport { NiceSweetAlertComponent } from \"./sweet-alert.component\";\nimport { Observable } from \"rxjs\";\nimport { NICE_ALERT_OPTIONS } from \"./sweet-alert.constant\";\n\nexport interface NiceSweetAlertOptions {\n customModal?: Type<any>;\n}\n\nexport interface NiceSweetAlertParams {\n translationPath?: string;\n titleKey: string;\n messageKey?: string;\n buttonsKey: string[];\n params?: object;\n}\n\n@Injectable()\nexport class NiceSweetAlertService {\n private readonly modal: Type<any>;\n\n constructor(\n @Optional() @Inject(NICE_ALERT_OPTIONS) private options: NiceSweetAlertOptions,\n private matDialog: MatDialog,\n private translateService: TranslateService\n ) {\n this.modal = this.options?.customModal ?? NiceSweetAlertComponent;\n }\n\n public success(params: NiceSweetAlertParams): Observable<boolean>;\n public success(titleKey: string, messageKey: string, buttonsKey: string[], params?: object): Observable<boolean>;\n public success(...args: any[]): Observable<boolean> {\n const [titleKey, messageKey, buttonsKey, params] = this.transformArgs(args);\n return this.getTranslations(titleKey, messageKey, buttonsKey, params).pipe(\n switchMap(([title, message, buttons]) => {\n return this.matDialog\n .open(this.modal, {\n panelClass: \"nice-alert-modal\",\n data: {\n type: \"success\",\n title,\n message,\n buttons\n }\n })\n .afterClosed();\n })\n );\n }\n\n public warning(params: NiceSweetAlertParams): Observable<boolean>;\n public warning(titleKey: string, messageKey: string, buttonsKey: string[], params?: object): Observable<boolean>;\n public warning(...args: any[]): Observable<boolean> {\n const [titleKey, messageKey, buttonsKey, params] = this.transformArgs(args);\n return this.getTranslations(titleKey, messageKey, buttonsKey, params).pipe(\n switchMap(([title, message, buttons]) => {\n return this.matDialog\n .open(this.modal, {\n panelClass: \"nice-alert-modal\",\n data: {\n type: \"warning\",\n title,\n message,\n buttons\n }\n })\n .afterClosed();\n })\n );\n }\n\n public info(params: NiceSweetAlertParams): Observable<boolean>;\n public info(titleKey: string, messageKey: string, buttonsKey: string[], params?: object): Observable<boolean>;\n public info(...args: any[]): Observable<boolean> {\n const [titleKey, messageKey, buttonsKey, params] = this.transformArgs(args);\n return this.getTranslations(titleKey, messageKey, buttonsKey, params).pipe(\n switchMap(([title, message, buttons]) => {\n return this.matDialog\n .open(this.modal, {\n panelClass: \"nice-alert-modal\",\n data: {\n type: \"info\",\n title,\n message,\n buttons\n }\n })\n .afterClosed();\n })\n );\n }\n\n private getTranslations(\n title: string,\n message: string,\n buttons: string[],\n params?: object\n ): Observable<[string, string, string[]]> {\n return this.translateService.get([title, message, ...buttons], params).pipe(\n map((result: { [key: string]: string }) => {\n return [result[title], result[message], buttons.map(button => result[button])] as [\n string,\n string,\n string[]\n ];\n })\n );\n }\n\n private transformArgs(args: any[]): [string, string, string[], any] {\n const [paramsOrTitle] = args;\n if (typeof paramsOrTitle === \"string\") {\n return args as [string, string, string[], any];\n }\n\n const params = paramsOrTitle as NiceSweetAlertParams;\n const path = params.translationPath ? `${params.translationPath}.` : \"\";\n return [\n `${path}${params.titleKey}`,\n params.messageKey ? `${path}${params.messageKey}` : \"\",\n params.buttonsKey.map(buttonKey => `${path}${buttonKey}`),\n params.params\n ];\n }\n}\n","import { Directive, EventEmitter, HostListener, Input, Output } from \"@angular/core\";\nimport { NiceSweetAlertParams, NiceSweetAlertService } from \"./sweet-alert.service\";\n\n@Directive({ selector: \"[niceSweetAlert]\" })\nexport class NiceSweetAlertDirective {\n @Input()\n public sweetAlertType: \"success\" | \"warning\" | \"info\";\n\n @Input()\n public sweetAlertOptions: NiceSweetAlertParams;\n\n @Output()\n public sweetAlertAfterClosed = new EventEmitter<boolean>();\n\n constructor(private service: NiceSweetAlertService) {}\n\n @HostListener(\"click\")\n public onClick(): void {\n if (this.sweetAlertType === \"success\") {\n this.service.success(this.sweetAlertOptions).subscribe(x => this.sweetAlertAfterClosed.emit(x));\n }\n\n if (this.sweetAlertType === \"warning\") {\n this.service.warning(this.sweetAlertOptions).subscribe(x => this.sweetAlertAfterClosed.emit(x));\n }\n\n if (this.sweetAlertType === \"info\") {\n this.service.info(this.sweetAlertOptions).subscribe(x => this.sweetAlertAfterClosed.emit(x));\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { NiceSweetAlertComponent } from \"./sweet-alert.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceSweetAlertDirective } from \"./sweet-alert.directive\";\nimport { NiceSweetAlertOptions, NiceSweetAlertService } from \"./sweet-alert.service\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { NiceLottieModule } from \"../lottie/lottie.module\";\nimport { NICE_ALERT_OPTIONS } from \"./sweet-alert.constant\";\n\n@NgModule({\n imports: [CommonModule, TranslateModule, MatDialogModule, MatButtonModule, NiceLottieModule],\n declarations: [NiceSweetAlertComponent, NiceSweetAlertDirective],\n providers: [NiceSweetAlertService],\n exports: [NiceSweetAlertDirective]\n})\nexport class NiceSweetAlertModule {\n public static forRoot(options?: NiceSweetAlertOptions): ModuleWithProviders<NiceSweetAlertModule> {\n return {\n ngModule: NiceSweetAlertModule,\n providers: [\n {\n provide: NICE_ALERT_OPTIONS,\n useValue: options\n }\n ]\n };\n }\n}\n","import { Component, Inject, ViewEncapsulation } from \"@angular/core\";\nimport { MAT_SNACK_BAR_DATA, MatSnackBarRef } from \"@angular/material/snack-bar\";\nimport { NiceAlertAppearance } from \"../alert\";\n\nexport interface NiceToastData {\n title?: string;\n message?: string;\n appearance?: NiceAlertAppearance;\n type: \"info\" | \"success\" | \"warning\" | \"error\";\n}\n\n@Component({\n selector: \"nice-toast\",\n templateUrl: \"toast.template.html\",\n styleUrls: [\"toast.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceToastComponent {\n constructor(\n @Inject(MAT_SNACK_BAR_DATA) public data: NiceToastData,\n private snackbarRef: MatSnackBarRef<NiceToastComponent>\n ) {}\n\n public dismiss() {\n this.snackbarRef.dismiss();\n }\n}\n","<nice-alert disableAnimation [type]=\"data.type\" [appearance]=\"data.appearance || 'outline'\" (click)=\"dismiss()\">\n <span niceAlertTitle *ngIf=\"data.title\">{{ data.title }}</span>\n <span [innerHtml]=\"data.message\" *ngIf=\"data.message\"></span>\n</nice-alert>\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_TOAST_OPTIONS = new InjectionToken(\"nice_toast_options\");\n","import { Inject, Injectable } from \"@angular/core\";\nimport { MatSnackBar, MatSnackBarConfig } from \"@angular/material/snack-bar\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { NiceAlertAppearance } from \"../alert\";\nimport { NiceToastComponent } from \"./toast.component\";\nimport { NICE_TOAST_OPTIONS } from \"./toast.constant\";\n\nexport interface NiceToastOptions extends MatSnackBarConfig {\n appearance?: NiceAlertAppearance;\n successDuration?: number;\n warningDuration?: number;\n errorDuration?: number;\n infoDuration?: number;\n}\n\n@Injectable({ providedIn: \"any\" })\nexport class NiceToastService {\n constructor(\n @Inject(NICE_TOAST_OPTIONS)\n private options: NiceToastOptions,\n private snackbar: MatSnackBar,\n private translateService: TranslateService\n ) {}\n\n public success(messageKey: string, titleKey?: string, params?: object): void {\n this.showToast(\"success\", messageKey, titleKey, params);\n }\n\n public error(messageKey: string, titleKey?: string, params?: object): void {\n this.showToast(\"error\", messageKey, titleKey, params);\n }\n\n public warning(messageKey: string, titleKey?: string, params?: object): void {\n this.showToast(\"warning\", messageKey, titleKey, params);\n }\n\n public info(messageKey: string, titleKey?: string, params?: object): void {\n this.showToast(\"info\", messageKey, titleKey, params);\n }\n\n private showToast(type: string, messageKey: string, titleKey?: string, params?: object): void {\n const [message, title] = this.getTranslations(messageKey, titleKey, params);\n const duration = this.options[`${type}Duration`] ?? this.options.duration;\n this.snackbar.openFromComponent(NiceToastComponent, {\n ...this.options,\n duration,\n panelClass: [\"message-box\", type],\n data: {\n message,\n title,\n type,\n appearance: this.options.appearance\n }\n });\n }\n\n private getTranslations(message: string, title: string, params: object): [string, string] {\n const translations = [message];\n if (title) {\n translations.push(title);\n }\n\n try {\n const result = this.translateService.instant(translations, params) as { [key: string]: string };\n return [result[message], result[title]];\n } catch (e) {\n return [\"\", \"\"];\n }\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { MatSnackBarModule } from \"@angular/material/snack-bar\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceAlertModule } from \"../alert\";\nimport { NiceToastComponent } from \"./toast.component\";\nimport { NICE_TOAST_OPTIONS } from \"./toast.constant\";\nimport { NiceToastOptions, NiceToastService } from \"./toast.service\";\n\nconst defaultOptions: NiceToastOptions = {\n duration: 3000,\n horizontalPosition: \"end\",\n verticalPosition: \"bottom\"\n};\n\n@NgModule({\n imports: [CommonModule, MatSnackBarModule, TranslateModule, NiceAlertModule],\n declarations: [NiceToastComponent]\n})\nexport class NiceToastModule {\n public static forRoot(options?: NiceToastOptions): ModuleWithProviders<NiceToastModule> {\n return {\n ngModule: NiceToastModule,\n providers: [\n NiceToastService,\n {\n provide: NICE_TOAST_OPTIONS,\n useValue: {\n ...defaultOptions,\n ...(options ?? {})\n }\n }\n ]\n };\n }\n\n public static forFeature(options: NiceToastOptions): ModuleWithProviders<NiceToastModule> {\n return {\n ngModule: NiceToastModule,\n providers: [\n NiceToastService,\n {\n provide: NICE_TOAST_OPTIONS,\n useValue: {\n ...defaultOptions,\n ...options\n }\n }\n ]\n };\n }\n}\n","import { Component, Input, TemplateRef, ViewChild } from \"@angular/core\";\n\n@Component({\n selector: \"nice-toggle-button\",\n template: `<ng-template><ng-content></ng-content></ng-template>`\n})\nexport class ToggleButtonComponent {\n @ViewChild(TemplateRef, { static: true })\n public content: TemplateRef<any>;\n\n @Input()\n public value: string;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n forwardRef,\n HostListener,\n Input, Output,\n QueryList,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CanColor, ThemePalette } from \"@angular/material/core\";\nimport { ToggleButtonComponent } from \"./toggle-button.component\";\n\nexport type ToggleButtonGroupDataType = any | any[];\n\n@Component({\n selector: \"nice-toggle-button-group\",\n templateUrl: \"toggle-button-group.template.html\",\n styleUrls: [\"toggle-button-group.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleButtonGroupComponent),\n multi: true\n }\n ]\n})\nexport class ToggleButtonGroupComponent implements CanColor {\n private _multiple = false;\n\n @ContentChildren(ToggleButtonComponent)\n public toggleButtons: QueryList<ToggleButtonComponent>;\n\n @Input()\n public selected: ToggleButtonGroupDataType;\n\n @Input()\n public color: ThemePalette;\n\n @Output()\n public selectedChange = new EventEmitter<ToggleButtonGroupDataType>();\n\n public defaultColor: ThemePalette = \"accent\";\n\n @Input()\n public set multiple(multiple: boolean) {\n if (multiple === this._multiple) {\n return;\n }\n\n if (multiple) {\n if (this.selected) {\n this.selected = [this.selected];\n } else {\n this.selected = [];\n }\n } else {\n if (this.selected) {\n this.selected = this.selected[0];\n }\n }\n this._multiple = multiple;\n }\n\n private onTouched: () => void;\n private onChange: (selected: ToggleButtonGroupDataType) => void;\n\n @HostListener(\"blur\")\n public onBlur(): void {\n this.onTouched();\n }\n\n public writeValue(value: ToggleButtonGroupDataType): void {\n if (!value) {\n return;\n }\n\n this.selected = value;\n }\n\n public registerOnChange(fn: (color: string) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public onSelect(value: any): void {\n if (this._multiple) {\n if (this.selected) {\n const index = this.selected.findIndex(x => x === value);\n if (index < 0) {\n this.selected.push(value);\n } else {\n this.selected.splice(index, 1);\n }\n } else {\n this.selected = [value];\n }\n } else {\n this.selected = value;\n }\n this.onChange?.(this.selected);\n this.selectedChange?.emit(this.selected);\n }\n\n public conditionalColorObj(value: any): any {\n const colorClass = this.color ?? this.defaultColor;\n const isActive = this._multiple ? this.selected.includes(value) : this.selected === value;\n\n const obj = {} as any;\n obj.selected = isActive;\n obj[`bg-${colorClass}`] = isActive;\n obj[`bg-selected-${colorClass}`] = isActive;\n obj[\"left-selected\"] = this.isLeftValueSelected(value);\n obj[\"right-selected\"] = this.isRightValueSelected(value);\n\n return obj;\n }\n\n private isLeftValueSelected(value: any): boolean {\n if (!this._multiple || !this.selected.includes(value)) {\n return false;\n }\n\n const values = this.toggleButtons.map(btn => btn.value);\n const index = values.indexOf(value);\n\n if (index <= 0) {\n return false;\n }\n\n return this.selected.includes(values[index - 1]);\n }\n\n private isRightValueSelected(value: any): boolean {\n if (!this._multiple) {\n return false;\n }\n\n const values = this.toggleButtons.map(btn => btn.value);\n const index = values.indexOf(value);\n\n if (index === -1 || index === values.length - 1) {\n return false;\n }\n\n return this.selected.includes(values[index + 1]);\n }\n}\n","<div class=\"toggle-button-group-wrapper\">\n <div class=\"toggle-button-group flex flex-row items-center\">\n <div\n class=\"toggle-button\"\n [ngClass]=\"conditionalColorObj(btn.value)\"\n *ngFor=\"let btn of toggleButtons\"\n >\n <div matRipple class=\"toggle-button-inner flex place-content-center items-center\" (click)=\"onSelect(btn.value)\">\n <ng-container *ngTemplateOutlet=\"btn.content\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MatRippleModule } from \"@angular/material/core\";\n\nimport { ToggleButtonGroupComponent } from \"./toggle-button-group.component\";\nimport { ToggleButtonComponent } from \"./toggle-button.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatRippleModule\n ],\n declarations: [ToggleButtonComponent, ToggleButtonGroupComponent],\n providers: [],\n exports: [ToggleButtonComponent, ToggleButtonGroupComponent]\n})\nexport class NiceToggleButtonGroupModule {}\n","import { Directive, ElementRef, OnInit } from \"@angular/core\";\n\n@Directive({ selector: \"[niceAutofocus]\" })\nexport class NiceAutofocusDirective implements OnInit {\n constructor(private elem: ElementRef) {}\n\n public ngOnInit(): void {\n this.elem.nativeElement.focus?.();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceAutofocusDirective } from \"./autofocus.directive\";\n\n@NgModule({\n declarations: [NiceAutofocusDirective],\n exports: [NiceAutofocusDirective]\n})\nexport class NiceAutofocusDirectiveModule {}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\n\n@Directive({\n selector: \"textarea[niceAutogrow]\",\n exportAs: \"niceAutogrow\"\n})\nexport class NiceAutogrowDirective implements OnChanges, OnInit, OnDestroy {\n private _height = \"auto\";\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n // tslint:disable-next-line:no-input-rename\n @Input(\"niceAutogrowVerticalPadding\")\n public padding = 8;\n\n @HostBinding(\"rows\")\n private _rows = 1;\n\n /**\n * Constructor\n */\n constructor(\n private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _ngZone: NgZone\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component inline styles\n */\n @HostBinding(\"style\")\n public get styleList(): any {\n return {\n \"height\": this._height,\n \"overflow\": \"hidden\",\n \"resize\": \"none\"\n };\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Padding\n if (\"niceAutogrowVerticalPadding\" in changes) {\n // Resize\n this._resize();\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Resize for the first time\n this._resize();\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Resize on 'input' and 'ngModelChange' events\n */\n @HostListener(\"input\")\n @HostListener(\"ngModelChange\")\n private _resize(): void {\n // This doesn't need to trigger Angular's change detection by itself\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n // Set the height to 'auto' so we can correctly read the scrollHeight\n this._height = \"auto\";\n\n // Detect the changes so the height is applied\n this._changeDetectorRef.detectChanges();\n\n // Get the scrollHeight and subtract the vertical padding\n this._height = `${this._elementRef.nativeElement.scrollHeight - this.padding}px`;\n\n // Detect the changes one more time to apply the final height\n this._changeDetectorRef.detectChanges();\n });\n });\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceAutogrowDirective } from \"./autogrow.directive\";\n\n@NgModule({\n declarations: [\n NiceAutogrowDirective\n ],\n exports: [\n NiceAutogrowDirective\n ]\n})\nexport class NiceAutogrowModule {}\n","import { Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Output, } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { NiceAsyncTypeaheadComponent } from \"../../components\";\n\n@Directive({\n selector: \"[niceChipAsyncTypeahead]\",\n exportAs: \"niceChipAsyncTypeahead\",\n})\nexport class NiceChipAsyncTypeaheadDirective implements OnInit, OnDestroy {\n @Output()\n public niceChipAsyncTypeaheadTokenEnd = new EventEmitter<any>();\n\n private unsubscribeAll$ = new Subject();\n\n constructor(\n private typeahead: NiceAsyncTypeaheadComponent,\n private elementRef: ElementRef<HTMLElement>\n ) {\n }\n\n public ngOnInit(): void {\n this.typeahead.selected\n .pipe(\n takeUntil(this.unsubscribeAll$),\n filter((selected) => selected)\n )\n .subscribe((_) => {\n this.niceChipAsyncTypeaheadTokenEnd.emit(this.typeahead.getActive());\n this.typeahead.writeValue(null);\n });\n\n this.elementRef.nativeElement.classList.add(\"nice-chip-async-typeahead\");\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next(null);\n this.unsubscribeAll$.complete();\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceChipListItemLabel]\" })\nexport class ChipListItemLabelDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_CHIP_LIST_OPTIONS = new InjectionToken(\"nice_chip_list_options\");\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter, Inject,\n Input,\n Optional,\n Output,\n TemplateRef\n} from \"@angular/core\";\nimport { CanColor, ThemePalette } from \"@angular/material/core\";\nimport { Observable } from \"rxjs\";\nimport { NICE_CHIP_LIST_OPTIONS } from \"../chip-list.constant\";\nimport { ChipListItemLabelDirective } from \"./chip-list-item-label.directive\";\n\nexport type NiceChipListActionIcon = { matIcon: string; svgIcon?: string; } | { matIcon?: string; svgIcon: string; };\n\nexport interface NiceChipListOptions {\n closeButtonIcon: NiceChipListActionIcon;\n}\n\n@Component({\n selector: \"nice-chip-list-items\",\n templateUrl: \"./chip-list-items.template.html\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceChipListItemsComponent implements CanColor {\n @ContentChild(ChipListItemLabelDirective, { read: TemplateRef })\n public itemLabel: TemplateRef<any>;\n\n @Input()\n public color: ThemePalette = \"primary\";\n\n @Output()\n public removeChip = new EventEmitter<number>();\n\n @Input()\n public items$: Observable<any[]>;\n\n public defaultColor: ThemePalette = \"primary\";\n\n constructor(@Optional() @Inject(NICE_CHIP_LIST_OPTIONS) public readonly options: NiceChipListOptions) {\n if (!this.options) {\n this.options = {\n closeButtonIcon: {\n matIcon: \"cancel\"\n }\n };\n }\n }\n\n public remove(index: number): void {\n this.removeChip.next(index);\n }\n}\n","<div class=\"nice-items-row\" *ngIf=\"(items$ | async)?.length\">\n <div\n class=\"nice-chip\"\n *ngFor=\"let value of items$ | async; let i = index\"\n [ngClass]=\"color\"\n >\n <span *ngIf=\"!itemLabel\">{{ value }}</span>\n <ng-container *ngIf=\"itemLabel\">\n <ng-container *ngTemplateOutlet=\"itemLabel; context: { $implicit: value }\"></ng-container>\n </ng-container>\n <button (click)=\"remove(i)\">\n <mat-icon *ngIf=\"options.closeButtonIcon.matIcon\">\n {{ options.closeButtonIcon.matIcon }}\n </mat-icon>\n <mat-icon\n *ngIf=\"options.closeButtonIcon.svgIcon\"\n [svgIcon]=\"options.closeButtonIcon.svgIcon\"\n ></mat-icon>\n </button>\n </div>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChange,\n SimpleChanges\n} from \"@angular/core\";\nimport { ControlValueAccessor, NgControl } from \"@angular/forms\";\nimport { BehaviorSubject, Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { NiceAsyncTypeaheadComponent, NiceTypeaheadNewValue } from \"../../components\";\nimport { KeyboardCodes } from \"../../utils\";\nimport { NiceChipListItemsComponent } from \"./chip-list-items/chip-list-items.component\";\n\n@Directive({\n selector: \"input[niceChipList], nice-async-typeahead[niceChipList]\"\n})\nexport class NiceChipListDirective implements ControlValueAccessor, OnInit, OnChanges {\n @Input()\n public withItemList: NiceChipListItemsComponent;\n\n @Input()\n public reloadOnSelected = true;\n\n @Input()\n public separatorKeyboardCodes = [KeyboardCodes.Enter];\n\n private unsubscribeAll$ = new Subject<void>();\n private values$ = new BehaviorSubject([]);\n\n private _values: any[] = [];\n private propagateChanges = (value: any[]) => {};\n\n public get values(): any[] {\n return this._values;\n }\n\n constructor(\n @Optional() private asyncTypeahead: NiceAsyncTypeaheadComponent,\n @Optional() private ngControl: NgControl,\n private elementRef: ElementRef<HTMLInputElement>\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n @HostListener(\"keydown\", [\"$event\"])\n public onKeyDown(event: KeyboardEvent): void {\n if (this.asyncTypeahead) {\n return;\n }\n\n if (this.separatorKeyboardCodes.includes(event.code as KeyboardCodes)) {\n if (!this.elementRef.nativeElement.validity.valid) {\n return;\n }\n\n this.addValue(this.elementRef.nativeElement.value);\n this.elementRef.nativeElement.value = \"\";\n event.preventDefault();\n return;\n }\n }\n\n public ngOnInit(): void {\n if (this.asyncTypeahead) {\n this.setupAsyncTypeahead();\n }\n\n if (this.elementRef.nativeElement.parentElement.classList.contains(\"mat-form-field-infix\")) {\n this.elementRef.nativeElement.parentElement.style.alignItems = \"flex-start\";\n this.elementRef.nativeElement.parentElement.style.flexDirection = \"column-reverse\";\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"withItemList\" in changes) {\n this.withItemList.items$ = this.values$;\n this.withItemList.removeChip.pipe(takeUntil(this.unsubscribeAll$)).subscribe(x => {\n this._values.splice(x, 1);\n\n this.updateTypeaheadSearchOptions();\n\n this.propagateChanges(this._values);\n this.values$.next(this._values);\n });\n }\n }\n\n public writeValue(obj: any[]): void {\n this._values = obj ?? [];\n this.updateTypeaheadSearchOptions();\n this.values$.next(this._values);\n }\n\n public registerOnChange(fn: any): void {\n this.propagateChanges = fn;\n }\n\n public registerOnTouched(fn: any): void {}\n\n private setupAsyncTypeahead(): void {\n this.asyncTypeahead.selected\n .pipe(\n takeUntil(this.unsubscribeAll$),\n filter((selected) => selected)\n )\n .subscribe((value) => {\n if (value instanceof NiceTypeaheadNewValue) {\n this.addValue(value);\n } else {\n this.addValue(this.asyncTypeahead.getActive());\n }\n\n this.asyncTypeahead.searchOptions = { ...(this.asyncTypeahead.searchOptions ?? {}), ignore: this._values ?? [] };\n this.asyncTypeahead.onRemove(null, this.reloadOnSelected);\n });\n }\n\n private addValue(value: any): void {\n if (this._values.includes(value)) {\n return;\n }\n\n if (value instanceof NiceTypeaheadNewValue) {\n if (this._values.some(x => x instanceof NiceTypeaheadNewValue && x.$new === value.$new)) {\n return;\n }\n }\n\n this._values?.push(value);\n this.propagateChanges(this._values);\n this.values$.next(this._values);\n }\n\n private updateTypeaheadSearchOptions(): void {\n if (!this.asyncTypeahead) {\n return;\n }\n\n const searchOptions = this.asyncTypeahead.searchOptions;\n this.asyncTypeahead.searchOptions = { ...(searchOptions ?? {}), ignore: this._values ?? [] };\n this.asyncTypeahead.ngOnChanges({\n searchOptions: new SimpleChange(searchOptions, this.asyncTypeahead.searchOptions, false)\n });\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { ChipListItemLabelDirective } from \"./chip-list-items/chip-list-item-label.directive\";\nimport { NiceChipListItemsComponent, NiceChipListOptions } from \"./chip-list-items/chip-list-items.component\";\nimport { NICE_CHIP_LIST_OPTIONS } from \"./chip-list.constant\";\n\nimport { NiceChipListDirective } from \"./chip-list.directive\";\n\n@NgModule({\n imports: [CommonModule, MatIconModule],\n declarations: [NiceChipListDirective, NiceChipListItemsComponent, ChipListItemLabelDirective],\n exports: [NiceChipListDirective, NiceChipListItemsComponent, ChipListItemLabelDirective]\n})\nexport class NiceChipListDirectiveModule {\n public static forRoot(options?: NiceChipListOptions): ModuleWithProviders<NiceChipListDirectiveModule> {\n if (!options) {\n options = {\n closeButtonIcon: {\n matIcon: \"cancel\"\n }\n };\n }\n return {\n ngModule: NiceChipListDirectiveModule,\n providers: [\n {\n provide: NICE_CHIP_LIST_OPTIONS,\n useValue: options\n }\n ]\n };\n }\n}\n","import { CdkDragDrop, CdkDropList, moveItemInArray } from \"@angular/cdk/drag-drop\";\nimport { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Optional, Output, SimpleChanges } from \"@angular/core\";\nimport { FormArray, FormArrayName } from \"@angular/forms\";\nimport { pairwise, startWith, Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { LexoRankUtils } from \"../../utils/lexorank.utils\";\n\n@Directive({\n selector: \"[cdkDropList][niceDraggableList]\"\n})\nexport class NiceDraggableListDirective<T> implements OnInit, OnDestroy, OnChanges {\n @Input()\n public items: T[];\n\n @Input()\n public rankProperty = \"rank\";\n\n @Output()\n public itemsUpdated = new EventEmitter<T[]>();\n\n @Output()\n public itemRankUpdated = new EventEmitter<T>();\n\n public sortedItems: T[] = [];\n public formArray: FormArray;\n\n private unsubscribeAll$ = new Subject<void>();\n\n constructor(@Optional() private formArrayName: FormArrayName, private cdkDropList: CdkDropList) {}\n\n public ngOnInit(): void {\n if (this.formArrayName) {\n this.formArray = this.formArrayName.control;\n this.formArray.valueChanges.pipe(\n takeUntil(this.unsubscribeAll$),\n startWith(this.formArray.getRawValue()),\n map(() => this.formArray.getRawValue()),\n pairwise()\n ).subscribe(([previous, current]) => {\n if (previous.length !== current.length) {\n this.sortItems(current);\n }\n });\n\n this.sortItems(this.formArray.getRawValue());\n }\n\n this.cdkDropList.dropped.pipe(takeUntil(this.unsubscribeAll$)).subscribe((event) => this.drop(event));\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"items\" in changes && this.items) {\n this.sortItems(this.items);\n }\n }\n\n public drop(event: CdkDragDrop<any, any>): void {\n if (event.previousContainer === event.container) {\n if (event.previousIndex === event.currentIndex) {\n return;\n }\n\n event.item.data[this.rankProperty] = this.getNextRank(event);\n this.sortItems(this.sortedItems);\n this.itemsUpdated.next(this.sortedItems);\n this.itemRankUpdated.next(event.item.data);\n\n if (this.formArray) {\n this.formArray.get([event.previousIndex, this.rankProperty])?.patchValue(event.item.data[this.rankProperty]);\n moveItemInArray(this.formArray.controls, event.previousIndex, event.currentIndex);\n }\n } else {\n // TODO: Handle container change\n }\n }\n\n private sortItems(items: any[]): void {\n if (items.length && items.some((item) => !item[this.rankProperty])) {\n throw new Error(`All items must have a ${this.rankProperty}`);\n }\n\n this.sortedItems = [...items]\n .map(item => ({...item}))\n .sort((itemA, itemB) => LexoRankUtils.compareStringFn(itemA[this.rankProperty], itemB[this.rankProperty]));\n this.cdkDropList.data = this.sortedItems;\n }\n\n private getNextRank(event: CdkDragDrop<any, any>): string {\n const fromIndex = event.previousIndex;\n const toIndex = event.currentIndex;\n\n const itemAfter = this.sortedItems[fromIndex > toIndex ? toIndex : toIndex + 1];\n const itemBefore = this.sortedItems[fromIndex > toIndex ? toIndex - 1 : toIndex];\n return LexoRankUtils.getNewRank(itemAfter?.[this.rankProperty], itemBefore?.[this.rankProperty]);\n }\n}\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\nimport { NgModule } from \"@angular/core\";\n\nimport { NiceDraggableListDirective } from \"./draggable-list.directive\";\n\n@NgModule({\n imports: [DragDropModule],\n declarations: [NiceDraggableListDirective],\n exports: [NiceDraggableListDirective],\n})\nexport class NiceDraggableListModule {}\n","import { Directive, ElementRef, HostListener, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\n\n@Directive({ selector: \"img[niceImageErrorPlaceholder]\" })\nexport class NiceImageErrorPlaceholderDirective {\n @Input()\n public fallback?: TemplateRef<any>;\n\n constructor(private elementRef: ElementRef, private viewContainerRef: ViewContainerRef) {}\n\n @HostListener(\"error\")\n public onError(): void {\n this.elementRef.nativeElement.style.display = \"none\";\n if (this.fallback) {\n this.viewContainerRef.createEmbeddedView(this.fallback);\n }\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceImageErrorPlaceholderDirective } from \"./image-error-placeholder.directive\";\n\n@NgModule({\n declarations: [NiceImageErrorPlaceholderDirective],\n exports: [NiceImageErrorPlaceholderDirective]\n})\nexport class NiceImageErrorPlaceholderDirectiveModule {}\n","import { Directive, ElementRef, OnInit } from \"@angular/core\";\nimport { MatFormField } from \"@angular/material/form-field\";\n\n// tslint:disable-next-line:directive-selector\n@Directive({selector: \"[keep-material-style]\"})\nexport class NiceMaterialStyleDirective implements OnInit {\n constructor(private element: ElementRef) {}\n\n public ngOnInit(): void {\n (this.element.nativeElement as HTMLElement).classList.add(\"keep-material-style\");\n }\n}\n","import { Directive, ElementRef, OnInit } from \"@angular/core\";\nimport { MatFormField } from \"@angular/material/form-field\";\n\n// tslint:disable-next-line:directive-selector\n@Directive({selector: \"[nice-rounded-style]\"})\nexport class NiceRoundedStyleDirective implements OnInit {\n constructor(private element: ElementRef) {}\n\n public ngOnInit(): void {\n (this.element.nativeElement as HTMLElement).classList.add(\"nice-rounded-style\");\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceMaterialStyleDirective } from \"./nice-material-style.directive\";\nimport { NiceRoundedStyleDirective } from \"./nice-rounded-style.directive\";\n\n@NgModule({\n declarations: [\n NiceMaterialStyleDirective,\n NiceRoundedStyleDirective\n ],\n exports: [\n NiceMaterialStyleDirective,\n NiceRoundedStyleDirective\n ]\n})\nexport class NiceMaterialModule {}\n","import { Directive, EventEmitter, Input, Output, Type } from \"@angular/core\";\nimport { MatDialog, MatDialogConfig } from \"@angular/material/dialog\";\n\n@Directive()\nexport class NiceModalOpenerDirective<T, Return, Data> {\n @Input()\n public modalData: Data;\n\n @Output()\n public modalAfterClosed = new EventEmitter<Return>();\n\n constructor(protected dialog: MatDialog, private modal: Type<T>, private options: MatDialogConfig<Data>) {}\n\n public open(): void {\n this.dialog\n .open(this.modal, {\n ...this.options,\n data: this.modalData\n })\n .afterClosed()\n .subscribe(res => this.modalAfterClosed.emit(res));\n }\n}\n","import { Directive, HostListener, Type } from \"@angular/core\";\nimport { MatDialog, MatDialogConfig } from \"@angular/material/dialog\";\nimport { NiceModalOpenerDirective } from \"./modal-opener.directive\";\n\n@Directive()\nexport class NiceModalOnClickDirective<T, Return, Data = any> extends NiceModalOpenerDirective<T, Return, Data> {\n constructor(dialog: MatDialog, modal: Type<T>, options: MatDialogConfig<Data>) {\n super(dialog, modal, options);\n }\n\n @HostListener(\"click\")\n public onClick(): void {\n this.open();\n }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit } from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\n\n@Directive({\n selector: \"[niceScrollReset]\",\n exportAs: \"niceScrollReset\"\n})\nexport class NiceScrollResetDirective implements OnInit, OnDestroy {\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n /**\n * Constructor\n */\n constructor(\n private _elementRef: ElementRef,\n private _router: Router\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Subscribe to NavigationEnd event\n this._router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Reset the element's scroll position to the top\n this._elementRef.nativeElement.scrollTop = 0;\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceScrollResetDirective } from \"./scroll-reset.directive\";\n\n@NgModule({\n declarations: [\n NiceScrollResetDirective\n ],\n exports: [\n NiceScrollResetDirective\n ]\n})\nexport class NiceScrollResetModule {\n}\n","import { Directive, HostListener } from \"@angular/core\";\n\n@Directive({ selector: \"[niceClickStopPropagation]\" })\nexport class NiceClickStopPropagationDirective {\n @HostListener(\"click\", [\"$event\"])\n public stopClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NiceClickStopPropagationDirective } from \"./click-stop-propagation.directive\";\n\n@NgModule({\n exports: [NiceClickStopPropagationDirective],\n declarations: [NiceClickStopPropagationDirective],\n\n})\nexport class NiceStopPropagationModule {\n}\n","import { Directive, HostListener } from \"@angular/core\";\n\n// https://stackoverflow.com/questions/48886460/prevent-closing-browser-tab-window-in-angular-5-x\n@Directive({ selector: \"[nicePreventCloseWindow]\" })\nexport class NicePreventCloseWindowDirective {\n @HostListener(\"window:beforeunload\", [\"$event\"])\n public handleClose($event) {\n $event.returnValue = false;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NicePreventCloseWindowDirective } from \"./prevent-close-window.directive\";\n\n@NgModule({\n declarations: [NicePreventCloseWindowDirective],\n exports: [NicePreventCloseWindowDirective]\n})\nexport class NiceWindowDirectiveModule {\n}\n","import { NgModule, Optional, SkipSelf } from \"@angular/core\";\nimport { MATERIAL_SANITY_CHECKS } from \"@angular/material/core\";\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from \"@angular/material/form-field\";\nimport { NiceMediaWatcherModule, NiceSplashScreenModule, NiceUtilsModule } from \"./providers\";\n\n@NgModule({\n imports: [\n NiceMediaWatcherModule,\n NiceSplashScreenModule,\n NiceUtilsModule\n ],\n providers: [\n {\n // Disable 'theme' sanity check\n provide : MATERIAL_SANITY_CHECKS,\n useValue: {\n doctype: true,\n theme : false,\n version: true\n }\n },\n {\n // Use the 'fill' appearance on Angular Material form fields by default\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n appearance: \"fill\"\n }\n }\n ]\n})\nexport class NiceModule {\n /**\n * Constructor\n */\n constructor(@Optional() @SkipSelf() parentModule?: NiceModule) {\n if (parentModule) {\n throw new Error(\"NiceModule has already been loaded. Import this module in the AppModule only!\");\n }\n }\n}\n","/*\n * Public API Surface of nice-ui-kit-v2\n */\n\nexport * from \"./lib/animations\";\nexport * from \"./lib/api\";\nexport * from \"./lib/components\";\nexport * from \"./lib/directives\";\nexport * from \"./lib/pipes\";\nexport * from \"./lib/providers\";\nexport * from \"./lib/utils\";\nexport * from \"./lib/nice.module\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NiceUtilsService","i1.NiceAlertService","i2.NiceUtilsService","i3","i4","i5","i1","i2","i4.OptionsScrollDirective","i6","i7","i11","i12","i3.NiceAsyncTypeaheadService","i5.OptionsScrollDirective","i8","i9","i10","i1.PictureModalService","i3.CarouselLayoutPipe","i3.NiceDateRangePickerServiceService","i6.RangePresetComponent","i5.LocalizedDatePipe","i1.NiceConfigService","tap","i1.NiceMediaWatcherService","i1.NiceSplashScreenService","i2.NiceDrawerService","i3.NiceUtilsService","i2.ExportBottomSheetService","i2.DynamicOverlayContainer","i1.DynamicOverlay","i1.NiceNavigationService","i5.NiceHorizontalNavigationBasicItemComponent","i6.NiceHorizontalNavigationDividerItemComponent","i8.NiceShouldHidePipe","i4.NiceHorizontalNavigationBasicItemComponent","i5.NiceHorizontalNavigationBranchItemComponent","i6.NiceHorizontalNavigationSpacerItemComponent","i7.NiceShouldHidePipe","debounceTime","i4.NiceNavigationHintService","i6.NiceShowHintDirective","i8.NiceShouldShowHintPipe","i2.NiceNavigationService","i5.NiceVerticalNavigationBasicItemComponent","i4.NiceVerticalNavigationBasicItemComponent","i5.NiceVerticalNavigationCollapsableItemComponent","i6.NiceVerticalNavigationDividerItemComponent","i7.NiceVerticalNavigationSpacerItemComponent","i9.NiceShouldHidePipe","i6.NiceVerticalNavigationCollapsableItemComponent","i7.NiceVerticalNavigationDividerItemComponent","i8.NiceVerticalNavigationGroupItemComponent","i9.NiceVerticalNavigationSpacerItemComponent","merge","i6.NiceNavigationHintService","i4.NiceLottieComponent","i1.NiceSweetAlertService","i3.NiceAlertComponent","i1.NiceAsyncTypeaheadComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recursyve-nice-ui-kit.v2.mjs","sources":["../../../projects/nice-ui-kit-v2/src/lib/animations/defaults.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/expand-collapse.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/fade.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/shake.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/slide.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/zoom.ts","../../../projects/nice-ui-kit-v2/src/lib/animations/public-api.ts","../../../projects/nice-ui-kit-v2/src/lib/api/exceptions/api.exception.ts","../../../projects/nice-ui-kit-v2/src/lib/api/exceptions/exception.factory.ts","../../../projects/nice-ui-kit-v2/src/lib/api/interceptors/transform-response.interceptor.ts","../../../projects/nice-ui-kit-v2/src/lib/api/nice.api.ts","../../../projects/nice-ui-kit-v2/src/lib/components/alert/alert.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/utils/utils.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/utils/utils.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/alert/alert.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/alert/alert.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/alert/alert.module.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/type.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/array.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/case.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/colors.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/date.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/file.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/font-awesome.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/form-data.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/http-status.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/keyboard.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/lexorank.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/modal.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/number.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/object.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/promise.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/query-params.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/regex.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/utils/url.utils.ts","../../../projects/nice-ui-kit-v2/src/lib/components/assets-carousel/assets-carousel.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/components/assets-carousel/directives/assets-carousel-active-content.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/dropzone/dropzone.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/assets-carousel/assets-carousel.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/assets-carousel/assets-carousel.template.html","../../../projects/nice-ui-kit-v2/src/lib/directives/dropzone/dropzone.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/assets-carousel/assets-carousel.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/providers/async-typeahead.provider.ts","../../../projects/nice-ui-kit-v2/src/lib/components/typeahead/directives/options-scroll.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/typeahead/typeahead.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/typeahead/typeahead.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/typeahead/directives/options-scroll.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/typeahead/typeahead.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/async-typeahead.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/providers/async-typeahead.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/async-typeahead.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/async-typeahead.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/async-typeahead/async-typeahead.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/base-form/base-form.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/base-form/form-submit.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/base-form/base-form.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/base-form/nice-base.form.ts","../../../projects/nice-ui-kit-v2/src/lib/components/card/card.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/card/card.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/card/card.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/picture-modal/picture-modal.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/picture-modal/picture-modal.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/picture-modal/picture-modal.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/pipe/carousel-layout.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/carousel.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/carousel.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/carousel/carousel.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/collapsable/collapsable.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/collapsable/collapsable.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/collapsable/collapsable.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/providers/date-range-picker.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/components/range-preset/range-preset.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/components/range-preset/range-preset.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/components/header/header.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/components/header/header.template.html","../../../projects/nice-ui-kit-v2/src/lib/pipes/localized-date.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/date-range-picker.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/date-range-picker.template.html","../../../projects/nice-ui-kit-v2/src/lib/pipes/boolean.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/capitalize-first-letter.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/ceil.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/entries.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/find-by-key.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/first-letter.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/floor.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/join-if-defined.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/link.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/localized-boolean.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/localized-currency.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/localized-date-only.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/minutes-to-time.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/number-to-ordinal-indicator.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/pad.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/phone.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/postal-code.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/round.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/range.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/seconds-to-time.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/sanitize-bypass.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/track-by-prop.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/pipes/pipes.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/date-range-picker/date-range-picker.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/drawer/drawer.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/config/config.constants.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/config/config.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/config/config.module.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/media-watcher/media-watcher.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/media-watcher/media-watcher.module.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/splash-screen/splash-screen.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/splash-screen/splash-screen.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/drawer/drawer.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/drawer/drawer.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/drawer/drawer.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/export-bottom-sheet/providers/export-bottom-sheet.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/export-bottom-sheet/export-bottom-sheet.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/export-bottom-sheet/export-bottom-sheet.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/export-bottom-sheet/export-bottom-sheet.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/form-error/form-error.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/form-error/control-status.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/form-error/form-error.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/horizontal-stepper/horizontal-stepper.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/horizontal-stepper/horizontal-stepper.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/horizontal-stepper/step.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/horizontal-stepper/horizontal-stepper.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/image-cropper/resize-canvas.ts","../../../projects/nice-ui-kit-v2/src/lib/components/image-cropper/image-cropper.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/image-cropper/image-cropper.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/image-cropper/image-cropper-area.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/image-cropper/image-cropper.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/layout/layout.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/layout/layout.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/loading-spinner/loading-spinner.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/loading-spinner/loading-spinner.template.html","../../../projects/nice-ui-kit-v2/src/lib/providers/overlay/dynamic-overlay-container.service.ts","../../../projects/nice-ui-kit-v2/src/lib/providers/overlay/dynamic-overlay.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/loading-spinner/loading.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/components/loading-spinner/loading.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/loading-spinner/loading-spinner.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/lottie/lottie.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/lottie/lottie.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/lottie/lottie.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/components/hint-component-base.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/navigation.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/navigation.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/basic/basic.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/basic/basic.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/divider/divider.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/divider/divider.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/pipes/should-hide.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/branch/branch.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/branch/branch.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/spacer/spacer.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/components/spacer/spacer.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/horizontal.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/horizontal/horizontal.component.html","../../../projects/nice-ui-kit-v2/src/lib/directives/scrollbar/scrollbar.types.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/scrollbar/scrollbar.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/scrollbar/scrollbar.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/providers/hint.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/directives/show-hint.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/pipes/should-show-hint.pipe.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/basic/basic.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/basic/basic.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/divider/divider.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/divider/divider.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/spacer/spacer.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/spacer/spacer.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/collapsable/collapsable.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/collapsable/collapsable.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/group/group.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/group/group.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/aside/aside.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/components/aside/aside.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/vertical.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/vertical/vertical.component.html","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/navigation.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/providers/hide-item.resolver.ts","../../../projects/nice-ui-kit-v2/src/lib/components/navigation/providers/hint.resolver.ts","../../../projects/nice-ui-kit-v2/src/lib/components/search-bar/search-bar.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/search-bar/search-bar.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/search-bar/search-bar.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/components/sweet-alert/sweet-alert.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toast/toast.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toast/toast.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/toast/toast.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toast/toast.service.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toast/toast.module.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toggle-button-group/toggle-button.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toggle-button-group/toggle-button-group.component.ts","../../../projects/nice-ui-kit-v2/src/lib/components/toggle-button-group/toggle-button-group.template.html","../../../projects/nice-ui-kit-v2/src/lib/components/toggle-button-group/toggle-button-group.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/autofocus/autofocus.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/autofocus/autofocus.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/autogrow/autogrow.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/autogrow/autogrow.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list.constant.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list-items/chip-list-items.component.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list-items/chip-list-items.template.html","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/chip-list/chip-list.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/draggable-list/draggable-list.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/draggable-list/draggable-list.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/image-error-placeholder/image-error-placeholder.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/image-error-placeholder/image-error-placeholder.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/material/nice-material-style.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/material/nice-rounded-style.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/material/material.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/modals/modal-opener.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/modals/modal-on-click.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/scroll-reset/scroll-reset.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/scroll-reset/scroll-reset.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/stop-propagation/click-stop-propagation.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/stop-propagation/stop-propagation.module.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/window/prevent-close-window.directive.ts","../../../projects/nice-ui-kit-v2/src/lib/directives/window/window-directive.module.ts","../../../projects/nice-ui-kit-v2/src/lib/nice.module.ts","../../../projects/nice-ui-kit-v2/src/public-api.ts","../../../projects/nice-ui-kit-v2/src/recursyve-nice-ui-kit.v2.ts"],"sourcesContent":["import { animate, animation, style, transition, trigger, useAnimation } from \"@angular/animations\";\n\nexport class NiceAnimationCurves {\n static STANDARD_CURVE = \"cubic-bezier(0.4, 0.0, 0.2, 1)\";\n static DECELERATION_CURVE = \"cubic-bezier(0.0, 0.0, 0.2, 1)\";\n static ACCELERATION_CURVE = \"cubic-bezier(0.4, 0.0, 1, 1)\";\n static SHARP_CURVE = \"cubic-bezier(0.4, 0.0, 0.6, 1)\";\n}\n\nexport class NiceAnimationDurations {\n static COMPLEX = \"375ms\";\n static ENTERING = \"225ms\";\n static EXITING = \"195ms\";\n}\n\nconst customAnimation = animation([\n style({\n opacity: \"{{opacity}}\",\n transform: \"scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})\"\n }),\n animate(\"{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)\", style(\"*\"))\n], {\n params: {\n duration: \"200ms\",\n delay: \"0ms\",\n opacity: \"0\",\n scale: \"1\",\n x: \"0\",\n y: \"0\",\n z: \"0\"\n }\n});\n\nconst defaultAnimation = trigger(\"animate\", [transition(\"void => *\", [useAnimation(customAnimation)])]);\n\nexport { defaultAnimation };\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { NiceAnimationCurves, NiceAnimationDurations } from \"./defaults\";\n\n// -----------------------------------------------------------------------------------------------------\n// @ Expand / collapse\n// -----------------------------------------------------------------------------------------------------\nconst expandCollapse = trigger(\"expandCollapse\",\n [\n state(\"void, collapsed\",\n style({\n height: \"0\"\n })\n ),\n\n state(\"*, expanded\",\n style(\"*\")\n ),\n\n // Prevent the transition if the state is false\n transition(\"void <=> false, collapsed <=> false, expanded <=> false\", []),\n\n // Transition\n transition(\"void <=> *, collapsed <=> expanded\",\n animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\nexport { expandCollapse };\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { NiceAnimationCurves, NiceAnimationDurations } from \"./defaults\";\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in\n// -----------------------------------------------------------------------------------------------------\nconst fadeIn = trigger(\"fadeIn\",\n [\n state(\"void\",\n style({\n opacity: 0\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in top\n// -----------------------------------------------------------------------------------------------------\nconst fadeInTop = trigger(\"fadeInTop\",\n [\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(0, -100%, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in bottom\n// -----------------------------------------------------------------------------------------------------\nconst fadeInBottom = trigger(\"fadeInBottom\",\n [\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(0, 100%, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in left\n// -----------------------------------------------------------------------------------------------------\nconst fadeInLeft = trigger(\"fadeInLeft\",\n [\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(-100%, 0, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in right\n// -----------------------------------------------------------------------------------------------------\nconst fadeInRight = trigger(\"fadeInRight\",\n [\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(100%, 0, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out\n// -----------------------------------------------------------------------------------------------------\nconst fadeOut = trigger(\"fadeOut\",\n [\n state(\"*\",\n style({\n opacity: 1\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out top\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutTop = trigger(\"fadeOutTop\",\n [\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(0, -100%, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out bottom\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutBottom = trigger(\"fadeOutBottom\",\n [\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(0, 100%, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out left\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutLeft = trigger(\"fadeOutLeft\",\n [\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(-100%, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out right\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutRight = trigger(\"fadeOutRight\",\n [\n state(\"*\",\n style({\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"translate3d(100%, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\nexport { fadeIn, fadeInTop, fadeInBottom, fadeInLeft, fadeInRight, fadeOut, fadeOutTop, fadeOutBottom, fadeOutLeft, fadeOutRight };\n","import { animate, keyframes, style, transition, trigger } from \"@angular/animations\";\n\n// -----------------------------------------------------------------------------------------------------\n// @ Shake\n// -----------------------------------------------------------------------------------------------------\nconst shake = trigger(\"shake\",\n [\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *, * => true\",\n [\n animate(\"{{timings}}\",\n keyframes([\n style({\n transform: \"translate3d(0, 0, 0)\",\n offset: 0\n }),\n style({\n transform: \"translate3d(-10px, 0, 0)\",\n offset: 0.1\n }),\n style({\n transform: \"translate3d(10px, 0, 0)\",\n offset: 0.2\n }),\n style({\n transform: \"translate3d(-10px, 0, 0)\",\n offset: 0.3\n }),\n style({\n transform: \"translate3d(10px, 0, 0)\",\n offset: 0.4\n }),\n style({\n transform: \"translate3d(-10px, 0, 0)\",\n offset: 0.5\n }),\n style({\n transform: \"translate3d(10px, 0, 0)\",\n offset: 0.6\n }),\n style({\n transform: \"translate3d(-10px, 0, 0)\",\n offset: 0.7\n }),\n style({\n transform: \"translate3d(10px, 0, 0)\",\n offset: 0.8\n }),\n style({\n transform: \"translate3d(-10px, 0, 0)\",\n offset: 0.9\n }),\n style({\n transform: \"translate3d(0, 0, 0)\",\n offset: 1\n })\n ])\n )\n ],\n {\n params: {\n timings: \"0.8s cubic-bezier(0.455, 0.03, 0.515, 0.955)\"\n }\n }\n )\n ]\n);\n\nexport { shake };\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { NiceAnimationCurves, NiceAnimationDurations } from \"./defaults\";\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in top\n// -----------------------------------------------------------------------------------------------------\nconst slideInTop = trigger(\"slideInTop\",\n [\n state(\"void\",\n style({\n transform: \"translate3d(0, -100%, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in bottom\n// -----------------------------------------------------------------------------------------------------\nconst slideInBottom = trigger(\"slideInBottom\",\n [\n state(\"void\",\n style({\n transform: \"translate3d(0, 100%, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in left\n// -----------------------------------------------------------------------------------------------------\nconst slideInLeft = trigger(\"slideInLeft\",\n [\n state(\"void\",\n style({\n transform: \"translate3d(-100%, 0, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in right\n// -----------------------------------------------------------------------------------------------------\nconst slideInRight = trigger(\"slideInRight\",\n [\n state(\"void\",\n style({\n transform: \"translate3d(100%, 0, 0)\"\n })\n ),\n\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out top\n// -----------------------------------------------------------------------------------------------------\nconst slideOutTop = trigger(\"slideOutTop\",\n [\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n transform: \"translate3d(0, -100%, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out bottom\n// -----------------------------------------------------------------------------------------------------\nconst slideOutBottom = trigger(\"slideOutBottom\",\n [\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n transform: \"translate3d(0, 100%, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out left\n// -----------------------------------------------------------------------------------------------------\nconst slideOutLeft = trigger(\"slideOutLeft\",\n [\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n transform: \"translate3d(-100%, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out right\n// -----------------------------------------------------------------------------------------------------\nconst slideOutRight = trigger(\"slideOutRight\",\n [\n state(\"*\",\n style({\n transform: \"translate3d(0, 0, 0)\"\n })\n ),\n\n state(\"void\",\n style({\n transform: \"translate3d(100%, 0, 0)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\nexport { slideInTop, slideInBottom, slideInLeft, slideInRight, slideOutTop, slideOutBottom, slideOutLeft, slideOutRight };\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { NiceAnimationCurves, NiceAnimationDurations } from \"./defaults\";\n\n// -----------------------------------------------------------------------------------------------------\n// @ Zoom in\n// -----------------------------------------------------------------------------------------------------\nconst zoomIn = trigger(\"zoomIn\",\n [\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"scale(0.5)\"\n })\n ),\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"scale(1)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"void => false\", []),\n\n // Transition\n transition(\"void => *\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.ENTERING} ${NiceAnimationCurves.DECELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Zoom out\n// -----------------------------------------------------------------------------------------------------\nconst zoomOut = trigger(\"zoomOut\",\n [\n\n state(\"*\",\n style({\n opacity: 1,\n transform: \"scale(1)\"\n })\n ),\n\n state(\"void\",\n style({\n opacity: 0,\n transform: \"scale(0.5)\"\n })\n ),\n\n // Prevent the transition if the state is false\n transition(\"false => void\", []),\n\n // Transition\n transition(\"* => void\", animate(\"{{timings}}\"),\n {\n params: {\n timings: `${NiceAnimationDurations.EXITING} ${NiceAnimationCurves.ACCELERATION_CURVE}`\n }\n }\n )\n ]\n);\n\nexport { zoomIn, zoomOut };\n\n","import { defaultAnimation } from \"./defaults\";\nimport { expandCollapse } from \"./expand-collapse\";\nimport {\n fadeIn,\n fadeInBottom,\n fadeInLeft,\n fadeInRight,\n fadeInTop,\n fadeOut,\n fadeOutBottom,\n fadeOutLeft,\n fadeOutRight,\n fadeOutTop\n} from \"./fade\";\nimport { shake } from \"./shake\";\nimport { slideInBottom, slideInLeft, slideInRight, slideInTop, slideOutBottom, slideOutLeft, slideOutRight, slideOutTop } from \"./slide\";\nimport { zoomIn, zoomOut } from \"./zoom\";\n\nexport const niceAnimations = [\n defaultAnimation,\n expandCollapse,\n fadeIn, fadeInTop, fadeInBottom, fadeInLeft, fadeInRight,\n fadeOut, fadeOutTop, fadeOutBottom, fadeOutLeft, fadeOutRight,\n shake,\n slideInTop, slideInBottom, slideInLeft, slideInRight,\n slideOutTop, slideOutBottom, slideOutLeft, slideOutRight,\n zoomIn, zoomOut\n];\n","export abstract class NiceApiException<Code> {\n public abstract code: Code;\n}\n","import { HttpErrorResponse } from \"@angular/common/http\";\nimport { NiceApiException } from \"./api.exception\";\n\nexport abstract class NiceHttpExceptionFactory<Code = any> {\n public transform(error: HttpErrorResponse): NiceApiException<Code> | HttpErrorResponse {\n if (error.error?.message === undefined) {\n return error;\n }\n return this.transformCodeError(error.error.message, error.error);\n }\n\n protected abstract transformCodeError(code: Code, data: any): NiceApiException<Code>;\n}\n","import { HttpContextToken, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from \"@angular/common/http\";\nimport { Injectable, Type } from \"@angular/core\";\nimport { plainToInstance } from \"class-transformer\";\nimport { map } from \"rxjs/operators\";\n\nexport const TRANSFORM_TYPE = new HttpContextToken<Type<any>>(() => null);\n\n@Injectable()\nexport class NiceTransformResponseInterceptor implements HttpInterceptor {\n public intercept(req: HttpRequest<any>, next: HttpHandler) {\n return next.handle(req).pipe(\n map(event => {\n if (event instanceof HttpResponse) {\n const type = req.context.get(TRANSFORM_TYPE);\n if (!type) {\n return event;\n }\n\n return event.clone({\n body: plainToInstance(type, event.body)\n });\n }\n\n return event;\n })\n );\n }\n}\n","import { HttpClient, HttpContext, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Type } from \"@angular/core\";\nimport { catchError, Observable } from \"rxjs\";\nimport { AbstractConstructor, Constructor } from \"../types/constructor\";\nimport { NiceHttpExceptionFactory } from \"./exceptions/exception.factory\";\nimport { TRANSFORM_TYPE } from \"./interceptors/transform-response.interceptor\";\n\nexport interface HttpOptions {\n type?: Type<any>;\n context?: HttpContext;\n headers?: HttpHeaders | {\n [header: string]: string | string[];\n };\n responseType?: \"text\" | \"json\" | \"arraybuffer\" | \"blob\";\n params?: HttpParams | {\n [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean>;\n };\n}\n\nexport interface NiceApiDefinition {\n url(route?: string): string;\n delete<T>(route?: string, options?: HttpOptions): Observable<T>;\n get<T>(route?: string, options?: HttpOptions): Observable<T>;\n patch<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n post<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n put<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n}\n\nexport interface HasNiceApiDefinition {\n exceptionFactory: NiceHttpExceptionFactory;\n httpClient: HttpClient;\n apiUrl: string;\n path: string;\n}\n\ntype NiceApiDefinitionCtor = Constructor<NiceApiDefinition> & AbstractConstructor<NiceApiDefinition>;\n\nexport function mixinNiceApi<C extends AbstractConstructor<HasNiceApiDefinition>>(\n base: C,\n): NiceApiDefinitionCtor & C;\nexport function mixinNiceApi<C extends Constructor<HasNiceApiDefinition>>(\n base: C,\n): NiceApiDefinitionCtor & C {\n return class extends base {\n public url(route = \"\"): string {\n if (route === \"\" && (!this.path || this.path === \"\")) {\n return this.apiUrl;\n } else if (route === \"\") {\n return `${this.apiUrl}/${this.path}`;\n }\n return `${this.apiUrl}/${this.path}/${route}`;\n }\n\n public delete<T>(route = \"\", options?: HttpOptions): Observable<T> {\n return this.httpClient.delete<T>(this.url(route), this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n public get<T>(route = \"\", options?: HttpOptions): Observable<T> {\n return this.httpClient.get<T>(this.url(route), this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n public head<T>(route = \"\", options?: HttpOptions): Observable<T> {\n return this.httpClient.head<T>(this.url(route), this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n public patch<T>(route = \"\", body?: any, options?: HttpOptions): Observable<T> {\n return this.httpClient.patch<T>(this.url(route), body, this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n public post<T>(route = \"\", body?: any, options?: HttpOptions): Observable<T> {\n return this.httpClient.post<T>(this.url(route), body, this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n public put<T>(route = \"\", body?: any, options?: HttpOptions): Observable<T> {\n return this.httpClient.put<T>(this.url(route), body, this.transformOptions(options) as any).pipe(\n catchError(e => this.transformError(e))\n );\n }\n\n private transformError(error: HttpErrorResponse): Observable<any> {\n if (!this.exceptionFactory) {\n throw error;\n }\n throw this.exceptionFactory.transform(error);\n }\n\n private transformOptions(options?: HttpOptions): HttpOptions {\n if (!options) {\n return options;\n }\n\n const { type, context: c, ...values } = options;\n const context = c ?? new HttpContext();\n if (type) {\n context.set(TRANSFORM_TYPE, type);\n }\n return {\n ...values,\n responseType: values.responseType ?? \"json\",\n context\n };\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, ReplaySubject } from \"rxjs\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceAlertService {\n private readonly _onDismiss: ReplaySubject<string> = new ReplaySubject<string>(1);\n private readonly _onShow: ReplaySubject<string> = new ReplaySubject<string>(1);\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Getter for onDismiss\n */\n public get onDismiss(): Observable<any> {\n return this._onDismiss.asObservable();\n }\n\n /**\n * Getter for onShow\n */\n public get onShow(): Observable<any> {\n return this._onShow.asObservable();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Dismiss the alert\n */\n public dismiss(name: string): void {\n // Return if the name is not provided\n if (!name) {\n return;\n }\n\n // Execute the observable\n this._onDismiss.next(name);\n }\n\n /**\n * Show the dismissed alert\n */\n public show(name: string): void {\n // Return if the name is not provided\n if (!name) {\n return;\n }\n\n // Execute the observable\n this._onShow.next(name);\n }\n}\n","import { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceUtilsService {\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Generates a random id\n */\n public randomId(length: number = 10): string {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let name = \"\";\n\n for (let i = 0; i < 10; i++) {\n name += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return name;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceUtilsService } from \"./utils.service\";\n\n@NgModule({\n providers: [NiceUtilsService]\n})\nexport class NiceUtilsModule {\n constructor(private _niceUtilsService: NiceUtilsService) {}\n}\n","import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { niceAnimations } from \"../../animations\";\nimport { NiceUtilsService } from \"../../providers/utils\";\nimport { NiceAlertService } from \"./alert.service\";\nimport { NiceAlertType, NiceAlertAppearance, NiceAlertColor } from \"./alert.types\";\n\n@Component({\n selector: \"nice-alert\",\n templateUrl: \"./alert.template.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: niceAnimations,\n exportAs: \"niceAlert\"\n})\nexport class NiceAlertComponent implements OnChanges, OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_dismissible: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_dismissed: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_disableAnimation: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_showIcon: BooleanInput;\n\n @Input()\n public appearance: NiceAlertAppearance = \"soft\";\n\n @Input()\n public dismissed = false;\n\n @Input()\n public dismissible = false;\n\n @Input()\n public disableAnimation = false;\n\n @Input()\n public name: string = this._niceUtilsService.randomId();\n\n @Input()\n public showIcon = true;\n\n @Input()\n public type: NiceAlertType = \"primary\";\n\n @Input()\n public color?: NiceAlertColor;\n\n @Output()\n public readonly dismissedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n private _unsubscribeAll: Subject<void> = new Subject<void>();\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceAlertService: NiceAlertService,\n private _niceUtilsService: NiceUtilsService\n ) {}\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component classes\n */\n @HostBinding(\"class\")\n public get classList(): any {\n let types: { [className: string]: boolean } = {\n \"nice-alert-type-primary\": this.type === \"primary\",\n \"nice-alert-type-accent\": this.type === \"accent\",\n \"nice-alert-type-warn\": this.type === \"warn\",\n \"nice-alert-type-basic\": this.type === \"basic\",\n \"nice-alert-type-info\": this.type === \"info\",\n \"nice-alert-type-success\": this.type === \"success\",\n \"nice-alert-type-warning\": this.type === \"warning\",\n \"nice-alert-type-error\": this.type === \"error\"\n };\n\n if (this.color) {\n types = {\n \"nice-alert-type-primary\": this.color === \"primary\",\n \"nice-alert-type-accent\": this.color === \"accent\",\n \"nice-alert-type-warn\": this.color === \"warn\"\n };\n }\n\n return {\n \"nice-alert-appearance-border\": this.appearance === \"border\",\n \"nice-alert-appearance-fill\": this.appearance === \"fill\",\n \"nice-alert-appearance-outline\": this.appearance === \"outline\",\n \"nice-alert-appearance-soft\": this.appearance === \"soft\",\n \"nice-alert-dismissed\": this.dismissed,\n \"nice-alert-dismissible\": this.dismissible,\n \"nice-alert-show-icon\": this.showIcon,\n ...types\n };\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n *\n * @param changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Dismissed\n if (\"dismissed\" in changes) {\n // Coerce the value to a boolean\n this.dismissed = coerceBooleanProperty(changes.dismissed.currentValue);\n\n // Dismiss/show the alert\n this._toggleDismiss(this.dismissed);\n }\n\n // Dismissible\n if (\"dismissible\" in changes) {\n // Coerce the value to a boolean\n this.dismissible = coerceBooleanProperty(changes.dismissible.currentValue);\n }\n\n // Disable animation\n if (\"disableAnimation\" in changes) {\n // Coerce the value to a boolean\n this.disableAnimation = coerceBooleanProperty(changes.disableAnimation.currentValue);\n }\n\n // Show icon\n if (\"showIcon\" in changes) {\n // Coerce the value to a boolean\n this.showIcon = coerceBooleanProperty(changes.showIcon.currentValue);\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Subscribe to the dismiss calls\n this._niceAlertService.onDismiss\n .pipe(\n filter((name) => this.name === name),\n takeUntil(this._unsubscribeAll)\n )\n .subscribe(() => {\n\n // Dismiss the alert\n this.dismiss();\n });\n\n // Subscribe to the show calls\n this._niceAlertService.onShow\n .pipe(\n filter((name) => this.name === name),\n takeUntil(this._unsubscribeAll)\n )\n .subscribe(() => {\n\n // Show the alert\n this.show();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next();\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Dismiss the alert\n */\n public dismiss(): void {\n // Return if the alert is already dismissed\n if (this.dismissed) {\n return;\n }\n\n // Dismiss the alert\n this._toggleDismiss(true);\n }\n\n /**\n * Show the dismissed alert\n */\n public show(): void {\n // Return if the alert is already showing\n if (!this.dismissed) {\n return;\n }\n\n // Show the alert\n this._toggleDismiss(false);\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Dismiss/show the alert\n *\n * @param dismissed\n * @private\n */\n private _toggleDismiss(dismissed: boolean): void {\n // Return if the alert is not dismissible\n if (!this.dismissible) {\n return;\n }\n\n // Set the dismissed\n this.dismissed = dismissed;\n\n // Execute the observable\n this.dismissedChanged.next(this.dismissed);\n\n // Notify the change detector\n this._changeDetectorRef.markForCheck();\n }\n}\n","<div\n class=\"nice-alert-container\"\n *ngIf=\"!dismissible || dismissible && !dismissed\"\n [@fadeIn]=\"!dismissed && !disableAnimation\"\n [@fadeOut]=\"!dismissed && !disableAnimation\">\n\n <!-- Border -->\n <div\n class=\"nice-alert-border\"\n *ngIf=\"appearance === 'border'\"></div>\n\n <!-- Icon -->\n <div\n class=\"nice-alert-icon\"\n *ngIf=\"showIcon\">\n\n <!-- Custom icon -->\n <div class=\"nice-alert-custom-icon\">\n <ng-content select=\"[niceAlertIcon]\"></ng-content>\n </div>\n\n <!-- Default icons -->\n <div class=\"nice-alert-default-icon\">\n\n <mat-icon\n *ngIf=\"type === 'primary'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'accent'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warn'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'basic'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'info'\"\n [svgIcon]=\"'heroicons_solid:information-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'success'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warning'\"\n [svgIcon]=\"'heroicons_solid:exclamation'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'error'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n </div>\n\n </div>\n\n <!-- Content -->\n <div class=\"nice-alert-content\">\n\n <div class=\"nice-alert-title\">\n <ng-content select=\"[niceAlertTitle]\"></ng-content>\n </div>\n\n <div class=\"nice-alert-message\">\n <ng-content></ng-content>\n </div>\n\n </div>\n\n <!-- Dismiss button -->\n <button\n class=\"nice-alert-dismiss-button\"\n mat-icon-button\n (click)=\"dismiss()\">\n <mat-icon [svgIcon]=\"'heroicons_solid:x'\"></mat-icon>\n </button>\n\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { NiceAlertComponent } from \"./alert.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule\n ],\n declarations: [\n NiceAlertComponent\n ],\n exports: [\n NiceAlertComponent\n ]\n})\nexport class NiceAlertModule {\n}\n","export const isNullOrUndefined = (value: unknown): boolean => {\n return TypeUtils.isNullOrUndefined(value);\n};\n\nexport const isNotNullOrUndefined = (value: unknown): boolean => {\n return TypeUtils.isNotNullOrUndefined(value);\n};\n\nexport class TypeUtils {\n public static isNullOrUndefined(value: unknown): boolean {\n return value === null || value === undefined;\n }\n\n public static isNotNullOrUndefined(value: unknown): boolean {\n return !TypeUtils.isNullOrUndefined(value);\n }\n}\n","import { isNullOrUndefined } from \"./type.utils\";\n\nexport class ArrayUtils {\n public static joinIfDefined(array: any[], join = \" \"): string {\n return array?.filter(val => val)?.join(join);\n }\n\n public static uniqueObjects<Item>(array: Item[], keySelector: (item: Item) => unknown): Item[] {\n return Array.from(new Map(array.map(x => [keySelector(x), x])).values());\n }\n\n public static unique<T>(\n array: T[],\n comparator: (value1: T, value2: T) => boolean = (value1: T, value2: T) => value1 === value2\n ): T[] {\n if (isNullOrUndefined(array)) {\n return array;\n }\n\n const newArray: T[] = [];\n for (const value of array) {\n if (newArray.findIndex((valueInArray) => comparator(valueInArray, value)) < 0) {\n newArray.push(value);\n }\n }\n\n return newArray;\n }\n\n public static equals(arr1: any[], arr2: any[], options: { shallow: boolean, ordered: boolean } = { shallow: true, ordered: false }): boolean {\n if (options.shallow && !options.ordered) {\n return this.unorderedShallowEquals(arr1, arr2);\n }\n\n // TODO: Implement other types of equals.\n throw new Error(\"Not implemented.\");\n }\n\n private static unorderedShallowEquals(arr1: any[], arr2: any[]): boolean {\n return (arr1 ?? []).every((arr1Element) => (arr2 ?? []).includes(arr1Element))\n && (arr2 ?? []).every((arr2Element) => (arr1 ?? []).includes(arr2Element));\n }\n\n public static sortByKey(array: any[], key: string) {\n return array.sort(ArrayUtils.sortByKeyFn(key));\n }\n\n public static sortByKeyFn(key: string) {\n return (a, b) => {\n if (a[key] < b[key]) {\n return -1;\n }\n if (a[key] > b[key]) {\n return 1;\n }\n return 0;\n };\n }\n\n public static groupBy<Item, Key, Value>(\n array: Item[],\n keySelector: (item: Item) => Key,\n valueSelector: (item: Item) => Value[] | Value\n ): Map<Key, Value[]> {\n const groups: Map<Key, Value[]> = new Map<Key, Value[]>();\n for (const item of array) {\n const key: Key = keySelector(item);\n if (key == null) {\n continue;\n }\n let value: Value[] | Value = valueSelector(item);\n if (value == null) {\n continue;\n }\n\n if (!(value instanceof Array)) {\n value = [value];\n }\n\n if (!groups.has(key)) {\n groups.set(key, value);\n } else {\n groups.get(key).push(...value);\n }\n }\n return groups;\n }\n}\n\ndeclare global {\n interface Array<T> {\n distinct<T>(): Array<T>;\n\n groupBy<T>(value: T): T[];\n\n includesWithCallback(callbackfn: (value: T, index: number, array: T[]) => boolean): boolean;\n\n pushOrRemove<T>(value: T): void;\n\n replace<T>(item: T, ...newItems: T[]): Array<T>;\n\n skipNullValues(): T[];\n\n difference<T>(...not: T[]): T[];\n }\n}\n\nArray.prototype.distinct = function <T>(): T[] {\n return this.filter((value, index) => {\n return this.indexOf(value) === index;\n });\n};\n\nArray.prototype.groupBy = function <T>(property: T): T[] {\n return this.reduce((acc, obj) => {\n const key = obj[property];\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(obj);\n return acc;\n }, {});\n};\n\nArray.prototype.includesWithCallback = function <T>(callbackfn: (value: T, index: number, array: T[]) => boolean) {\n return this.findIndex(callbackfn) < 0;\n};\n\nArray.prototype.pushOrRemove = function <T>(value: T): void {\n const index = this.indexOf(value);\n if (index !== -1) {\n this.splice(index, 1);\n } else {\n this.push(value);\n }\n};\n\nArray.prototype.replace = function <T>(item: T, ...newItems: T[]): T[] {\n return [...this.slice(0, this.indexOf(item)), ...newItems, ...this.slice(this.indexOf(item) + 1, this.length)];\n};\n\nArray.prototype.skipNullValues = function <T>(): T[] {\n return this.filter(x => !!x);\n};\n\nArray.prototype.difference = function <T>(...not: T[]) {\n return this.filter(i => !not.includes(i));\n};\n","export class CaseUtils {\n // myValue -> my-value\n public static toCamelFromKebab(data: string): string {\n return data.replace(/(-\\w)/g, (m) => m[1].toUpperCase());\n }\n\n // MyValue -> my_value\n public static toSnakeCaseFromPascalCase(str: string): string {\n return str.replace(/[A-Z]/g, (letter, index) => {\n if (index === 0) {\n return letter.toLowerCase();\n }\n const pastLetter = str[index - 1] as string;\n const nextLetter = str[index + 1] as string;\n if (pastLetter.toLowerCase() === pastLetter) {\n return `_${letter.toLowerCase()}`;\n }\n if (nextLetter && nextLetter.toLowerCase() === nextLetter) {\n return `_${letter.toLowerCase()}`;\n }\n return letter.toLowerCase();\n });\n }\n\n // myValue -> my_value\n public static toSnakeCaseFromCamelCase(str: string): string {\n return this.toSnakeCaseFromPascalCase(this.capitalizeFirstLetter(str));\n }\n\n // my_value -> myValue\n public static toCamelCaseFromSnakeCase(stringToConvert: string): string {\n return stringToConvert.replace(/(^[a-z]|_[a-z])/g, (letter) => {\n if (letter.length === 1) {\n return letter;\n }\n\n return letter[1].toUpperCase();\n });\n }\n\n // MyValue -> my-value\n public static toKebabCasePascalCase(str: string): string {\n return str\n .replace(/[A-Z]/g, (letter, index) => {\n return index === 0 ? letter.toLowerCase() : \"-\" + letter.toLowerCase();\n })\n .replace(/_/g, \"-\");\n }\n\n // my_value -> MyValue\n public static toPascalCaseFromSnakeCase(str: string): string {\n return str.replace(/(^[a-z]|_[a-z])/g, (letter) => {\n if (letter.length === 1) {\n return letter.toUpperCase();\n }\n\n return letter[1].toUpperCase();\n });\n }\n\n public static capitalizeFirstLetter(str: string): string {\n const firstLetter = str.substr(0, 1);\n return firstLetter.toUpperCase() + str.substr(1);\n }\n}\n","export class ColorsUtils {\n /**\n * https://codepen.io/cferdinandi/pen/Yomroj\n *\n * (c) 2019 Chris Ferdinandi, MIT License, https://gomakethings.com\n * Derived from work by Brian Suda, https://24ways.org/2010/calculating-color-contrast/\n */\n public static contrastFromHex(hex: string): string {\n if (hex.slice(0, 1) === \"#\") {\n hex = hex.slice(1);\n }\n\n // If a three-character hex, make six-character\n if (hex.length === 3) {\n hex = hex\n .split(\"\")\n .map((i) => i + i)\n .join(\"\");\n }\n\n // Convert to RGB value\n const r = parseInt(hex.substr(0, 2), 16);\n const g = parseInt(hex.substr(2, 2), 16);\n const b = parseInt(hex.substr(4, 2), 16);\n\n // Get YIQ ratio\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n // Check contrast\n return yiq >= 128 ? \"000000\" : \"ffffff\";\n }\n}\n","import { isNullOrUndefined } from \"./type.utils\";\n\nexport class DateUtils {\n public static currentYear(): number {\n return new Date().getUTCFullYear();\n }\n\n public static extractTimeAsString(date: Date): string {\n if (!date) {\n return null;\n }\n\n const hours = date.getHours();\n const minutes = date.getMinutes();\n\n return `${(hours ?? \"\").toString().padStart(2, \"0\")}:${(minutes ?? \"\").toString().padStart(2, \"0\")}`;\n }\n\n public static setTimeFromString(date: Date, time: string): Date {\n if (isNullOrUndefined(time) || time.length === 0 || !time.includes(\":\")) {\n return date;\n }\n\n const parts = time.split(\":\");\n if (parts.length !== 2 || isNaN(+parts[0]) || isNaN(+parts[1])) {\n return date;\n }\n\n const [hours, minutes] = parts.map((part) => +part);\n const updatedDate = new Date(date);\n updatedDate.setHours(hours, minutes);\n return updatedDate;\n }\n}\n\ndeclare global {\n export interface Date {\n getSeason(): string;\n getYear(): number;\n }\n}\n\nDate.prototype.getSeason = function(): \"winter\" | \"spring\" | \"summer\" | \"fall\" {\n const month = this.getUTCMonth();\n const date = this.getUTCDate();\n\n if ((month === 11 && date >= 21) || (month >= 0 && month <= 1) || (month === 2 && date <= 19)) {\n return \"winter\";\n } else if ((month === 2 && date >= 20) || (month >= 3 && month <= 4) || (month === 5 && date <= 20)) {\n return \"spring\";\n } else if ((month === 5 && date >= 21) || (month >= 6 && month <= 7) || (month === 8 && date <= 22)) {\n return \"summer\";\n } else {\n return \"fall\";\n }\n};\n\nDate.prototype.getYear = function (): number {\n return +this.getFullYear().toString().substr(-2);\n};\n","export class FileUtils {\n public static async getFileFromUrl(url?: string, name = \"\"): Promise<File | undefined> {\n if (!url) {\n return undefined;\n }\n const res = await fetch(url);\n return new File([await res.blob()], name);\n }\n\n public static async selectFile(accept: string, multiple = false): Promise<File | File[]> {\n return new Promise(resolve => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.multiple = multiple;\n input.accept = accept;\n\n input.onchange = () => {\n if (input.files) {\n const files = Array.from(input.files);\n return resolve(multiple ? files : files[0]);\n }\n\n resolve(null);\n };\n\n input.click();\n });\n }\n\n public static downloadFile(fileName: string, content: Blob, downloadLink?: HTMLAnchorElement): void {\n if (!downloadLink) {\n downloadLink = document.createElement(\"a\");\n document.body.appendChild(downloadLink);\n downloadLink.style.display = \"none\";\n }\n\n const dataUrl = window.URL.createObjectURL(content);\n downloadLink.href = dataUrl;\n downloadLink.download = fileName;\n downloadLink.click();\n window.URL.revokeObjectURL(dataUrl);\n document.body.removeChild(downloadLink);\n }\n\n public static downloadUrl(url: string): void {\n const downloadLink = document.createElement(\"a\");\n document.body.appendChild(downloadLink);\n downloadLink.style.display = \"none\";\n downloadLink.href = url;\n downloadLink.click();\n document.body.removeChild(downloadLink);\n }\n\n public static openPrintableWindow(content: string): void {\n const win = window.open(\"\");\n if (!win) {\n return;\n }\n\n win.document.open();\n win.document.write(content);\n win.document.close();\n }\n\n public static filenameToExtension(filename: string): string {\n const re = /(?:\\.([^.]+))?$/;\n return re.exec(filename)[1];\n }\n\n public static getDataUrl(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = error => reject(error);\n });\n }\n\n public static async getFileFromDataUrl(data: string, name: string): Promise<File> {\n const base64Response = await fetch(data);\n const blob = await base64Response.blob();\n const [, type] = blob.type.split(\"/\");\n return new File([blob], `${name}.${type}`, {\n lastModified: Date.now(),\n type: blob.type\n });\n }\n}\n","export class FontAwesomeUtils {\n public static fileExtensionToIcon(extension: string): string {\n switch (extension) {\n case \"pdf\":\n return \"fa-file-pdf\";\n case \"doc\":\n case \"docx\":\n return \"fa-file-word\";\n case \"xlsx\":\n case \"xls\":\n return \"fa-file-excel\";\n case \"csv\":\n return \"fa-file-csv\";\n case \"ppt\":\n case \"pptx\":\n return \"fa-file-powerpoint\";\n case \"mp4\":\n case \"mov\":\n case \"wmv\":\n case \"webm\":\n return \"fa-file-video\";\n case \"mp3\":\n case \"wav\":\n return \"fa-file-audio\";\n case \"jpeg\":\n case \"jpg\":\n case \"png\":\n case \"gif\":\n case \"svg\":\n return \"fa-file-image\";\n case \"zip\":\n return \"fa-file-archive\";\n case \"txt\":\n return \"fa-file-alt\";\n default:\n return \"fa-file\";\n }\n }\n}\n","import { isNullOrUndefined } from \"./type.utils\";\n\nexport class FormDataUtils {\n public static appendFormDataWithDto(form: FormData, value: object): void {\n if (typeof value !== \"object\") {\n return;\n }\n\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n FormDataUtils.appendFormDataWithValue(form, value[key], key);\n }\n }\n }\n\n // FormData does not handle object and arrays, instead we add them as:\n // Object: forms.append(name[key], value) (e.g. forms.append(\"company-admin[name]\", \"digitalmomentum\"))\n // Array: forms.append(name[index], value) (e.g. forms.append(\"expressions[0]\", \"incroyable\"))\n // Recursive method that appends values, objects and arrays to the forms as name.\n public static appendFormDataWithValue(form: FormData, value, name) {\n if (isNullOrUndefined(value)) {\n return;\n }\n\n if (value instanceof Array) {\n for (let i = 0; i < value.length; ++i) {\n FormDataUtils.appendFormDataWithValue(form, value[i], name + `[${i}]`);\n }\n } else if (value instanceof Date) {\n form.append(name, value.toISOString());\n } else if (value instanceof Object) {\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n FormDataUtils.appendFormDataWithValue(form, value[key], name + `[${key}]`);\n }\n }\n } else {\n form.append(name, value);\n }\n }\n}\n","export enum HttpStatusCodes {\n CONTINUE = 100,\n SWITCHING_PROTOCOLS = 101,\n PROCESSING = 102,\n OK = 200,\n CREATED = 201,\n ACCEPTED = 202,\n NON_AUTHORITATIVE_INFORMATION = 203,\n NO_CONTENT = 204,\n RESET_CONTENT = 205,\n PARTIAL_CONTENT = 206,\n AMBIGUOUS = 300,\n MOVED_PERMANENTLY = 301,\n FOUND = 302,\n SEE_OTHER = 303,\n NOT_MODIFIED = 304,\n TEMPORARY_REDIRECT = 307,\n PERMANENT_REDIRECT = 308,\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n PAYMENT_REQUIRED = 402,\n FORBIDDEN = 403,\n NOT_FOUND = 404,\n METHOD_NOT_ALLOWED = 405,\n NOT_ACCEPTABLE = 406,\n PROXY_AUTHENTICATION_REQUIRED = 407,\n REQUEST_TIMEOUT = 408,\n CONFLICT = 409,\n GONE = 410,\n LENGTH_REQUIRED = 411,\n PRECONDITION_FAILED = 412,\n PAYLOAD_TOO_LARGE = 413,\n URI_TOO_LONG = 414,\n UNSUPPORTED_MEDIA_TYPE = 415,\n REQUESTED_RANGE_NOT_SATISFIABLE = 416,\n EXPECTATION_FAILED = 417,\n UNPROCESSABLE_ENTITY = 422,\n TOO_MANY_REQUESTS = 429,\n INTERNAL_SERVER_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n BAD_GATEWAY = 502,\n SERVICE_UNAVAILABLE = 503,\n GATEWAY_TIMEOUT = 504,\n HTTP_VERSION_NOT_SUPPORTED = 505\n}\n","export enum KeyboardCodes {\n ArrowUp = \"ArrowUp\",\n ArrowDown = \"ArrowDown\",\n Enter = \"Enter\",\n Shift = \"Shift\",\n Comma = \"Comma\"\n}\n","import { LexoRank } from \"lexorank\";\n\nexport class LexoRankUtils {\n public static compareStringFn(previousRank?: string, nextRank?: string): number {\n if (!previousRank || !nextRank) {\n return 0;\n }\n\n return LexoRank.parse(previousRank).compareTo(LexoRank.parse(nextRank));\n }\n\n public static compareFn(previousRank: LexoRank, nextRank: LexoRank): number {\n return previousRank.compareTo(nextRank);\n }\n\n public static getNewRank(afterRank?: string, beforeRank?: string): string {\n if (afterRank && beforeRank) {\n if (LexoRank.parse(beforeRank).equals(LexoRank.parse(afterRank))) {\n return LexoRank.parse(afterRank).genPrev().toString();\n }\n\n return LexoRank.parse(afterRank).between(LexoRank.parse(beforeRank)).toString();\n }\n\n if (afterRank) {\n return LexoRank.parse(afterRank).genPrev().toString();\n }\n\n if (beforeRank) {\n return LexoRank.parse(beforeRank).genNext().toString();\n }\n\n return LexoRank.middle().toString();\n }\n}\n","export interface ModalData {\n mode: ModalMode;\n}\n\nexport enum ModalMode {\n Create,\n Edit\n}\n","export class NumberUtils {\n}\n\ndeclare global {\n interface Number {\n inRange(a: number, b: number): boolean;\n }\n}\n\nNumber.prototype.inRange = function (a: number, b: number): boolean {\n return this >= a && this <= b;\n};\n","import { isNullOrUndefined } from \"./type.utils\";\n\nexport class ObjectUtils {\n public static transformStringProperties(obj: any): object {\n for (const property in obj) {\n if (obj.hasOwnProperty(property)) {\n if (typeof obj[property] === \"object\") {\n obj = ObjectUtils.transformStringProperties(obj);\n } else {\n obj = ObjectUtils.stringPropertiesToNumber(obj, property);\n }\n }\n }\n\n return obj;\n }\n\n public static stringPropertiesToNumber(obj: any, property: string): object {\n if (!isNaN(obj[property])) {\n obj[property] = +obj[property];\n }\n\n return obj;\n }\n\n public static assignDefined(target: any, source: any): object {\n Object.keys(source).map(key => {\n if (source[key] !== undefined) {\n target[key] = source[key];\n }\n });\n\n return target;\n }\n\n public static areObjectsEqual(obj1: any, obj2: any): boolean {\n const keys1 = Object.keys(obj1).sort();\n const keys2 = Object.keys(obj2).sort();\n if (keys1.length !== keys2.length) {\n return false;\n }\n if (!keys1.every((k, i) => k === keys2[i])) {\n return false;\n }\n return keys1.every(kk => {\n const v1 = obj1[kk];\n const v2 = obj2[kk];\n if (Array.isArray(v1)) {\n return ObjectUtils.areObjectsEqual(v1, v2);\n } else if (typeof v1 === \"object\" && v1 !== null) {\n return ObjectUtils.areObjectsEqual(v1, v2);\n } else {\n return v1 === v2;\n }\n });\n }\n\n public static deepCopy(obj: any): any {\n // Handle the primitive types, null and undefined\n if (obj == null || typeof obj != \"object\") {\n return obj;\n }\n\n // Handle Date\n if (obj instanceof Date) {\n const copy = new Date();\n copy.setTime(obj.getTime());\n return copy;\n }\n\n // Handle Array\n if (obj instanceof Array) {\n const copy = [];\n for (const item of obj) {\n copy.push(ObjectUtils.deepCopy(item));\n }\n return copy;\n }\n\n // Handle Object\n if (obj instanceof Object) {\n const copy = {};\n for (const attr in obj) {\n if (obj.hasOwnProperty(attr)) {\n copy[attr] = ObjectUtils.deepCopy(obj[attr]);\n }\n }\n return copy;\n }\n\n throw new Error(\"Unable to copy obj! Its type isn't supported.\");\n }\n\n // To do an immutable assignment, we need to first deep copy the model and then run the deep assign.\n public static immutableDeepAssign<Source, Target>(key: string, deepObj: Source, obj: Target): Target {\n const output = ObjectUtils.deepCopy(obj);\n ObjectUtils.deepAssign(key, deepObj, output);\n return output;\n }\n\n // Does a shallow assignment on a deep value. The value is located by the key.\n public static deepAssign<Source, Target>(key: string, deepObj: Source, obj: Target) {\n ObjectUtils.internalDeepAssign(key?.split(\".\"), deepObj, obj);\n }\n\n private static internalDeepAssign<Source, Target>(segments: string[], deepObj: Source, obj: Target) {\n // No more depth to be navigated through, we can do the shallow assignment.\n if (segments?.length === 0) {\n Object.assign(obj, deepObj);\n return;\n }\n\n if (isNullOrUndefined(obj)) {\n obj = {} as Target;\n }\n\n const segment = segments.shift();\n // If we cannot complete the key's path, we create it.\n if (!obj.hasOwnProperty(segment)) {\n obj[segment] = {};\n }\n\n ObjectUtils.internalDeepAssign(segments, deepObj, obj[segment]);\n }\n}\n","export class PromiseUtils {}\n\ndeclare global {\n export interface PromiseConstructor {\n delay(ms: number): Promise<void>;\n }\n}\n\n// tslint:disable-next-line:only-arrow-functions\nPromise.delay = function(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n};\n","import { HttpParams } from \"@angular/common/http\";\n\nexport class QueryParamsUtils {\n public static fromObject(obj: any): string {\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) {\n delete obj[key];\n }\n });\n return new HttpParams({\n fromObject: obj\n }).toString();\n }\n}\n","const lowerUpperDigit8 = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,}$/;\n\nexport class RegexUtils {\n public static email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n public static password = {\n // Used as default.\n // 8 chars, lower + upper + digit.\n lowerUpperDigit8\n };\n\n public static canadianPostalCode = /^((?!.*[DFIOQU])[A-VXYa-vxy][0-9][A-Za-z] ?[0-9][A-Za-z][0-9])?$/;\n}\n","export class UrlUtils {\n public static emailUrl(email: string): string {\n return `mailto:${email}`;\n }\n\n public static directionUrl(address: string, postalCode: string): string {\n return `https://www.google.com/maps/dir/?api=1&destination=${address}+${postalCode}`;\n }\n\n public static phoneCallUrl(phone: string, ext?: string): string {\n if (ext?.length) {\n return `tel:${phone};${ext}`;\n }\n\n return `tel:${phone}`;\n }\n\n // Takes location ref and returns fragment\n // http://localhost:4200/dashboard/profile returns [\"dashboard\", \"profile\"]\n public static getCurrentUrlFragments(): string[] {\n return window.location.href.replace(\"://\", \"\").split(\"/\").slice(1);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_ASSETS_CAROUSEL_OPTIONS = new InjectionToken(\"nice_assets_options\");\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceAssetsCarouselActiveContent]\" })\nexport class NiceAssetsCarouselActiveContentDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from \"@angular/core\";\n\n@Directive({ selector: \"[niceDropzone]\"})\nexport class NiceDropzoneDirective {\n @HostBinding(\"class.file-over\")\n public fileOver: boolean;\n\n @Output()\n public filesDropped = new EventEmitter<FileList>();\n\n // Dragover listener\n @HostListener(\"dragover\", [\"$event\"])\n public onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener(\"dragleave\", [\"$event\"])\n public onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener(\"drop\", [\"$event\"])\n public ondrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n const files = event.dataTransfer.files;\n if (files.length > 0) {\n this.filesDropped.emit(files);\n }\n }\n}\n","import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CanColor, ThemePalette } from \"@angular/material/core\";\nimport { th } from \"date-fns/locale\";\nimport { niceAnimations } from \"../../animations\";\nimport { FileUtils } from \"../../utils\";\nimport { NICE_ASSETS_CAROUSEL_OPTIONS } from \"./assets-carousel.constant\";\nimport { NiceAssetsCarouselActiveContentDirective } from \"./directives/assets-carousel-active-content.directive\";\n\nexport interface NiceAssets {\n type: \"image\" | \"video\";\n id?: number | string;\n url?: string;\n base64?: string;\n file?: File;\n}\n\nexport type NiceAssetsCarouselActionIcon = { matIcon: string; svgIcon?: string; } | { matIcon?: string; svgIcon: string; };\n\nexport interface NiceAssetsCarouselActions {\n icon: NiceAssetsCarouselActionIcon;\n name: string;\n action: (active: number) => void;\n}\n\nexport interface NiceAssetsCarouselOptions {\n actionButtons?: {\n moreOptions?: NiceAssetsCarouselActionIcon;\n addPhoto?: NiceAssetsCarouselActionIcon;\n remove?: NiceAssetsCarouselActionIcon;\n };\n addPhoto?: NiceAssetsCarouselActionIcon;\n leftArrow?: NiceAssetsCarouselActionIcon;\n rightArrow?: NiceAssetsCarouselActionIcon;\n upload?: NiceAssetsCarouselActionIcon;\n}\n\n@Component({\n selector: \"nice-assets-carousel\",\n templateUrl: \"assets-carousel.template.html\",\n styleUrls: [\"assets-carousel.theme.scss\"],\n encapsulation: ViewEncapsulation.None,\n animations: niceAnimations,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAssetsCarouselComponent),\n multi: true\n }\n ]\n})\nexport class NiceAssetsCarouselComponent implements ControlValueAccessor, CanColor {\n public _activeTranslationPosition = 0;\n public _active = 0;\n public _assets: NiceAssets[] = [];\n public _activeAsset: NiceAssets;\n public _lastAsset = true;\n public _shouldTransform = false;\n public _activeVideoElement: ElementRef<HTMLVideoElement>;\n public _assetsElement: QueryList<ElementRef<HTMLDivElement>>;\n public defaultColor: ThemePalette = \"primary\";\n\n @ViewChild(\"fileInput\")\n public inputElement: ElementRef<HTMLInputElement>;\n\n @Input()\n public color: ThemePalette = this.defaultColor;\n\n @Input()\n public edit = false;\n\n @Input()\n public accept: string[] = [\"image/*\"];\n\n @Input()\n public customActions: NiceAssetsCarouselActions[] = [];\n\n @Input()\n public imagesProcessor: (fileList: FileList) => Promise<FileList>;\n\n @Input()\n public multipleUpload = false;\n\n @Input()\n public visiblePreviewAsset = 4;\n\n @Input()\n public showAddAssetContainer = true;\n\n @ContentChild(NiceAssetsCarouselActiveContentDirective, { read: TemplateRef })\n public activeContent: TemplateRef<any>;\n\n @Output()\n public activeChange = new EventEmitter<number>();\n\n @Output()\n public removedAsset = new EventEmitter<NiceAssets>();\n\n public listStyle: { transform: string } = { transform: \"translateX(0px)\" };\n\n public showOverlay: boolean;\n\n private propagate: (assets: NiceAssets[]) => void;\n\n @ViewChild(\"activeVideo\")\n public set activeVideoElement(activeVideoElement: ElementRef<HTMLVideoElement>) {\n this._activeVideoElement = activeVideoElement;\n\n if (!this._activeVideoElement || !this._assetsElement) {\n return;\n }\n\n this.startSyncVideo();\n }\n\n @ViewChildren(\"assets\")\n public set assetsElement(assetsElement: QueryList<ElementRef<HTMLDivElement>>) {\n this._assetsElement = assetsElement;\n\n if (!this._activeVideoElement || !this._assetsElement) {\n return;\n }\n\n this.startSyncVideo();\n }\n\n @Input()\n public set assets(assets: NiceAssets[]) {\n this.writeValue(assets ?? []);\n }\n\n private set activeTranslationPosition(position: number) {\n this._activeTranslationPosition = position;\n this.listStyle.transform = `translateX(calc((var(--nice-assets-carousel-asset-width) + var(--nice-assets-carousel-asset-gap)) * ${position}))`;\n }\n\n private set activeAsset(position: number) {\n if (position < 0) {\n position = 0;\n }\n\n this._active = position;\n this._activeAsset = this._assets[this._active];\n this._lastAsset = this._active === this._assets.length - 1 || !this._assets.length;\n this._shouldTransform\n = ((this.edit && this.showAddAssetContainer) && this._active >= (this.visiblePreviewAsset - 1))\n || this._active >= this.visiblePreviewAsset;\n this.activeChange.emit(this._active);\n }\n\n constructor(@Optional() @Inject(NICE_ASSETS_CAROUSEL_OPTIONS) public readonly options: NiceAssetsCarouselOptions) {\n if (!this.options) {\n this.options = {\n actionButtons: {\n addPhoto: {\n matIcon: \"photo_camera\"\n },\n moreOptions: {\n matIcon: \"more_vert\"\n },\n remove: {\n matIcon: \"delete\"\n }\n },\n addPhoto: {\n matIcon: \"photo_camera\"\n },\n leftArrow: {\n matIcon: \"chevron_left\"\n },\n rightArrow: {\n matIcon: \"chevron_right\"\n },\n upload: {\n matIcon: \"file_upload\"\n }\n };\n }\n }\n\n public writeValue(assets: NiceAssets[]): void {\n this._assets = assets ?? [];\n\n if (this._assets.length === 0) {\n this._activeAsset = null;\n this._lastAsset = true;\n } else if (this._assets.length > 0) {\n this._activeAsset = this._assets[this._active];\n }\n }\n\n public registerOnChange(fn: (assets: NiceAssets[]) => void): void {\n this.propagate = fn;\n }\n\n public registerOnTouched(fn: (assets: NiceAssets[]) => void): void {}\n\n public clickLeft(): void {\n if (this._active) {\n this.activeAsset = this._active - 1;\n }\n\n if (this._activeTranslationPosition < 0) {\n this.activeTranslationPosition = this._activeTranslationPosition + 1;\n }\n }\n\n public clickRight(): void {\n if (this._lastAsset) {\n return;\n }\n\n this.activeAsset = this._active + 1;\n if (this._shouldTransform) {\n this.activeTranslationPosition = this._activeTranslationPosition - 1;\n }\n }\n\n public clickAsset(index: number): void {\n let visibleAssets = (this.edit && this.showAddAssetContainer) ? (this.visiblePreviewAsset - 2) : (this.visiblePreviewAsset - 1);\n if (index < visibleAssets) {\n visibleAssets = index;\n }\n\n if (index >= 0) {\n this.activeTranslationPosition = (index - visibleAssets) * -1;\n }\n\n this.activeAsset = index;\n }\n\n public async onFilesChange(event: Event): Promise<void> {\n let files = (event.target as HTMLInputElement)?.files;\n\n if (this.imagesProcessor) {\n files = await this.getProcessedFiles(files);\n }\n\n await this.onFilesDrop(files);\n\n this.inputElement.nativeElement.value = \"\";\n }\n\n public async onFilesDrop(files: FileList): Promise<void> {\n if (!files?.length) {\n return;\n }\n\n let newAssetsAdded = false;\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (!this.accept.some((accept) => {\n if (accept.endsWith(\"*\")) {\n return file.type.startsWith(accept.replace(\"*\", \"\"));\n }\n\n return accept === file.type;\n })) {\n continue;\n }\n\n newAssetsAdded = true;\n\n this._assets.push({\n file,\n type: file.type.split(\"/\").shift() as \"image\" | \"video\",\n base64: await FileUtils.getDataUrl(file)\n });\n }\n\n if (newAssetsAdded) {\n this.clickAsset(this._assets.length - 1);\n this.propagate?.(this._assets);\n }\n }\n\n public clickRemove(): void {\n this.removedAsset.emit(this._assets[this._active]);\n this._assets.splice(this._active, 1);\n\n if (this._lastAsset) {\n this.clickAsset(this._assets.length - 1);\n } else {\n this.clickAsset(this._active);\n }\n\n this.propagate?.(this._assets);\n }\n\n public clickCustom(action: NiceAssetsCarouselActions): void {\n action.action(this._active);\n }\n\n public async startSyncVideo(): Promise<void> {\n (this._assetsElement.get(this._active).nativeElement.firstElementChild as HTMLVideoElement).pause();\n (this._assetsElement.get(this._active).nativeElement.firstElementChild as HTMLVideoElement).currentTime = 0;\n\n this._activeVideoElement.nativeElement.currentTime = 0;\n\n await this._activeVideoElement.nativeElement.play();\n await (this._assetsElement.get(this._active).nativeElement.firstElementChild as HTMLVideoElement).play();\n }\n\n private async getProcessedFiles(files: FileList): Promise<FileList> {\n try {\n return await this.imagesProcessor(files);\n } catch (e) {}\n }\n}\n","<div class=\"carousel-container\" niceDropzone (filesDropped)=\"onFilesDrop($event)\">\n <div\n class=\"active-image\"\n matRipple\n [class.empty-state]=\"!_activeAsset\"\n (click)=\"edit && fileInput.click();\n $event.stopPropagation()\"\n >\n <ng-container\n *ngIf=\"_activeAsset && activeContent\"\n [ngTemplateOutlet]=\"activeContent\"\n [ngTemplateOutletContext]=\"{ $implicit: _activeAsset}\"\n ></ng-container>\n <img\n *ngIf=\"_activeAsset?.type === 'image'\"\n (mouseover)=\"showOverlay=true\"\n [src]=\"_activeAsset.url ?? _activeAsset.base64\"\n draggable=\"false\"\n class=\"relative\"\n alt=\"active-image\"\n >\n <video #activeVideo *ngIf=\"_activeAsset?.type === 'video'\" draggable=\"false\" loop [src]=\"_activeAsset.url ?? _activeAsset.base64\"></video>\n\n <div class=\"empty-state-content\" *ngIf=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n <div class=\"text\">\n {{ \"nice_ui_kit.assets_carousel.upload_here\" | translate }}\n </div>\n </div>\n\n <div *ngIf=\"_activeAsset && showOverlay && edit\" class=\"active-image-overlay\">\n <div\n (mouseout)=\"showOverlay=false\"\n class=\"flex flex-col justify-center items-center w-full h-full\"\n >\n <mat-icon *ngIf=\"options.upload.matIcon\">{{ options.upload.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.upload.svgIcon\" [svgIcon]=\"options.upload.svgIcon\"></mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"edit\" class=\"active-buttons\">\n <button mat-icon-button (click)=\"fileInput.click(); $event.stopPropagation()\">\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.matIcon\">{{ options.actionButtons.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.addPhoto.svgIcon\" [svgIcon]=\"options.actionButtons.addPhoto.svgIcon\"></mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"assetActions\" (click)=\"$event.stopPropagation()\" [disabled]=\"!_activeAsset\">\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.matIcon\">{{ options.actionButtons.moreOptions.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.moreOptions.svgIcon\" [svgIcon]=\"options.actionButtons.moreOptions.svgIcon\"></mat-icon>\n </button>\n <mat-menu class=\"nice-asset-options-menu\" [xPosition]=\"'before'\" #assetActions=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let action of customActions\"\n (click)=\"clickCustom(action)\"\n >\n <mat-icon *ngIf=\"action.icon.matIcon\">{{ action.icon.matIcon }}</mat-icon>\n <mat-icon [svgIcon]=\"action.icon.svgIcon\" *ngIf=\"action.icon.svgIcon\"></mat-icon>\n <span>{{ action.name | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"clickRemove()\">\n <mat-icon *ngIf=\"options.actionButtons.remove.matIcon\">{{ options.actionButtons.remove.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.actionButtons.remove.svgIcon\" [svgIcon]=\"options.actionButtons.remove.svgIcon\"></mat-icon>\n <span>{{ \"nice_ui_kit.assets_carousel.delete\" | translate }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <div class=\"carousel\">\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button left-arrow\" mat-icon-button [disabled]=\"!_active\" (click)=\"clickLeft()\">\n <mat-icon *ngIf=\"options.leftArrow.matIcon\">{{ options.leftArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.leftArrow.svgIcon\" [svgIcon]=\"options.leftArrow.svgIcon\"></mat-icon>\n </button>\n <div class=\"asset-list-container\">\n <div *ngIf=\"showAddAssetContainer && edit\" class=\"add-asset-container\">\n <div class=\"add-asset\" matRipple (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"options.addPhoto.matIcon\">{{ options.addPhoto.matIcon }}</mat-icon>\n <mat-icon *ngIf=\"options.addPhoto.svgIcon\" [svgIcon]=\"options.addPhoto.svgIcon\"></mat-icon>\n </div>\n </div>\n <div class=\"asset-list\" [ngStyle]=\"listStyle\">\n <div #assets class=\"asset\" *ngFor=\"let asset of _assets; let i = index\" (click)=\"clickAsset(i)\" [ngClass]=\"color\" [class.active]=\"_active === i\">\n <img *ngIf=\"asset.type === 'image'\" draggable=\"false\" [src]=\"asset.url ?? asset.base64\" alt=\"add-image\">\n <video *ngIf=\"asset.type === 'video'\" draggable=\"false\" loop [src]=\"asset.url ?? asset.base64\"></video>\n </div>\n </div>\n </div>\n <button *ngIf=\"showAddAssetContainer || _activeAsset\" class=\"action-button right-arrow\" mat-icon-button [disabled]=\"_lastAsset\" (click)=\"clickRight()\">\n <mat-icon *ngIf=\"options.rightArrow.matIcon\">{{ options.rightArrow.matIcon }}</mat-icon>\n <mat-icon class=\"arrows\" *ngIf=\"options.rightArrow.svgIcon\" [svgIcon]=\"options.rightArrow.svgIcon\"></mat-icon>\n </button>\n </div>\n</div>\n\n<input #fileInput type=\"file\" hidden [accept]=\"accept\" (change)=\"onFilesChange($event)\" [multiple]=\"multipleUpload\">\n","import { NgModule } from \"@angular/core\";\nimport { NiceDropzoneDirective } from \"./dropzone.directive\";\n\n@NgModule({\n imports: [],\n declarations: [NiceDropzoneDirective],\n providers: [],\n exports: [NiceDropzoneDirective]\n})\nexport class NiceDropzoneModule {}\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceDropzoneModule } from \"../../directives/dropzone\";\n\nimport { NiceAssetsCarouselComponent, NiceAssetsCarouselOptions } from \"./assets-carousel.component\";\nimport { NICE_ASSETS_CAROUSEL_OPTIONS } from \"./assets-carousel.constant\";\nimport { NiceAssetsCarouselActiveContentDirective } from \"./directives/assets-carousel-active-content.directive\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatRippleModule,\n NiceDropzoneModule,\n TranslateModule\n ],\n declarations: [NiceAssetsCarouselComponent, NiceAssetsCarouselActiveContentDirective],\n providers: [],\n exports: [NiceAssetsCarouselComponent, NiceAssetsCarouselActiveContentDirective]\n})\nexport class NiceAssetsCarouselModule {\n public static forRoot(options?: NiceAssetsCarouselOptions): ModuleWithProviders<NiceAssetsCarouselModule> {\n if (!options) {\n options = {\n actionButtons: {}\n };\n }\n if (!options.actionButtons.moreOptions) {\n options.actionButtons.moreOptions = { matIcon: \"more_vert\" };\n }\n if (!options.actionButtons.addPhoto) {\n options.actionButtons.addPhoto = { matIcon: \"photo_camera\" };\n }\n if (!options.actionButtons.remove) {\n options.actionButtons.remove = { matIcon: \"delete\" };\n }\n if (!options.addPhoto) {\n options.addPhoto = { matIcon: \"photo_camera\" };\n }\n if (!options.leftArrow) {\n options.leftArrow = { matIcon: \"chevron_left\" };\n }\n if (!options.rightArrow) {\n options.rightArrow = { matIcon: \"chevron_right\" };\n }\n if (!options.upload) {\n options.upload = { matIcon: \"file_upload\" };\n }\n\n return {\n ngModule: NiceAssetsCarouselModule,\n providers: [\n {\n provide: NICE_ASSETS_CAROUSEL_OPTIONS,\n useValue: options\n }\n ]\n };\n }\n}\n","export interface NiceAsyncTypeaheadSearchResult<T> {\n items: T[];\n nextPage: number | null;\n}\n\nexport abstract class NiceAsyncTypeaheadProvider<T, ID = number, Options = any> {\n public abstract resource: string;\n public abstract search(searchQuery: string, page: number, options?: Options): Promise<NiceAsyncTypeaheadSearchResult<T>>;\n public abstract getById(id: ID, options?: Options): Promise<T>;\n\n public format(item: T): string {\n return \"\";\n }\n}\n","import { Directive, EventEmitter, Input, OnDestroy, Output } from \"@angular/core\";\nimport { MatAutocomplete } from \"@angular/material/autocomplete\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil, tap } from \"rxjs/operators\";\n\nexport interface IAutoCompleteScrollEvent {\n autoComplete: MatAutocomplete;\n scrollEvent: Event;\n}\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: \"mat-autocomplete[optionsScroll]\"\n})\nexport class OptionsScrollDirective implements OnDestroy {\n private _onDestroy$ = new Subject();\n\n @Input()\n public thresholdPercent = 0.99;\n\n @Output()\n public optionsScroll = new EventEmitter<IAutoCompleteScrollEvent>();\n\n constructor(public autoComplete: MatAutocomplete) {\n this.autoComplete.opened\n .pipe(\n tap(() => {\n // Note: When autocomplete raises opened, panel is not yet created (by Overlay)\n // Note: The panel will be available on next tick\n // Note: The panel wil NOT open if there are no options to display\n setTimeout(() => {\n // Note: remove listner just for safety, in case the close event is skipped.\n this.removeScrollEventListener();\n if (this.autoComplete && this.autoComplete.panel) {\n this.autoComplete.panel.nativeElement.addEventListener(\"scroll\", this.onScroll.bind(this));\n }\n });\n }),\n takeUntil(this._onDestroy$)\n )\n .subscribe();\n\n this.autoComplete.closed\n .pipe(\n tap(() => this.removeScrollEventListener()),\n takeUntil(this._onDestroy$)\n )\n .subscribe();\n }\n\n public ngOnDestroy() {\n this._onDestroy$.next(null);\n this._onDestroy$.complete();\n\n this.removeScrollEventListener();\n }\n\n public onScroll(event: Event) {\n if (this.thresholdPercent === undefined) {\n this.optionsScroll.next({ autoComplete: this.autoComplete, scrollEvent: event });\n } else {\n const target = event.target as HTMLElement;\n const threshold = (this.thresholdPercent * 100 * target.scrollHeight) / 100;\n const current = target.scrollTop + target.clientHeight;\n\n if (current > threshold) {\n this.optionsScroll.next({ autoComplete: this.autoComplete, scrollEvent: event });\n }\n }\n }\n\n private removeScrollEventListener() {\n if (this.autoComplete && this.autoComplete.panel) {\n this.autoComplete.panel.nativeElement.removeEventListener(\"scroll\", this.onScroll);\n }\n }\n}\n","import { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input, NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { ControlValueAccessor, FormControl, NgControl, Validators } from \"@angular/forms\";\nimport { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from \"@angular/material/autocomplete\";\nimport { MatOption } from \"@angular/material/core\";\nimport { MatFormFieldControl } from \"@angular/material/form-field\";\nimport { Subject, Subscription } from \"rxjs\";\nimport * as uuid from \"uuid\";\nimport { isNullOrUndefined } from \"../../utils\";\n\nexport class NiceTypeaheadNewValue {\n constructor(public $new: string) {}\n}\n\n@Component({\n selector: \"nice-typeahead\",\n templateUrl: \"typeahead.template.html\",\n styleUrls: [\"typeahead.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MatFormFieldControl,\n useExisting: NiceTypeaheadComponent\n }\n ]\n})\nexport class NiceTypeaheadComponent implements OnInit, OnDestroy, ControlValueAccessor, MatFormFieldControl<string> {\n @Input()\n public set items(items: any[] | null | undefined) {\n this._items = items ?? [];\n this.values = items ?? [];\n this.setLoading(false);\n this.setLoadingPage(false);\n this.updateSearchInput();\n this.checkIfValueStillExist();\n }\n\n @Input()\n public set labelFormatFn(labelFormatFn: (item: any) => string) {\n this._labelFormatFn = labelFormatFn;\n this.updateSearchInput();\n }\n\n @Input()\n public set required(req) {\n this._required = coerceBooleanProperty(req);\n this.stateChanges.next();\n }\n\n public get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n\n @Input()\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n if (this._disabled) {\n this.searchControl.disable({ emitEvent: false });\n } else {\n this.searchControl.enable({ emitEvent: false });\n }\n this.stateChanges.next();\n }\n\n @Input()\n public set placeholder(placeholder: string) {\n this._placeholder = placeholder;\n this.stateChanges.next();\n }\n\n public get placeholder(): string {\n return this._placeholder;\n }\n\n @Input()\n public set emptyPlaceholder(emptyPlaceholder: string) {\n this._emptyPlaceholder = emptyPlaceholder;\n this.stateChanges.next();\n }\n\n public get emptyPlaceholder(): string {\n return this._emptyPlaceholder;\n }\n\n public set value(value: any) {\n if (value === this._value) {\n return;\n }\n this._value = value;\n this.propagate(this._value);\n }\n\n public get value(): any {\n return this._value;\n }\n\n public get empty(): boolean {\n return (\n (!this.searchControl.value || !this.searchControl.value.length) &&\n (!this._value || (typeof this._value === \"string\" && !this._value.length))\n );\n }\n\n public get errorState(): boolean {\n return this.ngControl ? this.ngControl.touched && this.ngControl.invalid : false;\n }\n\n @HostBinding(\"class.floating\")\n public get shouldLabelFloat(): boolean {\n return this.open || !this.empty;\n }\n\n constructor(\n @Optional() @Self() public ngControl: NgControl,\n private fm: FocusMonitor,\n private zone: NgZone,\n public elRef: ElementRef<HTMLElement>\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n fm.monitor(elRef.nativeElement, true).subscribe(origin => {\n if (this.ignoreNextFocus) {\n this.ignoreNextFocus = false;\n return;\n }\n\n this.focused = !!origin;\n this.stateChanges.next();\n if (this.focused && (!this._items || !this._items.length) && !this.loading) {\n this.searchControl.patchValue(\"\");\n }\n\n if (!this.focused && !this._value) {\n if (this.activeOption && this.activeOption.viewValue?.toLowerCase() === this.searchControl.value?.toLowerCase()) {\n this.onOptionSelected({\n option: this.activeOption,\n source: null\n });\n } else {\n if (!this.open) {\n this.onRemove();\n }\n }\n }\n });\n }\n\n private _items: any[];\n private _labelFormatFn: (item: unknown) => string;\n private _page = 0;\n\n @Input()\n public allowNotFoundItems = false;\n\n @Input()\n public panelClass: string | string[] = [];\n\n @Input()\n public bindValue: string;\n @Input()\n public bindLabel: string;\n\n /** @deprecated: Use NiceRemoteTypeahead instead */\n @Input()\n public typeahead: Subject<string>;\n /** @deprecated: Use NiceRemoteTypeahead instead */\n @Input()\n public page$: Subject<number>;\n\n @Input()\n public loading: boolean;\n @Input()\n public loadingPage: boolean;\n\n @Input()\n public searchFn: (search: string, option: any) => boolean;\n\n // tslint:disable-next-line:no-output-native\n @Output()\n public change = new EventEmitter();\n\n @ViewChild(\"searchInput\", { static: true })\n public input: ElementRef<HTMLInputElement>;\n\n @ViewChildren(MatOption)\n public options: MatOption[];\n\n public search$ = new Subject<string>();\n public searchControl = new FormControl(null);\n public values: unknown[] = [];\n public valueChangesSub$: Subscription;\n public searchSub$: Subscription;\n public open = false;\n public panelWidth = 0;\n public activeOption: MatOption;\n\n private updatingItem = false;\n private waitForItems = false;\n private ignoreNextFocus = false;\n private observer: ResizeObserver;\n\n /** MatFormField */\n private _required: boolean;\n private _disabled = false;\n private _placeholder: string;\n private _value: any;\n private _emptyPlaceholder: string;\n\n public stateChanges = new Subject<void>();\n public controlType = \"typeahead\";\n public focused = false;\n\n @HostBinding()\n public id: string = uuid.v4();\n @HostBinding(\"attr.aria-describedby\")\n public describedBy = \"\";\n\n @Input()\n public optionTemplate: TemplateRef<HTMLElement>;\n\n public propagate: (value: string) => void = () => {};\n\n public ngOnInit(): void {\n if (this.ngControl) {\n this.ngControl.statusChanges.subscribe((status) => {\n this.disabled = status === \"DISABLED\";\n });\n }\n\n this.searchSub$ = this.search$.subscribe(text => {\n if (!text || typeof text !== \"string\") {\n this.values = this._filter(\"\");\n return;\n }\n this.values = this._filter(text);\n });\n if (this.searchControl) {\n this.valueChangesSub$ = this.searchControl.valueChanges.subscribe(text => {\n if (this.updatingItem) {\n return;\n }\n\n if (this._value) {\n if (text === this.formatLabel(this.getValueItem())) {\n return;\n }\n\n this.value = null;\n }\n\n if (this.waitForItems) {\n this.waitForItems = false;\n return;\n }\n\n if (typeof text !== \"string\") {\n return;\n }\n\n if (this.typeahead) {\n this.setLoading(true);\n this._page = 0;\n this.typeahead.next(text);\n } else {\n this.search$.next(text);\n }\n });\n }\n\n this.observer = new ResizeObserver(entries => {\n this.zone.run(() => {\n this.panelWidth = entries[0].contentRect.width;\n });\n });\n\n this.observer.observe(this.elRef.nativeElement);\n }\n\n public ngOnDestroy(): void {\n this.search$?.complete();\n this.searchSub$?.unsubscribe();\n this.valueChangesSub$?.unsubscribe();\n this.stateChanges?.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n this.observer?.unobserve(this.elRef.nativeElement);\n }\n\n public onContainerClick(event: MouseEvent): void {}\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(\" \");\n }\n\n public registerOnChange(propagate: (value: string) => void): void {\n this.propagate = propagate;\n }\n\n public registerOnTouched(fn: any): void {\n // NO-OP\n }\n\n public writeValue(value: string): void {\n try {\n this.updatingItem = true;\n // If both are equal (considering null === undefined), consider that the value has not changed.\n if (this._value === value || (isNullOrUndefined(this._value) && isNullOrUndefined(value))) {\n return;\n }\n\n if (!value && this._value !== value) {\n this.onRemove(null);\n return;\n }\n this.value = value;\n if (!this._items) {\n this.waitForItems = true;\n return;\n }\n\n this.updateSearchInput();\n } finally {\n this.updatingItem = false;\n }\n }\n\n public onOptionActivated(event: MatAutocompleteActivatedEvent): void {\n this.activeOption = event.option;\n }\n\n public onOptionSelected(event: MatAutocompleteSelectedEvent): void {\n if (event.option.id === \"new-value-option\") {\n this.value = new NiceTypeaheadNewValue(this.searchControl.value);\n } else {\n this.updateLabel(event.option.value);\n this.value = this.bindValue ? this.getObjectItem(this.bindValue, event.option.value) : event.option.value;\n }\n this.change.emit(event.option.value);\n }\n\n public updateState(open: boolean): void {\n this.open = open;\n if (!this.open && this.ngControl) {\n this.ngControl.control.markAsTouched();\n }\n\n if (!this.open) {\n this.activeOption = null;\n if (!this._value) {\n this.onRemove();\n }\n }\n }\n\n public onRemove(event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.disabled) {\n return;\n }\n this.ignoreNextFocus = true;\n this.focused = false;\n this.value = null;\n this.searchControl.patchValue(null);\n if (this.ngControl?.control) {\n this.ngControl.control.markAsTouched();\n }\n this.stateChanges.next();\n this.change.emit();\n\n if (this.typeahead) {\n this.setLoading(true);\n this._page = 0;\n this.typeahead.next(\"\");\n } else {\n this.search$.next(\"\");\n }\n }\n\n public formatLabel(item: any): string {\n if (this._labelFormatFn) {\n return this._labelFormatFn(item);\n }\n\n if (this.bindLabel) {\n return this.getObjectItem(this.bindLabel, item);\n }\n\n if (typeof item !== \"string\") {\n return \"\";\n }\n\n return item;\n }\n\n private _filter(text: string): unknown[] {\n if (this._items) {\n const searchFn = this.searchFn || this.defaultSearch.bind(this);\n return this._items.filter(x => searchFn(text, x));\n }\n return [];\n }\n\n private defaultSearch(search: string, option: unknown): boolean {\n if (typeof option === \"string\") {\n return this.filterString(search, option);\n }\n\n if (typeof option !== \"object\") {\n return false;\n }\n\n if (this.bindLabel) {\n const item = this.getObjectItem(this.bindLabel, option);\n if (typeof item === \"string\") {\n return this.filterString(search, item);\n }\n } else if (this.formatLabel) {\n const item = this.formatLabel(option);\n if (typeof item === \"string\") {\n return this.filterString(search, item);\n }\n }\n\n return false;\n }\n\n private updateSearchInput(): void {\n if ((!this.waitForItems && !this._items) || !this._items) {\n return;\n }\n\n if (this._value instanceof NiceTypeaheadNewValue) {\n this.updateLabel(this._value.$new);\n return;\n }\n\n if (typeof this._value === \"object\") {\n this.updateLabel(this._value);\n return;\n }\n\n const search = this._items.find(\n v => (this.bindValue && typeof v === \"object\" ? this.getObjectItem(this.bindValue, v) : v) === this._value\n );\n if (search) {\n this.updateLabel(search);\n }\n }\n\n private filterString(text: string, value: string): boolean {\n return value.toLowerCase().includes(text.toLowerCase());\n }\n\n private updateLabel(item: unknown | string): void {\n if (!item) {\n return;\n }\n\n const label = this.formatLabel(item);\n\n if (label && label !== this.searchControl.value) {\n this.searchControl.patchValue(label, { emitEvent: false });\n }\n }\n\n public onEndScroll(): void {\n if (this.page$ && !this.loadingPage) {\n this.setLoadingPage(true);\n this._page++;\n this.page$.next(this._page);\n }\n }\n\n private getObjectItem(key: string, obj: object): any {\n const keys = key.split(\".\");\n let item = obj;\n for (const k of keys) {\n if (!item) {\n return item;\n }\n\n if (!item.hasOwnProperty(k)) {\n return item;\n }\n item = item[k];\n }\n\n return item;\n }\n\n private getValueItem(): any {\n if (!this.bindValue) {\n return this._value;\n }\n\n const keys = this.bindValue.split(\".\");\n return this._items.find(x => {\n let item = x;\n for (const k of keys) {\n if (!item) {\n return item;\n }\n\n if (!item.hasOwnProperty(k)) {\n return item;\n }\n item = item[k];\n }\n\n return item === this._value;\n });\n }\n\n private setLoading(loading: boolean): void {\n if (this.loading === undefined) {\n this.loading = loading;\n }\n }\n\n private setLoadingPage(loading: boolean): void {\n if (this.loadingPage === undefined) {\n this.loadingPage = loading;\n }\n }\n\n private checkIfValueStillExist(): void {\n if (this._value instanceof NiceTypeaheadNewValue) {\n return;\n }\n\n const item = this._items.find(\n v => (this.bindValue && typeof v === \"object\" ? this.getObjectItem(this.bindValue, v) : v) === this._value\n );\n if (item) {\n return;\n }\n\n if (this._value !== null && this._value !== undefined) {\n this.onRemove(null);\n }\n }\n}\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]=\"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","import { NgModule } from \"@angular/core\";\nimport { OptionsScrollDirective } from \"./options-scroll.directive\";\n\n@NgModule({\n declarations: [OptionsScrollDirective],\n exports: [OptionsScrollDirective]\n})\nexport class OptionScrollModule {}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\";\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { OptionScrollModule } from \"./directives/options-scroll.module\";\n\nimport { NiceTypeaheadComponent } from \"./typeahead.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n OptionScrollModule,\n MatAutocompleteModule,\n FormsModule,\n MatInputModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MatIconModule,\n MatButtonModule,\n TranslateModule\n ],\n declarations: [NiceTypeaheadComponent],\n exports: [NiceTypeaheadComponent]\n})\nexport class NiceTypeaheadModule {}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_ASYNC_TYPEAHEAD_PROVIDER = new InjectionToken(\"nice_async_typeahead_provider\");\n","import { Inject, Injectable, Optional } from \"@angular/core\";\nimport { BehaviorSubject, firstValueFrom, from, isObservable, mergeMap, Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { NICE_ASYNC_TYPEAHEAD_PROVIDER } from \"../async-typeahead.constant\";\nimport { NiceAsyncTypeaheadProvider } from \"./async-typeahead.provider\";\n\nexport class AsyncTypeaheadState {\n items: any[];\n active: any;\n loading: boolean;\n loadingPage: boolean;\n initialized: boolean;\n page: number;\n isLastPage: boolean;\n searchQuery?: string;\n excludedIds: any[];\n}\n\n@Injectable()\nexport class NiceAsyncTypeaheadService {\n private state$: BehaviorSubject<AsyncTypeaheadState> = new BehaviorSubject({\n items: [],\n active: null,\n loading: false,\n loadingPage: false,\n initialized: false,\n searchQuery: null,\n page: 0,\n isLastPage: false,\n excludedIds: []\n });\n\n public loading$ = this.state$.pipe(map(x => x.loading));\n public loadingPage$ = this.state$.pipe(map(x => x.loadingPage));\n public active$ = this.state$.pipe(map(x => x.active));\n public items$ = this.state$.pipe(map(x => x.items));\n public filteredItems$ = this.state$.pipe(map(x => x.items.filter(item => !x.excludedIds.includes(item.id))));\n\n constructor(@Optional() @Inject(NICE_ASYNC_TYPEAHEAD_PROVIDER) private readonly apis: NiceAsyncTypeaheadProvider<any>[]) {\n if (!this.apis) {\n this.apis = [];\n }\n }\n\n public async initialize(resource: string, options?: any): Promise<void> {\n const { initialized } = this.state$.getValue();\n if (initialized) {\n return;\n }\n\n return this.search(resource, \"\", options);\n }\n\n public async search(resource: string, searchQuery: string, options?: any): Promise<void> {\n const { active, initialized } = this.state$.getValue();\n\n if (active && !initialized) {\n this.state$.next({\n ...this.state$.value,\n initialized: true\n });\n return;\n }\n\n const api = this.apis.find(x => x.resource === resource);\n if (!api) {\n return;\n }\n\n try {\n this.state$.next({\n ...this.state$.value,\n loading: true,\n initialized: true,\n page: 0,\n isLastPage: false,\n searchQuery\n });\n\n const result = await api.search(searchQuery, 0, options);\n this.state$.next({\n ...this.state$.value,\n items: result.items,\n page: result.nextPage ? result.nextPage : this.state$.value.page,\n isLastPage: !result.nextPage\n });\n } catch {} finally {\n this.state$.next({\n ...this.state$.value,\n loading: false\n });\n }\n }\n\n public async loadMore(resource: string, options?: any): Promise<void> {\n const { loadingPage, isLastPage } = this.state$.getValue();\n if (loadingPage || isLastPage) {\n return;\n }\n\n const api = this.apis.find(x => x.resource === resource);\n if (!api) {\n return;\n }\n\n try {\n this.state$.next({\n ...this.state$.value,\n loadingPage: true\n });\n\n const { searchQuery, page, items } = this.state$.getValue();\n const result = await api.search(searchQuery, page, options);\n this.state$.next({\n ...this.state$.value,\n items: [...items, ...result.items],\n page: result.nextPage ? result.nextPage : this.state$.value.page,\n isLastPage: !result.nextPage\n });\n } catch {} finally {\n this.state$.next({\n ...this.state$.value,\n loadingPage: false\n });\n }\n }\n\n public getActive(): any {\n return this.state$.value.active;\n }\n\n public getInitialized(): boolean {\n return this.state$.value.initialized;\n }\n\n public setActive(entity: any | undefined): void {\n this.state$.next({\n ...this.state$.value,\n active: entity ?? null\n });\n }\n\n public async setActiveId(resource: string, id: any, options?: any): Promise<void> {\n if (!id) {\n return;\n }\n\n const api = this.apis.find(x => x.resource === resource);\n if (!api) {\n return;\n }\n\n try {\n this.state$.next({\n ...this.state$.value,\n loading: true\n });\n\n const entity = await api.getById(id, options);\n if (!entity) {\n return;\n }\n\n this.state$.next({\n ...this.state$.value,\n items: [entity],\n active: entity,\n page: 0,\n isLastPage: false\n });\n } catch {} finally {\n this.state$.next({\n ...this.state$.value,\n loading: false\n });\n }\n }\n\n public reloadActive(resource: string, options?: any): Promise<void> {\n return this.setActiveId(resource, this.state$.value.active?.id, options);\n }\n\n public reloadFilteredItems(): void {\n // TODO: Use a better way to trigger the items$ observable\n this.state$.next({\n ...this.state$.value\n });\n }\n\n public setFilterFn(filterFn: (value: any) => boolean | Promise<boolean> | Observable<boolean>): void {\n this.filteredItems$ = this.items$.pipe(mergeMap(items => {\n return from(Promise.all(items.map(async item => {\n const result = filterFn(item);\n\n const unwrappedResult = isObservable(result) ? await firstValueFrom(result) : await result;\n\n return [item, unwrappedResult];\n })));\n }\n ),\n map(items => items.filter(([item, keep]) => keep).map(([item, keep]) => item))\n );\n }\n\n public format(resource: string, item: string): string {\n const api = this.apis.find(x => x.resource === resource);\n if (!api) {\n return \"\";\n }\n\n return api.format(item);\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional, Output,\n Self,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { ControlValueAccessor, FormControl, FormGroupDirective, NgControl, NgForm, Validators } from \"@angular/forms\";\nimport { MatAutocompleteActivatedEvent, MatAutocompleteSelectedEvent } from \"@angular/material/autocomplete\";\nimport { ErrorStateMatcher, MatOption, mixinErrorState } from \"@angular/material/core\";\nimport { MatFormFieldControl } from \"@angular/material/form-field\";\nimport { debounceTime, distinctUntilChanged, firstValueFrom, Observable, Subject, Subscription } from \"rxjs\";\nimport * as uuid from \"uuid\";\nimport { isNullOrUndefined } from \"../../utils\";\nimport { NiceTypeaheadNewValue } from \"../typeahead\";\nimport { NiceAsyncTypeaheadService } from \"./providers/async-typeahead.service\";\n\n// Boilerplate for applying mixins to ).\n/** @docs-private */\nconst _BaseAsyncTypeaheadComponent = mixinErrorState(\n class {\n /**\n * Emits whenever the component state changes and should cause the parent\n * form field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /**\n * Form control bound to the component.\n * Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n public ngControl: NgControl\n ) {}\n }\n);\n\n@Component({\n selector: \"nice-async-typeahead\",\n templateUrl: \"async-typeahead.template.html\",\n styleUrls: [\"async-typeahead.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MatFormFieldControl,\n useExisting: NiceAsyncTypeaheadComponent\n },\n NiceAsyncTypeaheadService\n ]\n})\n// tslint:disable-next-line:max-line-length\nexport class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, MatFormFieldControl<any>, DoCheck {\n public stateChanges = new Subject<void>();\n public controlType = \"remote-typeahead\";\n public focused = false;\n\n public searchControl = new FormControl(null);\n public valueChangesSub$: Subscription;\n public open = false;\n public panelWidth = 0;\n public activeOption: MatOption;\n\n public active$ = this.service.active$;\n\n @ViewChild(\"searchInput\")\n public input: ElementRef<HTMLInputElement>;\n\n @ViewChildren(MatOption)\n public options: MatOption[];\n\n @Output()\n public entityRemoved = new EventEmitter<void>();\n\n @Input()\n public resource: string;\n\n @Input()\n public searchOptions: any;\n\n @Input()\n public preloadResource = false;\n\n @Input()\n public allowNotFoundItems = false;\n\n @Input()\n public panelClass: string | string[] = [];\n\n @Input()\n public bindValue = \"id\";\n\n @Input()\n public bindLabel: string;\n\n @Input()\n public placeholder: string;\n\n @Input()\n public emptyPlaceholder: string;\n\n @Input()\n public optionTemplate: TemplateRef<HTMLElement>;\n\n @Input()\n public filterFn: (value: any) => boolean | Promise<boolean> | Observable<boolean>;\n\n @Output()\n public selected = new EventEmitter<any>();\n\n @Input()\n public set labelFormatFn(labelFormatFn: (item: any) => string) {\n this._labelFormatFn = labelFormatFn;\n }\n private _labelFormatFn: (item: any) => string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n public set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._disabled) {\n this.searchControl.disable({ emitEvent: false });\n } else {\n this.searchControl.enable({ emitEvent: false });\n }\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n public get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n public set value(value: any) {\n if (value !== this._value) {\n this._value = value;\n this.propagate(value);\n this.stateChanges.next();\n this.selected.emit(value);\n }\n }\n public get value(): string {\n return this._value;\n }\n private _value: any;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n public set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n }\n public get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n protected _required: boolean | undefined;\n\n @HostBinding(\"class.floating\")\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n @HostBinding()\n public id: string = uuid.v4();\n\n @HostBinding(\"attr.aria-describedby\")\n public describedBy = \"\";\n\n public get empty(): boolean {\n return (\n (!this.searchControl.value || !this.searchControl.value.length) &&\n (!this._value || (typeof this._value === \"string\" && !this._value.length))\n );\n }\n\n public get initialized(): boolean {\n return this.service.getInitialized();\n }\n\n public propagate: (value: string) => void = () => {};\n\n constructor(\n @Optional() @Self() ngControl: NgControl,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n defaultErrorStateMatcher: ErrorStateMatcher,\n private ngZone: NgZone,\n private changeDetectorRef: ChangeDetectorRef,\n public service: NiceAsyncTypeaheadService,\n ) {\n super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n if (this.ngControl) {\n if (this.ngControl.disabled) {\n this.searchControl.disable({ emitEvent: false });\n }\n\n this.ngControl.statusChanges.subscribe((status) => {\n this.disabled = status === \"DISABLED\";\n if (this._disabled) {\n this.searchControl.disable({ emitEvent: false });\n } else {\n this.searchControl.enable({ emitEvent: false });\n }\n });\n }\n\n if (this.filterFn) {\n this.service.setFilterFn(this.filterFn);\n }\n\n if (this.searchControl) {\n this.valueChangesSub$ = this.searchControl.valueChanges.pipe(debounceTime(500), distinctUntilChanged()).subscribe(text => {\n if (typeof text !== \"string\") {\n return;\n }\n\n this.service.search(this.resource, text, this.searchOptions);\n });\n }\n\n if (this.preloadResource) {\n this.service.search(this.resource, \"\", this.searchOptions);\n }\n }\n\n public ngOnDestroy(): void {\n this.valueChangesSub$.unsubscribe();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (\"searchOptions\" in changes) {\n const change = changes.searchOptions;\n if (!change.isFirstChange() && change.currentValue !== change.previousValue) {\n this.service.search(this.resource, \"\", change.currentValue).then(() => this.checkIfValueStillExist());\n }\n }\n\n if (\"filterFn\" in changes) {\n const change = changes.filterFn;\n if (!change.isFirstChange() && change.currentValue !== change.previousValue) {\n this.service.setFilterFn(change.currentValue);\n }\n }\n\n this.stateChanges.next();\n }\n\n public ngDoCheck(): void {\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n\n public async writeValue(value: any): Promise<void> {\n if (this._value === value || (isNullOrUndefined(this._value) && isNullOrUndefined(value))) {\n return;\n }\n\n if (!value && this._value !== value) {\n this.onRemove(null);\n return;\n }\n\n if (value instanceof NiceTypeaheadNewValue) {\n this.updateSearchInput();\n return;\n } else {\n await this.service.setActiveId(this.resource, value, this.searchOptions).then(() => this.updateSearchInput());\n }\n\n this.value = value;\n }\n\n public registerOnChange(propagate: (value: string) => void): void {\n this.propagate = propagate;\n }\n\n public registerOnTouched(fn: any): void {\n // NO-OP\n }\n\n public onContainerClick(event: MouseEvent): void {\n this.stateChanges.next();\n }\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(\" \");\n }\n\n public getActive<T = any>(): T {\n return this.service.getActive();\n }\n\n public onOptionActivated(event: MatAutocompleteActivatedEvent): void {\n this.activeOption = event.option;\n }\n\n public onOptionSelected(event: MatAutocompleteSelectedEvent): void {\n if (event.option.id === \"new-value-option\") {\n this.value = new NiceTypeaheadNewValue(this.searchControl.value);\n } else {\n this.updateLabel(event.option.value);\n this.service.setActive(event.option.value);\n this.value = this.bindValue ? this.getObjectItem(this.bindValue, event.option.value) : event.option.value;\n }\n }\n\n public updateState(open: boolean): void {\n this.open = open;\n\n if (!this.open) {\n this.ngZone.run(() => {\n this.focusChanged(false);\n this.changeDetectorRef.markForCheck();\n });\n }\n\n if (this.open && !this.initialized) {\n this.service.initialize(this.resource, this.searchOptions);\n }\n\n if (!this.open && this.ngControl) {\n this.ngControl.control.markAsTouched();\n }\n\n if (!this.open) {\n this.activeOption = null;\n if (!this._value && this.searchControl.value) {\n this.onRemove();\n }\n }\n }\n\n public onRemove(event?: Event, reload = true): void {\n if (event) {\n // event.stopPropagation();\n }\n if (this.disabled) {\n return;\n }\n this.service.setActive(null);\n this.value = null;\n this.searchControl.patchValue(null);\n if (this.ngControl?.control) {\n this.ngControl.control.markAsTouched();\n }\n this.stateChanges.next();\n\n this.entityRemoved.emit();\n\n if (reload) {\n this.service.search(this.resource, \"\", this.searchOptions);\n }\n }\n\n public formatLabel(item: any): string {\n if (this._labelFormatFn) {\n return this._labelFormatFn(item);\n }\n\n if (this.bindLabel) {\n return this.getObjectItem(this.bindLabel, item);\n }\n\n if (typeof item !== \"string\") {\n return this.service.format(this.resource, item);\n }\n\n return item;\n }\n\n public onEndScroll(): void {\n this.service.loadMore(this.resource, this.searchOptions);\n }\n\n public focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n\n if (isFocused && this.filterFn) {\n this.service.reloadFilteredItems();\n }\n }\n }\n\n public async reloadActive(): Promise<void> {\n await this.service?.reloadActive(this.resource, this.searchOptions);\n const active = this.service?.getActive();\n this.updateLabel(active);\n }\n\n private updateLabel(item: unknown | string): void {\n if (!item) {\n return;\n }\n\n const label = this.formatLabel(item);\n\n if (label && label !== this.searchControl.value) {\n this.searchControl.patchValue(label, { emitEvent: false });\n }\n }\n\n private getObjectItem(key: string, obj: object): any {\n const keys = key.split(\".\");\n let item = obj;\n for (const k of keys) {\n if (!item) {\n return item;\n }\n\n if (!item.hasOwnProperty(k)) {\n return item;\n }\n item = item[k];\n }\n\n return item;\n }\n\n private updateSearchInput(): void {\n if (this._value instanceof NiceTypeaheadNewValue) {\n this.updateLabel(this._value.$new);\n return;\n }\n\n const active = this.service.getActive();\n if (active) {\n this.updateLabel(active);\n return;\n }\n }\n\n private async checkIfValueStillExist(): Promise<void> {\n if (this._value instanceof NiceTypeaheadNewValue) {\n return;\n }\n\n const items = await firstValueFrom(this.service.filteredItems$);\n const item = items.find(\n v => (this.bindValue && typeof v === \"object\" ? this.getObjectItem(this.bindValue, v) : v) === this._value\n );\n if (item) {\n return;\n }\n\n if (this._value !== null && this._value !== undefined) {\n this.onRemove(null);\n }\n }\n}\n","<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 *ngIf=\"open && ctx.loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\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 </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","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule, Type } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\";\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { OptionScrollModule } from \"../typeahead/directives/options-scroll.module\";\n\nimport { NiceAsyncTypeaheadComponent } from \"./async-typeahead.component\";\nimport { NICE_ASYNC_TYPEAHEAD_PROVIDER } from \"./async-typeahead.constant\";\nimport { NiceAsyncTypeaheadProvider } from \"./providers/async-typeahead.provider\";\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n OptionScrollModule,\n MatInputModule,\n MatAutocompleteModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n TranslateModule\n ],\n declarations: [NiceAsyncTypeaheadComponent],\n providers: [],\n exports: [NiceAsyncTypeaheadComponent]\n})\nexport class NiceAsyncTypeaheadModule {\n public static register(providers: Type<NiceAsyncTypeaheadProvider<any, any>>[]): ModuleWithProviders<NiceAsyncTypeaheadModule> {\n return {\n ngModule: NiceAsyncTypeaheadModule,\n providers: providers.map(x => ({\n provide: NICE_ASYNC_TYPEAHEAD_PROVIDER,\n useClass: x,\n multi: true\n }))\n };\n }\n}\n","import { CdkStepper } from \"@angular/cdk/stepper\";\nimport { Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild } from \"@angular/core\";\nimport { ControlValueAccessor, FormGroup } from \"@angular/forms\";\nimport { GeneratedFormGroup } from \"@recursyve/ngx-form-generator\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { KeyboardCodes } from \"../../utils\";\n\n@Component({\n template: ``\n})\nexport abstract class NiceBaseFormComponent<Form> implements OnInit, OnDestroy, ControlValueAccessor {\n @ViewChild(CdkStepper)\n private stepper: CdkStepper;\n\n @Input()\n public loading = false;\n\n // tslint:disable-next-line:no-output-native\n @Output()\n public submit = new EventEmitter<Form>();\n\n protected unsubscribeAll$ = new Subject<void>();\n\n private propagate: (form: Form) => void = () => {};\n\n constructor(public formGroup: GeneratedFormGroup<Form>) {}\n\n public ngOnInit(): void {\n this.formGroup.valueChanges.pipe(takeUntil(this.unsubscribeAll$)).subscribe(() => {\n this.onValueChange(this.formGroup.getRawValue());\n });\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$?.next();\n this.unsubscribeAll$?.complete();\n }\n\n public registerOnChange(fn: (form: Form) => void): void {\n this.propagate = fn;\n }\n\n public registerOnTouched(fn: (form: Form) => void): void {\n // NO-OP\n }\n\n public writeValue(form: Form): void {\n if (form) {\n this.formGroup.patchValue(form);\n }\n }\n\n public clickSubmit(): void {\n if (!this.validate()) {\n return;\n }\n this.submit.emit(this.formGroup.getRawValue());\n }\n\n public clickNext(index: number): void {\n this.validateStep(index);\n if (this.stepper) {\n this.stepper.next();\n }\n }\n\n public clickPrevious(): void {\n if (this.stepper) {\n this.stepper.previous();\n }\n }\n\n protected onValueChange(value: Form): void {\n this.propagate(value);\n }\n\n public validate(): boolean {\n if (this.formGroup.valid) {\n return true;\n }\n this.formGroup.markAllAsTouched();\n return false;\n }\n\n protected validateStep(index: number): boolean {\n const group = this.getCurrentStepGroup(index);\n if (group?.valid) {\n return true;\n }\n group?.markAllAsTouched();\n return false;\n }\n\n protected getCurrentStepGroup(index: number): FormGroup | null {\n return null;\n }\n}\n","import { Directive, HostListener, Input } from \"@angular/core\";\nimport { NiceBaseFormComponent } from \"./base-form.component\";\n\n@Directive({ selector: \"[niceFormSubmit]\" })\nexport class NiceFormSubmitDirective {\n @Input()\n public form: NiceBaseFormComponent<any>;\n\n @HostListener(\"click\")\n public onClick(): void {\n this.form.clickSubmit();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceFormSubmitDirective } from \"./form-submit.directive\";\n\n@NgModule({\n declarations: [NiceFormSubmitDirective],\n exports: [NiceFormSubmitDirective]\n})\nexport class NiceBaseFormModule {}\n","export class NiceBaseForm<T, Dto> {\n\n constructor(value?: Partial<T>) {\n if (!value) {\n return;\n }\n Object.assign(this, value);\n }\n\n public toDto(): Dto {\n return {\n ...this\n } as any;\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport { Component, HostBinding, Input, OnChanges, SimpleChanges, ViewEncapsulation } from \"@angular/core\";\nimport { niceAnimations } from \"../../animations\";\nimport { NiceCardFace } from \"./card.types\";\n\n@Component({\n selector: \"nice-card\",\n templateUrl: \"./card.component.html\",\n encapsulation: ViewEncapsulation.None,\n animations: niceAnimations,\n exportAs: \"niceCard\"\n})\nexport class NiceCardComponent implements OnChanges {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_expanded: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_flippable: BooleanInput;\n\n @Input()\n public expanded = false;\n\n @Input()\n public face: NiceCardFace = \"front\";\n\n @Input()\n public flippable = false;\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component classes\n */\n @HostBinding(\"class\")\n public get classList(): any {\n return {\n \"nice-card-expanded\": this.expanded,\n \"nice-card-face-back\": this.flippable && this.face === \"back\",\n \"nice-card-face-front\": this.flippable && this.face === \"front\",\n \"nice-card-flippable\": this.flippable\n };\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Expanded\n if (\"expanded\" in changes) {\n // Coerce the value to a boolean\n this.expanded = coerceBooleanProperty(changes.expanded.currentValue);\n }\n\n // Flippable\n if (\"flippable\" in changes) {\n // Coerce the value to a boolean\n this.flippable = coerceBooleanProperty(changes.flippable.currentValue);\n }\n }\n}\n","<!-- Flippable card -->\n<ng-container *ngIf=\"flippable\">\n <!-- Front -->\n <div class=\"nice-card-front\">\n <ng-content select=\"[niceCardFront]\"></ng-content>\n </div>\n\n <!-- Back -->\n <div class=\"nice-card-back\">\n <ng-content select=\"[niceCardBack]\"></ng-content>\n </div>\n</ng-container>\n\n<!-- Normal card -->\n<ng-container *ngIf=\"!flippable\">\n <!-- Content -->\n <ng-content></ng-content>\n\n <!-- Expansion -->\n <div\n class=\"nice-card-expansion\"\n *ngIf=\"expanded\"\n [@expandCollapse]>\n <ng-content select=\"[niceCardExpansion]\"></ng-content>\n </div>\n</ng-container>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { NiceCardComponent } from \"./card.component\";\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n NiceCardComponent\n ],\n exports: [\n NiceCardComponent\n ]\n})\nexport class NiceCardModule {\n}\n","import { Component, ViewEncapsulation } from \"@angular/core\";\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: \"nice-picture-modal\",\n styleUrls: [\"picture-modal.style.scss\"],\n templateUrl: \"picture-modal.template.html\"\n})\nexport class PictureModalComponent {\n public picture: string;\n}\n","<div class=\"overlay-content\">\n <img [src]=\"picture\" />\n</div>\n","import { Overlay } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Injectable } from \"@angular/core\";\nimport { PictureModalComponent } from \"./picture-modal.component\";\n\nexport interface PictureModalConfig {\n picture?: string;\n}\n\n@Injectable()\nexport class PictureModalService {\n constructor(private overlay: Overlay) {}\n\n public open(config: PictureModalConfig) {\n const positionStrategy = this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically();\n\n const overlayRef = this.overlay.create({\n backdropClass: \"cdk-overlay-dark-backdrop\",\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n const pictureModalPortal = new ComponentPortal(PictureModalComponent);\n const pictureModalRef = overlayRef.attach(pictureModalPortal);\n\n pictureModalRef.instance.picture = config.picture;\n\n overlayRef.backdropClick().subscribe(() => overlayRef.dispose());\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"carouselLayout\" })\nexport class CarouselLayoutPipe implements PipeTransform {\n public transform(value: \"row\" | \"column\", direction: \"ltr\" | \"rtl\" | \"utd\" | \"dtu\"): string {\n if (value === \"row\") {\n return direction === \"rtl\" ? \"flex-row-reverse\" : \"flex-row\";\n }\n return direction === \"utd\" ? \"flex-col\" : \"flex-col-reverse\";\n }\n}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from \"@angular/core\";\nimport { PictureModalService } from \"./picture-modal/picture-modal.service\";\n\nexport interface Picture {\n id: number;\n url: string;\n}\n\n@Component({\n selector: \"nice-carousel\",\n templateUrl: \"carousel.template.html\",\n styleUrls: [\"./carousel.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class CarouselComponent {\n public currentImages: Picture[];\n\n @Input()\n public set images(urls: Picture[]) {\n this.currentImages = urls;\n }\n\n @Input()\n public direction: \"ltr\" | \"rtl\" | \"utd\" | \"dtu\" = \"ltr\";\n\n @Input()\n public layout: \"row\" | \"column\" = \"row\";\n\n @Input()\n public editable = false;\n\n @Output()\n public delete = new EventEmitter<Picture>();\n\n constructor(private pictureModalService: PictureModalService) {}\n\n public clickView(picture: Picture) {\n this.pictureModalService.open({\n picture: picture.url\n });\n }\n\n public clickDelete(picture: Picture) {\n this.delete.emit(picture);\n }\n}\n","<div class=\"slides-container\">\n <div class=\"slides flex\" [ngClass]=\"layout | carouselLayout: direction\">\n <div class=\"slide\" *ngFor=\"let image of currentImages\">\n <img [src]=\"image?.url\" (click)=\"clickView(image)\"/>\n <i class=\"fad fa-times-circle remove-button\" (click)=\"clickDelete(image)\" *ngIf=\"editable\"></i>\n </div>\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { CarouselComponent } from \"./carousel.component\";\nimport { PictureModalComponent } from \"./picture-modal\";\nimport { PictureModalService } from \"./picture-modal\";\nimport { CarouselLayoutPipe } from \"./pipe/carousel-layout.pipe\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatCardModule,\n MatButtonModule,\n TranslateModule,\n MatIconModule\n ],\n exports: [CarouselComponent],\n declarations: [CarouselComponent, PictureModalComponent, CarouselLayoutPipe],\n entryComponents: [PictureModalComponent],\n providers: [PictureModalService]\n})\nexport class NiceCarouselModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit, Output,\n SimpleChanges,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@Component({\n selector: \"nice-collapsable\",\n templateUrl: \"collapsable.template.html\",\n styleUrls: [\"collapsable.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceCollapsableComponent implements OnInit, OnChanges, OnDestroy {\n @Input()\n public open: boolean;\n\n @Output()\n public openChange = new EventEmitter<boolean>();\n\n public unsubscribeAll$ = new Subject<void>();\n public control = new FormControl(false);\n\n public ngOnInit(): void {\n this.control.valueChanges.pipe(takeUntil(this.unsubscribeAll$)).subscribe(open => this.openChange.emit(open));\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"open\" in changes) {\n this.control.patchValue(this.open);\n }\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n}\n","<div class=\"nice-collapse\">\n <input type=\"checkbox\" class=\"peer cursor-pointer\" [formControl]=\"control\"/>\n <div class=\"collapse-title\">\n <ng-content select=\"[niceCollapsableTitle]\"></ng-content>\n </div>\n <div class=\"collapse-content\">\n <div class=\"content\">\n <ng-content select=\"[niceCollapsableContent]\"></ng-content>\n </div>\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\n\nimport { NiceCollapsableComponent } from \"./collapsable.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n declarations: [NiceCollapsableComponent],\n providers: [],\n exports: [NiceCollapsableComponent]\n})\nexport class NiceCollapsableModule {}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\n\n@Injectable()\nexport class NiceDateRangePickerServiceService {\n public allowClear$ = new BehaviorSubject(true);\n\n public setAllowClear(allowClear: boolean): void {\n this.allowClear$.next(allowClear);\n }\n}\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { DateAdapter } from \"@angular/material/core\";\nimport { MatDateRangePicker } from \"@angular/material/datepicker\";\nimport { NiceDateRangePickerServiceService } from \"../../providers/date-range-picker.service\";\n\nconst customPresets = [\n \"today\",\n \"last_7_days\",\n \"this_week\",\n \"this_month\",\n \"this_year\",\n \"last_week\",\n \"last_month\",\n \"last_year\",\n];\n\ntype CustomPreset = typeof customPresets[number];\n\n@Component({\n selector: \"nice-range-preset\",\n templateUrl: \"range-preset.template.html\",\n styleUrls: [\"range-preset.style.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RangePresetComponent<D> {\n public readonly customPresets = customPresets;\n public readonly allowClear$ = this.service.allowClear$;\n\n constructor(\n private dateAdapter: DateAdapter<D>,\n private picker: MatDateRangePicker<D>,\n private service: NiceDateRangePickerServiceService\n ) {}\n\n public clearRange(): void {\n this.picker.select(null);\n this.picker.select(null);\n this.picker.close();\n }\n\n public selectRange(rangeName: CustomPreset): void {\n const [start, end] = this.calculateDateRange(rangeName);\n this.picker.select(start);\n this.picker.select(end);\n this.picker.close();\n }\n\n private calculateDateRange(rangeName: CustomPreset): [start: D, end: D] {\n const today = this.today;\n const year = this.dateAdapter.getYear(today);\n\n switch (rangeName) {\n case \"today\":\n return [today, today];\n case \"last_7_days\": {\n const start = this.dateAdapter.addCalendarDays(today, -6);\n return [start, today];\n }\n case \"this_week\": {\n return this.calculateWeek(today);\n }\n case \"this_month\": {\n return this.calculateMonth(today);\n }\n case \"this_year\": {\n const start = this.dateAdapter.createDate(year, 0, 1);\n const end = this.dateAdapter.createDate(year, 11, 31);\n return [start, end];\n }\n case \"last_week\": {\n const thisDayLastWeek = this.dateAdapter.addCalendarDays(today, -7);\n return this.calculateWeek(thisDayLastWeek);\n }\n case \"last_month\": {\n const thisDayLastMonth = this.dateAdapter.addCalendarMonths(today, -1);\n return this.calculateMonth(thisDayLastMonth);\n }\n case \"last_year\": {\n const start = this.dateAdapter.createDate(year - 1, 0, 1);\n const end = this.dateAdapter.createDate(year - 1, 11, 31);\n return [start, end];\n }\n default:\n return null;\n }\n }\n\n private calculateMonth(forDay: D): [start: D, end: D] {\n const year = this.dateAdapter.getYear(forDay);\n const month = this.dateAdapter.getMonth(forDay);\n const start = this.dateAdapter.createDate(year, month, 1);\n const end = this.dateAdapter.addCalendarDays(\n start,\n this.dateAdapter.getNumDaysInMonth(forDay) - 1\n );\n return [start, end];\n }\n\n private calculateWeek(forDay: D): [start: D, end: D] {\n const deltaStart = this.dateAdapter.getFirstDayOfWeek() - this.dateAdapter.getDayOfWeek(forDay);\n const start = this.dateAdapter.addCalendarDays(forDay, deltaStart);\n const end = this.dateAdapter.addCalendarDays(start, 6);\n return [start, end];\n }\n\n private get today(): D {\n const today = this.dateAdapter.getValidDateOrNull(new Date());\n if (today === null) {\n throw new Error(\"date creation failed\");\n }\n return today;\n }\n}\n","<mat-card class=\"mat-elevation-z3\">\n <button\n *ngIf=\"allowClear$ | async\"\n mat-button\n (click)=\"clearRange()\"\n >\n {{ \"nice_ui_kit.date_range_picker.clear\" | translate }}\n </button>\n\n <button\n *ngFor=\"let item of customPresets\"\n mat-button\n (click)=\"selectRange(item)\"\n >\n {{ \"nice_ui_kit.date_range_picker.presets.\" + item | translate }}\n </button>\n</mat-card>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnDestroy } from \"@angular/core\";\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from \"@angular/material/core\";\nimport { MatCalendar } from \"@angular/material/datepicker\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@Component({\n templateUrl: \"header.template.html\",\n styleUrls: [\"header.style.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HeaderComponent<D> implements OnDestroy {\n private readonly destroy$ = new Subject<void>();\n\n public toggled = false;\n\n constructor(\n private calendar: MatCalendar<D>,\n private dateAdapter: DateAdapter<D>,\n @Inject(MAT_DATE_FORMATS) private dateFormats: MatDateFormats,\n cdr: ChangeDetectorRef\n ) {\n calendar.stateChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => cdr.markForCheck());\n }\n\n public get periodLabel(): string {\n return this.dateAdapter\n .format(this.calendar.activeDate, this.dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n\n public previousClicked(mode: \"month\" | \"year\"): void {\n this.changeDate(mode, -1);\n }\n\n public nextClicked(mode: \"month\" | \"year\"): void {\n this.changeDate(mode, 1);\n }\n\n private changeDate(mode: \"month\" | \"year\", amount: -1 | 1): void {\n this.calendar.activeDate =\n mode === \"month\"\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, amount)\n : this.dateAdapter.addCalendarYears(this.calendar.activeDate, amount);\n }\n\n public clickOptions() {\n this.toggled = !this.toggled;\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n }\n}\n","<div class=\"hidden md:block\" fxHide.lt-md>\n <nice-range-preset></nice-range-preset>\n</div>\n<div class=\"block md:hidden\">\n <ng-container *ngIf=\"toggled\">\n <nice-range-preset></nice-range-preset>\n </ng-container>\n</div>\n\n<div class=\"header\">\n <button\n fxHide.gt-md\n mat-icon-button\n (click)=\"clickOptions()\"\n >\n <mat-icon>sort</mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"double-arrow\"\n (click)=\"previousClicked('year')\"\n >\n <mat-icon>keyboard_arrow_left</mat-icon>\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n <button mat-icon-button (click)=\"previousClicked('month')\">\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n\n <span class=\"header-label\">{{ periodLabel }}</span>\n\n <button mat-icon-button (click)=\"nextClicked('month')\">\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"double-arrow\"\n (click)=\"nextClicked('year')\"\n >\n <mat-icon>keyboard_arrow_right</mat-icon>\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n</div>\n","import { DatePipe } from \"@angular/common\";\nimport { Pipe, PipeTransform } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({ name: \"localizedDate\" })\nexport class LocalizedDatePipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n public transform(value: any, pattern: string = \"mediumDate\", fallbackWithNull = false, timeZone?: string): string {\n if (pattern === \"mediumDateWithoutYear\") {\n pattern = this.getMediumDateWithoutYearPattern();\n }\n\n const datePipe: DatePipe = new DatePipe(this.translateService.currentLang, timeZone);\n\n if (value instanceof Date) {\n if (isNaN(value.getTime())) {\n return fallbackWithNull ? null : this.translateService.instant(\"general.not_available\");\n }\n }\n\n if (value && value !== \"0000-00-00\") {\n return datePipe.transform(value, pattern);\n } else {\n return fallbackWithNull ? null : this.translateService.instant(\"general.not_available\");\n }\n }\n\n private getMediumDateWithoutYearPattern(): string {\n if (this.translateService.defaultLang === \"fr\") {\n return \"d MMMM\";\n }\n return \"MMMM d\";\n }\n}\n","import { Component, forwardRef, Input, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\nimport { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { MatDateRangePicker } from \"@angular/material/datepicker\";\nimport subDays from \"date-fns/subDays\";\nimport { HeaderComponent } from \"./components/header/header.component\";\n\nexport interface NiceDateRangePickerValue {\n from: Date;\n to: Date;\n}\n\n@Component({\n selector: \"nice-date-range-picker\",\n templateUrl: \"date-range-picker.template.html\",\n styleUrls: [\"date-range-picker.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceDateRangePickerComponent),\n multi: true\n }\n ]\n})\nexport class NiceDateRangePickerComponent implements OnInit, ControlValueAccessor {\n public readonly HeaderComponent = HeaderComponent;\n\n @ViewChild(MatDateRangePicker)\n private picker: MatDateRangePicker<any>;\n\n @Input()\n public min = subDays(new Date(), 3);\n\n @Input()\n public max = new Date();\n\n @Input()\n public nowIsMax = true;\n\n @Input()\n public allowClear = true;\n\n public formGroup = new FormGroup({\n from: new FormControl(),\n to: new FormControl()\n });\n public now = new Date();\n public value: NiceDateRangePickerValue;\n\n private propage: (value: NiceDateRangePickerValue) => void;\n\n public ngOnInit(): void {\n this.value = {\n from: this.min,\n to: this.max\n };\n this.formGroup.patchValue(this.value);\n\n this.formGroup.valueChanges.subscribe((_) => {\n this.value = this.formGroup.getRawValue();\n this.propage?.(this.value);\n });\n }\n\n public writeValue(value: NiceDateRangePickerValue): void {\n this.value = value;\n this.formGroup.patchValue(this.value);\n }\n\n public registerOnChange(fn: (value: NiceDateRangePickerValue) => void): void {\n this.propage = fn;\n }\n\n public registerOnTouched(fn: any): void {}\n}\n","<div class=\"nice-date-picker-container\">\n <div class=\"nice-date-picker-header\">\n <div class=\"from-to\">\n <ng-container *ngIf=\"value.from\">\n {{ value.from | localizedDate: \"longDate\" }}\n </ng-container>\n <ng-container *ngIf=\"value.to\">\n <div class=\"separator\">-</div>\n {{ value.to | localizedDate: \"longDate\" }}\n </ng-container>\n </div>\n </div>\n\n <mat-date-range-input [formGroup]=\"formGroup\" [max]=\"nowIsMax ? now : null\" [rangePicker]=\"picker\">\n <input formControlName=\"from\" class=\"hidden-input\" matStartDate placeholder=\"Start date\">\n <input formControlName=\"to\" class=\"hidden-input\" matEndDate placeholder=\"End date\">\n </mat-date-range-input>\n\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n\n <mat-date-range-picker\n [calendarHeaderComponent]=\"HeaderComponent\"\n #picker\n ></mat-date-range-picker>\n</div>\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({ name: \"boolean\" })\nexport class BooleanPipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n public transform(value: any): string {\n if (typeof value !== \"boolean\") {\n return \"\";\n }\n\n return this.translateService.instant(value ? \"general.yes\" : \"general.no\");\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { isNullOrUndefined } from \"../utils/type.utils\";\n\n@Pipe({ name: \"capitalizeFirstLetter\" })\nexport class CapitalizeFirstLetterPipe implements PipeTransform {\n public transform(value: string): string {\n if (isNullOrUndefined(value)) {\n return value;\n }\n\n return value.charAt(0).toUpperCase() + value.slice(1);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"ceil\" })\nexport class CeilPipe implements PipeTransform {\n public transform(input: number) {\n return Math.ceil(input);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"entries\" })\nexport class EntriesPipe implements PipeTransform {\n public transform<Value>(value: Value): { key: keyof Value, value: any }[] {\n const keys: { key: keyof Value, value: any }[] = [];\n\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n keys.push({\n key,\n value: value[key]\n });\n }\n }\n\n return keys;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"findByKey\" })\nexport class FindByKeyPipe implements PipeTransform {\n public transform<ArrayType, ValueType>(array: ArrayType[], value: ValueType, key = \"id\"): ArrayType {\n return (array ?? []).find((v) => v?.[key] === value);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"firstLetter\" })\nexport class FirstLetterPipe implements PipeTransform {\n public transform(value: string): string {\n return value?.[0];\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"floor\" })\nexport class FloorPipe implements PipeTransform {\n public transform(input: number) {\n return Math.floor(input);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"join\" })\nexport class JoinPipe implements PipeTransform {\n public transform(array: any[], separator = \" \", prop?: string): string {\n if (!array?.length) {\n return \"general.not_available\";\n }\n\n if (!prop) {\n return array.filter(x => x).join(separator);\n }\n return array.filter(x => x).map(x => x[prop]).join(separator);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { UrlUtils } from \"../utils/url.utils\";\n\n@Pipe({ name: \"link\" })\nexport class LinkPipe implements PipeTransform {\n public transform(value: string, type: \"mailto\"): string;\n public transform(value: { phoneNumber: string, extension?: string }, type: \"tel\"): string;\n public transform(value: { address: string, postalCode: string }, type: \"direction\"): string;\n public transform(value: any, type: \"mailto\" | \"tel\" | \"direction\"): string {\n if (!value) {\n return;\n }\n\n switch (type) {\n case \"mailto\":\n return UrlUtils.emailUrl(value);\n case \"tel\":\n return UrlUtils.phoneCallUrl(value.phoneNumber, value.extension);\n case \"direction\":\n return UrlUtils.directionUrl(value.address, value.postalCode);\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({ name: \"localizedBoolean\" })\nexport class LocalizedBooleanPipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n public transform(value: boolean): any {\n return this.translateService.instant(`general.bool_${value}`);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { CurrencyPipe } from \"@angular/common\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({ name: \"localizedCurrency\" })\nexport class LocalizedCurrencyPipe extends CurrencyPipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {\n super(translateService.currentLang);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { LocalizedDatePipe } from \"./localized-date.pipe\";\n\n@Pipe({ name: \"localizedDateOnly\" })\nexport class LocalizedDateOnlyPipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n public transform(value: any, pattern: string = \"mediumDate\", fallbackWithNull = false): string {\n const pipe = new LocalizedDatePipe(this.translateService);\n return pipe.transform(value, pattern, fallbackWithNull, \"UTC\");\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n// Formats minutes in hh:mm format.\n@Pipe({ name: \"minutesToTime\" })\nexport class MinutesToTimePipe implements PipeTransform {\n public transform(totalMinutes: number, separator: string = \":\"): string {\n const hours = `${Math.floor(totalMinutes / 60)}`.padStart(2, \"0\");\n const minutes = `${Math.floor(totalMinutes % 60)}`.padStart(2, \"0\");\n return `${hours}${separator}${minutes}`;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"numberToOrdinalIndicator\" })\nexport class NumberToOrdinalIndicatorPipe implements PipeTransform {\n public transform(value: number): string {\n switch (value) {\n case 1:\n return \"general.first\";\n case 2:\n return \"general.second\";\n case 3:\n return \"general.third\";\n default:\n return \"general.xth\";\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"pad\" })\nexport class PadPipe implements PipeTransform {\n public transform(value: number | string, length: number, direction: \"start\" | \"end\" = \"start\", maxLength = 2, fillString = \"0\"): string {\n const strValue = typeof value === \"number\" ? `${value}` : value;\n switch (direction) {\n case \"start\":\n return strValue.padStart(maxLength, fillString);\n case \"end\":\n return strValue.padEnd(maxLength, fillString);\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { MaskApplierService } from \"ngx-mask\";\n\n@Pipe({ name: \"phone\" })\nexport class PhonePipe implements PipeTransform {\n constructor(private maskApplierService: MaskApplierService) {}\n\n public transform(rawPhoneNumber: string, extension?: string): string {\n const formattedPhoneNumber = this.maskApplierService.applyMask(rawPhoneNumber, \"(000) 000-0000\");\n if (!extension) {\n return formattedPhoneNumber;\n }\n\n return `${formattedPhoneNumber} #${extension}`;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { MaskApplierService } from \"ngx-mask\";\n\n@Pipe({ name: \"postalCode\" })\nexport class PostalCodePipe implements PipeTransform {\n constructor(private maskApplierService: MaskApplierService) {}\n\n public transform(postalCode: string): string {\n if (postalCode) {\n return this.maskApplierService.applyMask(postalCode, \"S0S 0S0\");\n }\n return \"\";\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"round\" })\nexport class RoundPipe implements PipeTransform {\n public transform(input: number) {\n return Math.round(input);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"range\" })\nexport class RangePipe implements PipeTransform {\n public transform(value: number): number[] {\n const range: number[] = [];\n for (let i = 0; i < value; i++) {\n range.push(i);\n }\n return range;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n// Formats seconds in hh:mm:ss format.\n@Pipe({ name: \"secondsToTime\" })\nexport class SecondsToTimePipe implements PipeTransform {\n public transform(value: number, separator = \":\"): string {\n const hours = `${Math.floor(value / 60 / 60)}`.padStart(2, \"0\");\n const minutes = `${Math.floor(value / 60 % 60)}`.padStart(2, \"0\");\n const seconds = `${Math.floor(value % 60)}`.padStart(2, \"0\");\n return `${hours}${separator}${minutes}${separator}${seconds}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({ name: \"sanitizeBypass\" })\nexport class SanitizeBypassPipe implements PipeTransform {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n public transform(value: any, bypass: \"html\" | \"style\"): any {\n switch (bypass) {\n case \"html\":\n return this.sanitizer.bypassSecurityTrustHtml(value || '');\n case \"style\":\n return this.sanitizer.bypassSecurityTrustStyle(value || '');\n }\n }\n}\n","import { Pipe, PipeTransform, TrackByFunction } from \"@angular/core\";\n\n@Pipe({ name: \"trackByProp\" })\nexport class TrackByPropPipe<T = any> implements PipeTransform {\n public transform(prop: keyof T & string): TrackByFunction<T> {\n return (_, item) => item[prop];\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { EntriesPipe } from \"./entries.pipe\";\nimport { BooleanPipe } from \"./boolean.pipe\";\nimport { LocalizedDateOnlyPipe } from \"./localized-date-only.pipe\";\nimport { PostalCodePipe } from \"./postal-code.pipe\";\nimport { PhonePipe } from \"./phone.pipe\";\nimport { CeilPipe } from \"./ceil.pipe\";\nimport { FloorPipe } from \"./floor.pipe\";\nimport { RoundPipe } from \"./round.pipe\";\nimport { FindByKeyPipe } from \"./find-by-key.pipe\";\nimport { PadPipe } from \"./pad.pipe\";\nimport { LinkPipe } from \"./link.pipe\";\nimport { MinutesToTimePipe } from \"./minutes-to-time.pipe\";\nimport { NumberToOrdinalIndicatorPipe } from \"./number-to-ordinal-indicator.pipe\";\nimport { RangePipe } from \"./range.pipe\";\nimport { SecondsToTimePipe } from \"./seconds-to-time.pipe\";\nimport { LocalizedDatePipe } from \"./localized-date.pipe\";\nimport { LocalizedCurrencyPipe } from \"./localized-currency.pipe\";\nimport { CapitalizeFirstLetterPipe } from \"./capitalize-first-letter.pipe\";\nimport { JoinPipe } from \"./join-if-defined.pipe\";\nimport { SanitizeBypassPipe } from \"./sanitize-bypass.pipe\";\nimport { FirstLetterPipe } from \"./first-letter.pipe\";\nimport { LocalizedBooleanPipe } from \"./localized-boolean.pipe\";\nimport { TrackByPropPipe } from \"./track-by-prop.pipe\";\n\n@NgModule({\n declarations: [\n BooleanPipe,\n CapitalizeFirstLetterPipe,\n CeilPipe,\n FindByKeyPipe,\n FirstLetterPipe,\n FloorPipe,\n JoinPipe,\n EntriesPipe,\n LinkPipe,\n LocalizedBooleanPipe,\n LocalizedCurrencyPipe,\n LocalizedDatePipe,\n LocalizedDateOnlyPipe,\n MinutesToTimePipe,\n NumberToOrdinalIndicatorPipe,\n PadPipe,\n PhonePipe,\n PostalCodePipe,\n RangePipe,\n RoundPipe,\n SanitizeBypassPipe,\n SecondsToTimePipe,\n TrackByPropPipe\n ],\n providers: [\n BooleanPipe,\n CapitalizeFirstLetterPipe,\n CeilPipe,\n FindByKeyPipe,\n FirstLetterPipe,\n FloorPipe,\n JoinPipe,\n EntriesPipe,\n LinkPipe,\n LocalizedBooleanPipe,\n LocalizedCurrencyPipe,\n LocalizedDatePipe,\n LocalizedDateOnlyPipe,\n MinutesToTimePipe,\n NumberToOrdinalIndicatorPipe,\n PadPipe,\n PhonePipe,\n PostalCodePipe,\n RangePipe,\n RoundPipe,\n SanitizeBypassPipe,\n SecondsToTimePipe\n ],\n exports: [\n BooleanPipe,\n CapitalizeFirstLetterPipe,\n CeilPipe,\n FindByKeyPipe,\n FirstLetterPipe,\n FloorPipe,\n JoinPipe,\n EntriesPipe,\n LinkPipe,\n LocalizedBooleanPipe,\n LocalizedCurrencyPipe,\n LocalizedDatePipe,\n LocalizedDateOnlyPipe,\n MinutesToTimePipe,\n NumberToOrdinalIndicatorPipe,\n PadPipe,\n PhonePipe,\n PostalCodePipe,\n RangePipe,\n RoundPipe,\n SanitizeBypassPipe,\n SecondsToTimePipe,\n TrackByPropPipe\n ]\n})\nexport class NicePipesModule {\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NicePipesModule } from \"../../pipes\";\nimport { HeaderComponent } from \"./components/header/header.component\";\nimport { RangePresetComponent } from \"./components/range-preset/range-preset.component\";\nimport { NiceDateRangePickerComponent } from \"./date-range-picker.component\";\nimport { NiceDateRangePickerServiceService } from \"./providers/date-range-picker.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatDatepickerModule,\n MatFormFieldModule,\n MatCardModule,\n MatButtonModule,\n MatIconModule,\n TranslateModule,\n ReactiveFormsModule,\n NicePipesModule\n ],\n declarations: [NiceDateRangePickerComponent, RangePresetComponent, HeaderComponent],\n providers: [NiceDateRangePickerServiceService],\n exports: [NiceDateRangePickerComponent]\n})\nexport class NiceDateRangePickerModule {}\n","import { Injectable } from \"@angular/core\";\nimport { NiceDrawerComponent } from \"./drawer.component\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceDrawerService {\n private _componentRegistry: Map<string, NiceDrawerComponent> = new Map<string, NiceDrawerComponent>();\n\n /**\n * Constructor\n */\n constructor() {}\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Register drawer component\n */\n registerComponent(name: string, component: NiceDrawerComponent): void\n {\n this._componentRegistry.set(name, component);\n }\n\n /**\n * Deregister drawer component\n */\n deregisterComponent(name: string): void\n {\n this._componentRegistry.delete(name);\n }\n\n /**\n * Get drawer component from the registry\n */\n getComponent(name: string): NiceDrawerComponent | undefined\n {\n return this._componentRegistry.get(name);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_APP_CONFIG = new InjectionToken<any>(\"NICE_APP_CONFIG\");\n","import { Inject, Injectable } from \"@angular/core\";\nimport { merge } from \"lodash-es\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { NICE_APP_CONFIG } from \"./config.constants\";\nimport { NiceConfig } from \"./config.model\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceConfigService {\n private _config: BehaviorSubject<any>;\n\n /**\n * Constructor\n */\n constructor(@Inject(NICE_APP_CONFIG) config: NiceConfig) {\n // Private\n this._config = new BehaviorSubject(config);\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Setter & getter for config\n */\n public set config(value: NiceConfig) {\n // Merge the new config over to the current config\n const config = merge({}, this._config.getValue(), value);\n\n // Execute the observable\n this._config.next(config);\n }\n\n public get config$(): Observable<NiceConfig> {\n return this._config.asObservable();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Resets the config to the default\n */\n public reset(): void {\n // Set the config\n this._config.next(this.config);\n }\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { NICE_APP_CONFIG } from \"./config.constants\";\nimport { NiceConfig } from \"./config.model\";\nimport { NiceConfigService } from \"./config.service\";\n\n@NgModule()\nexport class NiceConfigModule {\n /**\n * Constructor\n */\n constructor(private _niceConfigService: NiceConfigService) {\n }\n\n /**\n * forRoot method for setting user configuration\n */\n public static forRoot(config: NiceConfig): ModuleWithProviders<NiceConfigModule> {\n return {\n ngModule: NiceConfigModule,\n providers: [\n {\n provide: NICE_APP_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","import { BreakpointObserver, Breakpoints, BreakpointState } from \"@angular/cdk/layout\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable, ReplaySubject, startWith, tap } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\n@Injectable()\nexport class NiceMediaWatcherService {\n private _onMediaChange = new ReplaySubject<{ matchingAliases: string[], matchingQueries: any }>(1);\n private _currentBreakpoints: { [key: string]: boolean };\n private _breakpoint$: Observable<BreakpointState>;\n\n public xsBreakpointActive$ = this.onMediaQueryChange$(Breakpoints.XSmall).pipe(\n startWith({ matches: false }),\n map((x) => x.matches)\n );\n public smBreakpointActive$ = this.onMediaQueryChange$(Breakpoints.Small).pipe(\n startWith({ matches: false }),\n map((x) => x.matches)\n );\n public mdBreakpointActive$ = this.onMediaQueryChange$(Breakpoints.Medium).pipe(\n startWith({ matches: false }),\n map((x) => x.matches)\n );\n public lgBreakpointActive$ = this.onMediaQueryChange$(Breakpoints.Large).pipe(\n startWith({ matches: false }),\n map((x) => x.matches)\n );\n public xlBreakpointActive$ = this.onMediaQueryChange$(Breakpoints.XLarge).pipe(\n startWith({ matches: false }),\n map((x) => x.matches)\n );\n\n /**\n * Constructor\n */\n constructor(private _breakpointObserver: BreakpointObserver) {\n this._breakpoint$ = this.onMediaQueryChange$([\n Breakpoints.XSmall,\n Breakpoints.Small,\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge\n ]).pipe(\n tap((res) => this._currentBreakpoints = res.breakpoints)\n );\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On media query change\n */\n public onMediaQueryChange$(query: string | string[]): Observable<BreakpointState> {\n return this._breakpointObserver.observe(query);\n }\n\n public asObservable(): Observable<BreakpointState> {\n return this._breakpoint$;\n }\n\n public isActive(query: string | string[]): boolean {\n if (typeof query === \"string\") {\n query = [query];\n }\n\n for (const q of query) {\n if (this.isBreakpointActive(q)) {\n return true;\n }\n }\n\n return false;\n }\n\n private isBreakpointActive(breakpoint: string): boolean {\n if (breakpoint.startsWith(\"gt-\")) {\n switch (breakpoint.replace(\"gt-\", \"\")) {\n case \"xs\":\n return this._currentBreakpoints[Breakpoints.Small]\n || this._currentBreakpoints[Breakpoints.Medium]\n || this._currentBreakpoints[Breakpoints.Large]\n || this._currentBreakpoints[Breakpoints.XLarge];\n case \"sm\":\n return this._currentBreakpoints[Breakpoints.Medium]\n || this._currentBreakpoints[Breakpoints.Large]\n || this._currentBreakpoints[Breakpoints.XLarge];\n case \"md\":\n return this._currentBreakpoints[Breakpoints.Large]\n || this._currentBreakpoints[Breakpoints.XLarge];\n case \"lg\":\n return this._currentBreakpoints[Breakpoints.XLarge];\n }\n }\n\n if (breakpoint.startsWith(\"lt-\")) {\n switch (breakpoint.replace(\"lt-\", \"\")) {\n case \"sm\":\n return this._currentBreakpoints[Breakpoints.XSmall];\n case \"md\":\n return this._currentBreakpoints[Breakpoints.XSmall]\n || this._currentBreakpoints[Breakpoints.Small];\n case \"lg\":\n return this._currentBreakpoints[Breakpoints.XSmall]\n || this._currentBreakpoints[Breakpoints.Small]\n || this._currentBreakpoints[Breakpoints.Medium];\n case \"xl\":\n return this._currentBreakpoints[Breakpoints.XSmall]\n || this._currentBreakpoints[Breakpoints.Small]\n || this._currentBreakpoints[Breakpoints.Medium]\n || this._currentBreakpoints[Breakpoints.Large];\n }\n }\n\n switch (breakpoint) {\n case \"xs\":\n return this._currentBreakpoints[Breakpoints.XSmall];\n case \"sm\":\n return this._currentBreakpoints[Breakpoints.Small];\n case \"md\":\n return this._currentBreakpoints[Breakpoints.Medium];\n case \"lg\":\n return this._currentBreakpoints[Breakpoints.Large];\n case \"xl\":\n return this._currentBreakpoints[Breakpoints.XLarge];\n }\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceMediaWatcherService } from \"./media-watcher.service\";\n\n@NgModule({\n providers: [\n NiceMediaWatcherService\n ]\n})\nexport class NiceMediaWatcherModule {\n /**\n * Constructor\n */\n constructor(private _niceMediaWatcherService: NiceMediaWatcherService) {}\n}\n","import { DOCUMENT } from \"@angular/common\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { filter, take } from \"rxjs/operators\";\n\n@Injectable()\nexport class NiceSplashScreenService {\n /**\n * Constructor\n */\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _router: Router\n ) {\n // Hide it on the first NavigationEnd event\n this._router.events\n .pipe(\n filter(event => event instanceof NavigationEnd),\n take(1)\n )\n .subscribe(() => {\n this.hide();\n });\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Show the splash screen\n */\n public show(): void {\n this._document.body.classList.remove(\"nice-splash-screen-hidden\");\n }\n\n /**\n * Hide the splash screen\n */\n public hide(): void {\n this._document.body.classList.add(\"nice-splash-screen-hidden\");\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceSplashScreenService } from \"./splash-screen.service\";\n\n@NgModule({\n providers: [\n NiceSplashScreenService\n ]\n})\nexport class NiceSplashScreenModule {\n /**\n * Constructor\n */\n constructor(private _niceSplashScreenService: NiceSplashScreenService) {}\n}\n","import { animate, AnimationBuilder, AnimationPlayer, style } from \"@angular/animations\";\nimport { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { NiceUtilsService } from \"../../providers\";\nimport { NiceDrawerService } from \"./drawer.service\";\nimport { NiceDrawerMode, NiceDrawerPosition } from \"./drawer.types\";\n\n@Component({\n selector: \"nice-drawer\",\n templateUrl: \"./drawer.component.html\",\n styleUrls: [\"./drawer.theme.scss\"],\n encapsulation: ViewEncapsulation.None,\n exportAs: \"niceDrawer\"\n})\nexport class NiceDrawerComponent implements OnChanges, OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n static ngAcceptInputType_fixed: BooleanInput;\n // tslint:disable-next-line:variable-name\n static ngAcceptInputType_opened: BooleanInput;\n // tslint:disable-next-line:variable-name\n static ngAcceptInputType_transparentOverlay: BooleanInput;\n\n @Input()\n public fixed = false;\n\n @Input()\n public mode: NiceDrawerMode = \"side\";\n\n @Input()\n public width: string | number = 320;\n\n @Input()\n public name: string = this._niceUtilsService.randomId();\n\n @Input()\n public opened = false;\n\n @Input()\n public position: NiceDrawerPosition = \"left\";\n\n @Input()\n public transparentOverlay = false;\n\n @Output()\n private readonly fixedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n private readonly modeChanged: EventEmitter<NiceDrawerMode> = new EventEmitter<NiceDrawerMode>();\n\n @Output()\n private readonly openedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n private readonly positionChanged: EventEmitter<NiceDrawerPosition> = new EventEmitter<NiceDrawerPosition>();\n\n private _animationsEnabled = false;\n private _hovered = false;\n private _overlay: HTMLElement;\n private _player: AnimationPlayer;\n\n /**\n * Constructor\n */\n constructor(\n private _animationBuilder: AnimationBuilder,\n private _elementRef: ElementRef,\n private _renderer2: Renderer2,\n private _niceDrawerService: NiceDrawerService,\n private _niceUtilsService: NiceUtilsService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component classes\n */\n @HostBinding(\"class\")\n public get classList(): any {\n return {\n \"nice-drawer-animations-enabled\": this._animationsEnabled,\n \"nice-drawer-fixed\": this.fixed,\n \"nice-drawer-hover\": this._hovered,\n [`nice-drawer-mode-${this.mode}`]: true,\n \"nice-drawer-opened\": this.opened,\n [`nice-drawer-position-${this.position}`]: true\n };\n }\n\n /**\n * Host binding for component inline styles\n */\n @HostBinding(\"style\")\n public get styleList(): any {\n const width = typeof this.width === \"number\" ? `${this.width}px` : this.width;\n const dynamicStyle = {\n \"width\": width,\n \"min-width\": width,\n \"max-width\": width\n };\n\n if (this.mode === \"side\") {\n dynamicStyle[`margin-${this.position}`] = this.opened ? 0 : `-${width}`;\n }\n\n return dynamicStyle;\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Decorated methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On mouseenter\n *\n * @private\n */\n @HostListener(\"mouseenter\")\n private _onMouseenter(): void {\n // Enable the animations\n this._enableAnimations();\n\n // Set the hovered\n this._hovered = true;\n }\n\n /**\n * On mouseleave\n *\n * @private\n */\n @HostListener(\"mouseleave\")\n private _onMouseleave(): void {\n // Enable the animations\n this._enableAnimations();\n\n // Set the hovered\n this._hovered = false;\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n *\n * @param changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Fixed\n if (\"fixed\" in changes) {\n // Coerce the value to a boolean\n this.fixed = coerceBooleanProperty(changes.fixed.currentValue);\n\n // Execute the observable\n this.fixedChanged.next(this.fixed);\n }\n\n // Mode\n if (\"mode\" in changes) {\n // Get the previous and current values\n const previousMode = changes.mode.previousValue;\n const currentMode = changes.mode.currentValue;\n\n // Disable the animations\n this._disableAnimations();\n\n // If the mode changes: 'over -> side'\n if (previousMode === \"over\" && currentMode === \"side\") {\n // Hide the overlay\n this._hideOverlay();\n }\n\n // If the mode changes: 'side -> over'\n if (previousMode === \"side\" && currentMode === \"over\") {\n // If the drawer is opened\n if (this.opened) {\n // Show the overlay\n this._showOverlay();\n }\n }\n\n // Execute the observable\n this.modeChanged.next(currentMode);\n\n // Enable the animations after a delay\n // The delay must be bigger than the current transition-duration\n // to make sure nothing will be animated while the mode is changing\n setTimeout(() => {\n this._enableAnimations();\n }, 500);\n }\n\n // Opened\n if (\"opened\" in changes) {\n // Coerce the value to a boolean\n const open = coerceBooleanProperty(changes.opened.currentValue);\n\n // Open/close the drawer\n this._toggleOpened(open);\n }\n\n // Position\n if (\"position\" in changes) {\n // Execute the observable\n this.positionChanged.next(this.position);\n }\n\n // Transparent overlay\n if (\"transparentOverlay\" in changes) {\n // Coerce the value to a boolean\n this.transparentOverlay = coerceBooleanProperty(changes.transparentOverlay.currentValue);\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Register the drawer\n this._niceDrawerService.registerComponent(this.name, this);\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Finish the animation\n if (this._player) {\n this._player.finish();\n }\n\n // Deregister the drawer from the registry\n this._niceDrawerService.deregisterComponent(this.name);\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Open the drawer\n */\n public open(): void {\n // Return if the drawer has already opened\n if (this.opened) {\n return;\n }\n\n // Open the drawer\n this._toggleOpened(true);\n }\n\n /**\n * Close the drawer\n */\n public close(): void {\n // Return if the drawer has already closed\n if (!this.opened) {\n return;\n }\n\n // Close the drawer\n this._toggleOpened(false);\n }\n\n /**\n * Toggle the drawer\n */\n public toggle(): void {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Enable the animations\n *\n * @private\n */\n private _enableAnimations(): void {\n // Return if the animations are already enabled\n if (this._animationsEnabled) {\n return;\n }\n\n // Enable the animations\n this._animationsEnabled = true;\n }\n\n /**\n * Disable the animations\n *\n * @private\n */\n private _disableAnimations(): void {\n // Return if the animations are already disabled\n if (!this._animationsEnabled) {\n return;\n }\n\n // Disable the animations\n this._animationsEnabled = false;\n }\n\n /**\n * Show the backdrop\n *\n * @private\n */\n private _showOverlay(): void {\n // Create the backdrop element\n this._overlay = this._renderer2.createElement(\"div\");\n\n // Return if overlay couldn't be create for some reason\n if (!this._overlay) {\n return;\n }\n\n // Add a class to the backdrop element\n this._overlay.classList.add(\"nice-drawer-overlay\");\n\n // Add a class depending on the fixed option\n if (this.fixed) {\n this._overlay.classList.add(\"nice-drawer-overlay-fixed\");\n }\n\n // Add a class depending on the transparentOverlay option\n if (this.transparentOverlay) {\n this._overlay.classList.add(\"nice-drawer-overlay-transparent\");\n }\n\n // Append the backdrop to the parent of the drawer\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._overlay);\n\n // Create the enter animation and attach it to the player\n this._player = this._animationBuilder.build([\n style({opacity: 0}),\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 1}))\n ]).create(this._overlay);\n\n // Once the animation is done...\n this._player.onDone(() => {\n\n // Destroy the player\n this._player.destroy();\n this._player = null;\n });\n\n // Play the animation\n this._player.play();\n\n // Add an event listener to the overlay\n this._overlay.addEventListener(\"click\", () => {\n this.close();\n });\n }\n\n /**\n * Hide the backdrop\n *\n * @private\n */\n private _hideOverlay(): void {\n if (!this._overlay) {\n return;\n }\n\n // Create the leave animation and attach it to the player\n this._player = this._animationBuilder.build([\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 0}))\n ]).create(this._overlay);\n\n // Play the animation\n this._player.play();\n\n // Once the animation is done...\n this._player.onDone(() => {\n\n // Destroy the player\n this._player.destroy();\n this._player = null;\n\n // If the backdrop still exists...\n if (this._overlay) {\n // Remove the backdrop\n this._overlay.parentNode.removeChild(this._overlay);\n this._overlay = null;\n }\n });\n }\n\n /**\n * Open/close the drawer\n *\n * @param open\n * @private\n */\n private _toggleOpened(open: boolean): void {\n // Set the opened\n this.opened = open;\n\n // Enable the animations\n this._enableAnimations();\n\n // If the mode is 'over'\n if (this.mode === \"over\") {\n // If the drawer opens, show the overlay\n if (open) {\n this._showOverlay();\n }\n // Otherwise, close the overlay\n else {\n this._hideOverlay();\n }\n }\n\n // Execute the observable\n this.openedChanged.next(open);\n }\n}\n","<div class=\"nice-drawer-toggle\">\n <ng-content select=\"[niceDrawerToggle]\"></ng-content>\n</div>\n\n<div class=\"nice-drawer-content\" [style.visibility]=\"opened ? 'visible' : 'hidden'\">\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { NiceDrawerComponent } from \"./drawer.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule\n ],\n declarations: [\n NiceDrawerComponent\n ],\n exports: [\n NiceDrawerComponent\n ]\n})\nexport class NiceDrawerModule {\n}\n","import { Injectable } from \"@angular/core\";\nimport { ExportStrategy } from \"../models/export-strategy.model\";\n\n@Injectable()\nexport abstract class ExportBottomSheetService {\n public abstract getStrategyIcon(strategy: ExportStrategy): string;\n}\n\n@Injectable()\nexport class DefaultExportBottomSheetService extends ExportBottomSheetService {\n public getStrategyIcon(strategy: ExportStrategy): string {\n switch (strategy.type) {\n case \"xlsx\":\n return \"fas fa-file-excel\";\n case \"pdf\":\n return \"fas fa-file-pdf\";\n case \"csv\":\n return \"fas fa-file-csv\";\n }\n return \"\";\n }\n}\n","import { Component, Inject } from \"@angular/core\";\nimport { MatBottomSheetRef, MAT_BOTTOM_SHEET_DATA } from \"@angular/material/bottom-sheet\";\nimport { ExportStrategy } from \"./models/export-strategy.model\";\nimport { ExportBottomSheetService } from \"./providers/export-bottom-sheet.service\";\n\nexport interface ExportBottomSheetConfig {\n exportStrategies: ExportStrategy[];\n}\n\n@Component({\n selector: \"nice-export-bottom-sheet\",\n templateUrl: \"export-bottom-sheet.template.html\"\n})\nexport class ExportBottomSheetComponent {\n constructor(\n @Inject(MAT_BOTTOM_SHEET_DATA) public exportBottomSheetConfig: ExportBottomSheetConfig,\n private bottomSheetRef: MatBottomSheetRef<ExportBottomSheetComponent>,\n private service: ExportBottomSheetService\n ) {}\n\n public getStrategyIcon(strategy: ExportStrategy): string {\n return this.service.getStrategyIcon(strategy);\n }\n\n public clickExport(strategy: ExportStrategy) {\n this.bottomSheetRef.dismiss();\n strategy.onClickExport();\n }\n}\n","<mat-nav-list>\n <a *ngFor=\"let strategy of exportBottomSheetConfig.exportStrategies\" mat-list-item (click)=\"clickExport(strategy)\">\n <i [ngClass]=\"getStrategyIcon(strategy)\" mat-list-icon></i>\n <span mat-line>{{ (\"components.export_bottom_sheet.types.\" + strategy.type) | translate }}</span>\n </a>\n</mat-nav-list>\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule, Type } from \"@angular/core\";\nimport { MatBottomSheetModule } from \"@angular/material/bottom-sheet\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ExportBottomSheetComponent } from \"./export-bottom-sheet.component\";\nimport { DefaultExportBottomSheetService, ExportBottomSheetService } from \"./providers/export-bottom-sheet.service\";\n\nexport interface ExportBottomSheetOptions {\n service: Type<ExportBottomSheetService>;\n}\n\n@NgModule({\n imports: [CommonModule, MatBottomSheetModule, MatListModule, MatIconModule, TranslateModule],\n declarations: [ExportBottomSheetComponent],\n providers: [\n {\n provide: ExportBottomSheetService,\n useClass: DefaultExportBottomSheetService\n }\n ],\n exports: [ExportBottomSheetComponent]\n})\nexport class NiceExportBottomSheetModule {\n public static forFeature(options: ExportBottomSheetOptions): ModuleWithProviders<NiceExportBottomSheetModule> {\n return {\n ngModule: NiceExportBottomSheetModule,\n providers: [\n {\n provide: ExportBottomSheetService,\n useClass: options.service\n }\n ]\n };\n }\n}\n","import { Component, Input } from \"@angular/core\";\nimport { animate, style, transition, trigger } from \"@angular/animations\";\n\n@Component({\n // tslint:disable-next-line:components-selector component-selector\n selector: \"[form-error]\",\n template: `\n <div [@animation]=\"increment\" *ngIf=\"message\">\n <mat-error>\n {{ message }}\n </mat-error>\n </div>\n `,\n animations: [\n trigger(\"animation\", [\n transition(\":increment\", [style({ opacity: 0 }), animate(\"200ms ease-in\", style({ opacity: 1 }))]),\n transition(\":enter\", [\n style({ opacity: 0, transform: \"translateY(-1rem)\" }),\n animate(\"200ms ease-in\", style({ opacity: 1, transform: \"translateY(0)\" }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ opacity: 0, transform: \"translateY(-1rem)\" }))])\n ])\n ]\n})\nexport class NiceFormErrorComponent {\n public message: string;\n public increment = 0;\n\n @Input()\n public set error(value) {\n if (value) {\n if (this.message !== value) {\n this.increment++;\n }\n }\n this.message = value;\n }\n}\n","import { AfterViewInit, ComponentRef, Directive, ElementRef, ViewContainerRef } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { MatFormField } from \"@angular/material/form-field\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { NiceFormErrorComponent } from \"./form-error.component\";\n\n@Directive({ selector: \"[niceControlStatus]\" })\nexport class NiceControlStatusDirective implements AfterViewInit {\n private ref: ComponentRef<NiceFormErrorComponent>;\n private control: NgControl;\n\n constructor(\n private el: ElementRef<HTMLElement>,\n private vcr: ViewContainerRef,\n private formField: MatFormField,\n private translateService: TranslateService\n ) {}\n\n public ngAfterViewInit() {\n this.control = this.formField._control.ngControl as NgControl;\n this.control.statusChanges.subscribe(() => this.onChange());\n }\n\n public onChange(): void {\n if (this.control.pending) {\n return;\n }\n\n if (this.control.invalid && this.control.touched) {\n for (const error in this.control.errors) {\n if (this.control.errors.hasOwnProperty(error)) {\n if (this.control.errors[error]) {\n let lastErrorKey = error;\n let param: any;\n if (error === \"pattern\") {\n lastErrorKey = this.control.errors[error].requiredPattern;\n }\n if (error === \"mask\") {\n lastErrorKey = this.control.errors[error].requiredMask;\n }\n if (error === \"minlength\" || error === \"maxlength\") {\n param = {\n value: this.control.errors[error].requiredLength\n };\n }\n if (error === \"min\") {\n param = {\n min: this.control.errors[error].min,\n actual: this.control.errors[error].actual\n };\n }\n if (error === \"max\") {\n param = {\n max: this.control.errors[error].max,\n actual: this.control.errors[error].actual\n };\n }\n\n if (typeof this.control.errors[error] === \"object\" && !param) {\n param = this.control.errors[error];\n }\n\n this.setError(this.translateService.instant(`errors.${lastErrorKey}`, param));\n break;\n }\n }\n }\n } else {\n this.setError(\"\");\n }\n }\n\n public setError(text: string): void {\n if (!this.ref) {\n this.ref = this.vcr.createComponent(NiceFormErrorComponent);\n this.el.nativeElement\n .getElementsByClassName(\"mat-form-field-wrapper\")\n .item(0)\n .getElementsByClassName(\"mat-form-field-subscript-wrapper\")\n .item(0)\n .appendChild(this.ref.location.nativeElement);\n }\n this.ref.instance.error = text;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceFormErrorComponent } from \"./form-error.component\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { CommonModule } from \"@angular/common\";\nimport { NiceControlStatusDirective } from \"./control-status.directive\";\n\n@NgModule({\n imports: [CommonModule, MatFormFieldModule],\n declarations: [NiceFormErrorComponent, NiceControlStatusDirective],\n exports: [NiceFormErrorComponent, NiceControlStatusDirective],\n entryComponents: [NiceFormErrorComponent]\n})\nexport class NiceFormErrorModule {\n}\n","import {\n Component, EventEmitter, Output,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { CdkStep, CdkStepper } from \"@angular/cdk/stepper\";\nimport { animate, state, style, transition, trigger } from \"@angular/animations\";\n\n@Component({\n selector: \"nice-horizontal-stepper\",\n templateUrl: \"horizontal-stepper.template.html\",\n styleUrls: [\"./horizontal-stepper.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: CdkStepper, useExisting: NiceHorizontalStepperComponent }],\n animations: [trigger(\"stepTransition\", [\n state(\"previous\", style({ transform: \"translate3d(-100%, 0, 0)\", visibility: \"hidden\" })),\n state(\"current\", style({ transform: \"none\", visibility: \"visible\" })),\n state(\"next\", style({ transform: \"translate3d(100%, 0, 0)\", visibility: \"hidden\" })),\n transition(\"* => *\", animate(\"500ms cubic-bezier(0.35, 0, 0.25, 1)\"))\n ])]\n})\nexport class NiceHorizontalStepperComponent extends CdkStepper {\n @Output()\n private onStepperClick = new EventEmitter<number>();\n\n public onClick(step: CdkStep, index: number): void {\n step.select();\n this.onStepperClick.emit(index);\n }\n}\n","<section class=\"stepper-container\">\n <div class=\"flex justify-center content-center items-center\">\n <button\n class=\"step\"\n *ngFor=\"let step of steps; let i = index\"\n [ngClass]=\"{ 'active': selectedIndex === i }\"\n (click)=\"onClick(step, i)\"\n >\n </button>\n </div>\n <div class=\"mat-horizontal-content-container h-full\">\n <div *ngFor=\"let step of steps; let i = index\"\n class=\"mat-horizontal-stepper-content h-full\" role=\"tabpanel\"\n [@stepTransition]=\"_getAnimationDirection(i)\"\n [id]=\"_getStepContentId(i)\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [attr.aria-expanded]=\"selectedIndex === i\">\n <ng-container [ngTemplateOutlet]=\"step.content\"></ng-container>\n </div>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from \"@angular/core\";\nimport { CdkStep } from \"@angular/cdk/stepper\";\n\n@Component({\n selector: \"nice-step\",\n template: `<ng-template><ng-content></ng-content></ng-template>`,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: CdkStep, useExisting: NiceStepComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NiceStepComponent extends CdkStep {}\n","import { NgModule } from \"@angular/core\";\nimport { NiceHorizontalStepperComponent } from \"./horizontal-stepper.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { CdkStepperModule } from \"@angular/cdk/stepper\";\nimport { NiceStepComponent } from \"./step.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n CdkStepperModule\n ],\n declarations: [NiceStepComponent, NiceHorizontalStepperComponent],\n exports: [NiceStepComponent, NiceHorizontalStepperComponent]\n})\nexport class NiceHorizontalStepperModule {}\n","/*\n * Hermite resize - fast image resize/resample using Hermite filter.\n * https://github.com/viliusle/Hermite-resize\n */\nexport function resizeCanvas(canvas: HTMLCanvasElement, width: number, height: number) {\n const width_source = canvas.width;\n const height_source = canvas.height;\n width = Math.round(width);\n height = Math.round(height);\n\n const ratio_w = width_source / width;\n const ratio_h = height_source / height;\n const ratio_w_half = Math.ceil(ratio_w / 2);\n const ratio_h_half = Math.ceil(ratio_h / 2);\n\n const ctx = canvas.getContext('2d');\n const img = ctx!.getImageData(0, 0, width_source, height_source);\n const img2 = ctx!.createImageData(width, height);\n const data = img.data;\n const data2 = img2.data;\n\n for (let j = 0; j < height; j++) {\n for (let i = 0; i < width; i++) {\n const x2 = (i + j * width) * 4;\n let weight = 0;\n let weights = 0;\n let weights_alpha = 0;\n let gx_r = 0;\n let gx_g = 0;\n let gx_b = 0;\n let gx_a = 0;\n const center_y = j * ratio_h;\n\n const xx_start = Math.floor(i * ratio_w);\n let xx_stop = Math.ceil((i + 1) * ratio_w);\n const yy_start = Math.floor(j * ratio_h);\n let yy_stop = Math.ceil((j + 1) * ratio_h);\n xx_stop = Math.min(xx_stop, width_source);\n yy_stop = Math.min(yy_stop, height_source);\n\n for (let yy = yy_start; yy < yy_stop; yy++) {\n const dy = Math.abs(center_y - yy) / ratio_h_half;\n const center_x = i * ratio_w;\n const w0 = dy * dy; // pre-calc part of w\n for (let xx = xx_start; xx < xx_stop; xx++) {\n const dx = Math.abs(center_x - xx) / ratio_w_half;\n const w = Math.sqrt(w0 + dx * dx);\n if (w >= 1) {\n // pixel too far\n continue;\n }\n // hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n const pos_x = 4 * (xx + yy * width_source);\n // alpha\n gx_a += weight * data[pos_x + 3];\n weights_alpha += weight;\n // colors\n if (data[pos_x + 3] < 255) {\n weight = weight * data[pos_x + 3] / 250;\n }\n gx_r += weight * data[pos_x];\n gx_g += weight * data[pos_x + 1];\n gx_b += weight * data[pos_x + 2];\n weights += weight;\n }\n }\n data2[x2] = gx_r / weights;\n data2[x2 + 1] = gx_g / weights;\n data2[x2 + 2] = gx_b / weights;\n data2[x2 + 3] = gx_a / weights_alpha;\n }\n }\n\n // clear and resize canvas\n canvas.width = width;\n canvas.height = height;\n\n // draw\n ctx!.putImageData(img2, 0, 0);\n return ctx;\n}\n","/**\n * Adapted from https://github.com/A-l-y-l-e/Alyle-UI/tree/10.5.3/src/lib/image-cropper\n */\n\nimport { normalizePassiveListenerOptions } from \"@angular/cdk/platform\";\nimport { ViewportRuler } from \"@angular/cdk/scrolling\";\nimport { DOCUMENT } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter, HostBinding,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { Observable, Subject } from \"rxjs\";\nimport { take, takeUntil } from \"rxjs/operators\";\nimport { resizeCanvas } from \"./resize-canvas\";\n\nconst activeEventOptions = normalizePassiveListenerOptions({ passive: false });\n\n/** Image Cropper Config */\nexport class ImgCropperConfig {\n /** Cropper area width */\n width = 250;\n /** Cropper area height */\n height = 200;\n minWidth = 40;\n minHeight = 40;\n /** If this is not defined, the new image will be automatically defined. */\n type?: string;\n /** Background color( default: null), if is null in png is transparent but not in jpg. */\n fill?: string | null;\n /**\n * Set anti-aliased (default: true)\n * @deprecated this is not necessary as the cropper will automatically resize the image\n * to the best quality\n */\n antiAliased = true;\n autoCrop?: boolean;\n output?: ImgOutput | ImgResolution = ImgResolution.Default;\n /**\n * Zoom out until the entire image fits into the cropping area.\n * default: false\n */\n extraZoomOut?: boolean;\n /**\n * Emit event `error` if the file size in bytes for the limit.\n * Note: It only works when the image is received from the `<input>` event.\n */\n maxFileSize?: number | null;\n /**\n * Whether the cropper area will be round.\n * This implies that the cropper area will maintain its aspect ratio.\n * default: false\n */\n round?: boolean;\n /**\n * Whether the cropper area is resizable.\n * default: false\n */\n resizableArea?: boolean;\n /**\n * Keep the width and height of the growing area the same according\n * to `ImgCropperConfig.width` and `ImgCropperConfig.height`\n * default: false\n */\n keepAspectRatio?: boolean;\n /**\n * Whether the cropper area is responsive.\n * By default, the width and height of the cropper area is fixed,\n * so can use when the cropper area is larger than its container,\n * otherwise this will bring problems when cropping.\n */\n responsiveArea?: boolean;\n}\n\n/**\n * The output image\n * With this option you can resize the output image.\n * If `width` or `height` are 0, this will be set automatically.\n * Both cannot be 0.\n */\nexport interface ImgOutput {\n /**\n * The cropped image will be resized to this `width`.\n */\n width: number;\n /**\n * Cropped image will be resized to this `height`.\n */\n height: number;\n}\n\n/** Image output */\nexport enum ImgResolution {\n /**\n * The output image will be equal to the initial size of the cropper area.\n */\n Default,\n /** Just crop the image without resizing */\n OriginalImage\n}\n\n/** Image output */\nexport enum ImgCropperError {\n /** The loaded image exceeds the size limit set. */\n Size,\n /** The file loaded is not image. */\n Type,\n /** When the image has not been loaded. */\n Other\n}\n\nexport interface ImgCropperEvent {\n /** Cropped image data URL */\n dataURL?: string;\n name: string | null;\n /** Filetype */\n type?: string;\n /** Cropped area width */\n areaWidth: number;\n /** Cropped area height */\n areaHeight: number;\n /** Cropped image width */\n width: number;\n /** Cropped image height */\n height: number;\n /** Original Image data URL */\n originalDataURL?: string;\n scale: number;\n /** Current rotation in degrees */\n rotation: number;\n /** Size of the image in bytes */\n size: number;\n /** Scaled offset from the left edge of the image */\n left: number;\n /** Scaled offset from the top edge of the image */\n top: number;\n /**\n * Scaled offset from the left edge of the image to center of area\n * Can be used to set image position\n */\n xOrigin: number;\n /**\n * Scaled offset from the top edge of the image to center of area\n * Can be used to set image position\n */\n yOrigin: number;\n /** @deprecated Use `xOrigin & yOrigin` instead. */\n position?: {\n x: number\n y: number\n };\n}\n\nexport interface ImgCropperErrorEvent {\n name?: string;\n /** Size of the image in bytes */\n size: number;\n /** Filetype */\n type: string;\n /** Type of error */\n error: ImgCropperError;\n errorMsg?: string;\n}\n\ninterface ImgRect {\n x: number;\n y: number;\n xc: number;\n yc: number;\n /** transform with */\n wt: number;\n ht: number;\n}\n\nexport interface ImgCropperLoaderConfig {\n name?: string | null;\n /** Filetype */\n type?: string;\n /** Cropped area width */\n areaWidth?: number;\n /** Cropped area height */\n areaHeight?: number;\n /** Cropped image width */\n width?: number;\n /** Cropped image height */\n height?: number;\n /** Original Image data URL */\n originalDataURL: string;\n scale?: number;\n /** Current rotation in degrees */\n rotation?: number;\n /** Size of the image in bytes */\n size?: number;\n /** Offset from the left edge of the image to center of area */\n xOrigin?: number;\n /** Offset from the top edge of the image to center of area */\n yOrigin?: number;\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n selector: \"nice-img-cropper, nice-image-cropper\",\n templateUrl: \"image-cropper.template.html\",\n styleUrls: [\"image-cropper.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceImageCropperComponent implements OnInit, OnDestroy {\n static readonly и = \"NiceImageCropper\";\n\n private _currentLoadConfig?: ImgCropperLoaderConfig;\n\n /** Original image */\n private _img: HTMLImageElement;\n private offset?: {\n x: number\n y: number\n left: number\n top: number\n };\n private _scale?: number;\n private _scal3Fix?: number;\n private _minScale?: number;\n private _maxScale?: number;\n /** Initial config */\n private _configPrimary: ImgCropperConfig;\n private _config: ImgCropperConfig;\n private _imgRect: ImgRect = {} as any;\n private _rotation = 0;\n // private _sizeInBytes: number | null;\n private _isSliding: boolean;\n /** Keeps track of the last pointer event that was captured by the crop area. */\n private _lastPointerEvent: MouseEvent | TouchEvent | null;\n private _startPointerEvent: {\n x: number\n y: number\n } | null;\n public _primaryAreaWidth: number;\n public _primaryAreaHeight: number;\n\n public _absoluteScale: number;\n\n /**\n * When is loaded image\n * @internal\n */\n public _isLoadedImg: boolean;\n\n /** When is loaded image & ready for crop */\n public isLoaded: boolean;\n /** When the cropper is ready to be interacted */\n public isReady: boolean;\n public isCropped: boolean;\n\n @ViewChild(\"_imgContainer\", { static: true })\n private _imgContainer: ElementRef;\n\n @ViewChild(\"_area\", { read: ElementRef })\n private _areaRef: ElementRef;\n @ViewChild(\"_imgCanvas\", { static: true })\n private _imgCanvas: ElementRef<HTMLCanvasElement>;\n\n @Input()\n public set config(val: ImgCropperConfig) {\n this._config = mergeDeep({}, new ImgCropperConfig(), val);\n this._configPrimary = mergeDeep({}, this._config);\n this._primaryAreaWidth = this.config.width;\n this._primaryAreaHeight = this.config.height;\n if (\n this._config.round\n && this.config.width !== this.config.height\n ) {\n throw new Error(`${NiceImageCropperComponent.и}: Both width and height must be equal when using \\`ImgCropperConfig.round = true\\``);\n }\n const maxFileSize = this._config.maxFileSize;\n if (maxFileSize) {\n this.maxFileSize = maxFileSize;\n }\n }\n public get config(): ImgCropperConfig {\n return this._config;\n }\n /** Set scale */\n @Input()\n public set scale(val: number | undefined) {\n this.setScale(val);\n }\n public get scale(): number | undefined {\n return this._scale;\n }\n\n /**\n * Emit event `error` if the file size for the limit.\n * Note: It only works when the image is received from the `<input>` event.\n */\n @Input()\n public maxFileSize: number;\n\n /** Get min scale */\n public get minScale(): number | undefined {\n return this._minScale;\n }\n\n @Output()\n private readonly scaleChange = new EventEmitter<number>();\n\n /** Emits minimum supported image scale */\n // tslint:disable-next-line:no-output-rename\n @Output(\"minScale\")\n private readonly minScaleChange = new EventEmitter<number>();\n\n /** Emits maximum supported image scale */\n // tslint:disable-next-line:no-output-rename\n @Output(\"maxScale\")\n private readonly maxScaleChange = new EventEmitter<number>();\n\n /** Emits when the image is loaded */\n @Output()\n private readonly imageLoaded = new EventEmitter<ImgCropperEvent>();\n\n /** Emits when the cropper is ready to be interacted */\n @Output()\n private readonly ready = new EventEmitter<ImgCropperEvent>();\n\n /** On crop new image */\n @Output()\n private readonly cropped = new EventEmitter<ImgCropperEvent>();\n\n /** Emits when the cropper is cleaned */\n @Output()\n private readonly cleaned = new EventEmitter<void>();\n\n /** Emit an error when the loaded image is not valid */\n // tslint:disable-next-line: no-output-native\n @Output()\n private readonly error = new EventEmitter<ImgCropperErrorEvent>();\n\n private _currentInputElement?: HTMLInputElement;\n\n /** Emits whenever the component is destroyed. */\n private readonly _destroy = new Subject<void>();\n\n /** Used to subscribe to global move and end events */\n protected _document: Document;\n\n constructor(\n private _renderer: Renderer2,\n readonly _elementRef: ElementRef<HTMLElement>,\n private cd: ChangeDetectorRef,\n private _ngZone: NgZone,\n @Inject(DOCUMENT) _document: any,\n viewPortRuler: ViewportRuler\n ) {\n this._document = _document;\n viewPortRuler.change()\n .pipe(takeUntil(this._destroy))\n .subscribe(() =>\n this._ngZone.run(() => this.updateCropperPosition())\n );\n }\n\n public ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => {\n const element = this._imgContainer.nativeElement;\n element.addEventListener(\"mousedown\", this._pointerDown, activeEventOptions);\n element.addEventListener(\"touchstart\", this._pointerDown, activeEventOptions);\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy.next();\n this._destroy.complete();\n const element = this._imgContainer.nativeElement;\n this._lastPointerEvent = null;\n this._removeGlobalEvents();\n element.removeEventListener(\"mousedown\", this._pointerDown, activeEventOptions);\n element.removeEventListener(\"touchstart\", this._pointerDown, activeEventOptions);\n }\n\n /** Load image with canvas */\n private _imgLoaded(imgElement: HTMLImageElement): void {\n if (imgElement) {\n this._img = imgElement;\n const canvas = this._imgCanvas.nativeElement;\n canvas.width = imgElement.width;\n canvas.height = imgElement.height;\n const ctx = canvas.getContext(\"2d\");\n ctx.clearRect(0, 0, imgElement.width, imgElement.height);\n ctx.drawImage(imgElement, 0, 0);\n\n /** set min scale */\n this._updateMinScale(canvas);\n this._updateMaxScale();\n }\n }\n\n private _setStylesForContImg(values: { x?: number, y?: number }) {\n const newStyles = { } as any;\n if (values.x != null && values.y != null) {\n const rootRect = this._rootRect();\n const x = rootRect.width / 2 - (values.x);\n const y = rootRect.height / 2 - (values.y);\n\n this._imgRect.x = (values.x);\n this._imgRect.y = (values.y);\n this._imgRect.xc = (x);\n this._imgRect.yc = (y);\n\n }\n newStyles.transform = `translate3d(${(this._imgRect.x)}px,${(this._imgRect.y)}px, 0)`;\n newStyles.transform += `scale(${this._scal3Fix})`;\n newStyles.transformOrigin = `${this._imgRect.xc}px ${this._imgRect.yc}px 0`;\n newStyles[\"-webkit-transform\"] = newStyles.transform;\n newStyles[\"-webkit-transform-origin\"] = newStyles.transformOrigin;\n for (const key in newStyles) {\n if (newStyles.hasOwnProperty(key)) {\n this._renderer.setStyle(this._imgContainer.nativeElement, key, newStyles[key]);\n }\n }\n }\n /**\n * Update area and image position only if needed,\n * this is used when window resize\n */\n public updateCropperPosition(): void {\n if (this.isLoaded) {\n this.updatePosition();\n this._updateAreaIfNeeded();\n }\n }\n\n /** Load Image from input event */\n public selectInputEvent(img: Event) {\n this._currentInputElement = img.target as HTMLInputElement;\n const _img = img.target as HTMLInputElement;\n if (_img.files && _img.files.length !== 1) {\n return;\n }\n const fileSize = _img.files[0].size;\n const fileName = _img.value.replace(/.*(\\/|\\\\)/, \"\");\n\n if (this.maxFileSize && fileSize > this.maxFileSize) {\n const cropEvent: ImgCropperErrorEvent = {\n name: fileName,\n type: _img.files[0].type,\n size: fileSize,\n error: ImgCropperError.Size\n };\n this.clean();\n this.error.emit(cropEvent as ImgCropperErrorEvent);\n return;\n }\n\n new Observable<ProgressEvent>(observer => {\n\n const reader = new FileReader();\n\n reader.onerror = err => observer.error(err);\n reader.onabort = err => observer.error(err);\n reader.onload = (ev) => setTimeout(() => {\n observer.next(ev);\n observer.complete();\n });\n\n reader.readAsDataURL(_img.files[0]);\n })\n .pipe(take(1), takeUntil(this._destroy))\n .subscribe(\n (loadEvent) => {\n const originalDataURL = (loadEvent.target as FileReader).result as string;\n\n this.loadImage({\n name: fileName,\n size: _img.files[0].size, // size in bytes\n type: this.config.type || _img.files[0].type,\n originalDataURL\n });\n\n this.cd.markForCheck();\n },\n () => {\n const cropEvent: ImgCropperErrorEvent = {\n name: fileName,\n size: fileSize,\n error: ImgCropperError.Other,\n errorMsg: \"The File could not be loaded.\",\n type: _img.files[0].type\n };\n this.clean();\n this.error.emit(cropEvent as ImgCropperErrorEvent);\n }\n );\n\n }\n\n /** Set the size of the image, the values can be 0 between 1, where 1 is the original size */\n public setScale(size?: number, noAutoCrop?: boolean) {\n // fix min scale\n const newSize = size >= this.minScale && size <= 1 ? size : this.minScale;\n\n // check\n const changed = size != null && size !== this.scale && newSize !== this.scale;\n this._scale = size;\n if (!changed) {\n return;\n }\n this._scal3Fix = newSize;\n this._updateAbsoluteScale();\n if (this.isLoaded) {\n if (changed) {\n const originPosition = {...this._imgRect};\n this.offset = {\n x: originPosition.x,\n y: originPosition.y,\n left: originPosition.xc,\n top: originPosition.yc\n };\n this._setStylesForContImg({});\n this._simulatePointerMove();\n } else {\n return;\n }\n } else if (this.minScale) {\n this._setStylesForContImg({\n ...this._getCenterPoints()\n });\n } else {\n return;\n }\n\n this.scaleChange.emit(size);\n if (!noAutoCrop) {\n this._cropIfAutoCrop();\n }\n\n }\n\n private _getCenterPoints() {\n const root = this._elementRef.nativeElement as HTMLElement;\n const img = this._imgCanvas.nativeElement;\n const x = (root.offsetWidth - (img.width)) / 2;\n const y = (root.offsetHeight - (img.height)) / 2;\n return {\n x,\n y\n };\n }\n\n /**\n * Fit to screen\n */\n public fitToScreen() {\n const container = this._elementRef.nativeElement as HTMLElement;\n const min = {\n width: container.offsetWidth,\n height: container.offsetHeight\n };\n const { width, height } = this._img;\n const minScale = {\n width: min.width / width,\n height: min.height / height\n };\n const result = Math.max(minScale.width, minScale.height);\n this.setScale(result);\n }\n\n public fit() {\n this.setScale(this.minScale);\n }\n\n private _pointerDown = (event: TouchEvent | MouseEvent) => {\n // Don't do anything if the\n // user is using anything other than the main mouse button.\n if (this._isSliding || (!isTouchEvent(event) && event.button !== 0)) {\n return;\n }\n\n this._ngZone.run(() => {\n this._isSliding = true;\n this.offset = {\n x: this._imgRect.x,\n y: this._imgRect.y,\n left: this._imgRect.xc,\n top: this._imgRect.yc\n };\n this._lastPointerEvent = event;\n this._startPointerEvent = getGesturePointFromEvent(event);\n event.preventDefault();\n this._bindGlobalEvents(event);\n });\n\n }\n\n /**\n * Simulate pointerMove with clientX = 0 and clientY = 0,\n * this is used by `setScale` and `rotate`\n */\n private _simulatePointerMove() {\n this._isSliding = true;\n this._startPointerEvent = {\n x: 0,\n y: 0\n };\n this._pointerMove({\n clientX: 0,\n clientY: 0,\n type: \"n\",\n preventDefault: () => {}\n } as MouseEvent);\n this._isSliding = false;\n this._startPointerEvent = null;\n }\n\n public _markForCheck() {\n this.cd.markForCheck();\n }\n\n /**\n * Called when the user has moved their pointer after\n * starting to drag.\n */\n private _pointerMove = (event: TouchEvent | MouseEvent) => {\n if (this._isSliding) {\n event.preventDefault();\n this._lastPointerEvent = event;\n let x: number | undefined;\n let y: number | undefined;\n const canvas = this._imgCanvas.nativeElement;\n const scaleFix = this._scal3Fix;\n const config = this.config;\n const startP = this.offset;\n const point = getGesturePointFromEvent(event);\n const deltaX = point.x - this._startPointerEvent.x;\n const deltaY = point.y - this._startPointerEvent.y;\n if (!scaleFix || !startP) {\n return;\n }\n\n const isMinScaleY = canvas.height * scaleFix < config.height && config.extraZoomOut;\n const isMinScaleX = canvas.width * scaleFix < config.width && config.extraZoomOut;\n\n const limitLeft = (config.width / 2 / scaleFix) >= startP.left - (deltaX / scaleFix);\n const limitRight = (config.width / 2 / scaleFix) +\n (canvas.width) - (startP.left - (deltaX / scaleFix)) <= config.width / scaleFix;\n const limitTop = ((config.height / 2 / scaleFix) >= (startP.top - (deltaY / scaleFix)));\n const limitBottom = (\n ((config.height / 2 / scaleFix) + (canvas.height) - (startP.top - (deltaY / scaleFix))) <= (config.height / scaleFix)\n );\n\n // Limit for left\n if ((limitLeft && !isMinScaleX) || (!limitLeft && isMinScaleX)) {\n x = startP.x + (startP.left) - (config.width / 2 / scaleFix);\n }\n\n // Limit for right\n if ((limitRight && !isMinScaleX) || (!limitRight && isMinScaleX)) {\n x = startP.x + (startP.left) + (config.width / 2 / scaleFix) - canvas.width;\n }\n\n // Limit for top\n if ((limitTop && !isMinScaleY) || (!limitTop && isMinScaleY)) {\n y = startP.y + (startP.top) - (config.height / 2 / scaleFix);\n }\n\n // Limit for bottom\n if ((limitBottom && !isMinScaleY) || (!limitBottom && isMinScaleY)) {\n y = startP.y + (startP.top) + (config.height / 2 / scaleFix) - canvas.height;\n }\n\n // When press shiftKey, deprecated\n // if (event.srcEvent && event.srcEvent.shiftKey) {\n // if (Math.abs(event.deltaX) === Math.max(Math.abs(event.deltaX), Math.abs(event.deltaY))) {\n // y = this.offset.top;\n // } else {\n // x = this.offset.left;\n // }\n // }\n\n if (x === void 0) { x = (deltaX / scaleFix) + (startP.x); }\n if (y === void 0) { y = (deltaY / scaleFix) + (startP.y); }\n this._setStylesForContImg({\n x, y\n });\n }\n }\n\n public updatePosition(): void;\n public updatePosition(xOrigin: number, yOrigin: number): void;\n public updatePosition(xOrigin?: number, yOrigin?: number): void {\n const hostRect = this._rootRect();\n const areaRect = this._areaCropperRect();\n const areaWidth = areaRect.width > hostRect.width\n ? hostRect.width\n : areaRect.width;\n const areaHeight = areaRect.height > hostRect.height\n ? hostRect.height\n : areaRect.height;\n let x: number;\n let y: number;\n if (xOrigin == null && yOrigin == null) {\n xOrigin = this._imgRect.xc;\n yOrigin = this._imgRect.yc;\n }\n x = (areaRect.left - hostRect.left);\n y = (areaRect.top - hostRect.top);\n x -= (xOrigin - (areaWidth / 2));\n y -= (yOrigin - (areaHeight / 2));\n\n this._setStylesForContImg({\n x, y\n });\n }\n\n public _slideEnd() {\n this._cropIfAutoCrop();\n }\n\n private _cropIfAutoCrop() {\n if (this.config.autoCrop) {\n this.crop();\n }\n }\n\n /** + */\n public zoomIn() {\n const scale = this._scal3Fix + .05;\n if (scale > this.minScale && scale <= this._maxScale) {\n this.setScale(scale);\n } else {\n this.setScale(this._maxScale);\n }\n }\n\n /** Clean the img cropper */\n public clean() {\n // fix choosing the same image does not load\n if (this._currentInputElement) {\n this._currentInputElement.value = \"\";\n this._currentInputElement = null;\n }\n if (this.isLoaded) {\n this._imgRect = { } as any;\n this.offset = undefined;\n this.scale = undefined as any;\n this._scal3Fix = undefined;\n this._rotation = 0;\n this._minScale = undefined;\n this._isLoadedImg = false;\n this.isLoaded = false;\n this.isCropped = false;\n this._currentLoadConfig = undefined;\n this.config = this._configPrimary;\n const canvas = this._imgCanvas.nativeElement;\n canvas.width = 0;\n canvas.height = 0;\n this.cleaned.emit(null);\n this.cd.markForCheck();\n }\n }\n\n /** - */\n public zoomOut() {\n const scale = this._scal3Fix - .05;\n if (scale > this.minScale && scale <= this._maxScale) {\n this.setScale(scale);\n } else {\n this.fit();\n }\n }\n public center() {\n const newStyles = {\n ...this._getCenterPoints()\n };\n this._setStylesForContImg(newStyles);\n this._cropIfAutoCrop();\n }\n /**\n * load an image from a given configuration,\n * or from the result of a cropped image\n */\n public loadImage(config: ImgCropperLoaderConfig | string, fn?: () => void) {\n this.clean();\n const _config = this._currentLoadConfig = typeof config === \"string\"\n ? { originalDataURL: config }\n : { ...config };\n let src = _config.originalDataURL;\n this._primaryAreaWidth = this._configPrimary.width;\n this._primaryAreaHeight = this._configPrimary.height;\n if (_config.areaWidth && _config.areaHeight) {\n this.config.width = _config.areaWidth;\n this.config.height = _config.areaHeight;\n }\n src = normalizeSVG(src);\n\n const img = createHtmlImg(src);\n\n const cropEvent = { ..._config } as ImgCropperEvent;\n\n new Observable<void>(observer => {\n\n img.onerror = err => observer.error(err);\n img.onabort = err => observer.error(err);\n img.onload = () => observer.next(null);\n })\n .pipe(take(1), takeUntil(this._destroy))\n .subscribe(\n () => {\n this._imgLoaded(img);\n this._isLoadedImg = true;\n this.imageLoaded.emit(cropEvent);\n this.cd.markForCheck();\n this._ngZone.runOutsideAngular(() => {\n this._ngZone\n .onStable\n .asObservable()\n .pipe(take(1), takeUntil(this._destroy))\n .subscribe(\n () => setTimeout(() => this._ngZone.run(() => this._positionImg(cropEvent, fn)))\n );\n });\n },\n () => {\n const error: ImgCropperErrorEvent = {\n name: _config.name,\n error: ImgCropperError.Type,\n type: _config.type,\n size: _config.size\n };\n this.error.emit(error);\n }\n );\n }\n\n private _updateAreaIfNeeded() {\n if (!this._config.responsiveArea) {\n return;\n }\n\n const rootRect = this._rootRect();\n const areaRect = this._areaCropperRect();\n const minWidth = this.config.minWidth || 1;\n const minHeight = this.config.minHeight || 1;\n if (!(\n areaRect.width > rootRect.width\n || areaRect.height > rootRect.height\n || areaRect.width < this._primaryAreaWidth\n || areaRect.height < this._primaryAreaHeight\n )) {\n return;\n }\n const areaWidthConf = Math.max(this.config.width, minWidth);\n const areaWidthMax = Math.max(rootRect.width, minWidth);\n const minHost = Math.min(\n Math.max(rootRect.width, minWidth), Math.max(rootRect.height, minHeight)\n );\n const currentScale = this._scal3Fix;\n let newScale = 0;\n const roundConf = this.config.round;\n\n if (roundConf) {\n this.config.width = this.config.height = minHost;\n } else {\n if (areaWidthConf === areaRect.width) {\n if (areaWidthMax > this._primaryAreaWidth) {\n this.config.width = this._primaryAreaWidth;\n this.config.height = (this._primaryAreaWidth * areaRect.height) / areaRect.width;\n newScale = (currentScale * this._primaryAreaWidth) / areaRect.width;\n } else {\n this.config.width = areaWidthMax;\n this.config.height = (areaWidthMax * areaRect.height) / areaRect.width;\n newScale = (currentScale * areaWidthMax) / areaRect.width;\n }\n this._updateMinScale();\n this._updateMaxScale();\n this.setScale(newScale, true);\n this._markForCheck();\n }\n }\n }\n\n private _updateAbsoluteScale() {\n const scale = this._scal3Fix / (this.config.width / this._primaryAreaWidth);\n this._absoluteScale = scale;\n }\n\n /**\n * Load Image from URL\n * @deprecated Use `loadImage` instead of `setImageUrl`\n * @param src URL\n * @param fn function that will be called before emit the event loaded\n */\n public setImageUrl(src: string, fn?: () => void) {\n this.loadImage(src, fn);\n }\n\n private _positionImg(cropEvent: ImgCropperEvent, fn?: () => void) {\n const loadConfig = this._currentLoadConfig;\n this._updateMinScale(this._imgCanvas.nativeElement);\n this._updateMaxScale();\n this.isLoaded = false;\n if (fn) {\n fn();\n } else {\n if (loadConfig.scale) {\n this.setScale(loadConfig.scale, true);\n } else {\n this.setScale(this.minScale, true);\n }\n this.rotate(loadConfig.rotation || 0);\n this._updateAreaIfNeeded();\n this._markForCheck();\n this._ngZone.runOutsideAngular(() => {\n this._ngZone\n .onStable\n .asObservable()\n .pipe(take(1), takeUntil(this._destroy))\n .subscribe(() => {\n if (loadConfig.xOrigin != null && loadConfig.yOrigin != null) {\n this.updatePosition(loadConfig.xOrigin, loadConfig.yOrigin);\n }\n this._updateAreaIfNeeded();\n this.isLoaded = true;\n this._cropIfAutoCrop();\n this._ngZone.run(() => {\n this._markForCheck();\n this.ready.emit(cropEvent);\n });\n });\n });\n }\n }\n\n public rotate(degrees: number) {\n let validDegrees = _normalizeDegrees(degrees);\n // If negative convert to positive\n if (validDegrees < 0) {\n validDegrees += 360;\n }\n const newRotation = _normalizeDegrees((this._rotation || 0) + validDegrees);\n if (newRotation === this._rotation) {\n return;\n }\n const degreesRad = validDegrees * Math.PI / 180;\n const canvas = this._imgCanvas.nativeElement;\n const canvasClon = createCanvasImg(canvas);\n const ctx = canvas.getContext(\"2d\");\n this._rotation = newRotation;\n\n // clear\n ctx.clearRect(0, 0, canvasClon.width, canvasClon.height);\n\n // rotate canvas image\n const transform = `rotate(${validDegrees}deg) scale(${1 / this._scal3Fix})`;\n const transformOrigin = `${this._imgRect.xc}px ${this._imgRect.yc}px 0`;\n canvas.style.transform = transform;\n // tslint:disable-next-line: deprecation\n canvas.style.webkitTransform = transform;\n canvas.style.transformOrigin = transformOrigin;\n // tslint:disable-next-line: deprecation\n canvas.style.webkitTransformOrigin = transformOrigin;\n\n const { left, top } = canvas.getBoundingClientRect() as DOMRect;\n\n // save rect\n const canvasRect = canvas.getBoundingClientRect();\n\n // remove rotate styles\n canvas.removeAttribute(\"style\");\n\n // set w & h\n const w = canvasRect.width;\n const h = canvasRect.height;\n ctx.canvas.width = w;\n ctx.canvas.height = h;\n\n // clear\n ctx.clearRect(0, 0, w, h);\n\n // translate and rotate\n ctx.translate(w / 2, h / 2);\n ctx.rotate(degreesRad);\n ctx.drawImage(canvasClon, -canvasClon.width / 2, -canvasClon.height / 2);\n\n // Update min scale\n this._updateMinScale(canvas);\n this._updateMaxScale();\n\n // set the minimum scale, only if necessary\n if (this.scale < this.minScale) {\n this.setScale(0, true);\n } // ↑ no AutoCrop\n\n const rootRect = this._rootRect();\n\n this._setStylesForContImg({\n x: (left - rootRect.left),\n y: (top - rootRect.top)\n });\n\n // keep image inside the frame\n const originPosition = {...this._imgRect};\n this.offset = {\n x: originPosition.x,\n y: originPosition.y,\n left: originPosition.xc,\n top: originPosition.yc\n };\n this._setStylesForContImg({});\n this._simulatePointerMove();\n\n this._cropIfAutoCrop();\n }\n\n public _updateMinScale(canvas?: HTMLCanvasElement) {\n if (!canvas) {\n canvas = this._imgCanvas.nativeElement;\n }\n const config = this.config;\n const minScale = (config.extraZoomOut ? Math.min : Math.max)(\n config.width / canvas.width,\n config.height / canvas.height);\n this._minScale = minScale;\n this.minScaleChange.emit(minScale);\n }\n\n private _updateMaxScale() {\n const maxScale = (this.config.width / this._primaryAreaWidth);\n this._maxScale = maxScale;\n this.maxScaleChange.emit(maxScale);\n }\n\n /**\n * Resize & crop image\n */\n public crop(config?: ImgCropperConfig): ImgCropperEvent {\n const newConfig = config\n ? mergeDeep({ }, this.config || new ImgCropperConfig(), config) : this.config;\n const cropEvent = this._imgCrop(newConfig);\n this.cd.markForCheck();\n return cropEvent;\n }\n\n /**\n * @docs-private\n */\n private _imgCrop(myConfig: ImgCropperConfig) {\n const canvasElement: HTMLCanvasElement = document.createElement(\"canvas\");\n const areaRect = this._areaCropperRect();\n const canvasRect = this._canvasRect();\n const scaleFix = this._scal3Fix;\n const left = (areaRect.left - canvasRect.left) / scaleFix;\n const top = (areaRect.top - canvasRect.top) / scaleFix;\n const { output } = myConfig;\n const currentImageLoadConfig = this._currentLoadConfig;\n const area = {\n width: myConfig.width,\n height: myConfig.height\n };\n canvasElement.width = area.width / scaleFix;\n canvasElement.height = area.height / scaleFix;\n const ctx = canvasElement.getContext(\"2d\");\n if (myConfig.fill) {\n ctx.fillStyle = myConfig.fill;\n ctx.fillRect(0, 0, canvasElement.width, canvasElement.height);\n }\n ctx.drawImage(this._imgCanvas.nativeElement,\n -(left), -(top),\n );\n const result = canvasElement;\n if (myConfig.output === ImgResolution.Default) {\n resizeCanvas(\n result,\n this._configPrimary.width,\n this._configPrimary.height);\n } else if (typeof output === \"object\") {\n if (output.width && output.height) {\n resizeCanvas(result, output.width, output.height);\n } else if (output.width) {\n const newHeight = area.height * output.width / area.width;\n resizeCanvas(result, output.width, newHeight);\n } else if (output.height) {\n const newWidth = area.width * output.height / area.height;\n resizeCanvas(result, newWidth, output.height);\n }\n }\n const type = currentImageLoadConfig.originalDataURL.startsWith(\"http\")\n ? currentImageLoadConfig.type || myConfig.type\n : myConfig.type || currentImageLoadConfig.type;\n const dataURL = result.toDataURL(type);\n const cropEvent: ImgCropperEvent = {\n dataURL,\n type,\n name: currentImageLoadConfig.name,\n areaWidth: this._primaryAreaWidth,\n areaHeight: this._primaryAreaHeight,\n width: result.width,\n height: result.height,\n originalDataURL: currentImageLoadConfig.originalDataURL,\n scale: this._absoluteScale,\n rotation: this._rotation,\n left: (areaRect.left - canvasRect.left) / this._scal3Fix,\n top: (areaRect.top - canvasRect.top) / this._scal3Fix,\n size: currentImageLoadConfig.size,\n xOrigin: this._imgRect.xc,\n yOrigin: this._imgRect.yc,\n position: {\n x: this._imgRect.xc,\n y: this._imgRect.yc\n }\n };\n\n this.isCropped = true;\n this.cropped.emit(cropEvent);\n return cropEvent;\n }\n\n public _rootRect(): DOMRect {\n return this._elementRef.nativeElement.getBoundingClientRect() as DOMRect;\n }\n\n public _areaCropperRect(): DOMRect {\n return this._areaRef.nativeElement.getBoundingClientRect() as DOMRect;\n }\n\n public _canvasRect(): DOMRect {\n return this._imgCanvas.nativeElement.getBoundingClientRect();\n }\n\n\n /** Called when the user has lifted their pointer. */\n private _pointerUp = (event: TouchEvent | MouseEvent) => {\n if (this._isSliding) {\n event.preventDefault();\n this._removeGlobalEvents();\n this._isSliding = false;\n this._startPointerEvent = null;\n this._cropIfAutoCrop();\n }\n }\n\n /** Called when the window has lost focus. */\n private _windowBlur = () => {\n // If the window is blurred while dragging we need to stop dragging because the\n // browser won't dispatch the `mouseup` and `touchend` events anymore.\n if (this._lastPointerEvent) {\n this._pointerUp(this._lastPointerEvent);\n }\n }\n\n private _bindGlobalEvents(triggerEvent: TouchEvent | MouseEvent) {\n const element = this._document;\n const isTouch = isTouchEvent(triggerEvent);\n const moveEventName = isTouch ? \"touchmove\" : \"mousemove\";\n const endEventName = isTouch ? \"touchend\" : \"mouseup\";\n element.addEventListener(moveEventName, this._pointerMove, activeEventOptions);\n element.addEventListener(endEventName, this._pointerUp, activeEventOptions);\n\n if (isTouch) {\n element.addEventListener(\"touchcancel\", this._pointerUp, activeEventOptions);\n }\n\n const window = this._getWindow();\n\n if (typeof window !== \"undefined\" && window) {\n window.addEventListener(\"blur\", this._windowBlur);\n }\n }\n\n /** Removes any global event listeners that we may have added. */\n private _removeGlobalEvents() {\n const element = this._document;\n element.removeEventListener(\"mousemove\", this._pointerMove, activeEventOptions);\n element.removeEventListener(\"mouseup\", this._pointerUp, activeEventOptions);\n element.removeEventListener(\"touchmove\", this._pointerMove, activeEventOptions);\n element.removeEventListener(\"touchend\", this._pointerUp, activeEventOptions);\n element.removeEventListener(\"touchcancel\", this._pointerUp, activeEventOptions);\n\n const window = this._getWindow();\n\n if (typeof window !== \"undefined\" && window) {\n window.removeEventListener(\"blur\", this._windowBlur);\n }\n }\n\n /** Use defaultView of injected document if available or fallback to global window reference */\n private _getWindow(): Window {\n return this._document.defaultView || window;\n }\n\n}\n\n/**\n * Normalize degrees for cropper rotation\n * @docs-private\n */\nexport function _normalizeDegrees(n: number) {\n const de = n % 360;\n if (de % 90) {\n throw new Error(`LyCropper: Invalid \\`${n}\\` degree, only accepted values: 0, 90, 180, 270 & 360.`);\n }\n return de;\n}\n\n/**\n * @docs-private\n */\nfunction createCanvasImg(img: HTMLCanvasElement | HTMLImageElement) {\n\n // create a new canvas\n const newCanvas = document.createElement(\"canvas\");\n const context = newCanvas.getContext(\"2d\");\n\n // set dimensions\n newCanvas.width = img.width;\n newCanvas.height = img.height;\n\n // apply the old canvas to the new one\n context.drawImage(img, 0, 0);\n\n // return the new canvas\n return newCanvas;\n}\n\n\nconst DATA_IMAGE_SVG_PREFIX = \"data:image/svg+xml;base64,\";\n\nfunction normalizeSVG(dataURL: string) {\n if (window.atob && isSvgImage(dataURL)) {\n const len = dataURL.length / 5;\n const text = window.atob(dataURL.replace(DATA_IMAGE_SVG_PREFIX, \"\"));\n const span = document.createElement(\"span\");\n span.innerHTML = text;\n const svg = span.querySelector(\"svg\");\n span.setAttribute(\"style\", \"display:none\");\n document.body.appendChild(span);\n const width = parseFloat(getComputedStyle(svg).width) || 1;\n const height = parseFloat(getComputedStyle(svg).height) || 1;\n const max = Math.max(width, height);\n\n svg.setAttribute(\"width\", `${len / (width / max)}px`);\n svg.setAttribute(\"height\", `${len / (height / max)}px`);\n const result = DATA_IMAGE_SVG_PREFIX + window.btoa(span.innerHTML);\n document.body.removeChild(span);\n return result;\n }\n return dataURL;\n}\n\nfunction isSvgImage(dataUrl: string) {\n return dataUrl.startsWith(DATA_IMAGE_SVG_PREFIX);\n}\n\nfunction createHtmlImg(src: string) {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.src = src;\n return img;\n}\n\n\nfunction getGesturePointFromEvent(event: TouchEvent | MouseEvent) {\n\n // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n const point = isTouchEvent(event)\n ? (event.touches[0] || event.changedTouches[0])\n : event;\n\n return {\n x: point.clientX,\n y: point.clientY\n };\n}\n\n/** Returns whether an event is a touch event. */\nfunction isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\n return event.type[0] === \"t\";\n}\n\nexport function round(n: number) {\n return Math.round(n);\n}\n\n/**\n * Simple object check.\n * @param item\n */\nfunction isObject(item) {\n return (item && typeof item === \"object\" && !Array.isArray(item));\n}\n\nexport function mergeDeep<T, U>(target: T, source: U): T & U;\nexport function mergeDeep<T, U, V>(target: T, source1: U, source2: V): T & U & V;\nexport function mergeDeep<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;\nexport function mergeDeep(target: object, ...sources: any[]): any;\n\n/**\n * Deep merge two objects.\n * @param target\n * @param ...sources\n */\nexport function mergeDeep(target: any, ...sources: any[]) {\n if (!sources.length) { return target; }\n const source = sources.shift();\n\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) { Object.assign(target, { [key]: {} }); }\n mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return mergeDeep(target, ...sources);\n}\n\n\n/**\n * We have the cropper area in the same file to fix the build\n */\n\n@Component({\n selector: \"nice-cropper-area\",\n templateUrl: \"./image-cropper-area.template.html\",\n styleUrls: [\"./image-cropper-area.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceCropperAreaComponent implements OnDestroy {\n @ViewChild(\"resizer\")\n private readonly _resizer?: ElementRef;\n\n @Input()\n public keepAspectRatio: boolean;\n\n @Input()\n @HostBinding(\"class.round\")\n public round: boolean;\n\n /** Used to subscribe to global move and end events */\n protected _document: Document;\n private _isSliding: boolean;\n\n /** Keeps track of the last pointer event that was captured by the crop area. */\n private _lastPointerEvent: MouseEvent | TouchEvent | null;\n private _startPointerEvent: {\n x: number\n y: number\n } | null;\n private _currentWidth: number;\n private _currentHeight: number;\n private _startAreaRect: DOMRect;\n private _startImgRect: DOMRect;\n\n constructor(\n @Inject(DOCUMENT) _document: any,\n private readonly _elementRef: ElementRef,\n private readonly _cropper: NiceImageCropperComponent,\n private readonly _ngZone: NgZone,\n ) {\n this._document = _document;\n }\n\n private _resizableArea: boolean;\n\n @Input()\n public set resizableArea(val: boolean) {\n if (val !== this._resizableArea) {\n this._resizableArea = val;\n Promise.resolve(null).then(() => {\n if (val) {\n this._removeResizableArea();\n this._addResizableArea();\n } else {\n this._removeResizableArea();\n }\n });\n }\n }\n public get resizableArea() {\n return this._resizableArea;\n }\n\n public ngOnDestroy() {\n this._removeResizableArea();\n }\n\n private _addResizableArea() {\n this._ngZone.runOutsideAngular(() => {\n const element = this._resizer.nativeElement;\n element.addEventListener(\"mousedown\", this._pointerDown, activeEventOptions);\n element.addEventListener(\"touchstart\", this._pointerDown, activeEventOptions);\n });\n }\n\n private _removeResizableArea() {\n const element = this._resizer?.nativeElement;\n if (element) {\n this._lastPointerEvent = null;\n this._removeGlobalEvents();\n element.removeEventListener(\"mousedown\", this._pointerDown, activeEventOptions);\n element.removeEventListener(\"touchstart\", this._pointerDown, activeEventOptions);\n }\n }\n\n private _pointerDown = (event: MouseEvent | TouchEvent) => {\n // Don't do anything if the\n // user is using anything other than the main mouse button.\n if (this._isSliding || (!isTouchEvent(event) && event.button !== 0)) {\n return;\n }\n\n event.preventDefault();\n\n this._ngZone.run(() => {\n this._isSliding = true;\n this._lastPointerEvent = event;\n this._startPointerEvent = getGesturePointFromEvent(event);\n this._startAreaRect = this._cropper._areaCropperRect();\n this._startImgRect = this._cropper._canvasRect();\n event.preventDefault();\n this._bindGlobalEvents(event);\n });\n }\n\n private _pointerMove = (event: MouseEvent | TouchEvent) => {\n if (this._isSliding) {\n event.preventDefault();\n this._lastPointerEvent = event;\n const element: HTMLDivElement = this._elementRef.nativeElement;\n const {width, height, minWidth, minHeight} = this._cropper.config;\n const point = getGesturePointFromEvent(event);\n const deltaX = point.x - this._startPointerEvent.x;\n const deltaY = point.y - this._startPointerEvent.y;\n const startAreaRect = this._startAreaRect;\n const startImgRect = this._startImgRect;\n const isRound = this.round;\n const keepAspectRatio = this._cropper.config.keepAspectRatio || event.shiftKey;\n let newWidth = 0;\n let newHeight = 0;\n const rootRect = this._cropper._rootRect();\n\n if (isRound) {\n // The distance from the center of the cropper area to the pointer\n const originX = ((width / 2 / Math.sqrt(2)) + deltaX);\n const originY = ((height / 2 / Math.sqrt(2)) + deltaY);\n\n // Leg\n const side = Math.sqrt(originX ** 2 + originY ** 2);\n newWidth = newHeight = side * 2;\n\n } else if (keepAspectRatio) {\n newWidth = width + deltaX * 2;\n newHeight = height + deltaY * 2;\n if (width !== height) {\n if (width > height) {\n newHeight = height / (width / newWidth);\n } else if (height > width) {\n newWidth = width / (height / newHeight);\n }\n } else {\n newWidth = newHeight = Math.max(newWidth, newHeight);\n }\n } else {\n newWidth = width + deltaX * 2;\n newHeight = height + deltaY * 2;\n }\n\n // To min width\n if (newWidth < minWidth) {\n newWidth = minWidth;\n }\n // To min height\n if (newHeight < minHeight) {\n newHeight = minHeight;\n }\n\n // Do not overflow the cropper area\n const centerX = startAreaRect.x + startAreaRect.width / 2;\n const centerY = startAreaRect.y + startAreaRect.height / 2;\n const topOverflow = startImgRect.y > centerY - (newHeight / 2);\n const bottomOverflow = centerY + (newHeight / 2) > startImgRect.bottom;\n const minHeightOnOverflow = Math.min((centerY - startImgRect.y) * 2, (startImgRect.bottom - centerY) * 2);\n const leftOverflow = startImgRect.x > centerX - (newWidth / 2);\n const rightOverflow = centerX + (newWidth / 2) > startImgRect.right;\n const minWidthOnOverflow = Math.min((centerX - startImgRect.x) * 2, (startImgRect.right - centerX) * 2);\n const minOnOverflow = Math.min(minWidthOnOverflow, minHeightOnOverflow);\n if (round) {\n if (topOverflow || bottomOverflow || leftOverflow || rightOverflow) {\n newHeight = newWidth = minOnOverflow;\n }\n } else if (keepAspectRatio) {\n const newNewWidth: number[] = [];\n const newNewHeight: number[] = [];\n if ((topOverflow || bottomOverflow) && Math.min()) {\n newHeight = minHeightOnOverflow;\n newNewHeight.push(newHeight);\n newWidth = width / (height / minHeightOnOverflow);\n newNewWidth.push(newWidth);\n }\n if ((leftOverflow || rightOverflow)) {\n newWidth = minWidthOnOverflow;\n newNewWidth.push(newWidth);\n newHeight = height / (width / minWidthOnOverflow);\n newNewHeight.push(newHeight);\n }\n if (newNewWidth.length === 2) {\n newWidth = Math.min(...newNewWidth);\n }\n if (newNewHeight.length === 2) {\n newHeight = Math.min(...newNewHeight);\n }\n } else {\n if (topOverflow || bottomOverflow) {\n newHeight = minHeightOnOverflow;\n }\n if (leftOverflow || rightOverflow) {\n newWidth = minWidthOnOverflow;\n }\n }\n\n // Do not overflow the container\n if (round) {\n const min = Math.min(rootRect.width, rootRect.height);\n if (newWidth > min) {\n newWidth = newHeight = min;\n } else if (newHeight > min) {\n newWidth = newHeight = min;\n }\n } else if (keepAspectRatio) {\n if (newWidth > rootRect.width) {\n newWidth = rootRect.width;\n newHeight = height / (width / rootRect.width);\n } else if (newHeight > rootRect.height) {\n newWidth = width / (height / rootRect.height);\n newHeight = rootRect.height;\n }\n } else {\n if (newWidth > rootRect.width) {\n newWidth = rootRect.width;\n } else if (newHeight > rootRect.height) {\n newHeight = rootRect.height;\n }\n }\n\n\n // round values\n newWidth = Math.round(newWidth);\n newHeight = Math.round(newHeight);\n\n element.style.width = `${newWidth}px`;\n element.style.height = `${newHeight}px`;\n this._currentWidth = newWidth;\n this._currentHeight = newHeight;\n }\n }\n\n /** Called when the user has lifted their pointer. */\n private _pointerUp = (event: TouchEvent | MouseEvent) => {\n if (this._isSliding) {\n event.preventDefault();\n this._removeGlobalEvents();\n this._cropper._primaryAreaWidth = this._cropper.config.width = this._currentWidth;\n this._cropper._primaryAreaHeight = this._cropper.config.height = this._currentHeight;\n this._cropper.config = this._cropper.config;\n this._cropper._updateMinScale();\n this._isSliding = false;\n this._startPointerEvent = null;\n }\n }\n\n /** Called when the window has lost focus. */\n private _windowBlur = () => {\n // If the window is blurred while dragging we need to stop dragging because the\n // browser won't dispatch the `mouseup` and `touchend` events anymore.\n if (this._lastPointerEvent) {\n this._pointerUp(this._lastPointerEvent);\n }\n }\n\n private _bindGlobalEvents(triggerEvent: TouchEvent | MouseEvent) {\n const element = this._document;\n const isTouch = isTouchEvent(triggerEvent);\n const moveEventName = isTouch ? \"touchmove\" : \"mousemove\";\n const endEventName = isTouch ? \"touchend\" : \"mouseup\";\n element.addEventListener(moveEventName, this._pointerMove, activeEventOptions);\n element.addEventListener(endEventName, this._pointerUp, activeEventOptions);\n\n if (isTouch) {\n element.addEventListener(\"touchcancel\", this._pointerUp, activeEventOptions);\n }\n\n const window = this._getWindow();\n\n if (typeof window !== \"undefined\" && window) {\n window.addEventListener(\"blur\", this._windowBlur);\n }\n }\n\n /** Removes any global event listeners that we may have added. */\n private _removeGlobalEvents() {\n const element = this._document;\n element.removeEventListener(\"mousemove\", this._pointerMove, activeEventOptions);\n element.removeEventListener(\"mouseup\", this._pointerUp, activeEventOptions);\n element.removeEventListener(\"touchmove\", this._pointerMove, activeEventOptions);\n element.removeEventListener(\"touchend\", this._pointerUp, activeEventOptions);\n element.removeEventListener(\"touchcancel\", this._pointerUp, activeEventOptions);\n\n const window = this._getWindow();\n\n if (typeof window !== \"undefined\" && window) {\n window.removeEventListener(\"blur\", this._windowBlur);\n }\n }\n\n /** Use defaultView of injected document if available or fallback to global window reference */\n private _getWindow(): Window {\n return this._document.defaultView || window;\n }\n}\n","<!-- (selectstart): On Safari starting to slide temporarily triggers text selection mode which\nshow the wrong cursor. We prevent it by stopping the `selectstart` event. -->\n<div class=\"image-container\" #_imgContainer\n (selectstart)=\"$event.preventDefault()\"\n>\n <canvas #_imgCanvas></canvas>\n</div>\n<nice-cropper-area\n #_area\n *ngIf=\"_isLoadedImg\"\n [round]=\"!!config.round\"\n [resizableArea]=\"!!config.resizableArea\"\n [keepAspectRatio]=\"!!config.keepAspectRatio\"\n [ngStyle]=\"{\n width: config.width + 'px',\n height: config.height + 'px'\n }\"\n></nice-cropper-area>\n<button class=\"close-button\" mat-icon-button *ngIf=\"_isLoadedImg\" (click)=\"clean()\">\n <mat-icon>arrow_back</mat-icon>\n</button>\n","<div class=\"resizer\" #resizer *ngIf=\"resizableArea\"></div>\n","/**\n * Adapted from https://github.com/A-l-y-l-e/Alyle-UI/tree/10.5.3/src/lib/image-cropper\n */\n\nimport { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\n\nimport { NiceCropperAreaComponent, NiceImageCropperComponent } from \"./image-cropper.component\";\n\n@NgModule({\n imports: [CommonModule, MatButtonModule, MatIconModule],\n declarations: [NiceImageCropperComponent, NiceCropperAreaComponent],\n exports: [NiceImageCropperComponent]\n})\nexport class NiceImageCropperModule {}\n","import { DOCUMENT } from \"@angular/common\";\nimport { Component, Inject, OnDestroy, OnInit, Renderer2 } from \"@angular/core\";\nimport { combineLatest, Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { NiceConfigService, NiceMediaWatcherService } from \"../../providers\";\nimport { NiceConfig, Scheme } from \"../../providers/config/config.model\";\n\n@Component({\n selector: \"nice-layout\",\n template: `<ng-content></ng-content>`\n})\nexport class NiceLayoutComponent implements OnInit, OnDestroy {\n private config: NiceConfig;\n private scheme: Scheme;\n private theme: string;\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n /**\n * Constructor\n */\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _renderer2: Renderer2,\n private _niceConfigService: NiceConfigService,\n private _niceMediaWatcherService: NiceMediaWatcherService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Set the theme and scheme based on the configuration\n combineLatest([\n this._niceConfigService.config$,\n this._niceMediaWatcherService.onMediaQueryChange$([\"(prefers-color-scheme: dark)\", \"(prefers-color-scheme: light)\"])\n ]).pipe(\n takeUntil(this._unsubscribeAll),\n map(([config, mql]) => {\n const options = {\n scheme: config.scheme,\n theme: config.theme\n };\n\n if (config.scheme === \"auto\") {\n options.scheme = mql.breakpoints[\"(prefers-color-scheme: dark)\"] ? \"dark\" : \"light\";\n }\n\n return options;\n })\n ).subscribe((options) => {\n this.scheme = options.scheme;\n this.theme = options.theme;\n\n this._updateScheme();\n this._updateTheme();\n });\n\n // Subscribe to config changes\n this._niceConfigService.config$\n .pipe(takeUntil(this._unsubscribeAll))\n .subscribe((config: NiceConfig) => {\n this.config = config;\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n /**\n * Update the selected scheme\n *\n * @private\n */\n private _updateScheme(): void {\n // Remove class names for all schemes\n this._document.body.classList.remove(\"light\", \"dark\");\n\n // Add class name for the currently selected scheme\n this._document.body.classList.add(this.scheme);\n }\n\n /**\n * Update the selected theme\n *\n * @private\n */\n private _updateTheme(): void {\n // Find the class name for the previously selected theme and remove it\n this._document.body.classList.forEach((className: string) => {\n if (className.startsWith(\"theme-\")) {\n this._document.body.classList.remove(className, className.split(\"-\")[1]);\n }\n });\n\n // Add class name for the currently selected theme\n this._document.body.classList.add(`theme-${this.theme}`);\n }\n}\n","import { NgModule } from \"@angular/core\";\n\nimport { NiceLayoutComponent } from \"./layout.component\";\n\n@NgModule({\n imports: [],\n declarations: [NiceLayoutComponent],\n providers: [],\n exports: [NiceLayoutComponent]\n})\nexport class NiceLayoutModule {}\n","import { Component, Input } from \"@angular/core\";\nimport { ProgressSpinnerMode } from \"@angular/material/progress-spinner\";\n\n@Component({\n selector: \"nice-loading-spinner\",\n templateUrl: \"loading-spinner.template.html\",\n styleUrls: [\"./loading-spinner.style.scss\"]\n})\nexport class NiceLoadingSpinnerComponent {\n @Input()\n public loading: boolean;\n\n @Input()\n mode: ProgressSpinnerMode = \"indeterminate\";\n\n @Input()\n diameter = 50;\n}\n","<mat-spinner [diameter]=\"diameter\" [mode]=\"mode\" [color]=\"'accent'\"></mat-spinner>\n","import { OverlayContainer } from \"@angular/cdk/overlay\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class DynamicOverlayContainer extends OverlayContainer {\n public setContainerElement(containerElement: HTMLElement): void {\n this._containerElement = containerElement;\n }\n}\n","import { Overlay, OverlayKeyboardDispatcher, OverlayPositionBuilder, ScrollStrategyOptions, OverlayOutsideClickDispatcher } from \"@angular/cdk/overlay\";\nimport { ComponentFactoryResolver, Inject, Injectable, Injector, NgZone, Renderer2, RendererFactory2 } from \"@angular/core\";\nimport { DynamicOverlayContainer } from \"./dynamic-overlay-container.service\";\nimport { Directionality } from \"@angular/cdk/bidi\";\nimport { DOCUMENT, Location } from \"@angular/common\";\n\n@Injectable({ providedIn: \"root\" })\nexport class DynamicOverlay extends Overlay {\n private readonly _dynamicOverlayContainer: DynamicOverlayContainer;\n private renderer: Renderer2;\n\n constructor(\n @Inject(DOCUMENT) _document: any,\n scrollStrategies: ScrollStrategyOptions,\n _overlayContainer: DynamicOverlayContainer,\n _componentFactoryResolver: ComponentFactoryResolver,\n _positionBuilder: OverlayPositionBuilder,\n _keyboardDispatcher: OverlayKeyboardDispatcher,\n _injector: Injector,\n _ngZone: NgZone,\n _directionality: Directionality,\n rendererFactory: RendererFactory2,\n _location: Location,\n _outsideClickDispatcher: OverlayOutsideClickDispatcher\n ) {\n super(\n scrollStrategies,\n _overlayContainer,\n _componentFactoryResolver,\n _positionBuilder,\n _keyboardDispatcher,\n _injector,\n _ngZone,\n _document,\n _directionality,\n _location,\n _outsideClickDispatcher\n );\n this.renderer = rendererFactory.createRenderer(null, null);\n\n this._dynamicOverlayContainer = _overlayContainer;\n }\n\n public setContainerElement(containerElement: HTMLElement): void {\n this.renderer.setStyle(containerElement, \"transform\", \"translateZ(0)\");\n this._dynamicOverlayContainer.setContainerElement(containerElement);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_LOADING_OPTIONS = new InjectionToken(\"nice_loading_options\");\n","import { Directive, ElementRef, Inject, Input, Optional, Type } from \"@angular/core\";\nimport { OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { DynamicOverlay } from \"../../providers/overlay/dynamic-overlay.service\";\nimport { NiceLoadingSpinnerComponent } from \"./loading-spinner.component\";\nimport { NICE_LOADING_OPTIONS } from \"./loading.constant\";\n\nexport interface NiceLoadingOptions {\n customLoading?: Type<any>;\n}\n\n@Directive({ selector: \"[niceLoadingOverlay]\" })\nexport class NiceLoadingDirective {\n private overlayRef: OverlayRef;\n private _loading = false;\n\n @Input(\"niceLoadingOverlay\")\n public set loading(loading: boolean | null) {\n setTimeout(() => {\n if (loading === this._loading) {\n return;\n }\n this._loading = loading;\n if (!this.overlayRef) {\n this.overlay.setContainerElement(this.elRef.nativeElement);\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n hasBackdrop: true,\n panelClass: \"nice-loading-overlay\"\n });\n }\n if (this._loading) {\n this.overlayRef.attach(new ComponentPortal(this.options?.customLoading ?? NiceLoadingSpinnerComponent));\n } else {\n this.overlayRef.detach();\n }\n }, 0);\n }\n\n constructor(\n @Optional() @Inject(NICE_LOADING_OPTIONS) private options: NiceLoadingOptions,\n private elRef: ElementRef,\n private overlay: DynamicOverlay\n ) {}\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { DynamicOverlayContainer } from \"../../providers/overlay/dynamic-overlay-container.service\";\nimport { DynamicOverlay } from \"../../providers/overlay/dynamic-overlay.service\";\nimport { NiceLoadingSpinnerComponent } from \"./loading-spinner.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\nimport { NiceLoadingDirective, NiceLoadingOptions } from \"./loading.directive\";\nimport { NICE_LOADING_OPTIONS } from \"./loading.constant\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatProgressSpinnerModule\n ],\n declarations: [\n NiceLoadingSpinnerComponent,\n NiceLoadingDirective\n ],\n providers: [DynamicOverlayContainer, DynamicOverlay],\n exports: [\n NiceLoadingSpinnerComponent,\n NiceLoadingDirective\n ]\n})\nexport class NiceLoadingSpinnerModule {\n public static forRoot(options?: NiceLoadingOptions): ModuleWithProviders<NiceLoadingSpinnerModule> {\n return {\n ngModule: NiceLoadingSpinnerModule,\n providers: [\n {\n provide: NICE_LOADING_OPTIONS,\n useValue: options\n }\n ]\n };\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Input, OnInit, Output, PLATFORM_ID, ViewChild } from \"@angular/core\";\nimport { isPlatformServer } from \"@angular/common\";\n\n@Component({\n selector: \"nice-lottie\",\n templateUrl: \"lottie.template.html\"\n})\nexport class NiceLottieComponent implements OnInit, AfterViewInit {\n private _options: import(\"lottie-web\").AnimationConfigWithPath | import(\"lottie-web\").AnimationConfigWithData;\n private _lottie: typeof import(\"lottie-web\").default;\n\n @Input()\n public options: any;\n @Input()\n public width: number;\n @Input()\n public height: number;\n\n @Output()\n public animCreated: EventEmitter<any> = new EventEmitter();\n\n @ViewChild(\"animationContainer\")\n public animationContainer: ElementRef;\n\n public viewWidth: string;\n public viewHeight: string;\n\n constructor(@Inject(PLATFORM_ID) private platformId: string) {\n }\n\n public ngOnInit(): void {\n this.viewWidth = this.width + \"px\" || \"100%\";\n this.viewHeight = this.height + \"px\" || \"100%\";\n }\n\n public async ngAfterViewInit(): Promise<void> {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this._lottie = (await import(\"lottie-web\")).default;\n this._options = {\n container: this.animationContainer.nativeElement,\n renderer: this.options.renderer || \"svg\",\n loop: this.options.loop !== false,\n autoplay: this.options.autoplay !== false,\n animationData: this.options.animationData,\n path: this.options.path || \"\",\n rendererSettings: this.options.rendererSettings || {}\n };\n\n const anim: any = this._lottie.loadAnimation(this._options);\n this.animCreated.emit(anim);\n }\n}\n","<div #animationContainer\n [ngStyle]=\"{'width': viewWidth, 'height': viewHeight, 'overflow':'hidden', 'margin': '0 auto'}\">\n</div>\n","import { NgModule } from \"@angular/core\";\nimport { NiceLottieComponent } from \"./lottie.component\";\nimport { CommonModule } from \"@angular/common\";\n\n@NgModule({\n imports: [CommonModule],\n declarations: [NiceLottieComponent],\n exports: [NiceLottieComponent]\n})\nexport class NiceLottieModule {}\n","import { ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener, OnDestroy } from \"@angular/core\";\nimport { Observable, Subject } from \"rxjs\";\n\n@Directive()\n// tslint:disable-next-line:class-name directive-class-suffix\nexport abstract class _HintComponentBase implements OnDestroy {\n\n /** The timeout ID of any current timer set to show the tooltip */\n private _showTimeoutId: number | undefined;\n\n /** The timeout ID of any current timer set to hide the tooltip */\n private _hideTimeoutId: number | undefined;\n\n /** Element that caused the tooltip to open. */\n _triggerElement: HTMLElement;\n\n /** Amount of milliseconds to delay the closing sequence. */\n _mouseLeaveHideDelay: number;\n\n /** Reference to the internal tooltip element. */\n abstract _hint: ElementRef<HTMLElement>;\n\n /** Whether interactions on the page should close the tooltip */\n private _closeOnInteraction = false;\n\n /** Whether the tooltip is currently visible. */\n private _isVisible = false;\n\n /** Subject for notifying that the tooltip has been hidden from the view */\n private readonly _onHide: Subject<void> = new Subject();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n /**\n * Shows the tooltip with an animation originating from the provided origin\n * @param delay Amount of milliseconds to the delay showing the tooltip.\n */\n show(delay: number): void {\n // Cancel the delayed hide if it is scheduled\n clearTimeout(this._hideTimeoutId);\n\n this._showTimeoutId = setTimeout(() => {\n this._toggleVisibility(true);\n this._showTimeoutId = undefined;\n }, delay) as unknown as number;\n }\n\n /**\n * Begins the animation to hide the tooltip after the provided delay in ms.\n * @param delay Amount of milliseconds to delay showing the tooltip.\n */\n hide(delay: number): void {\n // Cancel the delayed show if it is scheduled\n clearTimeout(this._showTimeoutId);\n\n this._hideTimeoutId = setTimeout(() => {\n this._toggleVisibility(false);\n this._hideTimeoutId = undefined;\n }, delay) as unknown as number;\n }\n\n /** Returns an observable that notifies when the tooltip has been hidden from view. */\n afterHidden(): Observable<void> {\n return this._onHide;\n }\n\n /** Whether the tooltip is being displayed. */\n isVisible(): boolean {\n return this._isVisible;\n }\n\n ngOnDestroy() {\n this._cancelPendingAnimations();\n this._onHide.complete();\n this._triggerElement = null;\n }\n\n /**\n * Interactions on the HTML body should close the tooltip immediately as defined in the\n * material design spec.\n * https://material.io/design/components/tooltips.html#behavior\n */\n _handleBodyInteraction(): void {\n if (this._closeOnInteraction) {\n this.hide(0);\n }\n }\n\n /**\n * Marks that the tooltip needs to be checked in the next change detection run.\n * Mainly used for rendering the initial text before positioning a tooltip, which\n * can be problematic in components with OnPush change detection.\n */\n _markForCheck(): void {\n this._changeDetectorRef.markForCheck();\n }\n\n @HostListener(\"mouseleave\", [\"$event\"])\n _handleMouseLeave({relatedTarget}: MouseEvent) {\n if (!relatedTarget || !this._triggerElement.contains(relatedTarget as Node)) {\n if (this.isVisible()) {\n this.hide(this._mouseLeaveHideDelay);\n } else {\n this._finalizeAnimation(false);\n }\n }\n }\n\n /**\n * Callback for when the timeout in this.show() gets completed.\n * This method is only needed by the mdc-tooltip, and so it is only implemented\n * in the mdc-tooltip, not here.\n */\n protected _onShow(): void {}\n\n /** Cancels any pending animation sequences. */\n _cancelPendingAnimations() {\n clearTimeout(this._showTimeoutId);\n clearTimeout(this._hideTimeoutId);\n this._showTimeoutId = this._hideTimeoutId = undefined;\n }\n\n /** Handles the cleanup after an animation has finished. */\n private _finalizeAnimation(toVisible: boolean) {\n if (toVisible) {\n this._closeOnInteraction = true;\n } else if (!this.isVisible()) {\n this._onHide.next();\n }\n }\n\n /** Toggles the visibility of the tooltip element. */\n private _toggleVisibility(isVisible: boolean) {\n // We set the classes directly here ourselves so that toggling the tooltip state\n // isn't bound by change detection. This allows us to hide it even if the\n // view ref has been detached from the CD tree.\n this._isVisible = isVisible;\n\n if (isVisible) {\n this._onShow();\n }\n }\n}\n","import { Injectable, OnDestroy } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, NavigationEnd, Router } from \"@angular/router\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationItem } from \"./navigation.types\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class NiceNavigationService implements OnDestroy {\n private _onNavigationChanged = new BehaviorSubject<any>(null);\n private _onNavigationRegistered = new BehaviorSubject<any>(null);\n private _onNavigationUnregistered = new BehaviorSubject<any>(null);\n private _defaultNavigationKey: string;\n private _currentNavigationKey: string;\n private _componentRegistry: Map<string, any> = new Map<string, any>();\n private _navigationStore: Map<string, NiceNavigationItem[]> = new Map<string, any>();\n\n protected _unsubscribeAll: Subject<any>;\n\n /**\n * Constructor\n */\n constructor(private router: Router) {\n this._unsubscribeAll = new Subject();\n this.listenOnRouteChange();\n }\n\n public get onNavigationChanged(): Observable<any> {\n return this._onNavigationChanged.asObservable();\n }\n\n public get onNavigationRegistered(): Observable<any> {\n return this._onNavigationRegistered.asObservable();\n }\n\n public get onNavigationUnregistered(): Observable<any> {\n return this._onNavigationUnregistered.asObservable();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n public ngOnDestroy(): void {\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n /**\n * Register navigation component\n */\n public registerComponent(name: string, component: any): void {\n this._componentRegistry.set(name, component);\n }\n\n /**\n * Deregister navigation component\n */\n public deregisterComponent(name: string): void {\n this._componentRegistry.delete(name);\n }\n\n /**\n * Get navigation component from the registry\n */\n public getComponent(name: string): any {\n return this._componentRegistry.get(name);\n }\n\n /**\n * Store the given navigation with the given key\n */\n public storeNavigation(key: string, navigation: NiceNavigationItem[], isDefault = false): void {\n // Add to the store\n this._navigationStore.set(key, navigation);\n\n // Notify the subject\n this._onNavigationRegistered.next([key, navigation, key === this._currentNavigationKey]);\n\n if (isDefault) {\n this._defaultNavigationKey = key;\n }\n }\n\n /**\n * Get navigation from storage by key\n */\n public getNavigation(key: string): NiceNavigationItem[] {\n return this._navigationStore.get(key) ?? [];\n }\n\n /**\n * Delete the navigation from the storage\n */\n public deleteNavigation(key: string): void {\n // Check if the navigation exists\n if (!this._navigationStore.has(key)) {\n console.warn(`Navigation with the key '${key}' does not exist in the store.`);\n }\n\n // Delete from the storage\n this._navigationStore.delete(key);\n\n // Notify the subject\n this._onNavigationUnregistered.next(key);\n }\n\n /**\n * Utility function that returns a flattened\n * version of the given navigation array\n */\n public getFlatNavigation(navigation: NiceNavigationItem[], flatNavigation: NiceNavigationItem[] = []): NiceNavigationItem[] {\n for (const item of navigation) {\n if (item.type === \"basic\") {\n flatNavigation.push(item);\n continue;\n }\n\n if (item.type === \"aside\" || item.type === \"collapsable\" || item.type === \"group\") {\n if (item.children) {\n this.getFlatNavigation(item.children, flatNavigation);\n }\n }\n }\n\n return flatNavigation;\n }\n\n /**\n * Utility function that returns the item\n * with the given id from given navigation\n */\n public getItem(id: string, navigation: NiceNavigationItem[]): NiceNavigationItem | null {\n for (const item of navigation) {\n if (item.id === id) {\n return item;\n }\n\n if (item.children) {\n const childItem = this.getItem(id, item.children);\n\n if (childItem) {\n return childItem;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Utility function that returns the item's parent\n * with the given id from given navigation\n */\n public getItemParent(\n id: string,\n navigation: NiceNavigationItem[],\n parent: NiceNavigationItem[] | NiceNavigationItem\n ): NiceNavigationItem[] | NiceNavigationItem | null {\n for (const item of navigation) {\n if (item.id === id) {\n return parent;\n }\n\n if (item.children) {\n const childItem = this.getItemParent(id, item.children, item);\n\n if (childItem) {\n return childItem;\n }\n }\n }\n\n return null;\n }\n\n public getCurrentNavigation(): NiceNavigationItem[] {\n if (!this._currentNavigationKey) {\n console.warn(`The current navigation is not set.`);\n return;\n }\n\n return this.getNavigation(this._currentNavigationKey);\n }\n\n public setCurrentNavigation(key: string): void {\n // Check if the sidebar exists\n if (!this._navigationStore.has(key)) {\n console.warn(`Navigation with the key '${key}' does not exist in the store.`);\n }\n\n if (this._currentNavigationKey === key) {\n return;\n }\n\n // Set the current adminNavigation key\n this._currentNavigationKey = key;\n\n // Notify the subject\n this._onNavigationChanged.next(key);\n }\n\n private listenOnRouteChange(): void {\n this.router.events.pipe(\n takeUntil(this._unsubscribeAll),\n filter((e) => e instanceof NavigationEnd)\n ).subscribe(() => {\n const route = this.lastChild(this.router.routerState.snapshot.root);\n if (route.data.navigationKey) {\n this.setCurrentNavigation(route.data.navigationKey);\n } else if (this._defaultNavigationKey) {\n this.setCurrentNavigation(this._defaultNavigationKey);\n }\n });\n }\n\n private lastChild(route: ActivatedRouteSnapshot): ActivatedRouteSnapshot {\n if (route.firstChild) {\n return this.lastChild(route.firstChild);\n } else {\n return route;\n }\n }\n}\n","import { ChangeDetectorRef, Component, Directive, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from \"@angular/core\";\nimport { distinctUntilChanged, ReplaySubject, startWith, Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { NiceUtilsService } from \"../../providers\";\nimport { NiceNavigationService } from \"./navigation.service\";\nimport { NiceNavigationItem } from \"./navigation.types\";\n\n@Component({\n template: ``\n})\nexport class NiceNavigationComponent implements OnInit, OnDestroy, OnChanges {\n protected _navigation: NiceNavigationItem[];\n protected _unsubscribeAll: Subject<any>;\n\n public animateNextNavChange = false;\n public onRefreshed = new ReplaySubject<boolean>(1);\n public name: string;\n\n constructor(\n protected _changeDetectorRef: ChangeDetectorRef,\n protected _niceNavigationService: NiceNavigationService,\n protected _niceUtilsService: NiceUtilsService\n ) {\n this._unsubscribeAll = new Subject();\n }\n\n public ngOnInit(): void {\n // Make sure the name input is not an empty string\n if (this.name === \"\") {\n this.name = this._niceUtilsService.randomId();\n }\n\n // Register the navigation component\n this._niceNavigationService.registerComponent(this.name, this);\n\n this._niceNavigationService.onNavigationChanged.pipe(\n distinctUntilChanged(),\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n this.animateNextNavChange = !!this._navigation?.length;\n this._navigation = this._niceNavigationService.getCurrentNavigation();\n this._changeDetectorRef.markForCheck();\n });\n\n this._niceNavigationService.onNavigationRegistered.pipe(\n filter((x) => !!x),\n distinctUntilChanged(),\n takeUntil(this._unsubscribeAll)\n ).subscribe(([_, __, isActive]) => {\n if (!isActive) {\n return;\n }\n\n this.animateNextNavChange = !!this._navigation?.length;\n this._navigation = this._niceNavigationService.getCurrentNavigation();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n // Deregister the navigation component from the registry\n this._niceNavigationService.deregisterComponent(this.name);\n\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n // Navigation\n if (\"navigation\" in changes) {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Refresh the component to apply the changes\n */\n public refresh(): void {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n\n // Execute the observable\n this.onRefreshed.next(true);\n }\n\n /**\n * Track by function for ngFor loops\n */\n public trackByFn(index: number, item: any): any {\n return item.id || index;\n }\n}\n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-horizontal-navigation-basic-item\",\n templateUrl: \"./basic.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceHorizontalNavigationBasicItemComponent implements OnInit, OnDestroy {\n private _niceHorizontalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceHorizontalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceHorizontalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Item wrapper -->\n<div\n class=\"nice-horizontal-navigation-item-wrapper\"\n [class.nice-horizontal-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n>\n <!-- Item with an internal link -->\n <div\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\"\n [ngClass]=\"{ 'nice-horizontal-navigation-item-active-forced': item.active }\"\n [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'nice-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"{ exact: item.exactMatch || false }\"\n [queryParams]=\"item?.queryParams\"\n [state]=\"item?.state\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item with an external link -->\n <a\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"item.link && item.externalLink && !item.function && !item.disabled\"\n [href]=\"item.link\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with a function -->\n <div\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"!item.link && item.function && !item.disabled\"\n [ngClass]=\"{ 'nice-horizontal-navigation-item-active-forced': item.active }\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item with an internal link and function -->\n <div\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"item.link && !item.externalLink && item.function && !item.disabled\"\n [ngClass]=\"{ 'nice-horizontal-navigation-item-active-forced': item.active }\"\n [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'nice-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"{ exact: item.exactMatch || false }\"\n [queryParams]=\"item?.queryParams\"\n [state]=\"item?.state\"\n (click)=\"item.function(item)\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item with an external link and function -->\n <a\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"item.link && item.externalLink && item.function && !item.disabled\"\n [href]=\"item.link\"\n (click)=\"item.function(item)\"\n mat-menu-item\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with a no link and no function -->\n <div\n class=\"nice-horizontal-navigation-item\"\n *ngIf=\"!item.link && !item.function && !item.disabled\"\n [ngClass]=\"{'nice-horizontal-navigation-item-active-forced': item.active}\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item is disabled -->\n <div\n class=\"nice-horizontal-navigation-item nice-horizontal-navigation-item-disabled\"\n *ngIf=\"item.disabled\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n <!-- Icon -->\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <span class=\"nice-vertical-navigation-item-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></span>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType === 'svg'\"\n ></mat-icon>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-horizontal-navigation-item-title-wrapper\">\n <div class=\"nice-horizontal-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n </div>\n <div\n class=\"nice-horizontal-navigation-item-subtitle text-hint\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-horizontal-navigation-item-badge\"\n *ngIf=\"item.badge\"\n >\n <div\n class=\"nice-horizontal-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\">\n {{ item.badge.title | translate }}\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-horizontal-navigation-divider-item\",\n templateUrl: \"./divider.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceHorizontalNavigationDividerItemComponent implements OnInit, OnDestroy {\n private _niceHorizontalNavigationComponent;\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceHorizontalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceHorizontalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Divider -->\n<div\n class=\"nice-horizontal-navigation-item-wrapper divider\"\n [ngClass]=\"item.classes?.wrapper\"\n></div>\n","import { Injector, Pipe, PipeTransform } from \"@angular/core\";\nimport { Observable, of } from \"rxjs\";\nimport { NiceNavigationItem } from \"../navigation.types\";\nimport { NavigationHideItemResolver } from \"../providers/hide-item.resolver\";\n\n@Pipe({ name: \"niceShouldHide\" })\nexport class NiceShouldHidePipe implements PipeTransform {\n constructor(private injector: Injector) {}\n\n public transform(value: NiceNavigationItem): Observable<boolean> {\n if (!value.hidden) {\n return of(false);\n }\n\n if (typeof value === \"boolean\") {\n return of(true);\n }\n\n if (typeof value.hidden !== \"function\") {\n return of(false);\n }\n\n const resolver = this.injector.get(value.hidden, null) as NavigationHideItemResolver;\n if (!resolver) {\n return of((value.hidden as (item: NiceNavigationItem) => boolean)(value));\n }\n\n return resolver.shouldHide(value);\n }\n}\n","import { BooleanInput } from \"@angular/cdk/coercion\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from \"@angular/core\";\nimport { MatMenu } from \"@angular/material/menu\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-horizontal-navigation-branch-item\",\n templateUrl: \"./branch.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceHorizontalNavigationBranchItemComponent implements OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_child: BooleanInput;\n\n private _niceHorizontalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public child = false;\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n @ViewChild(\"matMenu\", { static: true })\n public matMenu: MatMenu;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceHorizontalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceHorizontalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Trigger the change detection\n */\n public triggerChangeDetection(): void {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n }\n}\n","<div\n *ngIf=\"!child\"\n [ngClass]=\"{\n 'nice-horizontal-navigation-menu-active': trigger.menuOpen,\n 'nice-horizontal-navigation-menu-active-forced': item.active\n }\"\n [matMenuTriggerFor]=\"matMenu\"\n (onMenuOpen)=\"triggerChangeDetection()\"\n (onMenuClose)=\"triggerChangeDetection()\"\n #trigger=\"matMenuTrigger\"\n>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n</div>\n\n<mat-menu\n class=\"nice-horizontal-navigation-menu-panel\"\n [overlapTrigger]=\"false\"\n #matMenu=\"matMenu\"\n>\n <ng-container *ngFor=\"let item of item.children\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"!(item | niceShouldHide | async)\">\n <!-- Basic -->\n <div\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'basic'\"\n [disabled]=\"item.disabled\"\n mat-menu-item\n >\n <nice-horizontal-navigation-basic-item\n [item]=\"item\"\n [name]=\"name\"\n ></nice-horizontal-navigation-basic-item>\n </div>\n\n <!-- Branch: aside, collapsable, group -->\n <div\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'aside' || item.type === 'collapsable' || item.type === 'group'\"\n [disabled]=\"item.disabled\"\n [matMenuTriggerFor]=\"branch.matMenu\"\n mat-menu-item\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <nice-horizontal-navigation-branch-item\n [child]=\"true\"\n [item]=\"item\"\n [name]=\"name\"\n #branch\n ></nice-horizontal-navigation-branch-item>\n </div>\n\n <!-- Divider -->\n <div\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'divider'\"\n mat-menu-item\n >\n <nice-horizontal-navigation-divider-item\n [item]=\"item\"\n [name]=\"name\"\n ></nice-horizontal-navigation-divider-item>\n </div>\n </ng-container>\n </ng-container>\n</mat-menu>\n\n<!-- Item template -->\n<ng-template\n let-item\n #itemTemplate\n>\n <div\n class=\"nice-horizontal-navigation-item-wrapper\"\n [class.nice-horizontal-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n >\n <div\n class=\"nice-horizontal-navigation-item\"\n [ngClass]=\"{\n 'nice-horizontal-navigation-item-disabled': item.disabled,\n 'nice-horizontal-navigation-item-active-forced': item.active\n }\">\n\n <!-- Icon -->\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <span class=\"nice-vertical-navigation-item-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></span>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType === 'svg'\"\n ></mat-icon>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-horizontal-navigation-item-title-wrapper\">\n <div class=\"nice-horizontal-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n </div>\n <div\n class=\"nice-horizontal-navigation-item-subtitle text-hint\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-horizontal-navigation-item-badge\"\n *ngIf=\"item.badge\">\n <div\n class=\"nice-horizontal-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\"\n >\n {{ item.badge.title | translate }}\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-horizontal-navigation-spacer-item\",\n templateUrl: \"./spacer.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceHorizontalNavigationSpacerItemComponent implements OnInit, OnDestroy {\n private _niceHorizontalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceHorizontalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceHorizontalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Spacer -->\n<div\n class=\"nice-horizontal-navigation-item-wrapper\"\n [ngClass]=\"item.classes?.wrapper\"\n></div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation } from \"@angular/core\";\nimport { niceAnimations } from \"../../../animations\";\nimport { NiceUtilsService } from \"../../../providers/utils\";\nimport { NiceNavigationComponent } from \"../navigation.component\";\nimport { NiceNavigationService } from \"../navigation.service\";\nimport { NiceNavigationItem } from \"../navigation.types\";\n\n@Component({\n selector: \"nice-horizontal-navigation\",\n templateUrl: \"./horizontal.component.html\",\n animations: niceAnimations,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: \"niceHorizontalNavigation\"\n})\nexport class NiceHorizontalNavigationComponent extends NiceNavigationComponent {\n @Input()\n public name: string = this._niceUtilsService.randomId();\n\n @Input()\n public set navigation(navigation: NiceNavigationItem[]) {\n this._navigation = navigation;\n this._changeDetectorRef.markForCheck();\n }\n public get navigation(): NiceNavigationItem[] {\n return this._navigation;\n }\n\n /**\n * Constructor\n */\n constructor(\n _changeDetectorRef: ChangeDetectorRef,\n _niceNavigationService: NiceNavigationService,\n _niceUtilsService: NiceUtilsService\n ) {\n super(_changeDetectorRef, _niceNavigationService, _niceUtilsService);\n }\n}\n","<div class=\"nice-horizontal-navigation-wrapper\">\n <ng-container *ngFor=\"let item of navigation\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"!(item | niceShouldHide | async)\">\n <!-- Basic -->\n <nice-horizontal-navigation-basic-item\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'basic'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-horizontal-navigation-basic-item>\n\n <!-- Branch: aside, collapsable, group -->\n <nice-horizontal-navigation-branch-item\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'aside' || item.type === 'collapsable' || item.type === 'group'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-horizontal-navigation-branch-item>\n\n <!-- Spacer -->\n <nice-horizontal-navigation-spacer-item\n class=\"nice-horizontal-navigation-menu-item\"\n *ngIf=\"item.type === 'spacer'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-horizontal-navigation-spacer-item>\n </ng-container>\n </ng-container>\n</div>\n","export class ScrollbarGeometry {\n public x: number;\n public y: number;\n\n public w: number;\n public h: number;\n\n constructor(x: number, y: number, w: number, h: number) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n}\n\nexport class ScrollbarPosition {\n public x: number | \"start\" | \"end\";\n public y: number | \"start\" | \"end\";\n\n constructor(x: number | \"start\" | \"end\", y: number | \"start\" | \"end\") {\n this.x = x;\n this.y = y;\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { Directive, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { ScrollbarGeometry, ScrollbarPosition } from \"./scrollbar.types\";\nimport { merge } from \"lodash-es\";\nimport PerfectScrollbar from \"perfect-scrollbar\";\nimport { fromEvent, Subject } from \"rxjs\";\nimport { debounceTime, takeUntil } from \"rxjs/operators\";\n\n/**\n * Wrapper directive for the Perfect Scrollbar: https://github.com/mdbootstrap/perfect-scrollbar\n */\n@Directive({\n selector: \"[niceScrollbar]\",\n exportAs: \"niceScrollbar\"\n})\nexport class NiceScrollbarDirective implements OnChanges, OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_niceScrollbar: BooleanInput;\n\n private _animation: number;\n private _options: PerfectScrollbar.Options;\n private _ps: PerfectScrollbar;\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n @Input()\n public niceScrollbar = true;\n\n @Input()\n public niceScrollbarOptions: PerfectScrollbar.Options;\n\n /**\n * Constructor\n */\n constructor(\n private _elementRef: ElementRef,\n private _platform: Platform,\n private _router: Router\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Getter for _elementRef\n */\n public get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n /**\n * Getter for _ps\n */\n public get ps(): PerfectScrollbar | null {\n return this._ps;\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Enabled\n if (\"niceScrollbar\" in changes) {\n // Interpret empty string as 'true'\n this.niceScrollbar = coerceBooleanProperty(changes.niceScrollbar.currentValue);\n\n // If enabled, init the directive\n if (this.niceScrollbar) {\n this._init();\n }\n // Otherwise destroy it\n else {\n this._destroy();\n }\n }\n\n // Scrollbar options\n if (\"niceScrollbarOptions\" in changes) {\n // Merge the options\n this._options = merge({}, this._options, changes.niceScrollbarOptions.currentValue);\n\n // Return if not initialized\n if (!this._ps) {\n return;\n }\n\n // Destroy and re-init the PerfectScrollbar to update its options\n setTimeout(() => {\n this._destroy();\n });\n\n setTimeout(() => {\n this._init();\n });\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Subscribe to window resize event\n fromEvent(window, \"resize\")\n .pipe(\n takeUntil(this._unsubscribeAll),\n debounceTime(150)\n )\n .subscribe(() => {\n\n // Update the PerfectScrollbar\n this.update();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n this._destroy();\n\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Is enabled\n */\n public isEnabled(): boolean {\n return this.niceScrollbar;\n }\n\n /**\n * Update the scrollbar\n */\n public update(): void {\n // Return if not initialized\n if (!this._ps) {\n return;\n }\n\n // Update the PerfectScrollbar\n this._ps.update();\n }\n\n /**\n * Destroy the scrollbar\n */\n public destroy(): void {\n this.ngOnDestroy();\n }\n\n /**\n * Returns the geometry of the scrollable element\n */\n public geometry(prefix: string = \"scroll\"): ScrollbarGeometry {\n return new ScrollbarGeometry(\n this._elementRef.nativeElement[prefix + \"Left\"],\n this._elementRef.nativeElement[prefix + \"Top\"],\n this._elementRef.nativeElement[prefix + \"Width\"],\n this._elementRef.nativeElement[prefix + \"Height\"]);\n }\n\n /**\n * Returns the position of the scrollable element\n */\n public position(absolute: boolean = false): ScrollbarPosition {\n let scrollbarPosition;\n\n if (!absolute && this._ps) {\n scrollbarPosition = new ScrollbarPosition(\n this._ps.reach.x || 0,\n this._ps.reach.y || 0\n );\n } else {\n scrollbarPosition = new ScrollbarPosition(\n this._elementRef.nativeElement.scrollLeft,\n this._elementRef.nativeElement.scrollTop\n );\n }\n\n return scrollbarPosition;\n }\n\n /**\n * Scroll to\n */\n public scrollTo(x: number, y?: number, speed?: number): void {\n if (y == null && speed == null) {\n this.animateScrolling(\"scrollTop\", x, speed);\n } else {\n if (x != null) {\n this.animateScrolling(\"scrollLeft\", x, speed);\n }\n\n if (y != null) {\n this.animateScrolling(\"scrollTop\", y, speed);\n }\n }\n }\n\n /**\n * Scroll to X\n */\n public scrollToX(x: number, speed?: number): void {\n this.animateScrolling(\"scrollLeft\", x, speed);\n }\n\n /**\n * Scroll to Y\n */\n public scrollToY(y: number, speed?: number): void {\n this.animateScrolling(\"scrollTop\", y, speed);\n }\n\n /**\n * Scroll to top\n */\n public scrollToTop(offset: number = 0, speed?: number): void {\n this.animateScrolling(\"scrollTop\", offset, speed);\n }\n\n /**\n * Scroll to bottom\n */\n public scrollToBottom(offset: number = 0, speed?: number): void {\n const top = this._elementRef.nativeElement.scrollHeight - this._elementRef.nativeElement.clientHeight;\n this.animateScrolling(\"scrollTop\", top - offset, speed);\n }\n\n /**\n * Scroll to left\n */\n public scrollToLeft(offset: number = 0, speed?: number): void {\n this.animateScrolling(\"scrollLeft\", offset, speed);\n }\n\n /**\n * Scroll to right\n */\n public scrollToRight(offset: number = 0, speed?: number): void {\n const left = this._elementRef.nativeElement.scrollWidth - this._elementRef.nativeElement.clientWidth;\n this.animateScrolling(\"scrollLeft\", left - offset, speed);\n }\n\n /**\n * Scroll to element\n */\n public scrollToElement(qs: string, offset: number = 0, ignoreVisible: boolean = false, speed?: number): void {\n const element = this._elementRef.nativeElement.querySelector(qs);\n\n if (!element) {\n return;\n }\n\n const elementPos = element.getBoundingClientRect();\n const scrollerPos = this._elementRef.nativeElement.getBoundingClientRect();\n\n if (this._elementRef.nativeElement.classList.contains(\"ps--active-x\")) {\n if (ignoreVisible && elementPos.right <= (scrollerPos.right - Math.abs(offset))) {\n return;\n }\n\n const currentPos = this._elementRef.nativeElement.scrollLeft;\n const position = elementPos.left - scrollerPos.left + currentPos;\n\n this.animateScrolling(\"scrollLeft\", position + offset, speed);\n }\n\n if (this._elementRef.nativeElement.classList.contains(\"ps--active-y\")) {\n if (ignoreVisible && elementPos.bottom <= (scrollerPos.bottom - Math.abs(offset))) {\n return;\n }\n\n const currentPos = this._elementRef.nativeElement.scrollTop;\n const position = elementPos.top - scrollerPos.top + currentPos;\n\n this.animateScrolling(\"scrollTop\", position + offset, speed);\n }\n }\n\n /**\n * Animate scrolling\n */\n public animateScrolling(target: string, value: number, speed?: number): void {\n if (this._animation) {\n window.cancelAnimationFrame(this._animation);\n this._animation = null;\n }\n\n if (!speed || typeof window === \"undefined\") {\n this._elementRef.nativeElement[target] = value;\n } else if (value !== this._elementRef.nativeElement[target]) {\n let newValue = 0;\n let scrollCount = 0;\n\n let oldTimestamp = performance.now();\n let oldValue = this._elementRef.nativeElement[target];\n\n const cosParameter = (oldValue - value) / 2;\n\n const step = (newTimestamp: number) => {\n scrollCount += Math.PI / (speed / (newTimestamp - oldTimestamp));\n newValue = Math.round(value + cosParameter + cosParameter * Math.cos(scrollCount));\n\n // Only continue animation if scroll position has not changed\n if (this._elementRef.nativeElement[target] === oldValue) {\n if (scrollCount >= Math.PI) {\n this.animateScrolling(target, value, 0);\n } else {\n this._elementRef.nativeElement[target] = newValue;\n\n // On a zoomed out page the resulting offset may differ\n oldValue = this._elementRef.nativeElement[target];\n oldTimestamp = newTimestamp;\n\n this._animation = window.requestAnimationFrame(step);\n }\n }\n };\n\n window.requestAnimationFrame(step);\n }\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Initialize\n */\n private _init(): void {\n // Return if already initialized\n if (this._ps) {\n return;\n }\n\n // Return if on mobile or not on browser\n if (this._platform.ANDROID || this._platform.IOS || !this._platform.isBrowser) {\n this.niceScrollbar = false;\n return;\n }\n\n // Initialize the PerfectScrollbar\n this._ps = new PerfectScrollbar(this._elementRef.nativeElement, {...this._options});\n }\n\n /**\n * Destroy\n */\n private _destroy(): void {\n // Return if not initialized\n if (!this._ps) {\n return;\n }\n\n // Destroy the PerfectScrollbar\n this._ps.destroy();\n\n // Clean up\n this._ps = null;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceScrollbarDirective } from \"./scrollbar.directive\";\n\n@NgModule({\n declarations: [\n NiceScrollbarDirective\n ],\n exports: [\n NiceScrollbarDirective\n ]\n})\nexport class NiceScrollbarModule {}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\n\n@Injectable()\nexport class NiceNavigationHintService {\n public hasActiveHint$ = new BehaviorSubject(false);\n\n public get hasActiveHint(): boolean {\n return this.hasActiveHint$.value;\n }\n\n public setActiveHint(isActive: boolean): void {\n this.hasActiveHint$.next(isActive);\n }\n}\n","import { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { AfterViewInit, Directive, ElementRef, Input, NgZone, OnDestroy, ViewContainerRef } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { _HintComponentBase } from \"../components/hint-component-base\";\nimport { NiceNavigationItem } from \"../navigation.types\";\nimport { NiceNavigationHintService } from \"../providers/hint.service\";\n\n@Directive({ selector: \"[niceShowHint]\" })\nexport class NiceShowHintDirective<T extends _HintComponentBase> implements AfterViewInit, OnDestroy {\n @Input()\n public shouldShow = false;\n\n @Input()\n public item: NiceNavigationItem;\n\n private _pointerExitEventsInitialized = false;\n private _portal: ComponentPortal<any>;\n private _hintInstance: T;\n private _overlayRef: OverlayRef;\n\n private readonly _passiveListeners: (readonly [string, EventListenerOrEventListenerObject])[] = [];\n private readonly unsubscribeAll$ = new Subject<void>();\n\n constructor(\n private _overlay: Overlay,\n private _elementRef: ElementRef<HTMLElement>,\n private _viewContainerRef: ViewContainerRef,\n private _ngZone: NgZone,\n private _platform: Platform,\n private _focusMonitor: FocusMonitor,\n private _hintService: NiceNavigationHintService\n ) {}\n\n public ngAfterViewInit(): void {\n this._setupPointerEnterEventsIfNeeded();\n\n this._focusMonitor\n .monitor(this._elementRef)\n .pipe(takeUntil(this.unsubscribeAll$))\n .subscribe(origin => {\n // Note that the focus monitor runs outside the Angular zone.\n if (!origin) {\n this._ngZone.run(() => this.hide());\n } else if (origin === \"keyboard\") {\n this._ngZone.run(() => this.show());\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n public show(): void {\n if (!this.shouldShow || !this.item.hint || this._isHintVisible()) {\n return;\n }\n\n const overlayRef = this._createOverlay();\n this._portal = this._portal || new ComponentPortal<any>(this.item.hint.component);\n this._detach();\n this._hintInstance = overlayRef.attach(this._portal).instance;\n\n this._hintInstance._triggerElement = this._elementRef.nativeElement;\n this._hintInstance\n .afterHidden()\n .pipe(takeUntil(this.unsubscribeAll$))\n .subscribe(() => this._detach());\n\n this._hintService.setActiveHint(true);\n }\n\n public hide(): void {\n const instance = this._hintInstance;\n\n if (instance) {\n if (instance.isVisible()) {\n instance.hide(0);\n } else {\n instance._cancelPendingAnimations();\n this._detach();\n }\n }\n }\n\n private _createOverlay(): OverlayRef {\n if (this._overlayRef) {\n const existingStrategy = this._overlayRef.getConfig()\n .positionStrategy as FlexibleConnectedPositionStrategy;\n\n // @ts-ignore\n if (!origin && existingStrategy._origin instanceof ElementRef) {\n return this._overlayRef;\n }\n\n this._detach();\n }\n\n // Create connected position strategy that listens for scroll events to reposition.\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .withPositions([\n {\n originX: \"center\",\n originY: \"bottom\",\n overlayX: \"start\",\n overlayY: \"top\",\n offsetY: 8\n }\n ])\n .withFlexibleDimensions(false);\n\n strategy.positionChanges.pipe(takeUntil(this.unsubscribeAll$)).subscribe(change => {\n if (this._hintInstance) {\n if (change.scrollableViewProperties.isOverlayClipped) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this._ngZone.run(() => this.hide());\n }\n }\n });\n\n this._overlayRef = this._overlay.create({\n positionStrategy: strategy\n });\n\n this._overlayRef\n .detachments()\n .pipe(takeUntil(this.unsubscribeAll$))\n .subscribe(() => this._detach());\n\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.unsubscribeAll$))\n .subscribe(() => this._hintInstance?._handleBodyInteraction());\n\n return this._overlayRef;\n }\n\n private _detach() {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n }\n\n this._hintInstance = null;\n this._hintService.setActiveHint(false);\n }\n\n private _isHintVisible(): boolean {\n return !!this._hintInstance;\n }\n\n private _setupPointerEnterEventsIfNeeded() {\n // Optimization: Defer hooking up events if there's no message or the tooltip is disabled.\n if (this._passiveListeners.length) {\n return;\n }\n\n // The mouse events shouldn't be bound on mobile devices, because they can prevent the\n // first tap from firing its click event or can cause the tooltip to open for clicks.\n if (this._platformSupportsMouseEvents()) {\n this._passiveListeners.push([\n \"mouseenter\",\n () => {\n this._setupPointerExitEventsIfNeeded();\n this.show();\n },\n ]);\n }\n\n this._addListeners(this._passiveListeners);\n }\n\n private _setupPointerExitEventsIfNeeded() {\n if (this._pointerExitEventsInitialized) {\n return;\n }\n this._pointerExitEventsInitialized = true;\n\n const exitListeners: (readonly [string, EventListenerOrEventListenerObject])[] = [];\n if (this._platformSupportsMouseEvents()) {\n exitListeners.push(\n [\n \"mouseleave\",\n event => {\n const newTarget = (event as MouseEvent).relatedTarget as Node | null;\n if (!newTarget || !this._overlayRef?.overlayElement.contains(newTarget)) {\n this.hide();\n }\n },\n ]\n );\n }\n\n this._addListeners(exitListeners);\n this._passiveListeners.push(...exitListeners);\n }\n\n private _platformSupportsMouseEvents() {\n return !this._platform.IOS && !this._platform.ANDROID;\n }\n\n private _addListeners(listeners: (readonly [string, EventListenerOrEventListenerObject])[]) {\n listeners.forEach(([event, listener]) => {\n this._elementRef.nativeElement.addEventListener(event, listener);\n });\n }\n}\n","import { Injector, Pipe, PipeTransform } from \"@angular/core\";\nimport { Observable, combineLatest, of } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { NiceNavigationItem } from \"../navigation.types\";\n\n@Pipe({ name: \"niceShouldShowHint\" })\nexport class NiceShouldShowHintPipe implements PipeTransform {\n constructor(private injector: Injector) {}\n\n public transform(value: NiceNavigationItem | NiceNavigationItem[]): Observable<boolean> {\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n return combineLatest(value.map(x => this.transformHint(x))).pipe(map(res => res.some(x => x)));\n }\n\n private transformHint(value: NiceNavigationItem): Observable<boolean> {\n if (!value.hint) {\n return of(false);\n }\n\n const resolver = this.injector.get(value.hint.resolver);\n if (!resolver) {\n return of(false);\n }\n\n return resolver.shouldShowHint();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { NiceUtilsService } from \"../../../../../providers/utils\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-basic-item\",\n templateUrl: \"./basic.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationBasicItemComponent implements OnInit, OnDestroy {\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n public itemActive$ = this._route.url.pipe(\n map(() => {\n const url = this._router.url.split(\"?\").shift();\n if (this.item.exactMatch === true) {\n return url === this.item.link;\n }\n return url.startsWith(this.item.link) && url.length >= this.item.link.length;\n })\n );\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService,\n private _niceUtilsService: NiceUtilsService,\n private _route: ActivatedRoute,\n private _router: Router\n ) {}\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Item wrapper -->\n<div\n class=\"nice-vertical-navigation-item-wrapper\"\n [class.nice-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n>\n\n <!-- Item with an internal link -->\n <a\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\"\n [ngClass]=\"{'nice-vertical-navigation-item-active-forced': item.active}\"\n [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'nice-vertical-navigation-item-active'\"\n [routerLinkActiveOptions]=\"{exact: item.exactMatch || false}\"\n [queryParams]=\"item?.queryParams\"\n [state]=\"item?.state\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with an external link -->\n <a\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"item.link && item.externalLink && !item.function && !item.disabled\"\n [href]=\"item.link\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with a function -->\n <div\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"!item.link && item.function && !item.disabled\"\n [ngClass]=\"{'nice-vertical-navigation-item-active-forced': item.active}\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item with an internal link and function -->\n <a\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"item.link && !item.externalLink && item.function && !item.disabled\"\n [ngClass]=\"{'nice-vertical-navigation-item-active-forced': item.active}\"\n [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'nice-vertical-navigation-item-active'\"\n [routerLinkActiveOptions]=\"{exact: item.exactMatch || false}\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with an external link and function -->\n <a\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"item.link && item.externalLink && item.function && !item.disabled\"\n [href]=\"item.link\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n\n <!-- Item with a no link and no function -->\n <div\n class=\"nice-vertical-navigation-item\"\n *ngIf=\"!item.link && !item.function && !item.disabled\"\n [ngClass]=\"{'nice-vertical-navigation-item-active-forced': item.active}\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n <!-- Item is disabled -->\n <div\n class=\"nice-vertical-navigation-item nice-vertical-navigation-item-disabled\"\n *ngIf=\"item.disabled\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n <ng-container *ngIf=\"{ showHint: item | niceShouldShowHint | async } as ctx\">\n <!-- Icon -->\n <div class=\"nice-vertical-navigation-item-icon-wrapper\">\n <ng-container *ngIf=\"itemActive$ | async; else notActive\">\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.activeIcon || item.icon }}\n </mat-icon>\n\n <i class=\"nice-vertical-navigation-item-icon fontawesome\" [ngClass]=\"item.activeIcon || item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></i>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.activeIcon || item.icon\"\n *ngIf=\"item.icon && item.iconType == 'svg'\"\n ></mat-icon>\n </ng-container>\n\n <ng-template #notActive>\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <i class=\"nice-vertical-navigation-item-icon fontawesome\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></i>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType == 'svg'\"\n ></mat-icon>\n </ng-template>\n\n <div *ngIf=\"ctx.showHint && item.icon\" class=\"nice-vertical-navigation-hint\"></div>\n </div>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-vertical-navigation-item-title-wrapper\">\n <div class=\"nice-vertical-navigation-item-title\" niceShowHint [shouldShow]=\"ctx.showHint\" [item]=\"item\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n\n <div *ngIf=\"ctx.showHint\" class=\"nice-vertical-navigation-hint\"></div>\n </div>\n <div\n class=\"nice-vertical-navigation-item-subtitle\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-vertical-navigation-item-badge\"\n *ngIf=\"item.badge\"\n >\n <div\n class=\"nice-vertical-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\"\n >\n {{ item.badge.title | translate }}\n </div>\n </div>\n </ng-container>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-divider-item\",\n templateUrl: \"./divider.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationDividerItemComponent implements OnInit, OnDestroy {\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {}\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Divider -->\n<div\n class=\"nice-vertical-navigation-item-wrapper divider\"\n [ngClass]=\"item.classes?.wrapper\"\n></div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-spacer-item\",\n templateUrl: \"./spacer.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationSpacerItemComponent implements OnInit, OnDestroy {\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","<!-- Spacer -->\n<div\n class=\"nice-vertical-navigation-item-wrapper\"\n [ngClass]=\"item.classes?.wrapper\"\n></div>\n","import { BooleanInput } from \"@angular/cdk/coercion\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { BehaviorSubject, Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { niceAnimations } from \"../../../../../animations\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-collapsable-item\",\n templateUrl: \"./collapsable.component.html\",\n styles: [],\n animations: niceAnimations,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationCollapsableItemComponent implements OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_autoCollapse: BooleanInput;\n\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public autoCollapse: boolean;\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n public isCollapsed = true;\n public isExpanded = false;\n\n public hasChildActivated$ = new BehaviorSubject(false);\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _router: Router,\n private _niceNavigationService: NiceNavigationService\n ) {}\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component classes\n */\n @HostBinding(\"class\")\n public get classList(): any {\n return {\n \"nice-vertical-navigation-item-collapsed\": this.isCollapsed,\n \"nice-vertical-navigation-item-expanded\": this.isExpanded\n };\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // If the item has a children that has a matching url with the current url, expand...\n if (this._hasActiveChild(this.item, this._router.url)) {\n this.hasChildActivated$.next(true);\n this.expand();\n }\n // Otherwise...\n else {\n // If the autoCollapse is on, collapse...\n if (this.autoCollapse) {\n this.hasChildActivated$.next(false);\n this.collapse();\n }\n }\n\n // Listen for the onCollapsableItemCollapsed from the service\n this._niceVerticalNavigationComponent.onCollapsableItemCollapsed\n .pipe(takeUntil(this._unsubscribeAll))\n .subscribe((collapsedItem) => {\n\n // Check if the collapsed item is null\n if (collapsedItem === null) {\n return;\n }\n\n // Collapse if this is a children of the collapsed item\n if (this._isChildrenOf(collapsedItem, this.item)) {\n this.collapse();\n }\n });\n\n // Listen for the onCollapsableItemExpanded from the service if the autoCollapse is on\n if (this.autoCollapse) {\n this._niceVerticalNavigationComponent.onCollapsableItemExpanded\n .pipe(takeUntil(this._unsubscribeAll))\n .subscribe((expandedItem) => {\n\n // Check if the expanded item is null\n if (expandedItem === null) {\n return;\n }\n\n // Check if this is a parent of the expanded item\n if (this._isChildrenOf(this.item, expandedItem)) {\n return;\n }\n\n // Check if this has a children with a matching url with the current active url\n if (this._hasActiveChild(this.item, this._router.url)) {\n return;\n }\n\n // Check if this is the expanded item\n if (this.item === expandedItem) {\n return;\n }\n\n // If none of the above conditions are matched, collapse this item\n this.collapse();\n });\n }\n\n // Attach a listener to the NavigationEnd event\n this._router.events\n .pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n takeUntil(this._unsubscribeAll)\n )\n .subscribe((event: NavigationEnd) => {\n\n // If the item has a children that has a matching url with the current url, expand...\n if (this._hasActiveChild(this.item, event.urlAfterRedirects)) {\n this.hasChildActivated$.next(true);\n this.expand();\n }\n // Otherwise...\n else {\n this.hasChildActivated$.next(false);\n\n // If the autoCollapse is on, collapse...\n if (this.autoCollapse) {\n this.collapse();\n }\n }\n });\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Check if the given item has the given url\n * in one of its children\n */\n private _hasActiveChild(item: NiceNavigationItem, currentUrl: string): boolean {\n const children = item.children;\n\n if (!children) {\n return false;\n }\n\n for (const child of children) {\n if (child.children) {\n if (this._hasActiveChild(child, currentUrl)) {\n return true;\n }\n }\n\n // Check if the child has a link and is active\n if (child.link && this._router.isActive(child.link, child.exactMatch || false)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Check if this is a children\n * of the given item\n */\n private _isChildrenOf(parent: NiceNavigationItem, item: NiceNavigationItem): boolean {\n const children = parent.children;\n\n if (!children) {\n return false;\n }\n\n if (children.indexOf(item) > -1) {\n return true;\n }\n\n for (const child of children) {\n if (child.children) {\n if (this._isChildrenOf(child, item)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Collapse\n */\n public collapse(): void {\n // Return if the item is disabled\n if (this.item.disabled) {\n return;\n }\n\n // Return if the item is already collapsed\n if (this.isCollapsed) {\n return;\n }\n\n // Collapse it\n this.isCollapsed = true;\n this.isExpanded = !this.isCollapsed;\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n\n // Execute the observable\n this._niceVerticalNavigationComponent.onCollapsableItemCollapsed.next(this.item);\n }\n\n /**\n * Expand\n */\n public expand(): void {\n // Return if the item is disabled\n if (this.item.disabled) {\n return;\n }\n\n // Return if the item is already expanded\n if (!this.isCollapsed) {\n return;\n }\n\n // Expand it\n this.isCollapsed = false;\n this.isExpanded = !this.isCollapsed;\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n\n // Execute the observable\n this._niceVerticalNavigationComponent.onCollapsableItemExpanded.next(this.item);\n }\n\n /**\n * Toggle collapsable\n */\n public toggleCollapsable(): void {\n // Toggle collapse/expand\n if (this.isCollapsed) {\n this.expand();\n } else {\n this.collapse();\n }\n }\n\n /**\n * Track by function for ngFor loops\n */\n public trackByFn(index: number, item: any): any {\n return item.id || index;\n }\n}\n","<div\n class=\"nice-vertical-navigation-item-wrapper\"\n [class.nice-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n>\n <div\n class=\"nice-vertical-navigation-item\"\n [ngClass]=\"{ 'nice-vertical-navigation-item-disabled': item.disabled }\"\n [class.child-activated]=\"hasChildActivated$ | async\"\n (click)=\"toggleCollapsable()\"\n *ngIf=\"{ showHint: item.children ?? [] | niceShouldShowHint | async } as ctx\"\n >\n <!-- Icon -->\n <div class=\"nice-vertical-navigation-item-icon-wrapper\" style=\"position: relative\">\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <i class=\"nice-vertical-navigation-item-icon fontawesome\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></i>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType == 'svg'\"\n ></mat-icon>\n\n <div *ngIf=\"ctx.showHint && item.icon\" class=\"nice-vertical-navigation-hint\"></div>\n </div>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-vertical-navigation-item-title-wrapper\">\n <div class=\"nice-vertical-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n\n <div *ngIf=\"ctx.showHint && isCollapsed\" class=\"nice-vertical-navigation-hint\"></div>\n </div>\n <div\n class=\"nice-vertical-navigation-item-subtitle\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-vertical-navigation-item-badge\"\n *ngIf=\"item.badge\">\n\n <div\n class=\"nice-vertical-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\"\n >\n {{ item.badge.title | translate }}\n </div>\n </div>\n\n <!-- Arrow -->\n <mat-icon class=\"nice-vertical-navigation-item-arrow icon-size-4\">chevron_right</mat-icon>\n </div>\n</div>\n\n<div\n class=\"nice-vertical-navigation-item-children\"\n *ngIf=\"!isCollapsed\"\n @expandCollapse\n>\n <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"!(item | niceShouldHide | async)\">\n <!-- Basic -->\n <nice-vertical-navigation-basic-item\n *ngIf=\"item.type === 'basic'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-basic-item>\n\n <!-- Collapsable -->\n <nice-vertical-navigation-collapsable-item\n *ngIf=\"item.type === 'collapsable'\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-collapsable-item>\n\n <!-- Divider -->\n <nice-vertical-navigation-divider-item\n *ngIf=\"item.type === 'divider'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-divider-item>\n\n <!-- Group -->\n<!-- <nice-vertical-navigation-group-item\n *ngIf=\"item.type === 'group'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-group-item>-->\n\n <!-- Spacer -->\n <nice-vertical-navigation-spacer-item\n *ngIf=\"item.type === 'spacer'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-spacer-item>\n </ng-container>\n </ng-container>\n</div>\n","import { BooleanInput } from \"@angular/cdk/coercion\";\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-group-item\",\n templateUrl: \"./group.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationGroupItemComponent implements OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_autoCollapse: BooleanInput;\n\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public autoCollapse: boolean;\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Track by function for ngFor loops\n */\n public trackByFn(index: number, item: any): any {\n return item.id || index;\n }\n}\n","<!-- Item wrapper -->\n<div\n class=\"nice-vertical-navigation-item-wrapper\"\n [class.nice-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n>\n <div class=\"nice-vertical-navigation-item\">\n <!-- Icon -->\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <span class=\"nice-vertical-navigation-item-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></span>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType === 'svg'\"\n ></mat-icon>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-vertical-navigation-item-title-wrapper\" *ngIf=\"item.title || item.subtitle\">\n <div class=\"nice-vertical-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n </div>\n <div\n class=\"nice-vertical-navigation-item-subtitle\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-vertical-navigation-item-badge\"\n *ngIf=\"item.badge\"\n >\n <div\n class=\"nice-vertical-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\"\n >\n {{ item.badge.title | translate }}\n </div>\n </div>\n </div>\n</div>\n\n<ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"!(item | niceShouldHide | async)\">\n <!-- Basic -->\n <nice-vertical-navigation-basic-item\n *ngIf=\"item.type === 'basic'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-basic-item>\n\n <!-- Collapsable -->\n <nice-vertical-navigation-collapsable-item\n *ngIf=\"item.type === 'collapsable'\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-collapsable-item>\n\n <!-- Divider -->\n <nice-vertical-navigation-divider-item\n *ngIf=\"item.type === 'divider'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-divider-item>\n\n <!-- Group -->\n <nice-vertical-navigation-group-item\n *ngIf=\"item.type === 'group'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-group-item>\n\n <!-- Spacer -->\n <nice-vertical-navigation-spacer-item\n *ngIf=\"item.type === 'spacer'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-spacer-item>\n </ng-container>\n</ng-container>\n","import { BooleanInput } from \"@angular/cdk/coercion\";\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { NiceNavigationService } from \"../../../navigation.service\";\nimport { NiceNavigationItem } from \"../../../navigation.types\";\n\n@Component({\n selector: \"nice-vertical-navigation-aside-item\",\n templateUrl: \"./aside.component.html\",\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceVerticalNavigationAsideItemComponent implements OnChanges, OnInit, OnDestroy {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_autoCollapse: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_skipChildren: BooleanInput;\n\n private _niceVerticalNavigationComponent;\n private _unsubscribeAll = new Subject<any>();\n\n @Input()\n public activeItemId: string;\n\n @Input()\n public autoCollapse: boolean;\n\n @Input()\n public item: NiceNavigationItem;\n\n @Input()\n public name: string;\n\n @Input()\n public skipChildren: boolean;\n\n public active = false;\n\n /**\n * Constructor\n */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _router: Router,\n private _niceNavigationService: NiceNavigationService\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Active item id\n if (\"activeItemId\" in changes) {\n // Mark if active\n this._markIfActive(this._router.url);\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Mark if active\n this._markIfActive(this._router.url);\n\n // Attach a listener to the NavigationEnd event\n this._router.events\n .pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n takeUntil(this._unsubscribeAll)\n )\n .subscribe((event: NavigationEnd) => {\n\n // Mark if active\n this._markIfActive(event.urlAfterRedirects);\n });\n\n // Get the parent navigation component\n this._niceVerticalNavigationComponent = this._niceNavigationService.getComponent(this.name);\n\n // Subscribe to onRefreshed on the navigation component\n this._niceVerticalNavigationComponent.onRefreshed.pipe(\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Check if the given item has the given url\n * in one of its children\n */\n private _hasActiveChild(item: NiceNavigationItem, currentUrl: string): boolean {\n const children = item.children;\n\n if (!children) {\n return false;\n }\n\n for (const child of children) {\n if (child.children) {\n if (this._hasActiveChild(child, currentUrl)) {\n return true;\n }\n }\n\n // Skip items other than 'basic'\n if (child.type !== \"basic\") {\n continue;\n }\n\n // Check if the child has a link and is active\n if (child.link && this._router.isActive(child.link, child.exactMatch || false)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Decide and mark if the item is active\n */\n private _markIfActive(currentUrl: string): void {\n // Check if the activeItemId is equals to this item id\n this.active = this.activeItemId === this.item.id;\n\n // If the aside has a children that is active,\n // always mark it as active\n if (this._hasActiveChild(this.item, currentUrl)) {\n this.active = true;\n }\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Track by function for ngFor loops\n */\n public trackByFn(index: number, item: any): any {\n return item.id || index;\n }\n}\n","<div\n class=\"nice-vertical-navigation-item-wrapper\"\n [class.nice-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\"\n>\n <div\n class=\"nice-vertical-navigation-item\"\n [ngClass]=\"{\n 'nice-vertical-navigation-item-active': active,\n 'nice-vertical-navigation-item-disabled': item.disabled,\n 'nice-vertical-navigation-item-active-forced': item.active\n }\"\n >\n <!-- Icon -->\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n *ngIf=\"item.icon && item.iconType === 'material'\"\n >\n {{ item.icon }}\n </mat-icon>\n\n <span class=\"nice-vertical-navigation-item-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon && item.iconType == 'fontawesome'\"></span>\n\n <mat-icon\n class=\"nice-vertical-navigation-item-icon\"\n [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"\n *ngIf=\"item.icon && item.iconType === 'svg'\"\n ></mat-icon>\n\n <!-- Title & Subtitle -->\n <div class=\"nice-vertical-navigation-item-title-wrapper\">\n <div class=\"nice-vertical-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{ item.title | translate }}\n </span>\n </div>\n <div\n class=\"nice-vertical-navigation-item-subtitle\"\n *ngIf=\"item.subtitle\"\n >\n <span [ngClass]=\"item.classes?.subtitle\">\n {{ item.subtitle | translate }}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n <div\n class=\"nice-vertical-navigation-item-badge\"\n *ngIf=\"item.badge\"\n >\n <div\n class=\"nice-vertical-navigation-item-badge-content\"\n [ngClass]=\"item.badge.classes\"\n >\n {{ item.badge.title | translate }}\n </div>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"!skipChildren\">\n <div class=\"nice-vertical-navigation-item-children\">\n <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n <!-- Basic -->\n <nice-vertical-navigation-basic-item\n *ngIf=\"item.type === 'basic'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-basic-item>\n\n <!-- Collapsable -->\n <nice-vertical-navigation-collapsable-item\n *ngIf=\"item.type === 'collapsable'\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-collapsable-item>\n\n <!-- Divider -->\n <nice-vertical-navigation-divider-item\n *ngIf=\"item.type === 'divider'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-divider-item>\n\n <!-- Group -->\n <nice-vertical-navigation-group-item\n *ngIf=\"item.type === 'group'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-group-item>\n\n <!-- Spacer -->\n <nice-vertical-navigation-spacer-item\n *ngIf=\"item.type === 'spacer'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-spacer-item>\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\n","import { animate, AnimationBuilder, AnimationPlayer, style } from \"@angular/animations\";\nimport { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport { ScrollStrategy, ScrollStrategyOptions } from \"@angular/cdk/overlay\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { merge, ReplaySubject, Subscription } from \"rxjs\";\nimport { delay, filter, takeUntil } from \"rxjs/operators\";\nimport { niceAnimations } from \"../../../animations\";\nimport { NiceScrollbarDirective } from \"../../../directives/scrollbar\";\nimport { NiceUtilsService } from \"../../../providers/utils\";\nimport { NiceNavigationComponent } from \"../navigation.component\";\nimport { NiceNavigationService } from \"../navigation.service\";\nimport {\n NiceNavigationItem,\n NiceVerticalNavigationAppearance,\n NiceVerticalNavigationMode,\n NiceVerticalNavigationPosition\n} from \"../navigation.types\";\nimport { NiceNavigationHintService } from \"../providers/hint.service\";\n\n@Component({\n selector: \"nice-vertical-navigation\",\n templateUrl: \"./vertical.component.html\",\n animations: niceAnimations,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: \"niceVerticalNavigation\"\n})\nexport class NiceVerticalNavigationComponent extends NiceNavigationComponent implements OnChanges, OnInit, AfterViewInit {\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_inner: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_opened: BooleanInput;\n // tslint:disable-next-line:variable-name\n public static ngAcceptInputType_transparentOverlay: BooleanInput;\n\n private _forceHovered = false;\n private _animationsEnabled = false;\n private _asideOverlay: HTMLElement;\n private readonly _handleAsideOverlayClick: any;\n private readonly _handleOverlayClick: any;\n private _overlay: HTMLElement;\n private _player: AnimationPlayer;\n private _scrollStrategy: ScrollStrategy = this._scrollStrategyOptions.block();\n private _niceScrollbarDirectives!: QueryList<NiceScrollbarDirective>;\n private _niceScrollbarDirectivesSubscription: Subscription;\n\n @Input()\n public name: string = this._niceUtilsService.randomId();\n\n @Input()\n public appearance: NiceVerticalNavigationAppearance = \"default\";\n\n @Input()\n public autoCollapse = true;\n\n @Input()\n public inner = false;\n\n @Input()\n public mode: NiceVerticalNavigationMode = \"side\";\n\n @Input()\n public opened = true;\n\n @Input()\n public hovered = false;\n\n @Input()\n public hasHint = false;\n\n @Input()\n public position: NiceVerticalNavigationPosition = \"left\";\n\n @Input()\n public transparentOverlay = false;\n\n @Output()\n public readonly appearanceChanged = new EventEmitter<NiceVerticalNavigationAppearance>();\n\n @Output()\n public readonly modeChanged = new EventEmitter<NiceVerticalNavigationMode>();\n\n @Output()\n public readonly openedChanged = new EventEmitter<boolean>();\n\n @Output()\n public readonly hoveredChanged = new EventEmitter<boolean>();\n\n @Output()\n public readonly positionChanged = new EventEmitter<NiceVerticalNavigationPosition>();\n\n @ViewChild(\"navigationContent\")\n private _navigationContentEl: ElementRef;\n\n @Input()\n public set navigation(navigation: NiceNavigationItem[]) {\n this._navigation = navigation;\n this._changeDetectorRef.markForCheck();\n }\n public get navigation(): NiceNavigationItem[] {\n return this._navigation;\n }\n\n public set forceHovered(forceHovered: boolean) {\n this._forceHovered = forceHovered;\n this.hoveredChanged.next((this.hovered || this._forceHovered) || this.hasHint);\n this._changeDetectorRef.markForCheck();\n }\n\n public activeAsideItemId: string | null = null;\n public onCollapsableItemCollapsed = new ReplaySubject<NiceNavigationItem>(1);\n public onCollapsableItemExpanded = new ReplaySubject<NiceNavigationItem>(1);\n\n /**\n * Constructor\n */\n constructor(\n _changeDetectorRef: ChangeDetectorRef,\n _niceNavigationService: NiceNavigationService,\n _niceUtilsService: NiceUtilsService,\n private _animationBuilder: AnimationBuilder,\n private _elementRef: ElementRef,\n private _renderer2: Renderer2,\n private _router: Router,\n private _scrollStrategyOptions: ScrollStrategyOptions,\n private _hintService: NiceNavigationHintService\n ) {\n super(_changeDetectorRef, _niceNavigationService, _niceUtilsService);\n\n this._handleAsideOverlayClick = () => {\n this.closeAside();\n };\n this._handleOverlayClick = () => {\n this.close();\n };\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component classes\n */\n @HostBinding(\"class\")\n public get classList(): any {\n return {\n \"nice-vertical-navigation-animations-enabled\": this._animationsEnabled,\n [`nice-vertical-navigation-appearance-${this.appearance}`]: true,\n \"nice-vertical-navigation-hover\": this.hovered || this._forceHovered,\n \"nice-vertical-navigation-inner\": this.inner,\n \"nice-vertical-navigation-mode-over\": this.mode === \"over\",\n \"nice-vertical-navigation-mode-side\": this.mode === \"side\",\n \"nice-vertical-navigation-opened\": this.opened,\n \"nice-vertical-navigation-position-left\": this.position === \"left\",\n \"nice-vertical-navigation-position-right\": this.position === \"right\",\n \"nice-vertical-navigation-has-hint\": this.hasHint\n };\n }\n\n /**\n * Host binding for component inline styles\n */\n @HostBinding(\"style\")\n public get styleList(): any {\n return {\n \"visibility\": this.opened ? \"visible\" : \"hidden\"\n };\n }\n\n /**\n * Setter for niceScrollbarDirectives\n */\n @ViewChildren(NiceScrollbarDirective)\n public set niceScrollbarDirectives(niceScrollbarDirectives: QueryList<NiceScrollbarDirective>) {\n // Store the directives\n this._niceScrollbarDirectives = niceScrollbarDirectives;\n\n // Return if there are no directives\n if (niceScrollbarDirectives.length === 0) {\n return;\n }\n\n // Unsubscribe the previous subscriptions\n if (this._niceScrollbarDirectivesSubscription) {\n this._niceScrollbarDirectivesSubscription.unsubscribe();\n }\n\n // Update the scrollbars on collapsable items' collapse/expand\n this._niceScrollbarDirectivesSubscription =\n merge(\n this.onCollapsableItemCollapsed,\n this.onCollapsableItemExpanded\n )\n .pipe(\n takeUntil(this._unsubscribeAll),\n delay(250)\n )\n .subscribe(() => {\n\n // Loop through the scrollbars and update them\n niceScrollbarDirectives.forEach((niceScrollbarDirective) => {\n niceScrollbarDirective.update();\n });\n });\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n *\n * @param changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n\n // Appearance\n if (\"appearance\" in changes) {\n // Execute the observable\n this.appearanceChanged.next(changes.appearance.currentValue);\n }\n\n // Inner\n if (\"inner\" in changes) {\n // Coerce the value to a boolean\n this.inner = coerceBooleanProperty(changes.inner.currentValue);\n }\n\n // Mode\n if (\"mode\" in changes) {\n // Get the previous and current values\n const currentMode = changes.mode.currentValue;\n const previousMode = changes.mode.previousValue;\n\n // Disable the animations\n this._disableAnimations();\n\n // If the mode changes: 'over -> side'\n if (previousMode === \"over\" && currentMode === \"side\") {\n // Hide the overlay\n this._hideOverlay();\n }\n\n // If the mode changes: 'side -> over'\n if (previousMode === \"side\" && currentMode === \"over\") {\n // Close the aside\n this.closeAside();\n\n // If the navigation is opened\n if (this.opened) {\n // Show the overlay\n this._showOverlay();\n }\n }\n\n // Execute the observable\n this.modeChanged.next(currentMode);\n\n // Enable the animations after a delay\n // The delay must be bigger than the current transition-duration\n // to make sure nothing will be animated while the mode changing\n setTimeout(() => {\n this._enableAnimations();\n }, 500);\n }\n\n // Opened\n if (\"opened\" in changes) {\n // Coerce the value to a boolean\n this.opened = coerceBooleanProperty(changes.opened.currentValue);\n\n // Open/close the navigation\n this._toggleOpened(this.opened);\n }\n\n // Position\n if (\"position\" in changes) {\n // Execute the observable\n this.positionChanged.next(changes.position.currentValue);\n }\n\n // Transparent overlay\n if (\"transparentOverlay\" in changes) {\n // Coerce the value to a boolean\n this.transparentOverlay = coerceBooleanProperty(changes.transparentOverlay.currentValue);\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n super.ngOnInit();\n\n // Make sure the name input is not an empty string\n if (this.name === \"\") {\n this.name = this._niceUtilsService.randomId();\n }\n\n // Subscribe to the 'NavigationEnd' event\n this._router.events\n .pipe(\n filter(event => event instanceof NavigationEnd),\n takeUntil(this._unsubscribeAll)\n )\n .subscribe(() => {\n // If the mode is 'over' and the navigation is opened...\n if (this.mode === \"over\" && this.opened) {\n // Close the navigation\n this.close();\n }\n\n // If the mode is 'side' and the aside is active...\n if (this.mode === \"side\" && this.activeAsideItemId) {\n // Close the aside\n this.closeAside();\n }\n });\n\n this._hintService.hasActiveHint$.pipe(takeUntil(this._unsubscribeAll)).subscribe(hasHint => {\n this.hasHint = hasHint;\n this.hoveredChanged.next((this.hovered || this._forceHovered) || this.hasHint);\n });\n }\n\n /**\n * After view init\n */\n public ngAfterViewInit(): void {\n setTimeout(() => {\n\n // Return if 'navigation content' element does not exist\n if (!this._navigationContentEl) {\n return;\n }\n\n // If 'navigation content' element doesn't have\n // perfect scrollbar activated on it...\n if (!this._navigationContentEl.nativeElement.classList.contains(\"ps\")) {\n // Find the active item\n const activeItem = this._navigationContentEl.nativeElement.querySelector(\".nice-vertical-navigation-item-active\");\n\n // If the active item exists, scroll it into view\n if (activeItem) {\n activeItem.scrollIntoView();\n }\n }\n // Otherwise\n else {\n // Go through all the scrollbar directives\n this._niceScrollbarDirectives.forEach((niceScrollbarDirective) => {\n\n // Skip if not enabled\n if (!niceScrollbarDirective.isEnabled()) {\n return;\n }\n\n // Scroll to the active element\n niceScrollbarDirective.scrollToElement(\".nice-vertical-navigation-item-active\", -120, true);\n });\n }\n });\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Open the navigation\n */\n public open(): void {\n // Return if the navigation is already open\n if (this.opened) {\n return;\n }\n\n // Set the opened\n this._toggleOpened(true);\n }\n\n /**\n * Close the navigation\n */\n public close(): void {\n // Return if the navigation is already closed\n if (!this.opened) {\n return;\n }\n\n // Close the aside\n this.closeAside();\n\n // Set the opened\n this._toggleOpened(false);\n }\n\n /**\n * Toggle the navigation\n */\n public toggle(): void {\n // Toggle\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Open the aside\n */\n public openAside(item: NiceNavigationItem): void {\n // Return if the item is disabled\n if (item.disabled || !item.id) {\n return;\n }\n\n // Open\n this.activeAsideItemId = item.id;\n\n // Show the aside overlay\n this._showAsideOverlay();\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Close the aside\n */\n public closeAside(): void {\n // Close\n this.activeAsideItemId = null;\n\n // Hide the aside overlay\n this._hideAsideOverlay();\n\n // Mark for check\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Toggle the aside\n */\n public toggleAside(item: NiceNavigationItem): void {\n // Toggle\n if (this.activeAsideItemId === item.id) {\n this.closeAside();\n } else {\n this.openAside(item);\n }\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Enable the animations\n *\n * @private\n */\n private _enableAnimations(): void {\n // Return if the animations are already enabled\n if (this._animationsEnabled) {\n return;\n }\n\n // Enable the animations\n this._animationsEnabled = true;\n }\n\n /**\n * Disable the animations\n *\n * @private\n */\n private _disableAnimations(): void {\n // Return if the animations are already disabled\n if (!this._animationsEnabled) {\n return;\n }\n\n // Disable the animations\n this._animationsEnabled = false;\n }\n\n /**\n * Show the overlay\n *\n * @private\n */\n private _showOverlay(): void {\n // Return if there is already an overlay\n if (this._asideOverlay) {\n return;\n }\n\n // Create the overlay element\n this._overlay = this._renderer2.createElement(\"div\");\n\n // Add a class to the overlay element\n this._overlay.classList.add(\"nice-vertical-navigation-overlay\");\n\n // Add a class depending on the transparentOverlay option\n if (this.transparentOverlay) {\n this._overlay.classList.add(\"nice-vertical-navigation-overlay-transparent\");\n }\n\n // Append the overlay to the parent of the navigation\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._overlay);\n\n // Enable block scroll strategy\n this._scrollStrategy.enable();\n\n // Create the enter animation and attach it to the player\n this._player = this._animationBuilder.build([\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 1}))\n ]).create(this._overlay);\n\n // Play the animation\n this._player.play();\n\n // Add an event listener to the overlay\n this._overlay.addEventListener(\"click\", this._handleOverlayClick);\n }\n\n /**\n * Hide the overlay\n *\n * @private\n */\n private _hideOverlay(): void {\n if (!this._overlay) {\n return;\n }\n\n // Create the leave animation and attach it to the player\n this._player = this._animationBuilder.build([\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 0}))\n ]).create(this._overlay);\n\n // Play the animation\n this._player.play();\n\n // Once the animation is done...\n this._player.onDone(() => {\n\n // If the overlay still exists...\n if (this._overlay) {\n // Remove the event listener\n this._overlay.removeEventListener(\"click\", this._handleOverlayClick);\n\n // Remove the overlay\n this._overlay.parentNode.removeChild(this._overlay);\n this._overlay = null;\n }\n\n // Disable block scroll strategy\n this._scrollStrategy.disable();\n });\n }\n\n /**\n * Show the aside overlay\n *\n * @private\n */\n private _showAsideOverlay(): void {\n // Return if there is already an overlay\n if (this._asideOverlay) {\n return;\n }\n\n // Create the aside overlay element\n this._asideOverlay = this._renderer2.createElement(\"div\");\n\n // Add a class to the aside overlay element\n this._asideOverlay.classList.add(\"nice-vertical-navigation-aside-overlay\");\n\n // Append the aside overlay to the parent of the navigation\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._asideOverlay);\n\n // Create the enter animation and attach it to the player\n this._player =\n this._animationBuilder\n .build([\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 1}))\n ]).create(this._asideOverlay);\n\n // Play the animation\n this._player.play();\n\n // Add an event listener to the aside overlay\n this._asideOverlay.addEventListener(\"click\", this._handleAsideOverlayClick);\n }\n\n /**\n * Hide the aside overlay\n *\n * @private\n */\n private _hideAsideOverlay(): void {\n if (!this._asideOverlay) {\n return;\n }\n\n // Create the leave animation and attach it to the player\n this._player =\n this._animationBuilder\n .build([\n animate(\"300ms cubic-bezier(0.25, 0.8, 0.25, 1)\", style({opacity: 0}))\n ]).create(this._asideOverlay);\n\n // Play the animation\n this._player.play();\n\n // Once the animation is done...\n this._player.onDone(() => {\n\n // If the aside overlay still exists...\n if (this._asideOverlay) {\n // Remove the event listener\n this._asideOverlay.removeEventListener(\"click\", this._handleAsideOverlayClick);\n\n // Remove the aside overlay\n this._asideOverlay.parentNode.removeChild(this._asideOverlay);\n this._asideOverlay = null;\n }\n });\n }\n\n /**\n * On mouseenter\n */\n @HostListener(\"mouseenter\")\n public _onMouseenter(): void {\n // Enable the animations\n this._enableAnimations();\n\n // Set the hovered\n this.hovered = true;\n this.hoveredChanged.next(this.hovered || this._forceHovered);\n }\n\n /**\n * On mouseleave\n */\n @HostListener(\"mouseleave\")\n public _onMouseleave(): void {\n // Enable the animations\n this._enableAnimations();\n\n // Set the hovered\n this.hovered = false;\n this.hoveredChanged.next(this.hovered || this._forceHovered || this.hasHint);\n }\n\n /**\n * Open/close the navigation\n *\n * @param open\n * @private\n */\n private _toggleOpened(open: boolean): void {\n // Set the opened\n this.opened = open;\n\n // Enable the animations\n this._enableAnimations();\n\n // If the navigation opened, and the mode\n // is 'over', show the overlay\n if (this.mode === \"over\") {\n if (this.opened) {\n this._showOverlay();\n } else {\n this._hideOverlay();\n }\n }\n\n // Execute the observable\n this.openedChanged.next(open);\n }\n}\n","<div class=\"nice-vertical-navigation-wrapper\">\n <!-- Header -->\n <div class=\"nice-vertical-navigation-header\">\n <ng-content select=\"[niceVerticalNavigationHeader]\"></ng-content>\n </div>\n\n <!-- Content -->\n <div\n class=\"nice-vertical-navigation-content\"\n niceScrollbar\n [niceScrollbarOptions]=\"{ wheelPropagation: inner, suppressScrollX: true }\"\n #navigationContent\n >\n <!-- Content header -->\n <div class=\"nice-vertical-navigation-content-header\">\n <ng-content select=\"[niceVerticalNavigationContentHeader]\"></ng-content>\n </div>\n\n <!-- Items -->\n <div *ngFor=\"let item of navigation; trackBy: trackByFn\" [@.disabled]=\"!animateNextNavChange\" @slideInRight>\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"!(item | niceShouldHide | async)\">\n <!-- Aside -->\n <nice-vertical-navigation-aside-item\n *ngIf=\"item.type === 'aside'\"\n [item]=\"item\"\n [name]=\"name\"\n [activeItemId]=\"activeAsideItemId\"\n [autoCollapse]=\"autoCollapse\"\n [skipChildren]=\"true\"\n (click)=\"toggleAside(item)\"\n ></nice-vertical-navigation-aside-item>\n\n <!-- Basic -->\n <nice-vertical-navigation-basic-item\n *ngIf=\"item.type === 'basic'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-basic-item>\n\n <!-- Collapsable -->\n <nice-vertical-navigation-collapsable-item\n *ngIf=\"item.type === 'collapsable'\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-collapsable-item>\n\n <!-- Divider -->\n <nice-vertical-navigation-divider-item\n *ngIf=\"item.type === 'divider'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-divider-item>\n\n <!-- Group -->\n <nice-vertical-navigation-group-item\n *ngIf=\"item.type === 'group'\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-group-item>\n\n <!-- Spacer -->\n <nice-vertical-navigation-spacer-item\n *ngIf=\"item.type === 'spacer'\"\n [item]=\"item\"\n [name]=\"name\"\n ></nice-vertical-navigation-spacer-item>\n </ng-container>\n </div>\n\n <!-- Content footer -->\n <div class=\"nice-vertical-navigation-content-footer\">\n <ng-content select=\"[niceVerticalNavigationContentFooter]\"></ng-content>\n </div>\n\n </div>\n\n <!-- Footer -->\n <div class=\"nice-vertical-navigation-footer\">\n <ng-content select=\"[niceVerticalNavigationFooter]\"></ng-content>\n </div>\n</div>\n\n<!-- Aside -->\n<div\n class=\"nice-vertical-navigation-aside-wrapper\"\n *ngIf=\"activeAsideItemId\"\n niceScrollbar\n [niceScrollbarOptions]=\"{ wheelPropagation: false, suppressScrollX: true }\"\n [@fadeInLeft]=\"position === 'left'\"\n [@fadeInRight]=\"position === 'right'\"\n [@fadeOutLeft]=\"position === 'left'\"\n [@fadeOutRight]=\"position === 'right'\"\n>\n\n <!-- Items -->\n <ng-container *ngFor=\"let item of navigation; trackBy: trackByFn\">\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n <!-- Aside -->\n <nice-vertical-navigation-aside-item\n *ngIf=\"item.type === 'aside' && item.id === activeAsideItemId\"\n [item]=\"item\"\n [name]=\"name\"\n [autoCollapse]=\"autoCollapse\"\n ></nice-vertical-navigation-aside-item>\n </ng-container>\n </ng-container>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatDividerModule } from \"@angular/material/divider\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { RouterModule } from \"@angular/router\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceScrollbarModule } from \"../../directives/scrollbar\";\nimport { NiceShowHintDirective } from \"./directives/show-hint.directive\";\nimport { NiceHorizontalNavigationBasicItemComponent } from \"./horizontal/components/basic/basic.component\";\nimport { NiceHorizontalNavigationBranchItemComponent } from \"./horizontal/components/branch/branch.component\";\nimport { NiceHorizontalNavigationDividerItemComponent } from \"./horizontal/components/divider/divider.component\";\nimport { NiceHorizontalNavigationSpacerItemComponent } from \"./horizontal/components/spacer/spacer.component\";\nimport { NiceHorizontalNavigationComponent } from \"./horizontal/horizontal.component\";\nimport { NiceNavigationComponent } from \"./navigation.component\";\nimport { NiceShouldHidePipe } from \"./pipes/should-hide.pipe\";\nimport { NiceShouldShowHintPipe } from \"./pipes/should-show-hint.pipe\";\nimport { NiceNavigationHintService } from \"./providers/hint.service\";\nimport { NiceVerticalNavigationAsideItemComponent } from \"./vertical/components/aside/aside.component\";\nimport { NiceVerticalNavigationBasicItemComponent } from \"./vertical/components/basic/basic.component\";\nimport { NiceVerticalNavigationCollapsableItemComponent } from \"./vertical/components/collapsable/collapsable.component\";\nimport { NiceVerticalNavigationDividerItemComponent } from \"./vertical/components/divider/divider.component\";\nimport { NiceVerticalNavigationGroupItemComponent } from \"./vertical/components/group/group.component\";\nimport { NiceVerticalNavigationSpacerItemComponent } from \"./vertical/components/spacer/spacer.component\";\nimport { NiceVerticalNavigationComponent } from \"./vertical/vertical.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n MatButtonModule,\n MatDividerModule,\n MatIconModule,\n MatMenuModule,\n MatTooltipModule,\n NiceScrollbarModule,\n TranslateModule,\n ],\n declarations: [\n NiceNavigationComponent,\n NiceHorizontalNavigationBasicItemComponent,\n NiceHorizontalNavigationBranchItemComponent,\n NiceHorizontalNavigationDividerItemComponent,\n NiceHorizontalNavigationSpacerItemComponent,\n NiceHorizontalNavigationComponent,\n NiceVerticalNavigationAsideItemComponent,\n NiceVerticalNavigationBasicItemComponent,\n NiceVerticalNavigationCollapsableItemComponent,\n NiceVerticalNavigationDividerItemComponent,\n NiceVerticalNavigationGroupItemComponent,\n NiceVerticalNavigationSpacerItemComponent,\n NiceVerticalNavigationComponent,\n\n NiceShouldHidePipe,\n NiceShouldShowHintPipe,\n NiceShowHintDirective\n ],\n providers: [NiceNavigationHintService],\n exports: [\n NiceHorizontalNavigationComponent,\n NiceVerticalNavigationComponent\n ]\n})\nexport class NiceNavigationModule {\n}\n","import { Observable } from \"rxjs\";\nimport { NiceNavigationItem } from \"../navigation.types\";\n\nexport abstract class NavigationHideItemResolver {\n public abstract shouldHide(item: NiceNavigationItem): Observable<boolean>;\n}\n","import { Observable } from \"rxjs\";\n\nexport abstract class NavigationHintResolver {\n public abstract shouldShowHint(): Observable<boolean>;\n}\n","import { Component, EventEmitter, forwardRef, HostBinding, Input, Output } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { niceAnimations } from \"../../animations\";\n\n@Component({\n selector: \"nice-search-bar\",\n templateUrl: \"./search-bar.template.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceSearchBarComponent),\n multi: true\n }\n ],\n animations: niceAnimations\n})\nexport class NiceSearchBarComponent implements ControlValueAccessor {\n @Input()\n public collapsed = true;\n\n @Output()\n public collapse = new EventEmitter<boolean>();\n\n public searchValue: string;\n public opened = false;\n\n private propagateChanges = (value: string) => {};\n\n @HostBinding(\"class\")\n public get classList(): any {\n return {\n \"search-opened\": this.opened\n };\n }\n\n public toggleCollapsed(): void {\n this.collapsed = !this.collapsed;\n this.collapse.emit(this.collapsed);\n }\n\n public registerOnChange(fn: (value: string) => void): void {\n this.propagateChanges = fn;\n }\n\n public registerOnTouched(fn: any): void {\n // NO-OP\n }\n\n public writeValue(value: string): void {\n this.searchValue = value;\n }\n\n public onSearchChange(value: string) {\n this.propagateChanges(value);\n }\n\n public open(): void {\n if (this.opened) {\n return;\n }\n\n this.opened = true;\n }\n\n public close(): void {\n if (!this.opened) {\n return;\n }\n\n this.searchValue = \"\";\n this.opened = false;\n }\n}\n","<button mat-icon-button *ngIf=\"!opened\" (click)=\"open()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:search'\"></mat-icon>\n</button>\n\n<div class=\"absolute inset-0 flex items-center flex-shrink-0 z-99 bg-default\" *ngIf=\"opened\" @slideInTop @slideOutTop >\n <mat-icon class=\"absolute ml-6 sm:ml-8\" [svgIcon]=\"'heroicons_outline:search'\"></mat-icon>\n <input class=\"w-full h-full px-16 sm:px-18 bg-transparent\" [ngModel]=\"searchValue\" (ngModelChange)=\"onSearchChange($event)\">\n <button class=\"absolute top-1/2 right-5 sm:right-7 flex-shrink-0 w-10 h-10 -mt-5\" mat-icon-button (click)=\"close()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:x'\"></mat-icon>\n </button>\n</div>\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { RouterModule } from \"@angular/router\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { NiceSearchBarComponent } from \"./search-bar.component\";\nimport { FormsModule } from \"@angular/forms\";\n\n@NgModule({\n declarations: [\n NiceSearchBarComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n\n MatButtonModule,\n MatIconModule,\n FormsModule\n ],\n exports: [\n NiceSearchBarComponent\n ]\n})\nexport class NiceSearchBarModule {\n}\n","import { Component, Inject, OnInit, ViewEncapsulation } from \"@angular/core\";\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\n\nexport interface NiceAlertConfig {\n type: \"success\" | \"warning\" | \"info\";\n title?: string;\n message?: string;\n buttons: string[];\n}\n\n@Component({\n selector: \"nice-alert\",\n templateUrl: \"sweet-alert.template.html\",\n styleUrls: [\"sweet-alert.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceSweetAlertComponent implements OnInit {\n public lottieConfig = {\n path: \"assets/animations/success.json\",\n autoplay: true,\n loop: false\n };\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public alertConfig: NiceAlertConfig,\n private dialogRef: MatDialogRef<NiceSweetAlertComponent>\n ) {\n this.lottieConfig.path = this.getAnimationPath();\n }\n\n public ngOnInit() {}\n\n public handleAnimation(animation) {\n animation.setSpeed(1.0);\n }\n\n public confirm() {\n this.dialogRef.close(true);\n }\n\n public close() {\n this.dialogRef.close(false);\n }\n\n public getAnimationPath(): string {\n switch (this.alertConfig.type) {\n case \"success\":\n return \"assets/animations/success.json\";\n case \"warning\":\n return \"assets/animations/warning.json\";\n case \"info\":\n return \"assets/animations/info.json\";\n }\n }\n\n public getConfirmButtonClass(): string {\n switch (this.alertConfig.type) {\n case \"success\":\n return \"mat-accent\";\n case \"warning\":\n return \"mat-warn\";\n case \"info\":\n return \"bg-light-blue-500\";\n }\n }\n}\n","<mat-dialog-content class=\"mat-typography mb-12 text-center\">\n <nice-lottie\n [options]=\"lottieConfig\"\n [width]=\"250\"\n (animCreated)=\"handleAnimation($event)\"\n ></nice-lottie>\n <h2 class=\"mt-8\">{{ alertConfig?.title }}</h2>\n <span [innerHTML]=\"alertConfig?.message\"></span>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <ng-container *ngFor=\"let button of alertConfig.buttons; let i = index\">\n <button mat-raised-button class=\"mr-4\" [ngClass]=\"getConfirmButtonClass()\" *ngIf=\"i === 0\" (click)=\"confirm()\">\n {{ button }}\n </button>\n <button mat-button (click)=\"close()\" *ngIf=\"i !== 0\">{{ button }}</button>\n </ng-container>\n</mat-dialog-actions>\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_ALERT_OPTIONS = new InjectionToken(\"nice_alert_options\");\n","import { Inject, Injectable, Optional, Type } from \"@angular/core\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { map, switchMap } from \"rxjs/operators\";\nimport { NiceSweetAlertComponent } from \"./sweet-alert.component\";\nimport { Observable } from \"rxjs\";\nimport { NICE_ALERT_OPTIONS } from \"./sweet-alert.constant\";\n\nexport interface NiceSweetAlertOptions {\n customModal?: Type<any>;\n}\n\nexport interface NiceSweetAlertParams {\n translationPath?: string;\n titleKey: string;\n messageKey?: string;\n buttonsKey: string[];\n params?: object;\n}\n\n@Injectable()\nexport class NiceSweetAlertService {\n private readonly modal: Type<any>;\n\n constructor(\n @Optional() @Inject(NICE_ALERT_OPTIONS) private options: NiceSweetAlertOptions,\n private matDialog: MatDialog,\n private translateService: TranslateService\n ) {\n this.modal = this.options?.customModal ?? NiceSweetAlertComponent;\n }\n\n public success(params: NiceSweetAlertParams): Observable<boolean>;\n public success(titleKey: string, messageKey: string, buttonsKey: string[], params?: object): Observable<boolean>;\n public success(...args: any[]): Observable<boolean> {\n const [titleKey, messageKey, buttonsKey, params] = this.transformArgs(args);\n return this.getTranslations(titleKey, messageKey, buttonsKey, params).pipe(\n switchMap(([title, message, buttons]) => {\n return this.matDialog\n .open(this.modal, {\n panelClass: \"nice-alert-modal\",\n data: {\n type: \"success\",\n title,\n message,\n buttons\n }\n })\n .afterClosed();\n })\n );\n }\n\n public warning(params: NiceSweetAlertParams): Observable<boolean>;\n public warning(titleKey: string, messageKey: string, buttonsKey: string[], params?: object): Observable<boolean>;\n public warning(...args: any[]): Observable<boolean> {\n const [titleKey, messageKey, buttonsKey, params] = this.transformArgs(args);\n return this.getTranslations(titleKey, messageKey, buttonsKey, params).pipe(\n switchMap(([title, message, buttons]) => {\n return this.matDialog\n .open(this.modal, {\n panelClass: \"nice-alert-modal\",\n data: {\n type: \"warning\",\n title,\n message,\n buttons\n }\n })\n .afterClosed();\n })\n );\n }\n\n public info(params: NiceSweetAlertParams): Observable<boolean>;\n public info(titleKey: string, messageKey: string, buttonsKey: string[], params?: object): Observable<boolean>;\n public info(...args: any[]): Observable<boolean> {\n const [titleKey, messageKey, buttonsKey, params] = this.transformArgs(args);\n return this.getTranslations(titleKey, messageKey, buttonsKey, params).pipe(\n switchMap(([title, message, buttons]) => {\n return this.matDialog\n .open(this.modal, {\n panelClass: \"nice-alert-modal\",\n data: {\n type: \"info\",\n title,\n message,\n buttons\n }\n })\n .afterClosed();\n })\n );\n }\n\n private getTranslations(\n title: string,\n message: string,\n buttons: string[],\n params?: object\n ): Observable<[string, string, string[]]> {\n return this.translateService.get([title, message, ...buttons], params).pipe(\n map((result: { [key: string]: string }) => {\n return [result[title], result[message], buttons.map(button => result[button])] as [\n string,\n string,\n string[]\n ];\n })\n );\n }\n\n private transformArgs(args: any[]): [string, string, string[], any] {\n const [paramsOrTitle] = args;\n if (typeof paramsOrTitle === \"string\") {\n return args as [string, string, string[], any];\n }\n\n const params = paramsOrTitle as NiceSweetAlertParams;\n const path = params.translationPath ? `${params.translationPath}.` : \"\";\n return [\n `${path}${params.titleKey}`,\n params.messageKey ? `${path}${params.messageKey}` : \"\",\n params.buttonsKey.map(buttonKey => `${path}${buttonKey}`),\n params.params\n ];\n }\n}\n","import { Directive, EventEmitter, HostListener, Input, Output } from \"@angular/core\";\nimport { NiceSweetAlertParams, NiceSweetAlertService } from \"./sweet-alert.service\";\n\n@Directive({ selector: \"[niceSweetAlert]\" })\nexport class NiceSweetAlertDirective {\n @Input()\n public sweetAlertType: \"success\" | \"warning\" | \"info\";\n\n @Input()\n public sweetAlertOptions: NiceSweetAlertParams;\n\n @Output()\n public sweetAlertAfterClosed = new EventEmitter<boolean>();\n\n constructor(private service: NiceSweetAlertService) {}\n\n @HostListener(\"click\")\n public onClick(): void {\n if (this.sweetAlertType === \"success\") {\n this.service.success(this.sweetAlertOptions).subscribe(x => this.sweetAlertAfterClosed.emit(x));\n }\n\n if (this.sweetAlertType === \"warning\") {\n this.service.warning(this.sweetAlertOptions).subscribe(x => this.sweetAlertAfterClosed.emit(x));\n }\n\n if (this.sweetAlertType === \"info\") {\n this.service.info(this.sweetAlertOptions).subscribe(x => this.sweetAlertAfterClosed.emit(x));\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { NiceSweetAlertComponent } from \"./sweet-alert.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceSweetAlertDirective } from \"./sweet-alert.directive\";\nimport { NiceSweetAlertOptions, NiceSweetAlertService } from \"./sweet-alert.service\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { NiceLottieModule } from \"../lottie/lottie.module\";\nimport { NICE_ALERT_OPTIONS } from \"./sweet-alert.constant\";\n\n@NgModule({\n imports: [CommonModule, TranslateModule, MatDialogModule, MatButtonModule, NiceLottieModule],\n declarations: [NiceSweetAlertComponent, NiceSweetAlertDirective],\n providers: [NiceSweetAlertService],\n exports: [NiceSweetAlertDirective]\n})\nexport class NiceSweetAlertModule {\n public static forRoot(options?: NiceSweetAlertOptions): ModuleWithProviders<NiceSweetAlertModule> {\n return {\n ngModule: NiceSweetAlertModule,\n providers: [\n {\n provide: NICE_ALERT_OPTIONS,\n useValue: options\n }\n ]\n };\n }\n}\n","import { Component, Inject, ViewEncapsulation } from \"@angular/core\";\nimport { MAT_SNACK_BAR_DATA, MatSnackBarRef } from \"@angular/material/snack-bar\";\nimport { NiceAlertAppearance } from \"../alert\";\n\nexport interface NiceToastData {\n title?: string;\n message?: string;\n appearance?: NiceAlertAppearance;\n type: \"info\" | \"success\" | \"warning\" | \"error\";\n}\n\n@Component({\n selector: \"nice-toast\",\n templateUrl: \"toast.template.html\",\n styleUrls: [\"toast.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceToastComponent {\n constructor(\n @Inject(MAT_SNACK_BAR_DATA) public data: NiceToastData,\n private snackbarRef: MatSnackBarRef<NiceToastComponent>\n ) {}\n\n public dismiss() {\n this.snackbarRef.dismiss();\n }\n}\n","<nice-alert disableAnimation [type]=\"data.type\" [appearance]=\"data.appearance || 'outline'\" (click)=\"dismiss()\">\n <span niceAlertTitle *ngIf=\"data.title\">{{ data.title }}</span>\n <span [innerHtml]=\"data.message\" *ngIf=\"data.message\"></span>\n</nice-alert>\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_TOAST_OPTIONS = new InjectionToken(\"nice_toast_options\");\n","import { Inject, Injectable } from \"@angular/core\";\nimport { MatSnackBar, MatSnackBarConfig } from \"@angular/material/snack-bar\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { NiceAlertAppearance } from \"../alert\";\nimport { NiceToastComponent } from \"./toast.component\";\nimport { NICE_TOAST_OPTIONS } from \"./toast.constant\";\n\nexport interface NiceToastOptions extends MatSnackBarConfig {\n appearance?: NiceAlertAppearance;\n successDuration?: number;\n warningDuration?: number;\n errorDuration?: number;\n infoDuration?: number;\n}\n\n@Injectable({ providedIn: \"any\" })\nexport class NiceToastService {\n constructor(\n @Inject(NICE_TOAST_OPTIONS)\n private options: NiceToastOptions,\n private snackbar: MatSnackBar,\n private translateService: TranslateService\n ) {}\n\n public success(messageKey: string, titleKey?: string, params?: object): void {\n this.showToast(\"success\", messageKey, titleKey, params);\n }\n\n public error(messageKey: string, titleKey?: string, params?: object): void {\n this.showToast(\"error\", messageKey, titleKey, params);\n }\n\n public warning(messageKey: string, titleKey?: string, params?: object): void {\n this.showToast(\"warning\", messageKey, titleKey, params);\n }\n\n public info(messageKey: string, titleKey?: string, params?: object): void {\n this.showToast(\"info\", messageKey, titleKey, params);\n }\n\n private showToast(type: string, messageKey: string, titleKey?: string, params?: object): void {\n const [message, title] = this.getTranslations(messageKey, titleKey, params);\n const duration = this.options[`${type}Duration`] ?? this.options.duration;\n this.snackbar.openFromComponent(NiceToastComponent, {\n ...this.options,\n duration,\n panelClass: [\"message-box\", type],\n data: {\n message,\n title,\n type,\n appearance: this.options.appearance\n }\n });\n }\n\n private getTranslations(message: string, title: string, params: object): [string, string] {\n const translations = [message];\n if (title) {\n translations.push(title);\n }\n\n try {\n const result = this.translateService.instant(translations, params) as { [key: string]: string };\n return [result[message], result[title]];\n } catch (e) {\n return [\"\", \"\"];\n }\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { MatSnackBarModule } from \"@angular/material/snack-bar\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceAlertModule } from \"../alert\";\nimport { NiceToastComponent } from \"./toast.component\";\nimport { NICE_TOAST_OPTIONS } from \"./toast.constant\";\nimport { NiceToastOptions, NiceToastService } from \"./toast.service\";\n\nconst defaultOptions: NiceToastOptions = {\n duration: 3000,\n horizontalPosition: \"end\",\n verticalPosition: \"bottom\"\n};\n\n@NgModule({\n imports: [CommonModule, MatSnackBarModule, TranslateModule, NiceAlertModule],\n declarations: [NiceToastComponent]\n})\nexport class NiceToastModule {\n public static forRoot(options?: NiceToastOptions): ModuleWithProviders<NiceToastModule> {\n return {\n ngModule: NiceToastModule,\n providers: [\n NiceToastService,\n {\n provide: NICE_TOAST_OPTIONS,\n useValue: {\n ...defaultOptions,\n ...(options ?? {})\n }\n }\n ]\n };\n }\n\n public static forFeature(options: NiceToastOptions): ModuleWithProviders<NiceToastModule> {\n return {\n ngModule: NiceToastModule,\n providers: [\n NiceToastService,\n {\n provide: NICE_TOAST_OPTIONS,\n useValue: {\n ...defaultOptions,\n ...options\n }\n }\n ]\n };\n }\n}\n","import { Component, Input, TemplateRef, ViewChild } from \"@angular/core\";\n\n@Component({\n selector: \"nice-toggle-button\",\n template: `<ng-template><ng-content></ng-content></ng-template>`\n})\nexport class ToggleButtonComponent {\n @ViewChild(TemplateRef, { static: true })\n public content: TemplateRef<any>;\n\n @Input()\n public value: string;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n forwardRef,\n HostListener,\n Input, Output,\n QueryList,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CanColor, ThemePalette } from \"@angular/material/core\";\nimport { ToggleButtonComponent } from \"./toggle-button.component\";\n\nexport type ToggleButtonGroupDataType = any | any[];\n\n@Component({\n selector: \"nice-toggle-button-group\",\n templateUrl: \"toggle-button-group.template.html\",\n styleUrls: [\"toggle-button-group.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleButtonGroupComponent),\n multi: true\n }\n ]\n})\nexport class ToggleButtonGroupComponent implements CanColor {\n private _multiple = false;\n\n @ContentChildren(ToggleButtonComponent)\n public toggleButtons: QueryList<ToggleButtonComponent>;\n\n @Input()\n public selected: ToggleButtonGroupDataType;\n\n @Input()\n public color: ThemePalette;\n\n @Output()\n public selectedChange = new EventEmitter<ToggleButtonGroupDataType>();\n\n public defaultColor: ThemePalette = \"accent\";\n\n @Input()\n public set multiple(multiple: boolean) {\n if (multiple === this._multiple) {\n return;\n }\n\n if (multiple) {\n if (this.selected) {\n this.selected = [this.selected];\n } else {\n this.selected = [];\n }\n } else {\n if (this.selected) {\n this.selected = this.selected[0];\n }\n }\n this._multiple = multiple;\n }\n\n private onTouched: () => void;\n private onChange: (selected: ToggleButtonGroupDataType) => void;\n\n @HostListener(\"blur\")\n public onBlur(): void {\n this.onTouched();\n }\n\n public writeValue(value: ToggleButtonGroupDataType): void {\n if (!value) {\n return;\n }\n\n this.selected = value;\n }\n\n public registerOnChange(fn: (color: string) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public onSelect(value: any): void {\n if (this._multiple) {\n if (this.selected) {\n const index = this.selected.findIndex(x => x === value);\n if (index < 0) {\n this.selected.push(value);\n } else {\n this.selected.splice(index, 1);\n }\n } else {\n this.selected = [value];\n }\n } else {\n this.selected = value;\n }\n this.onChange?.(this.selected);\n this.selectedChange?.emit(this.selected);\n }\n\n public conditionalColorObj(value: any): any {\n const colorClass = this.color ?? this.defaultColor;\n const isActive = this._multiple ? this.selected.includes(value) : this.selected === value;\n\n const obj = {} as any;\n obj.selected = isActive;\n obj[`bg-${colorClass}`] = isActive;\n obj[`bg-selected-${colorClass}`] = isActive;\n obj[\"left-selected\"] = this.isLeftValueSelected(value);\n obj[\"right-selected\"] = this.isRightValueSelected(value);\n\n return obj;\n }\n\n private isLeftValueSelected(value: any): boolean {\n if (!this._multiple || !this.selected.includes(value)) {\n return false;\n }\n\n const values = this.toggleButtons.map(btn => btn.value);\n const index = values.indexOf(value);\n\n if (index <= 0) {\n return false;\n }\n\n return this.selected.includes(values[index - 1]);\n }\n\n private isRightValueSelected(value: any): boolean {\n if (!this._multiple) {\n return false;\n }\n\n const values = this.toggleButtons.map(btn => btn.value);\n const index = values.indexOf(value);\n\n if (index === -1 || index === values.length - 1) {\n return false;\n }\n\n return this.selected.includes(values[index + 1]);\n }\n}\n","<div class=\"toggle-button-group-wrapper\">\n <div class=\"toggle-button-group flex flex-row items-center\">\n <div\n class=\"toggle-button\"\n [ngClass]=\"conditionalColorObj(btn.value)\"\n *ngFor=\"let btn of toggleButtons\"\n >\n <div matRipple class=\"toggle-button-inner flex place-content-center items-center\" (click)=\"onSelect(btn.value)\">\n <ng-container *ngTemplateOutlet=\"btn.content\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MatRippleModule } from \"@angular/material/core\";\n\nimport { ToggleButtonGroupComponent } from \"./toggle-button-group.component\";\nimport { ToggleButtonComponent } from \"./toggle-button.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n MatRippleModule\n ],\n declarations: [ToggleButtonComponent, ToggleButtonGroupComponent],\n providers: [],\n exports: [ToggleButtonComponent, ToggleButtonGroupComponent]\n})\nexport class NiceToggleButtonGroupModule {}\n","import { Directive, ElementRef, OnInit } from \"@angular/core\";\n\n@Directive({ selector: \"[niceAutofocus]\" })\nexport class NiceAutofocusDirective implements OnInit {\n constructor(private elem: ElementRef) {}\n\n public ngOnInit(): void {\n this.elem.nativeElement.focus?.();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceAutofocusDirective } from \"./autofocus.directive\";\n\n@NgModule({\n declarations: [NiceAutofocusDirective],\n exports: [NiceAutofocusDirective]\n})\nexport class NiceAutofocusDirectiveModule {}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\n\n@Directive({\n selector: \"textarea[niceAutogrow]\",\n exportAs: \"niceAutogrow\"\n})\nexport class NiceAutogrowDirective implements OnChanges, OnInit, OnDestroy {\n private _height = \"auto\";\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n // tslint:disable-next-line:no-input-rename\n @Input(\"niceAutogrowVerticalPadding\")\n public padding = 8;\n\n @HostBinding(\"rows\")\n private _rows = 1;\n\n /**\n * Constructor\n */\n constructor(\n private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _ngZone: NgZone\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Host binding for component inline styles\n */\n @HostBinding(\"style\")\n public get styleList(): any {\n return {\n \"height\": this._height,\n \"overflow\": \"hidden\",\n \"resize\": \"none\"\n };\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On changes\n */\n public ngOnChanges(changes: SimpleChanges): void {\n // Padding\n if (\"niceAutogrowVerticalPadding\" in changes) {\n // Resize\n this._resize();\n }\n }\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Resize for the first time\n this._resize();\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Resize on 'input' and 'ngModelChange' events\n */\n @HostListener(\"input\")\n @HostListener(\"ngModelChange\")\n private _resize(): void {\n // This doesn't need to trigger Angular's change detection by itself\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n // Set the height to 'auto' so we can correctly read the scrollHeight\n this._height = \"auto\";\n\n // Detect the changes so the height is applied\n this._changeDetectorRef.detectChanges();\n\n // Get the scrollHeight and subtract the vertical padding\n this._height = `${this._elementRef.nativeElement.scrollHeight - this.padding}px`;\n\n // Detect the changes one more time to apply the final height\n this._changeDetectorRef.detectChanges();\n });\n });\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceAutogrowDirective } from \"./autogrow.directive\";\n\n@NgModule({\n declarations: [\n NiceAutogrowDirective\n ],\n exports: [\n NiceAutogrowDirective\n ]\n})\nexport class NiceAutogrowModule {}\n","import { Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Output, } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { NiceAsyncTypeaheadComponent } from \"../../components\";\n\n@Directive({\n selector: \"[niceChipAsyncTypeahead]\",\n exportAs: \"niceChipAsyncTypeahead\",\n})\nexport class NiceChipAsyncTypeaheadDirective implements OnInit, OnDestroy {\n @Output()\n public niceChipAsyncTypeaheadTokenEnd = new EventEmitter<any>();\n\n private unsubscribeAll$ = new Subject();\n\n constructor(\n private typeahead: NiceAsyncTypeaheadComponent,\n private elementRef: ElementRef<HTMLElement>\n ) {\n }\n\n public ngOnInit(): void {\n this.typeahead.selected\n .pipe(\n takeUntil(this.unsubscribeAll$),\n filter((selected) => selected)\n )\n .subscribe((_) => {\n this.niceChipAsyncTypeaheadTokenEnd.emit(this.typeahead.getActive());\n this.typeahead.writeValue(null);\n });\n\n this.elementRef.nativeElement.classList.add(\"nice-chip-async-typeahead\");\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next(null);\n this.unsubscribeAll$.complete();\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceChipListItemLabel]\" })\nexport class ChipListItemLabelDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_CHIP_LIST_OPTIONS = new InjectionToken(\"nice_chip_list_options\");\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter, Inject,\n Input,\n Optional,\n Output,\n TemplateRef\n} from \"@angular/core\";\nimport { CanColor, ThemePalette } from \"@angular/material/core\";\nimport { Observable } from \"rxjs\";\nimport { NICE_CHIP_LIST_OPTIONS } from \"../chip-list.constant\";\nimport { ChipListItemLabelDirective } from \"./chip-list-item-label.directive\";\n\nexport type NiceChipListActionIcon = { matIcon: string; svgIcon?: string; } | { matIcon?: string; svgIcon: string; };\n\nexport interface NiceChipListOptions {\n closeButtonIcon: NiceChipListActionIcon;\n}\n\n@Component({\n selector: \"nice-chip-list-items\",\n templateUrl: \"./chip-list-items.template.html\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceChipListItemsComponent implements CanColor {\n @ContentChild(ChipListItemLabelDirective, { read: TemplateRef })\n public itemLabel: TemplateRef<any>;\n\n @Input()\n public color: ThemePalette = \"primary\";\n\n @Output()\n public removeChip = new EventEmitter<number>();\n\n @Input()\n public items$: Observable<any[]>;\n\n public defaultColor: ThemePalette = \"primary\";\n\n constructor(@Optional() @Inject(NICE_CHIP_LIST_OPTIONS) public readonly options: NiceChipListOptions) {\n if (!this.options) {\n this.options = {\n closeButtonIcon: {\n matIcon: \"cancel\"\n }\n };\n }\n }\n\n public remove(index: number): void {\n this.removeChip.next(index);\n }\n}\n","<div class=\"nice-items-row\" *ngIf=\"(items$ | async)?.length\">\n <div\n class=\"nice-chip\"\n *ngFor=\"let value of items$ | async; let i = index\"\n [ngClass]=\"color\"\n >\n <span *ngIf=\"!itemLabel\">{{ value }}</span>\n <ng-container *ngIf=\"itemLabel\">\n <ng-container *ngTemplateOutlet=\"itemLabel; context: { $implicit: value }\"></ng-container>\n </ng-container>\n <button (click)=\"remove(i)\">\n <mat-icon *ngIf=\"options.closeButtonIcon.matIcon\">\n {{ options.closeButtonIcon.matIcon }}\n </mat-icon>\n <mat-icon\n *ngIf=\"options.closeButtonIcon.svgIcon\"\n [svgIcon]=\"options.closeButtonIcon.svgIcon\"\n ></mat-icon>\n </button>\n </div>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChange,\n SimpleChanges\n} from \"@angular/core\";\nimport { ControlValueAccessor, NgControl } from \"@angular/forms\";\nimport { BehaviorSubject, Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\nimport { NiceAsyncTypeaheadComponent, NiceTypeaheadNewValue } from \"../../components\";\nimport { KeyboardCodes } from \"../../utils\";\nimport { NiceChipListItemsComponent } from \"./chip-list-items/chip-list-items.component\";\n\n@Directive({\n selector: \"input[niceChipList], nice-async-typeahead[niceChipList]\"\n})\nexport class NiceChipListDirective implements ControlValueAccessor, OnInit, OnChanges {\n @Input()\n public withItemList: NiceChipListItemsComponent;\n\n @Input()\n public reloadOnSelected = true;\n\n @Input()\n public separatorKeyboardCodes = [KeyboardCodes.Enter];\n\n private unsubscribeAll$ = new Subject<void>();\n private values$ = new BehaviorSubject([]);\n\n private _values: any[] = [];\n private propagateChanges = (value: any[]) => {};\n\n public get values(): any[] {\n return this._values;\n }\n\n constructor(\n @Optional() private asyncTypeahead: NiceAsyncTypeaheadComponent,\n @Optional() private ngControl: NgControl,\n private elementRef: ElementRef<HTMLInputElement>\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n @HostListener(\"keydown\", [\"$event\"])\n public onKeyDown(event: KeyboardEvent): void {\n if (this.asyncTypeahead) {\n return;\n }\n\n if (this.separatorKeyboardCodes.includes(event.code as KeyboardCodes)) {\n if (!this.elementRef.nativeElement.validity.valid) {\n return;\n }\n\n this.addValue(this.elementRef.nativeElement.value);\n this.elementRef.nativeElement.value = \"\";\n event.preventDefault();\n return;\n }\n }\n\n public ngOnInit(): void {\n if (this.asyncTypeahead) {\n this.setupAsyncTypeahead();\n }\n\n if (this.elementRef.nativeElement.parentElement.classList.contains(\"mat-form-field-infix\")) {\n this.elementRef.nativeElement.parentElement.style.alignItems = \"flex-start\";\n this.elementRef.nativeElement.parentElement.style.flexDirection = \"column-reverse\";\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"withItemList\" in changes) {\n this.withItemList.items$ = this.values$;\n this.withItemList.removeChip.pipe(takeUntil(this.unsubscribeAll$)).subscribe(x => {\n this._values.splice(x, 1);\n\n this.updateTypeaheadSearchOptions();\n\n this.propagateChanges(this._values);\n this.values$.next(this._values);\n });\n }\n }\n\n public writeValue(obj: any[]): void {\n this._values = obj ?? [];\n this.updateTypeaheadSearchOptions();\n this.values$.next(this._values);\n }\n\n public registerOnChange(fn: any): void {\n this.propagateChanges = fn;\n }\n\n public registerOnTouched(fn: any): void {}\n\n private setupAsyncTypeahead(): void {\n this.asyncTypeahead.selected\n .pipe(\n takeUntil(this.unsubscribeAll$),\n filter((selected) => selected)\n )\n .subscribe((value) => {\n if (value instanceof NiceTypeaheadNewValue) {\n this.addValue(value);\n } else {\n this.addValue(this.asyncTypeahead.getActive());\n }\n\n this.asyncTypeahead.searchOptions = { ...(this.asyncTypeahead.searchOptions ?? {}), ignore: this._values ?? [] };\n this.asyncTypeahead.onRemove(null, this.reloadOnSelected);\n });\n }\n\n private addValue(value: any): void {\n if (this._values.includes(value)) {\n return;\n }\n\n if (value instanceof NiceTypeaheadNewValue) {\n if (this._values.some(x => x instanceof NiceTypeaheadNewValue && x.$new === value.$new)) {\n return;\n }\n }\n\n this._values?.push(value);\n this.propagateChanges(this._values);\n this.values$.next(this._values);\n }\n\n private updateTypeaheadSearchOptions(): void {\n if (!this.asyncTypeahead) {\n return;\n }\n\n const searchOptions = this.asyncTypeahead.searchOptions;\n this.asyncTypeahead.searchOptions = { ...(searchOptions ?? {}), ignore: this._values ?? [] };\n this.asyncTypeahead.ngOnChanges({\n searchOptions: new SimpleChange(searchOptions, this.asyncTypeahead.searchOptions, false)\n });\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { ChipListItemLabelDirective } from \"./chip-list-items/chip-list-item-label.directive\";\nimport { NiceChipListItemsComponent, NiceChipListOptions } from \"./chip-list-items/chip-list-items.component\";\nimport { NICE_CHIP_LIST_OPTIONS } from \"./chip-list.constant\";\n\nimport { NiceChipListDirective } from \"./chip-list.directive\";\n\n@NgModule({\n imports: [CommonModule, MatIconModule],\n declarations: [NiceChipListDirective, NiceChipListItemsComponent, ChipListItemLabelDirective],\n exports: [NiceChipListDirective, NiceChipListItemsComponent, ChipListItemLabelDirective]\n})\nexport class NiceChipListDirectiveModule {\n public static forRoot(options?: NiceChipListOptions): ModuleWithProviders<NiceChipListDirectiveModule> {\n if (!options) {\n options = {\n closeButtonIcon: {\n matIcon: \"cancel\"\n }\n };\n }\n return {\n ngModule: NiceChipListDirectiveModule,\n providers: [\n {\n provide: NICE_CHIP_LIST_OPTIONS,\n useValue: options\n }\n ]\n };\n }\n}\n","import { CdkDragDrop, CdkDropList, moveItemInArray } from \"@angular/cdk/drag-drop\";\nimport { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Optional, Output, SimpleChanges } from \"@angular/core\";\nimport { FormArray, FormArrayName } from \"@angular/forms\";\nimport { pairwise, startWith, Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { LexoRankUtils } from \"../../utils/lexorank.utils\";\n\n@Directive({\n selector: \"[cdkDropList][niceDraggableList]\"\n})\nexport class NiceDraggableListDirective<T> implements OnInit, OnDestroy, OnChanges {\n @Input()\n public items: T[];\n\n @Input()\n public rankProperty = \"rank\";\n\n @Output()\n public itemsUpdated = new EventEmitter<T[]>();\n\n @Output()\n public itemRankUpdated = new EventEmitter<T>();\n\n public sortedItems: T[] = [];\n public formArray: FormArray;\n\n private unsubscribeAll$ = new Subject<void>();\n\n constructor(@Optional() private formArrayName: FormArrayName, private cdkDropList: CdkDropList) {}\n\n public ngOnInit(): void {\n if (this.formArrayName) {\n this.formArray = this.formArrayName.control;\n this.formArray.valueChanges.pipe(\n takeUntil(this.unsubscribeAll$),\n startWith(this.formArray.getRawValue()),\n map(() => this.formArray.getRawValue()),\n pairwise()\n ).subscribe(([previous, current]) => {\n if (previous.length !== current.length) {\n this.sortItems(current);\n }\n });\n\n this.sortItems(this.formArray.getRawValue());\n }\n\n this.cdkDropList.dropped.pipe(takeUntil(this.unsubscribeAll$)).subscribe((event) => this.drop(event));\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"items\" in changes && this.items) {\n this.sortItems(this.items);\n }\n }\n\n public drop(event: CdkDragDrop<any, any>): void {\n if (event.previousContainer === event.container) {\n if (event.previousIndex === event.currentIndex) {\n return;\n }\n\n event.item.data[this.rankProperty] = this.getNextRank(event);\n this.sortItems(this.sortedItems);\n this.itemsUpdated.next(this.sortedItems);\n this.itemRankUpdated.next(event.item.data);\n\n if (this.formArray) {\n this.formArray.get([event.previousIndex, this.rankProperty])?.patchValue(event.item.data[this.rankProperty]);\n moveItemInArray(this.formArray.controls, event.previousIndex, event.currentIndex);\n }\n } else {\n // TODO: Handle container change\n }\n }\n\n private sortItems(items: any[]): void {\n if (items.length && items.some((item) => !item[this.rankProperty])) {\n throw new Error(`All items must have a ${this.rankProperty}`);\n }\n\n this.sortedItems = [...items]\n .map(item => ({...item}))\n .sort((itemA, itemB) => LexoRankUtils.compareStringFn(itemA[this.rankProperty], itemB[this.rankProperty]));\n this.cdkDropList.data = this.sortedItems;\n }\n\n private getNextRank(event: CdkDragDrop<any, any>): string {\n const fromIndex = event.previousIndex;\n const toIndex = event.currentIndex;\n\n const itemAfter = this.sortedItems[fromIndex > toIndex ? toIndex : toIndex + 1];\n const itemBefore = this.sortedItems[fromIndex > toIndex ? toIndex - 1 : toIndex];\n return LexoRankUtils.getNewRank(itemAfter?.[this.rankProperty], itemBefore?.[this.rankProperty]);\n }\n}\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\nimport { NgModule } from \"@angular/core\";\n\nimport { NiceDraggableListDirective } from \"./draggable-list.directive\";\n\n@NgModule({\n imports: [DragDropModule],\n declarations: [NiceDraggableListDirective],\n exports: [NiceDraggableListDirective],\n})\nexport class NiceDraggableListModule {}\n","import { Directive, ElementRef, HostListener, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\n\n@Directive({ selector: \"img[niceImageErrorPlaceholder]\" })\nexport class NiceImageErrorPlaceholderDirective {\n @Input()\n public fallback?: TemplateRef<any>;\n\n constructor(private elementRef: ElementRef, private viewContainerRef: ViewContainerRef) {}\n\n @HostListener(\"error\")\n public onError(): void {\n this.elementRef.nativeElement.style.display = \"none\";\n if (this.fallback) {\n this.viewContainerRef.createEmbeddedView(this.fallback);\n }\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceImageErrorPlaceholderDirective } from \"./image-error-placeholder.directive\";\n\n@NgModule({\n declarations: [NiceImageErrorPlaceholderDirective],\n exports: [NiceImageErrorPlaceholderDirective]\n})\nexport class NiceImageErrorPlaceholderDirectiveModule {}\n","import { Directive, ElementRef, OnInit } from \"@angular/core\";\nimport { MatFormField } from \"@angular/material/form-field\";\n\n// tslint:disable-next-line:directive-selector\n@Directive({selector: \"[keep-material-style]\"})\nexport class NiceMaterialStyleDirective implements OnInit {\n constructor(private element: ElementRef) {}\n\n public ngOnInit(): void {\n (this.element.nativeElement as HTMLElement).classList.add(\"keep-material-style\");\n }\n}\n","import { Directive, ElementRef, OnInit } from \"@angular/core\";\nimport { MatFormField } from \"@angular/material/form-field\";\n\n// tslint:disable-next-line:directive-selector\n@Directive({selector: \"[nice-rounded-style]\"})\nexport class NiceRoundedStyleDirective implements OnInit {\n constructor(private element: ElementRef) {}\n\n public ngOnInit(): void {\n (this.element.nativeElement as HTMLElement).classList.add(\"nice-rounded-style\");\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceMaterialStyleDirective } from \"./nice-material-style.directive\";\nimport { NiceRoundedStyleDirective } from \"./nice-rounded-style.directive\";\n\n@NgModule({\n declarations: [\n NiceMaterialStyleDirective,\n NiceRoundedStyleDirective\n ],\n exports: [\n NiceMaterialStyleDirective,\n NiceRoundedStyleDirective\n ]\n})\nexport class NiceMaterialModule {}\n","import { Directive, EventEmitter, Input, Output, Type } from \"@angular/core\";\nimport { MatDialog, MatDialogConfig } from \"@angular/material/dialog\";\n\n@Directive()\nexport class NiceModalOpenerDirective<T, Return, Data> {\n @Input()\n public modalData: Data;\n\n @Output()\n public modalAfterClosed = new EventEmitter<Return>();\n\n constructor(protected dialog: MatDialog, private modal: Type<T>, private options: MatDialogConfig<Data>) {}\n\n public open(): void {\n this.dialog\n .open(this.modal, {\n ...this.options,\n data: this.modalData\n })\n .afterClosed()\n .subscribe(res => this.modalAfterClosed.emit(res));\n }\n}\n","import { Directive, HostListener, Type } from \"@angular/core\";\nimport { MatDialog, MatDialogConfig } from \"@angular/material/dialog\";\nimport { NiceModalOpenerDirective } from \"./modal-opener.directive\";\n\n@Directive()\nexport class NiceModalOnClickDirective<T, Return, Data = any> extends NiceModalOpenerDirective<T, Return, Data> {\n constructor(dialog: MatDialog, modal: Type<T>, options: MatDialogConfig<Data>) {\n super(dialog, modal, options);\n }\n\n @HostListener(\"click\")\n public onClick(): void {\n this.open();\n }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit } from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\n\n@Directive({\n selector: \"[niceScrollReset]\",\n exportAs: \"niceScrollReset\"\n})\nexport class NiceScrollResetDirective implements OnInit, OnDestroy {\n private _unsubscribeAll: Subject<any> = new Subject<any>();\n\n /**\n * Constructor\n */\n constructor(\n private _elementRef: ElementRef,\n private _router: Router\n ) {\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n public ngOnInit(): void {\n // Subscribe to NavigationEnd event\n this._router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n takeUntil(this._unsubscribeAll)\n ).subscribe(() => {\n // Reset the element's scroll position to the top\n this._elementRef.nativeElement.scrollTop = 0;\n });\n }\n\n /**\n * On destroy\n */\n public ngOnDestroy(): void {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceScrollResetDirective } from \"./scroll-reset.directive\";\n\n@NgModule({\n declarations: [\n NiceScrollResetDirective\n ],\n exports: [\n NiceScrollResetDirective\n ]\n})\nexport class NiceScrollResetModule {\n}\n","import { Directive, HostListener } from \"@angular/core\";\n\n@Directive({ selector: \"[niceClickStopPropagation]\" })\nexport class NiceClickStopPropagationDirective {\n @HostListener(\"click\", [\"$event\"])\n public stopClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NiceClickStopPropagationDirective } from \"./click-stop-propagation.directive\";\n\n@NgModule({\n exports: [NiceClickStopPropagationDirective],\n declarations: [NiceClickStopPropagationDirective],\n\n})\nexport class NiceStopPropagationModule {\n}\n","import { Directive, HostListener } from \"@angular/core\";\n\n// https://stackoverflow.com/questions/48886460/prevent-closing-browser-tab-window-in-angular-5-x\n@Directive({ selector: \"[nicePreventCloseWindow]\" })\nexport class NicePreventCloseWindowDirective {\n @HostListener(\"window:beforeunload\", [\"$event\"])\n public handleClose($event) {\n $event.returnValue = false;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NicePreventCloseWindowDirective } from \"./prevent-close-window.directive\";\n\n@NgModule({\n declarations: [NicePreventCloseWindowDirective],\n exports: [NicePreventCloseWindowDirective]\n})\nexport class NiceWindowDirectiveModule {\n}\n","import { NgModule, Optional, SkipSelf } from \"@angular/core\";\nimport { MATERIAL_SANITY_CHECKS } from \"@angular/material/core\";\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from \"@angular/material/form-field\";\nimport { NiceMediaWatcherModule, NiceSplashScreenModule, NiceUtilsModule } from \"./providers\";\n\n@NgModule({\n imports: [\n NiceMediaWatcherModule,\n NiceSplashScreenModule,\n NiceUtilsModule\n ],\n providers: [\n {\n // Disable 'theme' sanity check\n provide : MATERIAL_SANITY_CHECKS,\n useValue: {\n doctype: true,\n theme : false,\n version: true\n }\n },\n {\n // Use the 'fill' appearance on Angular Material form fields by default\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n appearance: \"fill\"\n }\n }\n ]\n})\nexport class NiceModule {\n /**\n * Constructor\n */\n constructor(@Optional() @SkipSelf() parentModule?: NiceModule) {\n if (parentModule) {\n throw new Error(\"NiceModule has already been loaded. Import this module in the AppModule only!\");\n }\n }\n}\n","/*\n * Public API Surface of nice-ui-kit-v2\n */\n\nexport * from \"./lib/animations\";\nexport * from \"./lib/api\";\nexport * from \"./lib/components\";\nexport * from \"./lib/directives\";\nexport * from \"./lib/pipes\";\nexport * from \"./lib/providers\";\nexport * from \"./lib/utils\";\nexport * from \"./lib/nice.module\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NiceUtilsService","i1.NiceAlertService","i2.NiceUtilsService","i3","i4","i5","i1","i2","i4.OptionsScrollDirective","i6","i7","i11","i12","i3.NiceAsyncTypeaheadService","i5.OptionsScrollDirective","i8","i9","i10","i1.PictureModalService","i3.CarouselLayoutPipe","i3.NiceDateRangePickerServiceService","i6.RangePresetComponent","i5.LocalizedDatePipe","i1.NiceConfigService","tap","i1.NiceMediaWatcherService","i1.NiceSplashScreenService","i2.NiceDrawerService","i3.NiceUtilsService","i2.ExportBottomSheetService","i2.DynamicOverlayContainer","i1.DynamicOverlay","i1.NiceNavigationService","i5.NiceHorizontalNavigationBasicItemComponent","i6.NiceHorizontalNavigationDividerItemComponent","i8.NiceShouldHidePipe","i4.NiceHorizontalNavigationBasicItemComponent","i5.NiceHorizontalNavigationBranchItemComponent","i6.NiceHorizontalNavigationSpacerItemComponent","i7.NiceShouldHidePipe","debounceTime","i4.NiceNavigationHintService","i6.NiceShowHintDirective","i8.NiceShouldShowHintPipe","i2.NiceNavigationService","i5.NiceVerticalNavigationBasicItemComponent","i4.NiceVerticalNavigationBasicItemComponent","i5.NiceVerticalNavigationCollapsableItemComponent","i6.NiceVerticalNavigationDividerItemComponent","i7.NiceVerticalNavigationSpacerItemComponent","i9.NiceShouldHidePipe","i6.NiceVerticalNavigationCollapsableItemComponent","i7.NiceVerticalNavigationDividerItemComponent","i8.NiceVerticalNavigationGroupItemComponent","i9.NiceVerticalNavigationSpacerItemComponent","merge","i6.NiceNavigationHintService","i4.NiceLottieComponent","i1.NiceSweetAlertService","i3.NiceAlertComponent","i1.NiceAsyncTypeaheadComponent"],"mappings":"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"}
|