{"version":3,"file":"naniteninja-ionic-lib.mjs","sources":["../../../projects/nextsapien-component-lib/src/lib/components/authentication/abstract-auth.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/base-btn/base-btn-logic.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/chip-btn/chip-btn.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/chip-btn/chip-btn.component.html","../../../projects/nextsapien-component-lib/src/lib/components/buttons/base-btn/base-btn.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/base-btn/base-btn.component.html","../../../projects/nextsapien-component-lib/src/lib/components/buttons/menu-btn/menu-item/menu-item.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/menu-btn/menu-item/menu-item.component.html","../../../projects/nextsapien-component-lib/src/lib/components/buttons/menu-btn/menu-btn.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/menu-btn/menu-btn.component.html","../../../projects/nextsapien-component-lib/src/lib/components/buttons/icon-btn/icon-btn.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/icon-btn/icon-btn.component.html","../../../projects/nextsapien-component-lib/src/lib/components/authentication/auth-header/auth-header.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/authentication/auth-header/auth-header.component.html","../../../projects/nextsapien-component-lib/src/lib/components/authentication/auth-module-view.ts","../../../projects/nextsapien-component-lib/src/lib/enums/auth-providers.enum.ts","../../../projects/nextsapien-component-lib/src/lib/directives/lazy-image/lazy-image.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/authentication/auth-social/auth-social.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/authentication/auth-social/auth-social.component.html","../../../projects/nextsapien-component-lib/src/lib/directives/auto-focus/autoFocus.directive.ts","../../../projects/nextsapien-component-lib/src/lib/directives/debounce-click/debounce-click.directive.ts","../../../projects/nextsapien-component-lib/src/lib/directives/disable-control/disable-control.directive.ts","../../../projects/nextsapien-component-lib/src/lib/enums/direction.enum.ts","../../../projects/nextsapien-component-lib/src/lib/directives/draggable-scroll/draggable-scroll.directive.ts","../../../projects/nextsapien-component-lib/src/lib/directives/list-box-element/list-box.ts","../../../projects/nextsapien-component-lib/src/lib/directives/long-press/long-press.directive.ts","../../../projects/nextsapien-component-lib/src/lib/directives/resized-observer/resized.event.ts","../../../projects/nextsapien-component-lib/src/lib/directives/resized-observer/resized-observer.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/base-card/base-card.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/base-card/base-card.component.html","../../../projects/nextsapien-component-lib/src/lib/components/dashed-checkbox/dashed-checkbox.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/dashed-checkbox/dashed-checkbox.component.html","../../../projects/nextsapien-component-lib/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/nextsapien-component-lib/src/lib/components/buttons/primary-btn/primary-btn.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/primary-btn/primary-btn.component.html","../../../projects/nextsapien-component-lib/src/lib/components/buttons/secondary-btn/secondary-btn.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/secondary-btn/secondary-btn.component.html","../../../projects/nextsapien-component-lib/src/lib/components/modal/popup-injection-tokens.ts","../../../projects/nextsapien-component-lib/src/lib/directives/dynamic-modal-container/dynamic-modal-container.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/modal/popup-modal/popup-modal.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/modal/popup-modal/popup-modal.component.html","../../../projects/nextsapien-component-lib/src/lib/components/modal/popup-modal/popup-modal.service.ts","../../../projects/nextsapien-component-lib/src/lib/directives/submit-form-on-enter/submit-on-enter.directive.ts","../../../projects/nextsapien-component-lib/src/lib/directives/directive.module.ts","../../../projects/nextsapien-component-lib/src/lib/directives/form-validator/focus-invalid/focus-invalid-input.directive.ts","../../../projects/nextsapien-component-lib/src/lib/directives/form-validator/invalid-input/invalid-input.directive.ts","../../../projects/nextsapien-component-lib/src/lib/directives/form-validator/form-validator.module.ts","../../../projects/nextsapien-component-lib/src/lib/directives/password/confirm-password-validator.directive.ts","../../../projects/nextsapien-component-lib/src/lib/enums/form-error-messages.enum.ts","../../../projects/nextsapien-component-lib/src/lib/directives/password/custom-password-validator.directive.ts","../../../projects/nextsapien-component-lib/src/lib/directives/password/password-validator.directive.ts","../../../projects/nextsapien-component-lib/src/lib/directives/password/password-validator.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/section-separator/section-separator.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/bubble-btn/bubble-btn.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/bubble-btn/bubble-btn.component.html","../../../projects/nextsapien-component-lib/src/lib/components/buttons/hover-btn/hover-btn.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/hover-btn/hover-btn.component.html","../../../projects/nextsapien-component-lib/src/lib/components/buttons/list-btn/list-btn.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/buttons/list-btn/list-btn.component.html","../../../projects/nextsapien-component-lib/src/lib/components/buttons/buttons.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/dashed-checkbox/dashed-checkbox.module.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/as-form-array/as-form-array.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/as-form-control/as-form-control.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/date-localization/date-localization.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/fallback-translate/fallback-translate.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/field-type/field-type.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/get-display-value/get-display-value.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/get-filter-values/get-filter-values.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/initials/initials.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/round/round.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/update-llm-preference/update-llm-preference.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/pipe.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/form-validator/error-message/error-message.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/form-validator/error-message/error-message.component.html","../../../projects/nextsapien-component-lib/src/lib/components/map/interfaces/map-lib-config.interface.ts","../../../projects/nextsapien-component-lib/src/lib/components/map/map-lib.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/enums/toastr-severity.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/map/enums/map-action-types.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/map/map.config.ts","../../../projects/nextsapien-component-lib/src/lib/components/map/map.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/map/map.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/map/map.component.html","../../../projects/nextsapien-component-lib/src/lib/components/map/map.module.ts","../../../projects/nextsapien-component-lib/src/lib/enums/image-formats.enum.ts","../../../projects/nextsapien-component-lib/src/lib/lookups/regexs.ts","../../../projects/nextsapien-component-lib/src/lib/components/image-cropper/image-upload-modal.utils.ts","../../../projects/nextsapien-component-lib/src/lib/components/image-cropper/image-tmplt/image-tmplt.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/image-cropper/image-tmplt/image-tmplt.component.html","../../../projects/nextsapien-component-lib/src/lib/components/image-cropper/image-upload-modal.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/image-cropper/image-upload-modal.component.html","../../../projects/nextsapien-component-lib/src/lib/components/image-cropper/image-cropper.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/image-base/image-base.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/image-base/image-base.component.html","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/image-base/image-base.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/image-card/image-card.utils.ts","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/image-card/image-card.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/image-card/image-card.component.html","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/image-card/image-card.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-field/input-field.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-field/input-field.component.html","../../../projects/nextsapien-component-lib/src/lib/components/input-field/input-field.module.ts","../../../projects/nextsapien-component-lib/src/lib/directives/native-element-injector/native-element-injector.directive.ts","../../../projects/nextsapien-component-lib/src/lib/operations/operations.ts","../../../projects/nextsapien-component-lib/src/lib/components/toggle/enums/toggle-status.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/toggle/enums/toggle-variants.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/toggle/toggle.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/toggle/toggle.component.html","../../../projects/nextsapien-component-lib/src/lib/components/toggle/toggle.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/tel-input/tel-errors/tel-errors.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/tel-input/tel-errors/tel-errors.component.html","../../../projects/nextsapien-component-lib/src/lib/enums/country-iso.enum.ts","../../../projects/nextsapien-component-lib/src/lib/enums/phone-number-format.enum.ts","../../../projects/nextsapien-component-lib/src/lib/enums/search-country-field.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/tel-input/data/country-code.ts","../../../projects/nextsapien-component-lib/src/lib/components/tel-input/tel-input.validator.ts","../../../projects/nextsapien-component-lib/src/lib/components/tel-input/tel-input.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/tel-input/tel-input.component.html","../../../projects/nextsapien-component-lib/src/lib/components/tel-input/tel-input.module.ts","../../../projects/nextsapien-component-lib/src/lib/enums/login-input-form.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/login-input/login-input.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/login-input/login-input.component.html","../../../projects/nextsapien-component-lib/src/lib/components/login-input/login-input.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/authentication/otp-input/otp-input.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/authentication/otp-input/otp-input.component.html","../../../projects/nextsapien-component-lib/src/lib/components/authentication/otp-input/otp-input.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/shared-verification-code/shared-verification-code.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/shared-verification-code/shared-verification-code.component.html","../../../projects/nextsapien-component-lib/src/lib/components/shared-verification-code/shared-verification-code.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/authentication/forgot-password/forgot-password.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/authentication/forgot-password/forgot-password.component.html","../../../projects/nextsapien-component-lib/src/lib/components/authentication/forgot-password/reset-password/reset-password.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/authentication/forgot-password/reset-password/reset-password.component.html","../../../projects/nextsapien-component-lib/src/lib/components/authentication/forgot-password/verification-code/verification-code.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/authentication/forgot-password/verification-code/verification-code.component.html","../../../projects/nextsapien-component-lib/src/lib/components/authentication/login/login.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/authentication/login/login.component.html","../../../projects/nextsapien-component-lib/src/lib/components/authentication/authentication.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/base-card/base-card.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/base-component/base.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/card-skeleton/card-skeleton.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/card-skeleton/card-skeleton.component.html","../../../projects/nextsapien-component-lib/src/lib/components/card-skeleton/card-skeleton.module.ts","../../../projects/nextsapien-component-lib/src/lib/enums/tooltip-direction-preference.ts","../../../projects/nextsapien-component-lib/src/lib/components/search-bar/search-bar.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/search-bar/search-bar.component.html","../../../projects/nextsapien-component-lib/src/lib/components/tooltip/tooltip.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/tooltip/tooltip.component.html","../../../projects/nextsapien-component-lib/src/lib/directives/tooltip/tooltip.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/column-management-modal/column-management-modal.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/column-management-modal/column-management-modal.component.html","../../../projects/nextsapien-component-lib/src/lib/components/search-bar/search-bar.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/tooltip/tooltip.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/column-management-modal/column-management-modal.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/confirmation-modal/confirmation-modal.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/confirmation-modal/confirmation-modal.component.html","../../../projects/nextsapien-component-lib/src/lib/components/confirmation-modal/confirmation-modal.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/content-view-card/content-view-card.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/content-view-card/directives/content-card-heading.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/content-view-card/directives/content-card-section.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/content-view-card/directives/content-card-sub-headings.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/content-view-card/content-view-card.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/content-view-card/content-view-card.component.html","../../../projects/nextsapien-component-lib/src/lib/components/content-view-card/directives/content-card-first-column.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/content-view-card/directives/content-card-last-column.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/content-view-card/directives/content-card-xlsubheadings.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/content-view-card/directives/content-toggle.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/content-view-card/content-view-card.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/drawer/drawer.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/drawer/drawer.component.html","../../../projects/nextsapien-component-lib/src/lib/components/drawer/drawer.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/error-message/error-message.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/error-message/error-message.component.html","../../../projects/nextsapien-component-lib/src/lib/components/expansion-panel/expansion-panel.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/expansion-panel/expansion-panel.component.html","../../../projects/nextsapien-component-lib/src/lib/components/expansion-panel/expansion-panel.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/enums/feedback-modal-variant.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/enums/feedback-storage.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/services/feedback.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-modal/feedback-modal.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-modal/feedback-modal.component.html","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-screenshot/interfaces/drawing-mode.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-screenshot/interfaces/stroke-mode.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-screenshot/color-range/color-range.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-screenshot/color-range/color-range.component.html","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-screenshot/feedback-screenshot.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-screenshot/feedback-screenshot.component.html","../../../projects/nextsapien-component-lib/src/lib/components/feedback/services/accelerometer.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-send/feedback-send.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-send/feedback-send.component.html","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-success/feedback-success.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback-success/feedback-success.component.html","../../../projects/nextsapien-component-lib/src/lib/directives/date-mask/date-mask.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-date-field/input-date-field.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-date-field/input-date-field.component.html","../../../projects/nextsapien-component-lib/src/lib/components/input-date-field/input-date-field-inline/input-date-field-inline.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-date-field/input-date-field-inline/input-date-field-inline.component.html","../../../projects/nextsapien-component-lib/src/lib/components/input-date-field/input-date-field.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-field-select/input-field-select.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-field-select/input-field-select.component.html","../../../projects/nextsapien-component-lib/src/lib/components/input-field-select/input-field-select.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/range-selector/range-selector.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/range-selector/range-selector.component.html","../../../projects/nextsapien-component-lib/src/lib/components/range-selector/range-selector.module.ts","../../../projects/nextsapien-component-lib/src/lib/enums/form-field-type.ts","../../../projects/nextsapien-component-lib/src/lib/components/form-field/radio-button/radio-button.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/form-field/radio-button/radio-button.component.html","../../../projects/nextsapien-component-lib/src/lib/components/form-field/form-field.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/form-field/form-field.component.html","../../../projects/nextsapien-component-lib/src/lib/components/form-field/form-field.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/progress-bar/progress-bar.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/modal/bottom-modal/bottom-modal.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/modal/bottom-modal/bottom-modal.component.html","../../../projects/nextsapien-component-lib/src/lib/components/modal/modal.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/multiselect/multiselect-dialog.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/multiselect/multiselect-dialog.component.html","../../../projects/nextsapien-component-lib/src/lib/components/multiselect/multiselect.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/multiselect/multiselect.component.html","../../../projects/nextsapien-component-lib/src/lib/components/multiselect/multiselect.module.ts","../../../projects/nextsapien-component-lib/src/lib/enums/status-types.ts","../../../projects/nextsapien-component-lib/src/lib/components/notifications/services/toast.service.ts","../../../projects/nextsapien-component-lib/src/lib/animations/fade.animations.ts","../../../projects/nextsapien-component-lib/src/lib/components/notifications/status-icon/status-icon.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/notifications/status-icon/status-icon.component.html","../../../projects/nextsapien-component-lib/src/lib/components/notifications/status-banner/status-banner.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/notifications/status-banner/status-banner.component.html","../../../projects/nextsapien-component-lib/src/lib/enums/status-position.ts","../../../projects/nextsapien-component-lib/src/lib/components/notifications/toast/toast.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/notifications/toast/toast.component.html","../../../projects/nextsapien-component-lib/src/lib/components/notifications/notifications.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/feedback/feedback.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/footer/enums/footer-type.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/footer/components/footer-base/footer-base.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/footer/components/footer-base/footer-base.component.html","../../../projects/nextsapien-component-lib/src/lib/components/footer/components/footer-shared/footer-shared.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/footer/components/footer-shared/footer-shared.component.html","../../../projects/nextsapien-component-lib/src/lib/components/footer/components/footer-tabs/footer-tabs.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/footer/components/footer-tabs/footer-tabs.component.html","../../../projects/nextsapien-component-lib/src/lib/enums/form-gen-style.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-group-expander-change.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-variables.ts","../../../projects/nextsapien-component-lib/src/lib/utils/id-generator.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-time-field/input-time-field.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-time-field/input-time-field.component.html","../../../projects/nextsapien-component-lib/src/lib/components/input-field-card/input-field-card.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-field-card/input-field-card-number/input-field-card-number.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-field-card/input-field-card-number/input-field-card-number.component.html","../../../projects/nextsapien-component-lib/src/lib/components/input-field-card/input-field-card-expiry/input-field-card-expiry.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-field-card/input-field-card-expiry/input-field-card-expiry.component.html","../../../projects/nextsapien-component-lib/src/lib/components/info-card/info-card.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/info-card/info-card.component.html","../../../projects/nextsapien-component-lib/src/lib/components/info-card-list/info-card-list.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/info-card-list/info-card-list.component.html","../../../projects/nextsapien-component-lib/src/lib/components/typeahead-field/typeahead-field.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/typeahead-field/typeahead-result.component.html","../../../projects/nextsapien-component-lib/src/lib/components/typeahead-field/typeahead-field.component.html","../../../projects/nextsapien-component-lib/src/lib/components/multi-field/multi-field.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/multi-field/multi-field.component.html","../../../projects/nextsapien-component-lib/src/lib/components/selectable/selectable.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/selectable/selectable.component.html","../../../projects/nextsapien-component-lib/src/lib/components/text-list/text-list.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/text-list/text-list.component.html","../../../projects/nextsapien-component-lib/src/lib/components/rating-field/rating-field.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/rating-field/rating-field.component.html","../../../projects/nextsapien-component-lib/src/lib/components/form-generator/injectable-form-field-wrapper.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/form-generator/injectable-form-field-wrapper.component.html","../../../projects/nextsapien-component-lib/src/lib/components/form-generator/form-group.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/form-generator/form-group.component.html","../../../projects/nextsapien-component-lib/src/lib/components/form-generator/form-generator.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/form-generator/form-generator.component.html","../../../projects/nextsapien-component-lib/src/lib/components/input-field-card/input-field-card.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/input-time-field/input-time-field.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/info-card/info-card.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/info-card-list/info-card-list.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/typeahead-field/typeahead-field.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/multi-field/multi-field.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/rating-field/rating-field.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/selectable/selectable.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/text-list/text-list.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/form-generator/form-generator.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/date-filter/date-filter.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/date-filter/date-filter.component.html","../../../projects/nextsapien-component-lib/src/lib/enums/filter-type.ts","../../../projects/nextsapien-component-lib/src/lib/model/filter-operator.ts","../../../projects/nextsapien-component-lib/src/lib/model/select-option.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/enums/grid-modal.enum.ts","../../../projects/nextsapien-component-lib/src/lib/model/item-action-handler.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/services/grid-filter.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid/grid.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/select-filter/select-filter.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/select-filter/select-filter.component.html","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/grid-filters-modal/grid-filters-modal.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/grid-filters-modal/grid-filters-modal.component.html","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/manage-filters-modal/manage-filters-modal.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/manage-filters-modal/manage-filters-modal.component.html","../../../projects/nextsapien-component-lib/src/lib/components/premium-chip/premium-chip-variants.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/premium-chip/components/primary-chip/primary-chip.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/premium-chip/components/primary-chip/primary-chip.component.html","../../../projects/nextsapien-component-lib/src/lib/components/premium-chip/components/glass-chip/glass-chip.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/premium-chip/components/glass-chip/glass-chip.component.html","../../../projects/nextsapien-component-lib/src/lib/components/premium-chip/premium-chip.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/premium-chip/premium-chip.component.html","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/filter-bar/filter-bar.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/filter-bar/filter-bar.component.html","../../../projects/nextsapien-component-lib/src/lib/components/premium-chip/premium-chip.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-filters/grid-filters.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-toolbar/grid-toolbar.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid-toolbar/grid-toolbar.component.html","../../../projects/nextsapien-component-lib/src/lib/components/grid-toolbar/grid-toolbar.module.ts","../../../projects/nextsapien-component-lib/src/lib/model/edit-complete-event.ts","../../../projects/nextsapien-component-lib/src/lib/model/item-info-line.ts","../../../projects/nextsapien-component-lib/src/lib/model/item-summary.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid/lookups/grid.paginator.lookup.ts","../../../projects/nextsapien-component-lib/src/lib/shared/avatar.compoent.ts","../../../projects/nextsapien-component-lib/src/lib/directives/text-highlight/text-highlight.directive.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid/grid.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/grid/grid.component.html","../../../projects/nextsapien-component-lib/src/lib/components/grid/grid.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/image-cropper/shared-image-cropper.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/image-deck/image-deck.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/image-deck/image-deck.component.html","../../../projects/nextsapien-component-lib/src/lib/components/info-card-placeholder/info-card-placeholder.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/info-card-placeholder/info-card-placeholder.component.html","../../../projects/nextsapien-component-lib/src/lib/components/info-card-placeholder/info-card-placeholder.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/duration-picker/duration-picker.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/duration-picker/duration-picker.component.html","../../../projects/nextsapien-component-lib/src/lib/components/duration-picker/duration-picker.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/scan-pill/scan-pill.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/scan-pill/scan-pill.component.html","../../../projects/nextsapien-component-lib/src/lib/components/scan-pill/scan-pill.module.ts","../../../projects/nextsapien-component-lib/src/lib/enums/json-editor-mode.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/json-editor/json-editor.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/json-editor/json-editor.component.html","../../../projects/nextsapien-component-lib/src/lib/components/json-editor/json-editor.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/list/list-item.model.ts","../../../projects/nextsapien-component-lib/src/lib/components/list/list-toggle/list-toggle.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/list/list-toggle/list-toggle.component.html","../../../projects/nextsapien-component-lib/src/lib/components/list/list.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/list/list.component.html","../../../projects/nextsapien-component-lib/src/lib/components/list/list.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/map/enums/place-types.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/location-suggestion-panel/location-suggestion-panel.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/location-suggestion-panel/location-suggestion-panel.component.html","../../../projects/nextsapien-component-lib/src/lib/components/marquee/marquee.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/marquee/marquee.component.html","../../../projects/nextsapien-component-lib/src/lib/components/marquee/marquee.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/multi-colored-text/multi-colored-text.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/multi-colored-text/multi-colored-text.component.html","../../../projects/nextsapien-component-lib/src/lib/components/multi-colored-text/multi-colored-text.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/notification-banner/notification-banner.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/notification-banner/notification-banner.component.html","../../../projects/nextsapien-component-lib/src/lib/components/notification-banner/notification-banner.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/notifications-list/enums/notification-statuses.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/notifications-list/enums/notification-swipes.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/notifications-list/notifications-list/notifications-list.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/notifications-list/notifications-list/notifications-list.component.html","../../../projects/nextsapien-component-lib/src/lib/components/notifications-list/notifications.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/percentage-bar/percentage-bar.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/percentage-bar/percentage-bar.component.html","../../../projects/nextsapien-component-lib/src/lib/components/percentage-bar/percentage-bar.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/drag-and-drop/drag-and-drop.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/drag-and-drop/drag-and-drop.component.html","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/drag-and-drop/drag-and-drop.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/drag-and-drop/drag-and-drop.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/drag-and-drop/drag-and-drop.component.html","../../../projects/nextsapien-component-lib/src/lib/components/drag-and-drop/drag-and-drop.module.ts","../../../projects/nextsapien-component-lib/src/lib/model/image-model.ts","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/picture-gallery.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/picture-gallery.component.html","../../../projects/nextsapien-component-lib/src/lib/components/photo-upload/photo-upload.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/preview-window/preview-window.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/preview-window/preview-window.component.html","../../../projects/nextsapien-component-lib/src/lib/components/preview-window/preview-window.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/profile-header/profile-header.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/profile-header/profile-header.component.html","../../../projects/nextsapien-component-lib/src/lib/components/profile-header/profile-header.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/masonry-container/masonry-container.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/masonry-container/masonry-container.component.html","../../../projects/nextsapien-component-lib/src/lib/components/masonry-container/masonry-container.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/page-layout/scroll-position.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/page-layout/search-bar-visibility.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/tab-menu/tab-menu.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/tab-menu/tab-menu.component.html","../../../projects/nextsapien-component-lib/src/lib/components/page-layout/page-layout.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/page-layout/page-layout.component.html","../../../projects/nextsapien-component-lib/src/lib/components/tab-menu/tab-menu.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/page-layout/page-layout.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/_constants/insights-route-data.constant.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/_enums/insights-filter-chip.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/_enums/insights-tab.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/_enums/insights-view.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/_enums/matcher-insights-tab.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/_services/insights-data-bridge.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/insights.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/insights.component.html","../../../projects/nextsapien-component-lib/src/lib/components/insights/tab-routes/base-insights-tab.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/base-insights.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/_lookups/insights-grid-columns.lookup.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/grid/content-grid.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/grid/content-grid.component.html","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/card-expander/card-expander.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/card-expander/card-expander.component.html","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/pipes/content-card-name-age.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/pipes/content-card-fee-per-meetup.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/pipes/content-card-string-array.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/client-request-card/client-request-card.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/client-request-card/client-request-card.component.html","../../../projects/nextsapien-component-lib/src/lib/components/insights/tab-routes/insights-requests-tab.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/pipes/content-card-background-check.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/pipes/content-card-lifetime-earn-per-meetup.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/client-matcher-card/client-matcher-card.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/client-matcher-card/client-matcher-card.component.html","../../../projects/nextsapien-component-lib/src/lib/components/insights/tab-routes/insights-matchers-tab.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/insights-progress-bars/insights-progress-bars.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/insights-progress-bars/insights-progress-bars.component.html","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/pipes/content-card-bwh.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/pipes/content-card-weight-height-range.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/client-prospect-card/client-prospect-card.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/client-prospect-card/client-prospect-card.component.html","../../../projects/nextsapien-component-lib/src/lib/components/insights/tab-routes/insights-prospects-tab.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/matcher-client-card/matcher-client-card.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-card/matcher-client-card/matcher-client-card.component.html","../../../projects/nextsapien-component-lib/src/lib/components/insights/tab-routes/insights-clients-tab.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/insights-routing.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-cards/content-cards.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/content-cards/content-cards.component.html","../../../projects/nextsapien-component-lib/src/lib/components/insights/insights.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/_services/insights-layout-config.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/_interfaces/pagination-response.model.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/_enums/polarity.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/insights/_enums/ranks.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/rich-textarea/rich-text.model.ts","../../../projects/nextsapien-component-lib/src/lib/components/rich-textarea/rich-textarea.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/rich-textarea/rich-textarea.component.html","../../../projects/nextsapien-component-lib/src/lib/components/text-box/text-box.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/text-box/text-box.component.html","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/enums/action-initiator.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/enums/action-type.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/toastr-stack.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/components/toastr/toastr.service.ts","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/components/loading-bar/loading-bar.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/components/loading-bar/loading-bar.component.html","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/components/toastr/toastr.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/components/toastr/toastr.component.html","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/components/toastr/toastr.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/enums/toastr-description.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/enums/toastr-position.enum.ts","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/toastr-stack.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/toastr-stack.component.html","../../../projects/nextsapien-component-lib/src/lib/components/toastr-stack/toastr-stack.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/toggle/interfaces/toggle-graphics.interface.ts","../../../projects/nextsapien-component-lib/src/lib/components/user-menu/user-menu.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/user-menu/user-menu.component.html","../../../projects/nextsapien-component-lib/src/lib/constants/popper.constants.ts","../../../projects/nextsapien-component-lib/src/lib/directives/popper/popper-content.component.ts","../../../projects/nextsapien-component-lib/src/lib/directives/popper/lib-popper.component.html","../../../projects/nextsapien-component-lib/src/lib/directives/popper/popper.directive.ts","../../../projects/nextsapien-component-lib/src/lib/directives/popper/popper.module.ts","../../../projects/nextsapien-component-lib/src/lib/enums/notification-banner-type.ts","../../../projects/nextsapien-component-lib/src/lib/enums/nsfw-classes.enum.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-action-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-banner-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-card-expiry-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-card-number-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-checkbox-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-field-variables.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-field-structure.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-injectable-form-field-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-multifield-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-multiselect-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-number-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-radio-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-rating-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-section-variables.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-section-structure.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-select-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-select-enhanced-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-selectable-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-stucture.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-tel-input-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-textlist-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/form-generator/form-typeahead-config.ts","../../../projects/nextsapien-component-lib/src/lib/model/typeahead-results-group.ts","../../../projects/nextsapien-component-lib/src/lib/nextsapien-component-lib.module.ts","../../../projects/nextsapien-component-lib/src/lib/pipes/array-sort/array.sort.pipe.ts","../../../projects/nextsapien-component-lib/src/lib/services/nsfw-worker.service.ts","../../../projects/nextsapien-component-lib/src/lib/services/popper.service.ts","../../../projects/nextsapien-component-lib/src/lib/validators/date/date-time-range-validators.ts","../../../projects/nextsapien-component-lib/src/lib/validators/date/date.validator.ts","../../../projects/nextsapien-component-lib/src/lib/_utils/cyrano-map-colors.ts","../../../projects/nextsapien-component-lib/src/lib/_utils/map-style-prep.ts","../../../projects/nextsapien-component-lib/src/lib/_utils/cyrano-base-map.service.ts","../../../projects/nextsapien-component-lib/src/lib/_utils/cyrano-map-config.interface.ts","../../../projects/nextsapien-component-lib/src/lib/_utils/mini-globe-host.ts","../../../projects/nextsapien-component-lib/src/lib/components/place-detail-panel/place-detail-panel.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/place-detail-panel/place-detail-panel.component.html","../../../projects/nextsapien-component-lib/src/lib/components/place-detail-panel/place-detail-panel.module.ts","../../../projects/nextsapien-component-lib/src/lib/components/gem-discovery-debug-panel/gem-discovery-debug-panel.component.ts","../../../projects/nextsapien-component-lib/src/lib/components/gem-discovery-debug-panel/gem-discovery-debug-panel.component.html","../../../projects/nextsapien-component-lib/src/lib/components/gem-discovery-debug-panel/gem-discovery-debug-panel.module.ts","../../../projects/nextsapien-component-lib/src/public-api.ts","../../../projects/nextsapien-component-lib/src/naniteninja-ionic-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { AuthProviders } from '../../enums/auth-providers.enum';\nimport { LoginFormType } from '../../enums/login-input-form.enum';\nimport { IAuthModel } from '../../model/auth.models';\nimport { ILanguage } from '../../model/language';\nimport { ITheme } from '../../model/theme';\nimport { AuthIcons } from '../../types/auth-icons';\nimport { AuthModuleViewComponent } from './auth-module-view';\n\n@Injectable()\nexport abstract class AbstractAuthService {\n  private _loading$: BehaviorSubject<boolean>;\n  public loading$: Observable<boolean>;\n\n  private _showBackBtn$: BehaviorSubject<boolean>;\n  public showBackBtn$: Observable<boolean>;\n\n  private _secondsLeft$: BehaviorSubject<number>;\n  public secondsLeft$: Observable<number>;\n\n  public abstract icons: AuthIcons;\n  public abstract username: string;\n\n  public abstract languages: ILanguage[];\n  public abstract themes: ITheme[];\n  public abstract activeLanguageKey: string;\n  public abstract activeThemeKey: string;\n\n  public currentView!: AuthModuleViewComponent;\n  public showFooter$: Subject<boolean>;\n  public formSwitcher$: Subject<FormGroup | FormControl>;\n\n  constructor() {\n    this._loading$ = new BehaviorSubject(false);\n    this.loading$ = this._loading$.asObservable();\n\n    this._showBackBtn$ = new BehaviorSubject(false);\n    this.showBackBtn$ = this._showBackBtn$.asObservable();\n\n    this._secondsLeft$ = new BehaviorSubject(30);\n    this.secondsLeft$ = this._secondsLeft$.asObservable();\n\n    this.showFooter$ = new Subject<boolean>();\n    this.formSwitcher$ = new Subject<FormGroup | FormControl>();\n  }\n\n  public setLoading(loading: boolean) {\n    this._loading$.next(loading);\n  }\n\n  public setShowBackBtn(showBackBtn: boolean) {\n    this._showBackBtn$.next(showBackBtn);\n  }\n\n  public setSecondsLeft(secondsLeft: number) {\n    this._secondsLeft$.next(secondsLeft);\n  }\n\n  public abstract login(request: IAuthModel): void;\n  public abstract socialLogin(provider: AuthProviders): void;\n  public abstract navigateToRegister(): void;\n  public abstract navigateToForgetPassword(email: string): void;\n  public abstract changeTheme(theme: string): void;\n  public abstract changeLanguage(lang: string): void;\n  public abstract sendForgetPasswordRequest(request: { email: string }): void;\n  public abstract verifyForgetPasswordRequest(request: { email: string; code: string }): void;\n  public abstract verifyForgetPasswordRequestResend(request: { email: string }): void;\n  public abstract sendResetPasswordRequest(request: { password: string; email: string }): void;\n  public abstract onLoginFormTypeChange(loginFormType: LoginFormType): void;\n}\n","import { Observable } from 'rxjs';\n\n/**\n * All the logic that previously was in BaseBtnComponent (inputs and methods)\n * extracted to a 'pure' class without Angular decorators\n */\nexport class BaseBtnLogic {\n  // *** @Input() PROPERTIES ***\n  hoverOutline!: boolean;\n  disabled!: boolean;\n  type: string = 'button';\n  form: string = '';\n  label!: string;\n  showArrowIcon!: boolean;\n  disableTextShadow!: boolean;\n  notificationCount!: number;\n  loading$!: Observable<boolean>;\n  illuminateIcon: boolean = false;\n  checked: boolean = false;\n\n  // *** METHODS that were in BaseBtnComponent ***\n  public onTouchStart(): void {\n    if (!this.disabled) {\n      this.hoverOutline = true;\n    }\n  }\n\n  public onTouchEnd(): void {\n    if (!this.disabled) {\n      this.hoverOutline = false;\n    }\n  }\n\n  public onBtnContainerClick(event: Event): void {\n    if (this.disabled) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BaseBtnLogic } from '../base-btn/base-btn-logic';\n\n@Component({\n  selector: 'lib-chip-btn',\n  templateUrl: './chip-btn.component.html',\n  styleUrls: ['./chip-btn.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ChipBtnComponent extends BaseBtnLogic {\n  @Input() override hoverOutline!: boolean;\n  @Input() override disabled!: boolean;\n  @Input() override type: string = 'button';\n  @Input() override form: string = '';\n  @Input() override label!: string;\n  @Input() override showArrowIcon!: boolean;\n  @Input() override disableTextShadow!: boolean;\n}\n","<div class=\"lib-button-component\" [ngClass]=\"{ 'lib-button-component-disabled': disabled }\" (click)=\"onBtnContainerClick($event)\">\n  <div class=\"lib-button-container\" [ngClass]=\"{ 'lib-button-container-hover-outline': hoverOutline, 'lib-button-container-disabled': disabled }\"></div>\n  <button\n    [ngClass]=\"{\n      'lib-button-hover-outline': hoverOutline,\n      'lib-button-disabled': disabled,\n      'lib-button-with-icon': showArrowIcon,\n      'lib-button-with-label': label,\n      'disable-text-shadow': disableTextShadow,\n    }\"\n    [disabled]=\"disabled\"\n    [type]=\"type\"\n    [attr.form]=\"form\"\n    (touchstart)=\"onTouchStart()\"\n    (touchend)=\"onTouchEnd()\"\n  >\n    <div class=\"lib-button-ripple\" mat-ripple [matRippleCentered]=\"true\" [matRippleUnbounded]=\"false\" [matRippleDisabled]=\"disabled\"></div>\n    <span class=\"text\" [ngClass]=\"{ 'lib-button-text-with-label-text': label, 'disable-text-shadow': disableTextShadow }\">\n      <div class=\"lib-chip-container\" *ngIf=\"label\">{{ label }}</div>\n    </span>\n  </button>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseBtnLogic } from './base-btn-logic';\n\n@Component({\n  selector: 'lib-base-btn',\n  templateUrl: './base-btn.component.html',\n  styleUrls: ['./base-btn.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class BaseBtnComponent extends BaseBtnLogic {\n  @Input() override hoverOutline!: boolean;\n  @Input() override disabled!: boolean;\n  @Input() override type: string = 'button';\n  @Input() override form: string = '';\n  @Input() override label!: string;\n  @Input() override showArrowIcon!: boolean;\n  @Input() override disableTextShadow!: boolean;\n  @Input() override notificationCount!: number;\n  @Input() override loading$!: Observable<boolean>;\n  @Input() override illuminateIcon: boolean = false;\n  @Input() override checked: boolean = false;\n}\n","<div class=\"lib-button-component\" [ngClass]=\"{ 'lib-button-component-disabled': disabled }\" (click)=\"onBtnContainerClick($event)\">\n  <div class=\"lib-button-container\" [ngClass]=\"{ 'lib-button-container-hover-outline': hoverOutline, 'lib-button-container-disabled': disabled }\"></div>\n  <button\n    [ngClass]=\"{\n      'lib-button-hover-outline': hoverOutline,\n      'lib-button-disabled': disabled,\n      'lib-button-with-icon': showArrowIcon,\n      'lib-button-with-label': label,\n      'disable-text-shadow': disableTextShadow,\n      'enable-overflow': notificationCount > 0,\n      pulse: illuminateIcon,\n      'lib-btn-checked': checked,\n    }\"\n    [disabled]=\"disabled\"\n    [type]=\"type\"\n    [attr.form]=\"form\"\n    (touchstart.passive)=\"onTouchStart()\"\n    (touchend.passive)=\"onTouchEnd()\"\n  >\n    <div class=\"lib-button-ripple\" mat-ripple [matRippleDisabled]=\"disabled\"></div>\n    <ng-container *ngIf=\"loading$ | async as loading; else buttonData\">\n      <ion-spinner color=\"danger\" name=\"dots\"></ion-spinner>\n    </ng-container>\n    <ng-template #buttonData>\n      <span class=\"text\" [ngClass]=\"{ 'lib-button-text-with-label-text': label, 'disable-text-shadow': disableTextShadow }\">\n        <span class=\"btn-text\"><ng-content></ng-content></span>\n\n        @if (label) {\n          <lib-chip-btn [label]=\"label\" />\n        }\n\n        <div *ngIf=\"notificationCount > 0\" class=\"badge-container\">\n          <div class=\"noti noti-container\"></div>\n          <div class=\"noti noti-circle\"></div>\n          <span class=\"f-calistoga f-w-400 f-sm h-160 f-white\">{{ notificationCount }}</span>\n        </div>\n        <ng-container *ngIf=\"showArrowIcon; then arrowIconTemplate; else customIconTemplate\"></ng-container>\n        <ng-template #arrowIconTemplate>\n          <span class=\"spacer\"></span>\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"7\" height=\"11\" viewBox=\"0 0 7 11\" fill=\"none\" class=\"lib-button-icon\">\n            <path d=\"M0.950928 9.66406L5.24176 5.37323L0.950928 1.08241\" stroke=\"#F7416E\" stroke-width=\"1.60906\" stroke-linecap=\"round\" />\n          </svg>\n        </ng-template>\n        <ng-template #customIconTemplate>\n          <ng-content select=\"[buttonIconContainer]\"></ng-content>\n        </ng-template>\n      </span>\n    </ng-template>\n  </button>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatMenu } from '@angular/material/menu';\nimport { ILibMenuItem } from '../../../../model/lib-menu-item';\n\n@Component({\n  selector: 'lib-menu-item',\n  templateUrl: './menu-item.component.html',\n  styleUrls: ['./menu-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class MenuItemComponent {\n  @ViewChild('childMenu') public childMenu!: MatMenu;\n  @Input() menuDirection: 'ltr' | 'rtl' = 'ltr';\n  @Input() menuItems: ILibMenuItem[] = [];\n  @Input() disableTranslation: boolean = false;\n  @Input() listItem: unknown;\n  @Input() listItemIndex: number = 0;\n  @Input() selectable: boolean = false;\n  /**\n   * overlayClass for custom global style\n   */\n  @Input() overlayClass: string = '';\n  @Input() onlyCloseOnClickOutside: boolean = false;\n\n  /**\n   * on click menu item emit an event to the host app and activated the clicked item\n   * @param item\n   * @param index\n   */\n  public onMenuItemClick(item: ILibMenuItem, index: number): void {\n    const isClickable = !item.disabled && !item.disableClick && (!item.subMenu || item.subMenu.length === 0);\n\n    if (!isClickable) {\n      return;\n    }\n\n    const selectedItem = this.menuItems[index];\n\n    if (!item.active) {\n      this.menuItems.forEach((menuItem) => (menuItem.active = false));\n      selectedItem.active = true;\n      item.listItem = this.listItem;\n      item.listItemIndex = this.listItemIndex;\n    }\n\n    if (item.command) {\n      item.command(item);\n    }\n  }\n\n  public handleClick(event: Event, item: ILibMenuItem, index: number): void {\n    if (item.disableClick) {\n      event.stopPropagation();\n    } else {\n      this.onMenuItemClick(item, index);\n      if (this.onlyCloseOnClickOutside) {\n        event.stopPropagation();\n      }\n    }\n  }\n}\n","<mat-menu #childMenu=\"matMenu\" class=\"lib-btn-menu-panel\" [backdropClass]=\"overlayClass\">\n  <ng-container *ngFor=\"let item of menuItems; let i = index\">\n    <!--Normal Menu Item-->\n    <button\n      *ngIf=\"!item.subMenu || item.subMenu.length === 0\"\n      mat-menu-item\n      [attr.dir]=\"menuDirection\"\n      [class]=\"item.cssClass || ''\"\n      [ngClass]=\"{ active: item.active && selectable }\"\n      (click)=\"handleClick($event, item, i)\"\n    >\n      <ng-container *ngTemplateOutlet=\"item.templateRef || menuItemContent; context: { $implicit: { item } }\"></ng-container>\n    </button>\n    <div class=\"lib-btn-menu-panel-separator\" *ngIf=\"item.separator\"></div>\n\n    <!--Nested Menu Item-->\n    <div *ngIf=\"item.subMenu && item.subMenu.length > 0\">\n      <button\n        mat-menu-item\n        [matMenuTriggerFor]=\"nestedMenu.childMenu\"\n        [attr.dir]=\"menuDirection\"\n        [ngClass]=\"{ active: item.active && selectable }\"\n        (click)=\"onMenuItemClick(item, i)\"\n      >\n        <ng-container *ngTemplateOutlet=\"menuItemContent; context: { $implicit: { item } }\"></ng-container>\n      </button>\n      <lib-menu-item\n        #nestedMenu\n        [disableTranslation]=\"disableTranslation\"\n        [menuDirection]=\"menuDirection\"\n        [menuItems]=\"item.subMenu || []\"\n        [listItem]=\"listItem\"\n        [listItemIndex]=\"listItemIndex\"\n        [selectable]=\"selectable\"\n        [overlayClass]=\"overlayClass\"\n      >\n      </lib-menu-item>\n    </div>\n  </ng-container>\n</mat-menu>\n\n<ng-template #menuItemContent let-menuItemData>\n  <img *ngIf=\"menuItemData.item.iconUrl\" [src]=\"menuItemData.item.iconUrl\" alt=\"Placeholder\" />\n  <mat-icon *ngIf=\"menuItemData.item.iconName\">{{ menuItemData.item.iconName }}</mat-icon>\n  <span *ngIf=\"menuItemData.item.titlePrefix\" class=\"lib-btn-menu-item-title-prefix\">\n    {{ disableTranslation ? menuItemData.item.titlePrefix : (menuItemData.item.titlePrefix | translate) }}\n  </span>\n  {{ disableTranslation ? menuItemData.item.title : (menuItemData.item.title | translate) }}\n  <span *ngIf=\"menuItemData.item.titleSuffix\" class=\"lib-btn-menu-item-title-suffix\">\n    {{ disableTranslation ? menuItemData.item.titleSuffix : (menuItemData.item.titleSuffix | translate) }}\n  </span>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { TooltipPosition } from '@angular/material/tooltip';\nimport { Observable, of } from 'rxjs';\nimport { ILibMenuItem } from '../../../model/lib-menu-item';\nimport { BaseBtnLogic } from '../base-btn/base-btn-logic';\n\n@Component({\n  selector: 'lib-menu-btn',\n  templateUrl: './menu-btn.component.html',\n  styleUrls: ['./menu-btn.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class MenuBtnComponent extends BaseBtnLogic {\n  private readonly cdr = inject(ChangeDetectorRef);\n  @Input() menuBtnIcon: boolean = false;\n  @Input() menuBtnTooltip: string = '';\n  @Input() menuBtnTooltipPosition: TooltipPosition = 'below';\n  @Input() menuBtnIconName: string = '';\n  @Input() menuBtnImgUrl: string = '';\n  @Input() menuBtnNotificationIconUrl: string = '';\n  @Input() menuDirection: 'ltr' | 'rtl' = 'ltr';\n  @Input() hasNotification: boolean = false;\n  @Input() menuItems: ILibMenuItem[] = [];\n  @Input() disableTranslation: boolean = false;\n  @Input() listItem: unknown;\n  @Input() listItemIndex: number = 0;\n  @Input() selectable: boolean = false;\n  /** CSS class(es) to be applied to the overlay container */\n  @Input() overlayClass: string = '';\n  /** Booleans that come from the user menu component */\n  @Input() isUserMenu: boolean = false;\n  // To only close the menu overlay on click outside\n  @Input() onlyCloseOnClickOutside: boolean = false;\n\n  @Input() override hoverOutline: boolean = false;\n  @Input() override disabled: boolean = false;\n  @Input() override type: string = 'button';\n  @Input() override form: string = '';\n  @Input() override label: string = '';\n  @Input() override showArrowIcon: boolean = false;\n  @Input() override disableTextShadow: boolean = false;\n  @Input() override loading$: Observable<boolean> = of(false);\n\n  public onImageError(event: Event): void {\n    const img = event.target as HTMLImageElement;\n    img.style.display = 'none';\n    this.menuBtnImgUrl = '';\n    this.cdr.detectChanges();\n  }\n}\n","<lib-base-btn\n  [disabled]=\"disabled\"\n  [form]=\"form\"\n  [showArrowIcon]=\"showArrowIcon\"\n  [hoverOutline]=\"hoverOutline\"\n  [type]=\"type\"\n  [matMenuTriggerFor]=\"rootMenuRef.childMenu\"\n  [matTooltip]=\"menuBtnTooltip ? (menuBtnTooltip | translate) : null\"\n  [matTooltipPosition]=\"menuBtnTooltipPosition\"\n  [label]=\"label\"\n  [ngClass]=\"{ 'normal-menu-btn': !isUserMenu && !menuBtnImgUrl && !menuBtnIcon && !menuBtnIconName }\"\n  [loading$]=\"loading$\"\n  #menuBtn=\"matMenuTrigger\"\n>\n  <ng-content></ng-content>\n  <img [src]=\"menuBtnImgUrl\" *ngIf=\"menuBtnImgUrl\" class=\"menu-btn-image\" [class.menu-btn-icon]=\"menuBtnIcon\" alt=\"menu btn img\" (error)=\"onImageError($event)\" />\n  <svg *ngIf=\"!menuBtnImgUrl && isUserMenu\" class=\"menu-btn-image menu-btn-fallback-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n    <circle cx=\"12\" cy=\"8\" r=\"4\" stroke=\"white\" stroke-opacity=\"0.7\" stroke-width=\"1.5\" />\n    <path d=\"M4 20C4 17.2386 7.58172 15 12 15C16.4183 15 20 17.2386 20 20\" stroke=\"white\" stroke-opacity=\"0.7\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\n  </svg>\n  <mat-icon *ngIf=\"menuBtnIcon && menuBtnIconName\" class=\"menu-btn-mat-icon\">{{ menuBtnIconName }}</mat-icon>\n  <img\n    *ngIf=\"menuBtnNotificationIconUrl\"\n    [ngStyle]=\"{ opacity: hasNotification ? 1 : 0 }\"\n    [src]=\"menuBtnNotificationIconUrl\"\n    [class]=\"isUserMenu ? 'menu-user-notification-icon' : 'menu-btn-notification-icon'\"\n    alt=\"menu btn notification icon\"\n  />\n  <div *ngIf=\"isUserMenu\" class=\"menu-user-toggle-btn\">\n    <svg xmlns=\"http://www.w3.org/2000/svg\" [style.width.px]=\"menuBtn.menuOpen ? 7.75 : 5\" [style.height.px]=\"menuBtn.menuOpen ? 3.83 : 5\" viewBox=\"0 0 7 5\" fill=\"none\">\n      <path\n        [attr.d]=\"menuBtn.menuOpen ? 'M0.679443 0.78125L3.45602 3.61691L6.2326 0.78125' : 'M6.23267 3.61719L3.45609 0.78153L0.679505 3.61719'\"\n        stroke=\"white\"\n        stroke-width=\"1.1\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n      />\n    </svg>\n  </div>\n</lib-base-btn>\n<lib-menu-item\n  #rootMenuRef\n  [disableTranslation]=\"disableTranslation\"\n  [menuDirection]=\"menuDirection\"\n  [menuItems]=\"menuItems\"\n  [listItem]=\"listItem\"\n  [listItemIndex]=\"listItemIndex\"\n  [selectable]=\"selectable\"\n  [overlayClass]=\"overlayClass\"\n  [onlyCloseOnClickOutside]=\"onlyCloseOnClickOutside\"\n>\n</lib-menu-item>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseBtnLogic } from '../base-btn/base-btn-logic';\n\n@Component({\n  selector: 'lib-icon-btn',\n  templateUrl: './icon-btn.component.html',\n  styleUrls: ['./icon-btn.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class IconBtnComponent extends BaseBtnLogic {\n  @Input() override hoverOutline!: boolean;\n  @Input() override disabled!: boolean;\n  @Input() override type: string = 'button';\n  @Input() override form: string = '';\n  @Input() override label!: string;\n  @Input() override showArrowIcon!: boolean;\n  @Input() override disableTextShadow!: boolean;\n  @Input() override notificationCount!: number;\n  @Input() override loading$!: Observable<boolean>;\n  @Input() override illuminateIcon: boolean = false;\n}\n","<lib-base-btn\n  [disabled]=\"disabled\"\n  [form]=\"form\"\n  [showArrowIcon]=\"showArrowIcon\"\n  [hoverOutline]=\"hoverOutline\"\n  [type]=\"type\"\n  [notificationCount]=\"notificationCount\"\n  [loading$]=\"loading$\"\n  [illuminateIcon]=\"illuminateIcon\"\n>\n  <ng-content></ng-content>\n</lib-base-btn>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { NavController } from '@ionic/angular';\nimport { Observable, distinctUntilChanged } from 'rxjs';\nimport { ILibMenuItem } from '../../../model/lib-menu-item';\nimport { AbstractAuthService } from '../abstract-auth.service';\n\n@Component({\n  selector: 'lib-auth-header',\n  templateUrl: './auth-header.component.html',\n  styleUrls: ['./auth-header.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class AuthHeaderComponent implements OnInit {\n  public languagesMenuItems: ILibMenuItem[] = [];\n  public themesMenuItems: ILibMenuItem[] = [];\n  public showBackBtn$!: Observable<boolean>;\n\n  constructor(\n    private authService: AbstractAuthService,\n    private nav: NavController,\n  ) {}\n\n  ngOnInit(): void {\n    this.showBackBtn$ = this.authService.showBackBtn$.pipe(distinctUntilChanged());\n    this.buildHeaderMenus();\n  }\n\n  public changeTheme = (theme: string): void => this.authService.changeTheme(theme);\n\n  public changeLanguage = (lang: string): void => this.authService.changeLanguage(lang);\n\n  public gotToPreviousRoute(): void {\n    if (this.authService.currentView.previousRouteUrl) {\n      this.nav.navigateBack(this.authService.currentView.previousRouteUrl, { animated: true, animationDirection: 'back' });\n    } else {\n      this.nav.back();\n    }\n  }\n\n  private buildHeaderMenus(): void {\n    this.authService.languages?.forEach((language) =>\n      this.languagesMenuItems.push({ title: language.name, command: () => this.changeLanguage(language.key), active: language.key === this.authService.activeLanguageKey }),\n    );\n    this.authService.themes?.forEach((theme) =>\n      this.themesMenuItems.push({ title: theme.name, command: () => this.changeTheme(theme.key), active: theme.key === this.authService.activeThemeKey }),\n    );\n  }\n}\n","<div class=\"auth-header\">\n  <lib-icon-btn *ngIf=\"showBackBtn$ | async\" class=\"back-container\" (click)=\"gotToPreviousRoute()\">\n    <ion-icon name=\"chevron-back\"></ion-icon>\n  </lib-icon-btn>\n  <span class=\"spacer\"></span>\n  <!--  commented for now but we will need it later when implementing the light theme-->\n  <!--  <lib-menu-btn [menuItems]=\"themesMenuItems\" [menuBtnIcon]=\"true\" [selectable]=\"true\" [menuBtnIconName]=\"'palette'\" [menuBtnTooltip]=\"'THEMES.TITLE' | translate\"> </lib-menu-btn>-->\n  <lib-menu-btn [menuItems]=\"languagesMenuItems\" [menuBtnIcon]=\"true\" [selectable]=\"true\" [menuBtnIconName]=\"'language'\" [menuBtnTooltip]=\"'LANGUAGES.TITLE' | translate\">\n  </lib-menu-btn>\n</div>\n","import { ChangeDetectionStrategy, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { AuthIcons } from '../../types/auth-icons';\nimport { AbstractAuthService } from './abstract-auth.service';\n\n@Component({ template: '', changeDetection: ChangeDetectionStrategy.OnPush })\nexport abstract class AuthModuleViewComponent implements OnInit, OnDestroy {\n  @Input() viewEntered$!: Subject<void>;\n\n  public continueButtonText: string = 'SEND';\n  public previousRouteUrl: string = '';\n\n  public showBackButton: boolean = true;\n  public showFooter: boolean = true;\n\n  public form!: FormGroup | FormControl;\n\n  public username: string = '';\n  public icons!: AuthIcons;\n  public loading$!: Observable<boolean>;\n\n  public componentDestroyed$: Subject<void> = new Subject();\n\n  constructor(@Inject(AbstractAuthService) public authService: AbstractAuthService) {}\n\n  ngOnInit(): void {\n    this.loading$ = this.authService.loading$;\n    this.username = this.authService.username;\n    this.icons = this.authService.icons;\n\n    this.form = new FormControl(true);\n\n    if (this.viewEntered$) {\n      this.viewEntered$.pipe(takeUntil(this.componentDestroyed$)).subscribe(() => {\n        this.authService.currentView = this;\n        this.authService.showFooter$.next(this.authService.currentView.showFooter);\n        this.authService.formSwitcher$.next(this.authService.currentView.form);\n\n        this.authService.setShowBackBtn(this.authService.currentView.showBackButton);\n      });\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  abstract onSubmit(): void;\n}\n","export enum AuthProviders {\n  GOOGLE = 'google',\n  FACEBOOK = 'facebook',\n  TWITTER = 'twitter',\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({ selector: 'img', standalone: false })\nexport class LazyImageDirective {\n  constructor({ nativeElement }: ElementRef<HTMLImageElement>) {\n    const supports = 'loading' in HTMLImageElement.prototype;\n\n    if (supports) {\n      nativeElement.setAttribute('loading', 'lazy');\n    }\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { AuthProviders } from '../../../enums/auth-providers.enum';\nimport { AbstractAuthService } from '../abstract-auth.service';\n\n@Component({\n  selector: 'lib-auth-social',\n  templateUrl: './auth-social.component.html',\n  styleUrls: ['./auth-social.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class AuthSocialComponent {\n  @Input() public icons: { google: string; facebook: string; twitter: string } = {\n    google: '',\n    facebook: '',\n    twitter: '',\n  };\n  public providers = AuthProviders;\n\n  /***/\n  constructor(private authService: AbstractAuthService) {}\n\n  /**\n   * on social login/register\n   *\n   * @param provider [google, facebook, Twitter ]\n   */\n  public socialLogin = (provider: AuthProviders): void => this.authService.socialLogin(provider);\n}\n","<div class=\"social-login\">\n  <lib-icon-btn (click)=\"socialLogin(providers.GOOGLE)\">\n    <img [src]=\"icons.google\" />\n  </lib-icon-btn>\n  <lib-icon-btn (click)=\"socialLogin(providers.FACEBOOK)\">\n    <img [src]=\"icons.facebook\" />\n  </lib-icon-btn>\n  <lib-icon-btn (click)=\"socialLogin(providers.TWITTER)\" class=\"social-login__twitter\">\n    <img [src]=\"icons.twitter\" />\n  </lib-icon-btn>\n</div>\n","import { AfterViewChecked, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n  selector: '[autoFocus]',\n  standalone: false,\n})\nexport class AutoFocusDirective implements AfterViewChecked {\n  @Input() autoFocus = false;\n\n  constructor(private host: ElementRef) {}\n\n  ngAfterViewChecked() {\n    if (this.autoFocus) this.host.nativeElement.focus();\n  }\n}\n","import { Directive, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n  selector: '[appDebounceClick]',\n  standalone: false,\n})\nexport class DebounceClickDirective implements OnInit, OnDestroy {\n  @Input()\n  debounceTime = 300;\n\n  @Output()\n  debounceClick = new EventEmitter();\n\n  private clicks = new Subject();\n  private subscription: Subscription | null = null;\n\n  ngOnInit() {\n    this.subscription = this.clicks.pipe(debounceTime(this.debounceTime)).subscribe((e) => {\n      this.debounceClick.emit(e);\n    });\n  }\n\n  ngOnDestroy() {\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n  }\n\n  @HostListener('click', ['$event'])\n  clickEvent(event: Event) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.clicks.next(event);\n  }\n}\n","import { Directive, Input, OnInit } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n  selector: '[disableControl]',\n  standalone: false,\n})\nexport class DisableControlDirective implements OnInit {\n  @Input() set disableControl(condition: boolean) {\n    const action = condition ? 'disable' : 'enable';\n    if (this.ngControl?.control) {\n      this.ngControl.control[action]();\n    }\n  }\n\n  constructor(private ngControl: NgControl) {}\n\n  ngOnInit() {\n    if (!this.ngControl) {\n      console.debug('DisableControlDirective requires formControlName or formControl to be provided.');\n      return;\n    }\n  }\n}\n","export enum Direction {\n  horizontal = 'horizontal',\n  vertical = 'vertical',\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnChanges, OnDestroy, Renderer2, SimpleChanges, inject } from '@angular/core';\nimport Swiper from 'swiper';\nimport { FreeMode, Mousewheel } from 'swiper/modules';\nimport { Direction } from '../../enums/direction.enum';\n\n/**\n * DraggableScrollDirective\n *\n * NOTE: This directive uses standalone: true as part of the migration to Angular standalone components.\n * When importing this directive, use: import { DraggableScrollDirective } from '...'\n */\n@Directive({\n  selector: '[libDraggableScroll]',\n  standalone: true,\n})\nexport class DraggableScrollDirective implements AfterViewInit, OnDestroy, OnChanges {\n  @Input() includeSidePadding: boolean = false;\n  @Input() direction: Direction = Direction.horizontal;\n  @Input() initialCenter: boolean = false;\n  /** Fixed pixel width for each slide. Overrides Swiper's default max-width:100% constraint. */\n  @Input() slideWidth: number | null = null;\n\n  private swiper!: Swiper;\n  private readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly renderer = inject(Renderer2);\n  private wrapperElement!: HTMLElement;\n  private leadingSpacer?: HTMLElement;\n  private trailingSpacer?: HTMLElement;\n  private viewInitialized: boolean = false;\n  private resizeTimeout: ReturnType<typeof setTimeout> | null = null;\n  private mutationObserver: MutationObserver | null = null;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['includeSidePadding']) {\n      if (this.includeSidePadding) {\n        this.renderer.addClass(this.hostElement.nativeElement, 'padded-sides');\n      } else {\n        this.renderer.removeClass(this.hostElement.nativeElement, 'padded-sides');\n      }\n\n      if (this.viewInitialized) {\n        this.setSpacerWidths();\n      }\n    }\n  }\n\n  ngAfterViewInit(): void {\n    // Add necessary classes\n    this.hostElement.nativeElement.classList.add('swiper', 'draggable-scroll-container', 'container-sides-shadow');\n\n    // Wrap inner content with swiper-wrapper\n    const wrapper = this.renderer.createElement('div');\n    this.renderer.addClass(wrapper, 'swiper-wrapper');\n\n    Array.from(this.hostElement.nativeElement.children).forEach((child) => {\n      this.renderer.addClass(child, 'swiper-slide');\n      if (this.slideWidth != null) {\n        this.renderer.setStyle(child, 'width', `${this.slideWidth}px`);\n        this.renderer.setStyle(child, 'min-width', `${this.slideWidth}px`);\n        this.renderer.setStyle(child, 'max-width', `${this.slideWidth}px`);\n      }\n    });\n\n    // Move all children into the wrapper\n    while (this.hostElement.nativeElement.firstChild) {\n      this.renderer.appendChild(wrapper, this.hostElement.nativeElement.firstChild);\n    }\n    this.renderer.appendChild(this.hostElement.nativeElement, wrapper);\n    this.wrapperElement = wrapper;\n\n    this.ensureSpacerElements();\n    this.setSpacerWidths();\n\n    // Initialize Swiper\n    this.swiper = new Swiper(this.hostElement.nativeElement, {\n      modules: [FreeMode, Mousewheel],\n      direction: this.direction,\n      freeMode: {\n        enabled: true,\n        sticky: false, // Never snap back to a slide boundary\n        momentumBounce: false, // No rubber-band at container edges\n        momentumRatio: 0.6, // Natural deceleration\n        minimumVelocity: 0.01, // Respond to even gentle drags\n      },\n      resistance: false, // No edge resistance — drag stays where released\n      resistanceRatio: 0, // Belt-and-suspenders: zero resistance ratio\n      threshold: 1, // Any pointer movement registers as intentional drag\n      slidesPerView: 'auto',\n      mousewheel: {\n        forceToAxis: true,\n        sensitivity: 1,\n      },\n      grabCursor: true,\n      touchReleaseOnEdges: true,\n    });\n\n    this.viewInitialized = true;\n    this.swiper.update();\n\n    if (this.initialCenter) {\n      this.centerContent();\n    }\n\n    this.observeHostForLateChildren();\n  }\n\n  ngOnDestroy(): void {\n    this.mutationObserver?.disconnect();\n    this.mutationObserver = null;\n    if (this.resizeTimeout) {\n      clearTimeout(this.resizeTimeout);\n      this.resizeTimeout = null;\n    }\n    this.swiper?.destroy();\n  }\n\n  /**\n   * Handles window resize events with debouncing to improve performance.\n   * Updates spacer widths after a 100ms delay to avoid excessive calculations during rapid resize events.\n   */\n  @HostListener('window:resize')\n  public handleResize(): void {\n    if (!this.viewInitialized) {\n      return;\n    }\n\n    // Debounce resize handler to avoid performance issues with many instances\n    if (this.resizeTimeout) {\n      clearTimeout(this.resizeTimeout);\n    }\n\n    this.resizeTimeout = setTimeout(() => {\n      this.setSpacerWidths();\n      this.resizeTimeout = null;\n    }, 100);\n  }\n\n  private observeHostForLateChildren(): void {\n    const host = this.hostElement.nativeElement;\n    this.mutationObserver = new MutationObserver((mutations) => {\n      let movedAny = false;\n      for (const mutation of mutations) {\n        for (let i = 0; i < mutation.addedNodes.length; i++) {\n          const node = mutation.addedNodes[i];\n          if (node.nodeType !== Node.ELEMENT_NODE) continue;\n          if (node === this.wrapperElement) continue;\n          if ((node as HTMLElement).classList?.contains('swiper-wrapper')) continue;\n          this.renderer.addClass(node, 'swiper-slide');\n          this.applySlideWidth(node as HTMLElement);\n          if (this.trailingSpacer) {\n            this.renderer.insertBefore(this.wrapperElement, node, this.trailingSpacer);\n          } else {\n            this.renderer.appendChild(this.wrapperElement, node);\n          }\n          movedAny = true;\n        }\n      }\n      if (movedAny) {\n        this.swiper?.update();\n      }\n    });\n    this.mutationObserver.observe(host, { childList: true });\n  }\n\n  private applySlideWidth(el: HTMLElement): void {\n    if (this.slideWidth == null) return;\n    this.renderer.setStyle(el, 'width', `${this.slideWidth}px`);\n    this.renderer.setStyle(el, 'min-width', `${this.slideWidth}px`);\n    this.renderer.setStyle(el, 'max-width', `${this.slideWidth}px`);\n  }\n\n  private ensureSpacerElements(): void {\n    if (!this.wrapperElement) {\n      return;\n    }\n\n    if (!this.leadingSpacer) {\n      this.leadingSpacer = this.createSpacerElement();\n      this.renderer.insertBefore(this.wrapperElement, this.leadingSpacer, this.wrapperElement.firstChild);\n    }\n\n    if (!this.trailingSpacer) {\n      this.trailingSpacer = this.createSpacerElement();\n      this.renderer.appendChild(this.wrapperElement, this.trailingSpacer);\n    }\n  }\n\n  private setSpacerWidths(): void {\n    if (!this.wrapperElement || !this.leadingSpacer || !this.trailingSpacer) {\n      return;\n    }\n\n    const containerWidth = this.hostElement.nativeElement.clientWidth;\n    const spacerWidth = containerWidth > 0 ? Math.round(containerWidth / 3) : 0;\n\n    [this.leadingSpacer, this.trailingSpacer].forEach((spacer) => {\n      this.renderer.setStyle(spacer, 'width', `${spacerWidth}px`);\n      this.renderer.setStyle(spacer, 'height', '100%');\n    });\n\n    this.swiper?.update();\n  }\n\n  private centerContent(): void {\n    requestAnimationFrame(() => {\n      if (!this.swiper || !this.wrapperElement) return;\n\n      const slides = this.wrapperElement.querySelectorAll('.swiper-slide:not(.draggable-scroll-spacer)');\n      if (!slides.length) return;\n\n      let contentWidth = 0;\n      slides.forEach((slide: Element) => {\n        contentWidth += (slide as HTMLElement).offsetWidth;\n      });\n\n      const containerWidth = this.hostElement.nativeElement.clientWidth;\n      if (contentWidth <= 0 || containerWidth <= 0) return;\n\n      const centerOffset = (contentWidth - containerWidth) / 2;\n      const spacerWidth = containerWidth / 2;\n      const translateTo = spacerWidth + Math.max(0, centerOffset);\n\n      this.swiper.setTranslate(-translateTo);\n      this.swiper.update();\n    });\n  }\n\n  private createSpacerElement(): HTMLElement {\n    const spacer = this.renderer.createElement('div');\n    this.renderer.addClass(spacer, 'swiper-slide');\n    this.renderer.addClass(spacer, 'draggable-scroll-spacer');\n    this.renderer.setStyle(spacer, 'pointer-events', 'none');\n    return spacer;\n  }\n}\n","/*eslint-disable*/\n/*Ignore file for linting, source code is copied from angular cdk*/\nimport { ActiveDescendantKeyManager, Highlightable, ListKeyManagerOption } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { BooleanInput, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { A, DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\nimport { AfterContentInit, ChangeDetectorRef, ContentChildren, Directive, ElementRef, Input, OnDestroy, Output, QueryList, forwardRef, inject } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, Subject, defer, merge } from 'rxjs';\nimport { filter, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\n/** The next id to use for creating unique DOM IDs. */\nlet nextId = 0;\nconst dMode = true;\n\n/**\n * An implementation of SelectionModel that internally always represents the selection as a\n * multi-selection. This is necessary so that we can recover the full selection if the user\n * switches the listbox from single-selection to multi-selection after initialization.\n *\n * This selection model may report multiple selected values, even if it is in single-selection\n * mode. It is up to the user (AppListbox) to check for invalid selections.\n */\nclass ListboxSelectionModel<T> extends SelectionModel<T> {\n  constructor(\n    public multiple = false,\n    initiallySelectedValues?: T[],\n    emitChanges = true,\n    compareWith?: (o1: T, o2: T) => boolean,\n  ) {\n    super(true, initiallySelectedValues, emitChanges, compareWith);\n  }\n\n  override isMultipleSelection(): boolean {\n    return this.multiple;\n  }\n\n  override select(...values: T[]) {\n    // The super class is always in multi-selection mode, so we need to override the behavior if\n    // this selection model actually belongs to a single-selection listbox.\n    if (this.multiple) {\n      return super.select(...values);\n    } else {\n      return super.setSelection(...values);\n    }\n  }\n}\n\n/** A selectable option in a listbox. */\n@Directive({\n  selector: '[appOption]',\n  exportAs: 'appOption',\n  host: {\n    role: 'option',\n    class: 'app-option',\n    '[id]': 'id',\n    '[attr.aria-selected]': 'isSelected()',\n    '[attr.tabindex]': '_getTabIndex()',\n    '[attr.aria-disabled]': 'disabled',\n    '[class.app-option-active]': 'isActive()',\n    '(click)': '_clicked.next($event)',\n    '(focus)': '_handleFocus()',\n  },\n  standalone: false,\n})\nexport class AppOption<T = unknown> implements ListKeyManagerOption, Highlightable, OnDestroy {\n  /** The id of the option's host element. */\n  @Input()\n  get id() {\n    return this._id || this._generatedId;\n  }\n  set id(value) {\n    this._id = value;\n  }\n  private _id: string = '';\n  private _generatedId = `app-option-${nextId++}`;\n\n  /** The value of this option. */\n  @Input('appOption') value!: T;\n\n  /**\n   * The text used to locate this item during listbox typeahead. If not specified,\n   * the `textContent` of the item will be used.\n   */\n  @Input('appOptionTypeaheadLabel') typeaheadLabel: string = '';\n\n  /** Whether this option is disabled. */\n  @Input('appOptionDisabled')\n  get disabled(): boolean {\n    return this.listbox.disabled || this._disabled;\n  }\n  set disabled(value: BooleanInput) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n  private _disabled: boolean = false;\n\n  /** The tabindex of the option when it is enabled. */\n  @Input('tabindex')\n  get enabledTabIndex() {\n    return this._enabledTabIndex === undefined ? this.listbox.enabledTabIndex : this._enabledTabIndex;\n  }\n  set enabledTabIndex(value) {\n    this._enabledTabIndex = value;\n  }\n  private _enabledTabIndex?: number | null;\n\n  /** The option's host element */\n  readonly element: HTMLElement = inject(ElementRef).nativeElement;\n\n  /** The parent listbox this option belongs to. */\n  protected readonly listbox: AppListbox<T> = inject(AppListbox);\n\n  /** Emits when the option is destroyed. */\n  protected destroyed = new Subject<void>();\n\n  /** Emits when the option is clicked. */\n  readonly _clicked = new Subject<MouseEvent>();\n\n  ngOnDestroy() {\n    this.destroyed.next();\n    this.destroyed.complete();\n  }\n\n  /** Whether this option is selected. */\n  isSelected() {\n    return this.listbox.isSelected(this);\n  }\n\n  /** Whether this option is active. */\n  isActive() {\n    return this.listbox.isActive(this);\n  }\n\n  /** Toggle the selected state of this option. */\n  toggle() {\n    this.listbox.toggle(this);\n  }\n\n  /** Select this option if it is not selected. */\n  select() {\n    this.listbox.select(this);\n  }\n\n  /** Deselect this option if it is selected. */\n  deselect() {\n    this.listbox.deselect(this);\n  }\n\n  /** Focus this option. */\n  focus() {\n    this.element.focus();\n  }\n\n  /** Get the label for this element which is required by the FocusableOption interface. */\n  getLabel() {\n    return (this.typeaheadLabel ?? this.element.textContent?.trim()) || '';\n  }\n\n  /**\n   * No-op implemented as a part of `Highlightable`.\n   * @docs-private\n   */\n  setActiveStyles() {}\n\n  /**\n   * No-op implemented as a part of `Highlightable`.\n   * @docs-private\n   */\n  setInactiveStyles() {}\n\n  /** Handle focus events on the option. */\n  protected _handleFocus() {\n    // Options can wind up getting focused in active descendant mode if the user clicks on them.\n    // In this case, we push focus back to the parent listbox to prevent an extra tab stop when\n    // the user performs a shift+tab.\n    if (this.listbox.useActiveDescendant) {\n      this.listbox._setActiveOption(this);\n      this.listbox.focus();\n    }\n  }\n\n  /** Get the tabindex for this option. */\n  protected _getTabIndex() {\n    if (this.listbox.useActiveDescendant || this.disabled) {\n      return -1;\n    }\n    return this.isActive() ? this.enabledTabIndex : -1;\n  }\n}\n\n@Directive({\n  selector: '[appListbox]',\n  exportAs: 'appListbox',\n  host: {\n    role: 'listbox',\n    class: 'app-listbox',\n    '[id]': 'id',\n    '[attr.tabindex]': '_getTabIndex()',\n    '[attr.aria-disabled]': 'disabled',\n    '[attr.aria-multiselectable]': 'multiple',\n    '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n    '[attr.aria-orientation]': 'orientation',\n    '(focus)': '_handleFocus()',\n    '(keydown)': '_handleKeydown($event)',\n    '(focusout)': '_handleFocusOut($event)',\n    '(focusin)': '_handleFocusIn()',\n  },\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AppListbox),\n      multi: true,\n    },\n  ],\n  standalone: false,\n})\nexport class AppListbox<T = unknown> implements AfterContentInit, OnDestroy, ControlValueAccessor {\n  /** The id of the option's host element. */\n  @Input()\n  get id() {\n    return this._id || this._generatedId;\n  }\n  set id(value) {\n    this._id = value;\n  }\n  private _id: string = '';\n  private _generatedId = `listbox-${nextId++}`;\n\n  /** The tabindex to use when the listbox is enabled. */\n  @Input('tabindex')\n  get enabledTabIndex() {\n    return this._enabledTabIndex === undefined ? 0 : this._enabledTabIndex;\n  }\n  set enabledTabIndex(value) {\n    this._enabledTabIndex = value;\n  }\n  private _enabledTabIndex?: number | null;\n\n  /** The value selected in the listbox, represented as an array of option values. */\n  @Input('listboxValue')\n  get value(): readonly T[] {\n    return this._invalid ? [] : this.selectionModel.selected;\n  }\n  set value(value: readonly T[]) {\n    this._setSelection(value);\n  }\n\n  /**\n   * Whether the listbox allows multiple options to be selected. If the value switches from `true`\n   * to `false`, and more than one option is selected, all options are deselected.\n   */\n  @Input('listboxMultiple')\n  get multiple(): boolean {\n    return this.selectionModel.multiple;\n  }\n  set multiple(value: BooleanInput) {\n    this.selectionModel.multiple = coerceBooleanProperty(value);\n\n    if (this.options) {\n      this._updateInternalValue();\n    }\n  }\n\n  /** Whether the listbox is disabled. */\n  @Input('listboxDisabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: BooleanInput) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n  private _disabled: boolean = false;\n\n  /** Whether the listbox will use active descendant or will move focus onto the options. */\n  @Input('listboxUseActiveDescendant')\n  get useActiveDescendant(): boolean {\n    return this._useActiveDescendant;\n  }\n  set useActiveDescendant(shouldUseActiveDescendant: BooleanInput) {\n    this._useActiveDescendant = coerceBooleanProperty(shouldUseActiveDescendant);\n  }\n  private _useActiveDescendant: boolean = false;\n\n  /** The orientation of the listbox. Only affects keyboard interaction, not visual layout. */\n  @Input('listboxOrientation')\n  get orientation() {\n    return this._orientation;\n  }\n  set orientation(value: 'horizontal' | 'vertical') {\n    this._orientation = value === 'horizontal' ? 'horizontal' : 'vertical';\n    if (value === 'horizontal') {\n      this.listKeyManager?.withHorizontalOrientation(this._dir?.value || 'ltr');\n    } else {\n      this.listKeyManager?.withVerticalOrientation();\n    }\n  }\n  private _orientation: 'horizontal' | 'vertical' = 'vertical';\n\n  /** The function used to compare option values. */\n  @Input('listboxCompareWith')\n  get compareWith(): undefined | ((o1: T, o2: T) => boolean) {\n    return this.selectionModel.compareWith;\n  }\n  set compareWith(fn: undefined | ((o1: T, o2: T) => boolean)) {\n    this.selectionModel.compareWith = fn;\n  }\n\n  /**\n   * Whether the keyboard navigation should wrap when the user presses arrow down on the last item\n   * or arrow up on the first item.\n   */\n  @Input('listboxNavigationWrapDisabled')\n  get navigationWrapDisabled() {\n    return this._navigationWrapDisabled;\n  }\n  set navigationWrapDisabled(wrap: BooleanInput) {\n    this._navigationWrapDisabled = coerceBooleanProperty(wrap);\n    this.listKeyManager?.withWrap(!this._navigationWrapDisabled);\n  }\n  private _navigationWrapDisabled = false;\n\n  /** Whether keyboard navigation should skip over disabled items. */\n  @Input('listboxNavigatesDisabledOptions')\n  get navigateDisabledOptions() {\n    return this._navigateDisabledOptions;\n  }\n  set navigateDisabledOptions(skip: BooleanInput) {\n    this._navigateDisabledOptions = coerceBooleanProperty(skip);\n    this.listKeyManager?.skipPredicate(this._navigateDisabledOptions ? this._skipNonePredicate : this._skipDisabledPredicate);\n  }\n  private _navigateDisabledOptions = false;\n\n  /** Emits when the selected value(s) in the listbox change. */\n  @Output('listboxValueChange') readonly valueChange = new Subject<IListboxValueChangeEvent<T>>();\n\n  /** The child options in this listbox. */\n  @ContentChildren(AppOption, { descendants: true }) protected options!: QueryList<AppOption<T>>;\n\n  /** The selection model used by the listbox. */\n  protected selectionModel = new ListboxSelectionModel<T>();\n\n  /** The key manager that manages keyboard navigation for this listbox. */\n  protected listKeyManager!: ActiveDescendantKeyManager<AppOption<T>>;\n\n  /** Emits when the listbox is destroyed. */\n  protected readonly destroyed = new Subject<void>();\n\n  /** The host element of the listbox. */\n  protected readonly element: HTMLElement = inject(ElementRef).nativeElement;\n\n  /** The change detector for this listbox. */\n  protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n  /** Whether the currently selected value in the selection model is invalid. */\n  private _invalid = false;\n\n  /** The last user-triggered option. */\n  private _lastTriggered: AppOption<T> | null = null;\n\n  /** Callback called when the listbox has been touched */\n  private _onTouched = () => {};\n\n  /** Callback called when the listbox value changes */\n  private _onChange: (value: readonly T[]) => void = () => {};\n\n  /** Emits when an option has been clicked. */\n  private _optionClicked = defer(() =>\n    (this.options.changes as Observable<AppOption<T>[]>).pipe(\n      startWith(this.options),\n      switchMap((options) => merge(...options.map((option) => option._clicked.pipe(map((event) => ({ option, event })))))),\n    ),\n  );\n\n  /** The directionality of the page. */\n  private readonly _dir = inject(Directionality, { optional: true });\n\n  /** A predicate that skips disabled options. */\n  private readonly _skipDisabledPredicate = (option: AppOption<T>) => option.disabled;\n\n  /** A predicate that does not skip any options. */\n  private readonly _skipNonePredicate = () => false;\n\n  /** Whether the listbox currently has focus. */\n  private _hasFocus = false;\n\n  get selectionM() {\n    return this.selectionModel;\n  }\n\n  ngAfterContentInit() {\n    if (typeof dMode === 'undefined' || dMode) {\n      this._verifyNoOptionValueCollisions();\n      this._verifyOptionValues();\n    }\n\n    this._initKeyManager();\n\n    // Update the internal value whenever the options or the model value changes.\n    merge(this.selectionModel.changed, this.options.changes)\n      .pipe(startWith(null), takeUntil(this.destroyed))\n      .subscribe(() => this._updateInternalValue());\n\n    this._optionClicked\n      .pipe(\n        filter(({ option }) => !option.disabled),\n        takeUntil(this.destroyed),\n      )\n      .subscribe(({ option, event }) => this._handleOptionClicked(option, event));\n  }\n\n  ngOnDestroy() {\n    // this.listKeyManager?.destroy();\n    this.destroyed.next();\n    this.destroyed.complete();\n  }\n\n  /**\n   * Toggle the selected state of the given option.\n   * @param option The option to toggle\n   */\n  toggle(option: AppOption<T>) {\n    this.toggleValue(option.value);\n  }\n\n  /**\n   * Toggle the selected state of the given value.\n   * @param value The value to toggle\n   */\n  toggleValue(value: T) {\n    if (this._invalid) {\n      this.selectionModel.clear(false);\n    }\n    this.selectionModel.toggle(value);\n  }\n\n  /**\n   * Select the given option.\n   * @param option The option to select\n   */\n  select(option: AppOption<T>) {\n    this.selectValue(option.value);\n  }\n\n  /**\n   * Select the given value.\n   * @param value The value to select\n   */\n  selectValue(value: T) {\n    if (this._invalid) {\n      this.selectionModel.clear(false);\n    }\n    this.selectionModel.select(value);\n  }\n\n  /**\n   * Deselect the given option.\n   * @param option The option to deselect\n   */\n  deselect(option: AppOption<T>) {\n    this.deselectValue(option.value);\n  }\n\n  /**\n   * Deselect the given value.\n   * @param value The value to deselect\n   */\n  deselectValue(value: T) {\n    if (this._invalid) {\n      this.selectionModel.clear(false);\n    }\n    this.selectionModel.deselect(value);\n  }\n\n  /**\n   * Set the selected state of all options.\n   * @param isSelected The new selected state to set\n   */\n  setAllSelected(isSelected: boolean) {\n    if (!isSelected) {\n      this.selectionModel.clear();\n    } else {\n      if (this._invalid) {\n        this.selectionModel.clear(false);\n      }\n      this.selectionModel.select(...this.options.map((option) => option.value));\n    }\n  }\n\n  /**\n   * Get whether the given option is selected.\n   * @param option The option to get the selected state of\n   */\n  isSelected(option: AppOption<T>) {\n    return this.isValueSelected(option.value);\n  }\n\n  /**\n   * Get whether the given option is active.\n   * @param option The option to get the active state of\n   */\n  isActive(option: AppOption<T>): boolean {\n    return !!(this.listKeyManager?.activeItem === option);\n  }\n\n  /**\n   * Get whether the given value is selected.\n   * @param value The value to get the selected state of\n   */\n  isValueSelected(value: T) {\n    if (this._invalid) {\n      return false;\n    }\n    return this.selectionModel.isSelected(value);\n  }\n\n  /**\n   * Registers a callback to be invoked when the listbox's value changes from user input.\n   * @param fn The callback to register\n   * @docs-private\n   */\n  registerOnChange(fn: (value: readonly T[]) => void): void {\n    this._onChange = fn;\n  }\n\n  /**\n   * Registers a callback to be invoked when the listbox is blurred by the user.\n   * @param fn The callback to register\n   * @docs-private\n   */\n  registerOnTouched(fn: () => {}): void {\n    this._onTouched = fn;\n  }\n\n  /**\n   * Sets the listbox's value.\n   * @param value The new value of the listbox\n   * @docs-private\n   */\n  writeValue(value: readonly T[]): void {\n    this._setSelection(value);\n    this._verifyOptionValues();\n  }\n\n  /**\n   * Sets the disabled state of the listbox.\n   * @param isDisabled The new disabled state\n   * @docs-private\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  /** Focus the listbox's host element. */\n  focus() {\n    this.element.focus();\n  }\n\n  /**\n   * Triggers the given option in response to user interaction.\n   * - In single selection mode: selects the option and deselects any other selected option.\n   * - In multi selection mode: toggles the selected state of the option.\n   * @param option The option to trigger\n   */\n  protected triggerOption(option: AppOption<T> | null) {\n    if (option && !option.disabled) {\n      this._lastTriggered = option;\n      const changed = this.multiple ? this.selectionModel.toggle(option.value) : this.selectionModel.select(option.value);\n      if (changed) {\n        this._onChange(this.value);\n        this.valueChange.next({\n          value: this.value,\n          listbox: this,\n          option: option,\n        });\n      }\n    }\n  }\n\n  /**\n   * Trigger the given range of options in response to user interaction.\n   * Should only be called in multi-selection mode.\n   * @param trigger The option that was triggered\n   * @param from The start index of the options to toggle\n   * @param to The end index of the options to toggle\n   * @param on Whether to toggle the option range on\n   */\n  protected triggerRange(trigger: AppOption<T> | null, from: number, to: number, on: boolean) {\n    if (this.disabled || (trigger && trigger.disabled)) {\n      return;\n    }\n    this._lastTriggered = trigger;\n    const isEqual = this.compareWith ?? Object.is;\n    const updateValues = [...this.options]\n      .slice(Math.max(0, Math.min(from, to)), Math.min(this.options.length, Math.max(from, to) + 1))\n      .filter((option) => !option.disabled)\n      .map((option) => option.value);\n    const selected = [...this.value];\n    for (const updateValue of updateValues) {\n      const selectedIndex = selected.findIndex((selectedValue) => isEqual(selectedValue, updateValue));\n      if (on && selectedIndex === -1) {\n        selected.push(updateValue);\n      } else if (!on && selectedIndex !== -1) {\n        selected.splice(selectedIndex, 1);\n      }\n    }\n    const changed = this.selectionModel.setSelection(...selected);\n    if (changed) {\n      this._onChange(this.value);\n      this.valueChange.next({\n        value: this.value,\n        listbox: this,\n        option: trigger,\n      });\n    }\n  }\n\n  /**\n   * Sets the given option as active.\n   * @param option The option to make active\n   */\n  _setActiveOption(option: AppOption<T>) {\n    this.listKeyManager.setActiveItem(option);\n  }\n\n  /** Called when the listbox receives focus. */\n  protected _handleFocus() {\n    if (!this.useActiveDescendant) {\n      if (this.selectionModel.selected.length > 0) {\n        this._setNextFocusToSelectedOption();\n      } else {\n        this.listKeyManager.setNextItemActive();\n      }\n\n      this._focusActiveOption();\n    }\n  }\n\n  /** Called when the user presses keydown on the listbox. */\n  protected _handleKeydown(event: KeyboardEvent) {\n    if (this._disabled) {\n      return;\n    }\n\n    const { keyCode } = event;\n    const previousActiveIndex = this.listKeyManager.activeItemIndex;\n    const ctrlKeys = ['ctrlKey', 'metaKey'] as const;\n\n    if (this.multiple && keyCode === A && hasModifierKey(event, ...ctrlKeys)) {\n      // Toggle all options off if they're all selected, otherwise toggle them all on.\n      this.triggerRange(null, 0, this.options.length - 1, this.options.length !== this.value.length);\n      event.preventDefault();\n      return;\n    }\n\n    if (this.multiple && (keyCode === SPACE || keyCode === ENTER) && hasModifierKey(event, 'shiftKey')) {\n      if (this.listKeyManager.activeItem && this.listKeyManager.activeItemIndex != null) {\n        this.triggerRange(\n          this.listKeyManager.activeItem,\n          this._getLastTriggeredIndex() ?? this.listKeyManager.activeItemIndex,\n          this.listKeyManager.activeItemIndex,\n          !this.listKeyManager.activeItem.isSelected(),\n        );\n      }\n      event.preventDefault();\n      return;\n    }\n\n    if (this.multiple && keyCode === HOME && hasModifierKey(event, ...ctrlKeys) && hasModifierKey(event, 'shiftKey')) {\n      const trigger = this.listKeyManager.activeItem;\n      if (trigger) {\n        const from = this.listKeyManager.activeItemIndex!;\n        this.listKeyManager.setFirstItemActive();\n        this.triggerRange(trigger, from, this.listKeyManager.activeItemIndex!, !trigger.isSelected());\n      }\n      event.preventDefault();\n      return;\n    }\n\n    if (this.multiple && keyCode === END && hasModifierKey(event, ...ctrlKeys) && hasModifierKey(event, 'shiftKey')) {\n      const trigger = this.listKeyManager.activeItem;\n      if (trigger) {\n        const from = this.listKeyManager.activeItemIndex!;\n        this.listKeyManager.setLastItemActive();\n        this.triggerRange(trigger, from, this.listKeyManager.activeItemIndex!, !trigger.isSelected());\n      }\n      event.preventDefault();\n      return;\n    }\n\n    if (keyCode === SPACE || keyCode === ENTER) {\n      this.triggerOption(this.listKeyManager.activeItem);\n      event.preventDefault();\n      return;\n    }\n\n    const isNavKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW || keyCode === HOME || keyCode === END;\n    this.listKeyManager.onKeydown(event);\n    // Will select an option if shift was pressed while navigating to the option\n    if (isNavKey && event.shiftKey && previousActiveIndex !== this.listKeyManager.activeItemIndex) {\n      this.triggerOption(this.listKeyManager.activeItem);\n    }\n  }\n\n  /** Called when a focus moves into the listbox. */\n  protected _handleFocusIn() {\n    // Note that we use a `focusin` handler for this instead of the existing `focus` handler,\n    // because focus won't land on the listbox if `useActiveDescendant` is enabled.\n    this._hasFocus = true;\n  }\n\n  /**\n   * Called when the focus leaves an element in the listbox.\n   * @param event The focusout event\n   */\n  protected _handleFocusOut(event: FocusEvent) {\n    const otherElement = event.relatedTarget as Element;\n    if (this.element !== otherElement && !this.element.contains(otherElement)) {\n      this._onTouched();\n      this._hasFocus = false;\n      this._setNextFocusToSelectedOption();\n    }\n  }\n\n  /** Get the id of the active option if active descendant is being used. */\n  protected _getAriaActiveDescendant(): string | null | undefined {\n    return this._useActiveDescendant ? this.listKeyManager?.activeItem?.id : null;\n  }\n\n  /** Get the tabindex for the listbox. */\n  protected _getTabIndex() {\n    if (this.disabled) {\n      return -1;\n    }\n    return this.useActiveDescendant || !this.listKeyManager.activeItem ? this.enabledTabIndex : -1;\n  }\n\n  /** Initialize the key manager. */\n  private _initKeyManager() {\n    this.listKeyManager = new ActiveDescendantKeyManager(this.options)\n      .withWrap(!this._navigationWrapDisabled)\n      .withTypeAhead()\n      .withHomeAndEnd()\n      .withAllowedModifierKeys(['shiftKey'])\n      .skipPredicate(this._navigateDisabledOptions ? this._skipNonePredicate : this._skipDisabledPredicate);\n\n    if (this.orientation === 'vertical') {\n      this.listKeyManager.withVerticalOrientation();\n    } else {\n      this.listKeyManager.withHorizontalOrientation(this._dir?.value || 'ltr');\n    }\n\n    if (this.selectionModel.selected.length) {\n      Promise.resolve().then(() => this._setNextFocusToSelectedOption());\n    }\n\n    this.listKeyManager.change.subscribe(() => this._focusActiveOption());\n  }\n\n  /** Focus the active option. */\n  private _focusActiveOption() {\n    if (!this.useActiveDescendant) {\n      this.listKeyManager.activeItem?.focus();\n    }\n    this.changeDetectorRef.markForCheck();\n  }\n\n  /**\n   * Set the selected values.\n   * @param value The list of new selected values.\n   */\n  private _setSelection(value: readonly T[]) {\n    if (this._invalid) {\n      this.selectionModel.clear(false);\n    }\n    this.selectionModel.setSelection(...this._coerceValue(value));\n\n    if (!this._hasFocus) {\n      this._setNextFocusToSelectedOption();\n    }\n  }\n\n  /** Sets the first selected option as first in the keyboard focus order. */\n  private _setNextFocusToSelectedOption() {\n    // Null check the options since they only get defined after `ngAfterContentInit`.\n    const selected = this.options?.find((option) => option.isSelected());\n\n    if (selected) {\n      this.listKeyManager.updateActiveItem(selected);\n    }\n  }\n\n  /** Update the internal value of the listbox based on the selection model. */\n  private _updateInternalValue() {\n    const indexCache = new Map<T, number>();\n    this.selectionModel.sort((a: T, b: T) => {\n      const aIndex = this._getIndexForValue(indexCache, a);\n      const bIndex = this._getIndexForValue(indexCache, b);\n      return aIndex - bIndex;\n    });\n    const selected = this.selectionModel.selected;\n    this._invalid = (!this.multiple && selected.length > 1) || !!this._getInvalidOptionValues(selected).length;\n    this.changeDetectorRef.markForCheck();\n  }\n\n  /**\n   * Gets the index of the given value in the given list of options.\n   * @param cache The cache of indices found so far\n   * @param value The value to find\n   * @return The index of the value in the options list\n   */\n  private _getIndexForValue(cache: Map<T, number>, value: T) {\n    const isEqual = this.compareWith || Object.is;\n    if (!cache.has(value)) {\n      let index = -1;\n      for (let i = 0; i < this.options.length; i++) {\n        if (isEqual(value, this.options.get(i)!.value)) {\n          index = i;\n          break;\n        }\n      }\n      cache.set(value, index);\n    }\n    return cache.get(value)!;\n  }\n\n  /**\n   * Handle the user clicking an option.\n   * @param option The option that was clicked.\n   */\n  private _handleOptionClicked(option: AppOption<T>, event: MouseEvent) {\n    event.preventDefault();\n    this.listKeyManager.setActiveItem(option);\n    if (event.shiftKey && this.multiple) {\n      this.triggerRange(option, this._getLastTriggeredIndex() ?? this.listKeyManager.activeItemIndex!, this.listKeyManager.activeItemIndex!, !option.isSelected());\n    } else {\n      this.triggerOption(option);\n    }\n  }\n\n  /** Verifies that no two options represent the same value under the compareWith function. */\n  private _verifyNoOptionValueCollisions() {\n    this.options.changes.pipe(startWith(this.options), takeUntil(this.destroyed)).subscribe(() => {\n      const isEqual = this.compareWith ?? Object.is;\n      for (let i = 0; i < this.options.length; i++) {\n        const option = this.options.get(i)!;\n        let duplicate: AppOption<T> | null = null;\n        for (let j = i + 1; j < this.options.length; j++) {\n          const other = this.options.get(j)!;\n          if (isEqual(option.value, other.value)) {\n            duplicate = other;\n            break;\n          }\n        }\n        if (duplicate) {\n          // TODO(mmalerba): Link to docs about this.\n          if (this.compareWith) {\n            console.warn(`Found multiple AppOption representing the same value under the given compareWith function`, {\n              option1: option.element,\n              option2: duplicate.element,\n              compareWith: this.compareWith,\n            });\n          } else {\n            console.warn(`Found multiple AppOption with the same value`, {\n              option1: option.element,\n              option2: duplicate.element,\n            });\n          }\n          return;\n        }\n      }\n    });\n  }\n\n  /** Verifies that the option values are valid. */\n  private _verifyOptionValues() {\n    if (this.options && (typeof dMode === 'undefined' || dMode)) {\n      const selected = this.selectionModel.selected;\n      const invalidValues = this._getInvalidOptionValues(selected);\n\n      if (!this.multiple && selected.length > 1) {\n        throw Error('Listbox cannot have more than one selected value in multi-selection mode.');\n      }\n\n      if (invalidValues.length) {\n        throw Error('Listbox has selected values that do not match any of its options.');\n      }\n    }\n  }\n\n  /**\n   * Coerces a value into an array representing a listbox selection.\n   * @param value The value to coerce\n   * @return An array\n   */\n  private _coerceValue(value: readonly T[]) {\n    return value == null ? [] : coerceArray(value);\n  }\n\n  /**\n   * Get the sublist of values that do not represent valid option values in this listbox.\n   * @param values The list of values\n   * @return The sublist of values that are not valid option values\n   */\n  private _getInvalidOptionValues(values: readonly T[]) {\n    const isEqual = this.compareWith || Object.is;\n    const validValues = (this.options || []).map((option) => option.value);\n    return values.filter((value) => !validValues.some((validValue) => isEqual(value, validValue)));\n  }\n\n  /** Get the index of the last triggered option. */\n  private _getLastTriggeredIndex() {\n    const index = this.options.toArray().indexOf(this._lastTriggered!);\n    return index === -1 ? null : index;\n  }\n}\n\n/** Change event that is fired whenever the value of the listbox changes. */\nexport interface IListboxValueChangeEvent<T> {\n  /** The new value of the listbox. */\n  readonly value: readonly T[];\n\n  /** Reference to the listbox that emitted the event. */\n  readonly listbox: AppListbox<T>;\n\n  /** Reference to the option that was triggered. */\n  readonly option: AppOption<T> | null;\n}\n","import { Directive, EventEmitter, HostListener, Input, OnDestroy, Output } from '@angular/core';\n\n@Directive({\n  selector: '[libLongPress]',\n  standalone: false,\n})\nexport class LongPressDirective implements OnDestroy {\n  /** Delay (ms) before a press is considered “long” */\n  @Input() pressDelay = 1000;\n\n  /** Global on/off flag; if `false` every press is treated as short */\n  @Input() longPressEnabled = true;\n\n  /** Emits when the user releases before `pressDelay` */\n  @Output() shortPress = new EventEmitter<PointerEvent>();\n\n  /** Emits after `pressDelay` if the pointer is still down */\n  @Output() longPress = new EventEmitter<PointerEvent>();\n\n  private pressTimer: ReturnType<typeof setTimeout> | null = null;\n  private pressStart = 0;\n\n  /* Pointer Events ------------------------------------------------------- */\n\n  @HostListener('pointerdown', ['$event'])\n  onPointerDown(event: PointerEvent): void {\n    if (!this.longPressEnabled) {\n      // we’ll treat every press as “short”\n      return;\n    }\n\n    this.pressStart = Date.now();\n\n    this.clearTimer();\n    this.pressTimer = setTimeout(() => {\n      this.longPress.emit(event);\n      this.clearTimer(); // avoid double-fire\n    }, this.pressDelay);\n  }\n\n  @HostListener('pointerup', ['$event'])\n  onPointerUp(event: PointerEvent): void {\n    if (!this.longPressEnabled) {\n      this.shortPress.emit(event);\n      return;\n    }\n\n    const elapsed = Date.now() - this.pressStart;\n    if (elapsed < this.pressDelay) {\n      this.shortPress.emit(event);\n    }\n    this.clearTimer();\n  }\n\n  @HostListener('pointerleave')\n  @HostListener('pointercancel')\n  onPointerCancel(): void {\n    this.clearTimer();\n  }\n\n  /* Helpers -------------------------------------------------------------- */\n\n  ngOnDestroy(): void {\n    this.clearTimer();\n  }\n\n  private clearTimer(): void {\n    if (this.pressTimer) {\n      clearTimeout(this.pressTimer);\n      this.pressTimer = null;\n    }\n  }\n}\n","export class ResizedEvent {\n  public newRect: ResizeObserverSize;\n  public oldRect?: DOMRectReadOnly;\n  public isFirst: boolean;\n\n  public constructor(newRect: ResizeObserverSize, oldRect: DOMRectReadOnly | undefined) {\n    this.newRect = newRect;\n    this.oldRect = oldRect;\n    this.isFirst = oldRect == null;\n  }\n}\n","import { Directive, ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ResizedEvent } from './resized.event';\n\n/**\n * Copied from\n * https://github.com/vdolek/angular-resize-event\n */\n@Directive({\n  selector: '[resized]',\n  standalone: false,\n})\nexport class ResizedDirective implements OnInit, OnDestroy {\n  private observer: ResizeObserver;\n  private oldRect?: DOMRectReadOnly;\n\n  @Output()\n  public readonly resized = new EventEmitter<ResizedEvent>();\n\n  public constructor(\n    private readonly element: ElementRef,\n    private readonly zone: NgZone,\n  ) {\n    this.observer = new ResizeObserver((entries) => this.zone.run(() => this.observe(entries)));\n  }\n\n  public ngOnInit(): void {\n    this.observer.observe(this.element.nativeElement, { box: 'border-box' });\n  }\n\n  public ngOnDestroy(): void {\n    this.observer.disconnect();\n  }\n\n  private observe(entries: ResizeObserverEntry[]): void {\n    const domSize = entries[0];\n    const resizedEvent = new ResizedEvent(domSize.borderBoxSize[0], this.oldRect);\n    this.oldRect = domSize.contentRect;\n    this.resized.emit(resizedEvent);\n  }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'lib-base-card',\n  templateUrl: './base-card.component.html',\n  styleUrls: ['./base-card.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class BaseCardComponent {}\n","<ng-content></ng-content>\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n  selector: 'lib-dashed-checkbox',\n  templateUrl: './dashed-checkbox.component.html',\n  styleUrls: ['./dashed-checkbox.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: DashedCheckboxComponent,\n    },\n  ],\n  standalone: false,\n})\nexport class DashedCheckboxComponent implements ControlValueAccessor {\n  @ViewChild('input') input!: ElementRef;\n\n  @Input() checked: boolean = false;\n  @Input() disabled: boolean = false;\n  @Output() toggle = new EventEmitter<boolean>();\n\n  private onChange = (state: boolean) => {};\n  private onTouched = () => {};\n\n  public registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public writeValue(value: boolean): void {\n    this.checked = value;\n    this.toggle.emit(this.checked);\n  }\n\n  public onCheckToggled(): void {\n    if (this.disabled) return;\n    this.checked = this.input.nativeElement.checked;\n    this.onChange(this.checked);\n    this.onTouched();\n    this.toggle.emit(this.checked);\n  }\n}\n","<label class=\"dashed-checkbox\">\n  <input type=\"checkbox\" class=\"checkbox\" [checked]=\"checked\" [disabled]=\"disabled\" (change)=\"onCheckToggled()\" #input />\n  <svg id=\"svg2\" version=\"1.1\" viewBox=\"0 0 24.588 16.663\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"m1.0974 6.0974 7.8757 8.452 14.599-13.446\" fill=\"none\" stroke=\"#000\" stroke-width=\"3\" />\n  </svg>\n  <img class=\"dashed-checkbox__img\" [src]=\"checked ? 'assets/icons/checkbox/checkbox-on.svg' : 'assets/icons/checkbox/checkbox-off.svg'\" />\n</label>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'lib-progress-bar',\n  templateUrl: './progress-bar.component.html',\n  styleUrls: ['./progress-bar.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ProgressBarComponent implements OnInit {\n  @Input() progBarCurrentStep: number = 1;\n  @Input() progBarTotalSteps: number = 1;\n\n  public totalStepsArr: number[] = [];\n  public stepWeight: number = 0;\n\n  constructor(private cdref: ChangeDetectorRef) {}\n\n  ngOnInit() {\n    const totalSteps = this.progBarTotalSteps || 1;\n    const currentStep = this.progBarCurrentStep || 1;\n\n    this.totalStepsArr = Array(totalSteps).fill(0);\n    this.stepWeight = 100 / totalSteps;\n    this.cdref.detectChanges();\n  }\n}\n","<aside *ngIf=\"progBarCurrentStep && progBarTotalSteps\" class=\"progress-static-bar\">\n  <div class=\"progress-bar\">\n    <div class=\"progress-inside\" [ngStyle]=\"{ width: progBarCurrentStep * stepWeight + '%' }\"></div>\n    <span class=\"glow\" [ngStyle]=\"{ width: progBarCurrentStep * stepWeight + '%' }\"></span>\n  </div>\n  <div class=\"preview-section-tab\">\n    <ng-container *ngFor=\"let step of totalStepsArr; let i = index\">\n      <div class=\"preview-section\" [ngStyle]=\"{ left: i * stepWeight + '%' }\" [ngClass]=\"{ completed: progBarCurrentStep >= i, visited: progBarCurrentStep >= i }\"></div>\n    </ng-container>\n    <div class=\"preview-section end\" [ngClass]=\"{ completed: progBarCurrentStep === progBarTotalSteps, visited: progBarCurrentStep === progBarTotalSteps }\"></div>\n  </div>\n</aside>\n\n<span class=\"step-txt\">Step {{ progBarCurrentStep }}/{{ progBarTotalSteps }}</span>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseBtnLogic } from '../base-btn/base-btn-logic';\n\n@Component({\n  selector: 'lib-primary-btn',\n  templateUrl: './primary-btn.component.html',\n  styleUrls: ['./primary-btn.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class PrimaryBtnComponent extends BaseBtnLogic {\n  @Input() override hoverOutline: boolean = true;\n  @Input() override disabled!: boolean;\n  @Input() override type: string = 'button';\n  @Input() override form: string = '';\n  @Input() override label!: string;\n  @Input() override showArrowIcon!: boolean;\n  @Input() override disableTextShadow!: boolean;\n  @Input() override loading$!: Observable<boolean>;\n}\n","<lib-base-btn\n  [disabled]=\"disabled\"\n  [form]=\"form\"\n  [showArrowIcon]=\"showArrowIcon\"\n  [disableTextShadow]=\"disableTextShadow\"\n  [hoverOutline]=\"hoverOutline\"\n  [type]=\"type\"\n  [label]=\"label\"\n  [loading$]=\"loading$\"\n>\n  <ng-content></ng-content>\n</lib-base-btn>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseBtnLogic } from '../base-btn/base-btn-logic';\n\n@Component({\n  selector: 'lib-secondary-btn',\n  templateUrl: './secondary-btn.component.html',\n  styleUrls: ['./secondary-btn.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SecondaryBtnComponent extends BaseBtnLogic {\n  @Input() override hoverOutline: boolean = true;\n  @Input() override disabled!: boolean;\n  @Input() override type: string = 'button';\n  @Input() override form: string = '';\n  @Input() override label!: string;\n  @Input() override showArrowIcon!: boolean;\n  @Input() override disableTextShadow!: boolean;\n  @Input() override loading$!: Observable<boolean>;\n}\n","<lib-base-btn\n  [disabled]=\"disabled\"\n  [form]=\"form\"\n  [disableTextShadow]=\"disableTextShadow\"\n  [showArrowIcon]=\"showArrowIcon\"\n  [hoverOutline]=\"hoverOutline\"\n  [type]=\"type\"\n  [label]=\"label\"\n  [loading$]=\"loading$\"\n>\n  <ng-content></ng-content>\n</lib-base-btn>\n","import { InjectionToken } from '@angular/core';\n\nexport const MODAL_DATA = new InjectionToken<unknown>('MODAL_DATA');\n","import { AfterViewInit, ChangeDetectorRef, Directive, Injector, Input, Type, ViewContainerRef } from '@angular/core';\nimport { MODAL_DATA } from '../../components/modal/popup-injection-tokens';\n\n@Directive({\n  selector: '[libDynamicModalContainer]',\n  standalone: false,\n})\nexport class DynamicModalContainerDirective implements AfterViewInit {\n  @Input() modalComponent!: Type<unknown>;\n  @Input() modalComponentData: unknown;\n\n  constructor(\n    public viewContainerRef: ViewContainerRef,\n    private injector: Injector,\n    private cdr: ChangeDetectorRef,\n  ) {}\n\n  ngAfterViewInit(): void {\n    if (this.modalComponent && this.viewContainerRef) {\n      const injector = Injector.create({\n        providers: [{ provide: MODAL_DATA, useValue: this.modalComponentData }],\n        parent: this.injector,\n      });\n      const componentRef = this.viewContainerRef.createComponent<unknown>(this.modalComponent, { injector });\n      this.viewContainerRef.insert(componentRef.hostView);\n      this.cdr?.detectChanges();\n    }\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, Type } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\n@Component({\n  selector: 'lib-popup',\n  templateUrl: './popup-modal.component.html',\n  styleUrls: ['./popup-modal.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class LibModalComponent {\n  @Input() isOpen: boolean = false;\n  @Input() icon: string | null = null;\n  @Input() title: string = '';\n  @Input() message: string = '';\n  @Input() extendedMessage: string = '';\n  @Input() cancelButton: string = '';\n  @Input() confirmButton: string = '';\n  @Input() checkboxText: string = '';\n  @Input() progBarCurrentStep: number = 0;\n  @Input() progBarTotalSteps: number = 0;\n  @Input() customClass: string = '';\n  @Input() backdropDismiss: boolean = false;\n  @Output() modalConfirm: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() modalDismiss: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() afterCloseEvent: EventEmitter<unknown> = new EventEmitter<unknown>();\n  @Input() modalComponent!: Type<unknown>;\n  @Input() modalComponentData: unknown = null;\n  public confirmationControl: FormControl<boolean> = new FormControl();\n  public afterClose: Observable<any> = this.afterCloseEvent.asObservable();\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  public handleModalDismiss() {\n    this.modalDismiss.emit(true);\n    this.isOpen = false;\n  }\n\n  public handleModalConfirm() {\n    this.modalConfirm.emit(true);\n    this.isOpen = false;\n  }\n\n  public show(component?: Type<unknown>, data?: unknown, func1?: unknown, func2?: unknown): LibModalComponent {\n    this.modalComponent = component!;\n    this.modalComponentData = data;\n    this.isOpen = true;\n    this.confirmationControl.reset();\n    this.cdr.detectChanges();\n    return this;\n  }\n\n  public hide(): void {\n    this.isOpen = false;\n    this.cdr.detectChanges();\n  }\n}\n","<ion-modal [backdropDismiss]=\"backdropDismiss\" [animated]=\"true\" mode=\"ios\" [isOpen]=\"isOpen\" class=\"lib-popup-modal\" [ngClass]=\"[customClass ? customClass : '']\">\n  <ng-template>\n    <lib-base-card class=\"popover-container\" *ngIf=\"!modalComponent; else modalComponentRef\">\n      <lib-progress-bar *ngIf=\"progBarCurrentStep && progBarTotalSteps\" [progBarCurrentStep]=\"progBarCurrentStep\" [progBarTotalSteps]=\"progBarTotalSteps\"></lib-progress-bar>\n      <div *ngIf=\"icon\" class=\"info-icon\">\n        <img [src]=\"icon\" alt=\"\" />\n      </div>\n      <div *ngIf=\"title\" class=\"m-title f-w-700 f-lg h-160 f-white\">{{ title | translate }}</div>\n      <span *ngIf=\"message\" class=\"message f-w-400 f-md h-150 f-gray\">{{ message | translate }}</span>\n      <span *ngIf=\"extendedMessage\" class=\"message f-w-400 f-md h-150 f-gray\">{{ extendedMessage | translate }}</span>\n      <ng-container *ngIf=\"checkboxText\">\n        <form>\n          <label class=\"checkbox-container\">\n            <lib-dashed-checkbox [formControl]=\"confirmationControl\"></lib-dashed-checkbox>\n            <span class=\"checkbox-label f-w-500 f-lg h-150\">{{ checkboxText | translate }}</span>\n          </label>\n        </form>\n      </ng-container>\n      <ng-content></ng-content>\n      <div class=\"buttons\">\n        <lib-secondary-btn *ngIf=\"cancelButton\" (click)=\"handleModalDismiss()\">\n          {{ cancelButton | translate }}\n        </lib-secondary-btn>\n        <lib-primary-btn *ngIf=\"confirmButton\" (click)=\"handleModalConfirm()\" [disabled]=\"checkboxText ? !confirmationControl.value : false\">\n          {{ confirmButton | translate }}\n        </lib-primary-btn>\n      </div>\n    </lib-base-card>\n    <ng-template #modalComponentRef>\n      <div class=\"popover-container\">\n        <ng-template libDynamicModalContainer [modalComponent]=\"modalComponent\" [modalComponentData]=\"modalComponentData\"></ng-template>\n      </div>\n    </ng-template>\n  </ng-template>\n</ion-modal>\n","import { ComponentRef, ElementRef, Injectable, NgZone, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { Platform } from '@ionic/angular';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { IPopupModal } from '../../../model/popup-modal';\nimport { LibModalComponent } from './popup-modal.component';\n\nexport type Content<T> = string | TemplateRef<T> | Type<T>;\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PopupModalService {\n  private rootViewContainerRef!: ViewContainerRef;\n  private ref!: ComponentRef<LibModalComponent>;\n  private backButtonSubscription!: Subscription | null;\n  private _childModalElementRef$: Subject<ElementRef<HTMLDivElement>> = new Subject<ElementRef<HTMLDivElement>>();\n  public childModalElementRef$: Observable<ElementRef<HTMLDivElement>> = this._childModalElementRef$.asObservable();\n\n  constructor(\n    private platform: Platform,\n    private zone: NgZone,\n  ) {}\n\n  public setRootViewContainerRef(view: ViewContainerRef): void {\n    this.rootViewContainerRef = view;\n  }\n\n  public reset(): void {\n    this.rootViewContainerRef.clear();\n  }\n\n  public insertModalComponent<T>(content: Content<T> | null = null): void {\n    if (content) {\n      const ngContent = this.resolveNgContent(content);\n      this.ref = this.rootViewContainerRef.createComponent(LibModalComponent, { projectableNodes: ngContent });\n    } else {\n      this.ref = this.rootViewContainerRef.createComponent(LibModalComponent);\n    }\n    this.ref.hostView.detectChanges();\n  }\n\n  public resolveNgContent<T>(content: Content<T>): Node[][] {\n    const componentRef = this.rootViewContainerRef.createComponent(content as Type<T>);\n    return [[componentRef.location.nativeElement]];\n  }\n  public getInstance(): ComponentRef<LibModalComponent> {\n    return this.ref;\n  }\n\n  public setInstance(instance: ComponentRef<LibModalComponent>): void {\n    this.ref = instance;\n  }\n\n  public show<T, D>(component?: Type<T>, data?: D, newInstance?: boolean): LibModalComponent {\n    if (!this.ref || newInstance) {\n      this.ref = this.rootViewContainerRef.createComponent(LibModalComponent);\n    }\n\n    this.registerBackButtonHandler();\n\n    return this.ref.instance.show(component, data);\n  }\n\n  public hide(data?: unknown): void {\n    if (!this.ref || !this.ref.instance.isOpen) {\n      return;\n    }\n\n    if (data) {\n      this.ref.instance.afterCloseEvent.emit(data);\n    }\n\n    this.unregisterBackButtonHandler();\n\n    this.ref.instance.hide();\n  }\n\n  public isOpenStatus() {\n    return this.ref.instance.isOpen;\n  }\n\n  public setValues(obj: IPopupModal | null = null): void {\n    this.ref.setInput('icon', obj?.icon ? obj?.icon : null);\n    this.ref.setInput('title', obj?.title ? obj?.title : null);\n    this.ref.setInput('message', obj?.message ? obj?.message : null);\n    this.ref.setInput('cancelButton', obj?.cancelButton ? obj?.cancelButton : null);\n    this.ref.setInput('confirmButton', obj?.confirmButton ? obj?.confirmButton : null);\n    this.ref.setInput('checkboxText', obj?.checkboxText ? obj?.checkboxText : null);\n    this.ref.setInput('extendedMessage', obj?.extendedMessage ? obj?.extendedMessage : null);\n    this.ref.setInput('customClass', obj?.customClass ? obj?.customClass : null);\n    this.ref.setInput('progBarCurrentStep', obj?.progBarCurrentStep ? obj?.progBarCurrentStep : null);\n    this.ref.setInput('progBarTotalSteps', obj?.progBarTotalSteps ? obj?.progBarTotalSteps : null);\n    this.ref.setInput('backdropDismiss', obj?.backdropDismiss ? obj?.backdropDismiss : false);\n  }\n\n  public setChildModalElementRef(elementRef: ElementRef<HTMLDivElement>): void {\n    this._childModalElementRef$.next(elementRef);\n  }\n\n  /**\n   * Registers a high-priority back button handler.\n   * When the modal is open, this will intercept the back button\n   * press and call hide() instead of letting the router navigate back.\n   */\n  private registerBackButtonHandler(): void {\n    this.unregisterBackButtonHandler();\n\n    this.zone.run(() => {\n      this.backButtonSubscription = this.platform.backButton.subscribeWithPriority(101, () => {\n        this.zone.run(() => {\n          this.hide();\n        });\n      });\n    });\n  }\n\n  /**\n   * Removes the custom back button handler.\n   */\n  private unregisterBackButtonHandler(): void {\n    if (this.backButtonSubscription) {\n      this.backButtonSubscription.unsubscribe();\n      this.backButtonSubscription = null;\n    }\n  }\n}\n","import { Directive, EventEmitter, HostListener, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { PopupModalService } from '../../components/modal/popup-modal/popup-modal.service';\n\n@Directive({\n  selector: '[submitOnEnter]',\n  standalone: false,\n})\nexport class SubmitOnEnterDirective {\n  @Output() enter: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  private activeUrl: string;\n\n  constructor(\n    private modalFactoryService: PopupModalService,\n    private router: Router,\n    private activatedRoute: ActivatedRoute,\n  ) {\n    this.activeUrl = this.activatedRoute.snapshot.routeConfig?.path ?? '';\n  }\n\n  @HostListener('window:keypress', ['$event'])\n  handleKeyPress(event: KeyboardEvent): void {\n    if (event.key === 'Enter') {\n      event.preventDefault();\n\n      if (this.modalFactoryService.isOpenStatus()) {\n        return;\n      } else {\n        const url = this.router.url.split('?')[0];\n\n        if (url.includes(this.activeUrl)) {\n          event.preventDefault();\n          this.enter.emit(true);\n        }\n      }\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AutoFocusDirective } from './auto-focus/autoFocus.directive';\nimport { DebounceClickDirective } from './debounce-click/debounce-click.directive';\nimport { DisableControlDirective } from './disable-control/disable-control.directive';\nimport { DraggableScrollDirective } from './draggable-scroll/draggable-scroll.directive';\nimport { LazyImageDirective } from './lazy-image/lazy-image.directive';\nimport { AppListbox, AppOption } from './list-box-element/list-box';\nimport { LongPressDirective } from './long-press/long-press.directive';\nimport { ResizedDirective } from './resized-observer/resized-observer.directive';\nimport { SubmitOnEnterDirective } from './submit-form-on-enter/submit-on-enter.directive';\n\nconst DeclarableDirectives = [\n  AppListbox,\n  AppOption,\n  ResizedDirective,\n  LazyImageDirective,\n  AutoFocusDirective,\n  DebounceClickDirective,\n  DisableControlDirective,\n  SubmitOnEnterDirective,\n  LongPressDirective,\n];\n\n@NgModule({\n  declarations: [...DeclarableDirectives],\n  imports: [CommonModule, DraggableScrollDirective],\n  exports: [...DeclarableDirectives, DraggableScrollDirective],\n})\nexport class DirectiveModule {}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n  selector: '[libFocusInvalidInput]',\n  standalone: false,\n})\nexport class FocusInvalidInputDirective {\n  constructor(private el: ElementRef) {}\n\n  @HostListener('submit')\n  onFormSubmit(): void {\n    const invalidControl = this.el.nativeElement?.querySelector('.invalid-input');\n    if (invalidControl) {\n      invalidControl.focus();\n    }\n    const nestedInput = invalidControl?.querySelector('input');\n    if (nestedInput) {\n      nestedInput.focus();\n    }\n  }\n}\n","import { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { AbstractControl, ControlContainer, FormGroupDirective } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n  selector: '[libInvalidInput]',\n  standalone: false,\n})\nexport class InvalidInputDirective implements OnInit, OnDestroy {\n  @Input() appInvalidInput: string = '';\n  private control: AbstractControl | null = null;\n  private destroy$: Subject<void> = new Subject();\n\n  constructor(\n    private _fg: ControlContainer,\n    private _el: ElementRef,\n    private render: Renderer2,\n  ) {}\n\n  get form(): any {\n    return this._fg.formDirective ? (this._fg.formDirective as FormGroupDirective).form : null;\n  }\n\n  @HostListener('focus', ['$event'])\n  private onFocus(): void {\n    this.setInvalidClass();\n  }\n\n  @HostListener('blur', ['$event'])\n  private onBlur(): void {\n    this.setInvalidClass();\n  }\n\n  ngOnInit(): void {\n    if (!this.appInvalidInput) {\n      return;\n    }\n\n    this.control = this.form.get(this.appInvalidInput);\n    if (this.control) {\n      this.control.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\n        this.setInvalidClass();\n      });\n    }\n\n    (this._fg as FormGroupDirective).ngSubmit.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.form.markAllAsTouched();\n      this.setInvalidClass();\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  private setInvalidClass(): void {\n    if (!this.control) {\n      this.render.removeClass(this._el.nativeElement, 'invalid-input');\n      return;\n    }\n\n    if (this.control.invalid && this.control.touched) {\n      this.control.markAsTouched({ onlySelf: true });\n      this.render.addClass(this._el.nativeElement, 'invalid-input');\n    } else {\n      this.render.removeClass(this._el.nativeElement, 'invalid-input');\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { FocusInvalidInputDirective } from './focus-invalid/focus-invalid-input.directive';\nimport { InvalidInputDirective } from './invalid-input/invalid-input.directive';\n\n@NgModule({\n  declarations: [FocusInvalidInputDirective, InvalidInputDirective],\n  imports: [CommonModule, FormsModule, TranslateModule],\n  exports: [FocusInvalidInputDirective, InvalidInputDirective],\n})\nexport class FormValidatorModule {}\n","import { Directive, Input } from '@angular/core';\nimport { FormControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\nimport { take } from 'rxjs/operators';\n\n@Directive({\n  selector: '[libConfirmPasswordValidator]',\n  providers: [\n    {\n      provide: NG_VALIDATORS,\n      useExisting: ConfirmPasswordValidatorDirective,\n      multi: true,\n    },\n  ],\n  standalone: false,\n})\nexport class ConfirmPasswordValidatorDirective implements Validator {\n  @Input('libConfirmPasswordValidator') appConfirmPasswordValidator: string = '';\n\n  /**\n   * validate function\n   *\n   * @param control\n   */\n  validate(control: FormControl): ValidationErrors | null {\n    if (!control || !control.value) {\n      return null;\n    }\n    const password = control.root.get(this.appConfirmPasswordValidator);\n    if (password) {\n      password.valueChanges.pipe(take(1)).subscribe(() => {\n        control.updateValueAndValidity();\n      });\n    }\n    return password && password.value !== control.value ? { confirmPasswordError: true } : null;\n  }\n}\n","export enum PasswordErrorMessages {\n  minimum = 'VALIDATIONS.PASSWORD_MINIMUM',\n  uppercase = 'VALIDATIONS.PASSWORD_UPPERCASE',\n  lowercase = 'VALIDATIONS.PASSWORD_LOWERCASE',\n  number = 'VALIDATIONS.PASSWORD_NUMBER',\n  specialCharacter = 'VALIDATIONS.PASSWORD_SPECIAL_CHARACTER',\n  prefix = 'VALIDATIONS.PASSWORD_ERROR_PREFIX',\n}\n","import { Directive } from '@angular/core';\nimport { AbstractControl, FormControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PasswordErrorMessages } from '../../enums/form-error-messages.enum';\n\n@Directive({\n  selector: '[formControlName][customPasswordValidator],[ngModel][customPasswordValidator],[formControl][customPasswordValidator]',\n  providers: [\n    {\n      provide: NG_VALIDATORS,\n      useExisting: CustomPasswordValidatorDirective,\n      multi: true,\n    },\n  ],\n  standalone: false,\n})\nexport class CustomPasswordValidatorDirective implements Validator {\n  constructor(private translateService: TranslateService) {}\n\n  /**\n   * validate function\n   *\n   * @param control\n   */\n  validate(control: FormControl): ValidationErrors | null {\n    // Skip empty field\n    if (!control.value) {\n      return null;\n    }\n\n    const filteredMessages = [];\n    const atLeastOneLowerCase = /.*[a-z].*/;\n    const atLeastOneUpperCase = /.*[A-Z].*/;\n    const atLeastOneDigit = /.*\\d.*/;\n    const atLeastOneSymbol = /[*$@!#%&()^~{}]+/;\n    let prefixAdded = false;\n\n    if (control.value?.length < 6) {\n      filteredMessages.push(this.translateService.instant(PasswordErrorMessages.minimum));\n    }\n    if (!atLeastOneLowerCase.test(control.value)) {\n      if (!prefixAdded) {\n        filteredMessages.push(this.translateService.instant(PasswordErrorMessages.prefix) + ' ' + this.translateService.instant(PasswordErrorMessages.lowercase));\n        prefixAdded = true;\n      } else {\n        filteredMessages.push(this.translateService.instant(PasswordErrorMessages.lowercase));\n      }\n    }\n    if (!atLeastOneUpperCase.test(control.value)) {\n      if (!prefixAdded) {\n        filteredMessages.push(this.translateService.instant(PasswordErrorMessages.prefix) + ' ' + this.translateService.instant(PasswordErrorMessages.uppercase));\n        prefixAdded = true;\n      } else {\n        filteredMessages.push(this.translateService.instant(PasswordErrorMessages.uppercase));\n      }\n    }\n    if (!atLeastOneDigit.test(control.value)) {\n      if (!prefixAdded) {\n        filteredMessages.push(this.translateService.instant(PasswordErrorMessages.prefix) + ' ' + this.translateService.instant(PasswordErrorMessages.number));\n        prefixAdded = true;\n      } else {\n        filteredMessages.push(this.translateService.instant(PasswordErrorMessages.number));\n      }\n    }\n    if (!atLeastOneSymbol.test(control.value)) {\n      if (!prefixAdded) {\n        filteredMessages.push(this.translateService.instant(PasswordErrorMessages.prefix) + ' ' + this.translateService.instant(PasswordErrorMessages.specialCharacter));\n        prefixAdded = true;\n      } else {\n        filteredMessages.push(this.translateService.instant(PasswordErrorMessages.specialCharacter));\n      }\n    }\n\n    if (filteredMessages && filteredMessages.length > 0) {\n      return { message: filteredMessages.join(', ') };\n    }\n\n    return null;\n  }\n\n  static patternValidator(regex: RegExp, error: ValidationErrors): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      // Fix: Use correct return type\n      if (!control.value) {\n        // if control is empty return no error\n        return null;\n      }\n\n      // test the value of the control against the regexp supplied\n      const valid = regex.test(control.value);\n\n      // if true, return no error (no error), else return error passed in the second parameter\n      return valid ? null : error;\n    };\n  }\n}\n","import { Directive, Input } from '@angular/core';\nimport { FormControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\n@Directive({\n  selector: '[libPasswordValidator]',\n  providers: [\n    {\n      provide: NG_VALIDATORS,\n      useExisting: PasswordValidatorDirective,\n      multi: true,\n    },\n  ],\n  standalone: false,\n})\nexport class PasswordValidatorDirective implements Validator {\n  @Input() public passwordErrorMsg: string = 'Please provide a valid Password';\n  // Minimum 6 characters, at least one uppercase letter, one lowercase letter, one number and one special character\n  private passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%)(*#^?&])[A-Za-z\\d@$!%)(*#^?&]{6,}$/;\n\n  /**\n   * validate function\n   *\n   * @param control\n   */\n  validate(control: FormControl): ValidationErrors | null {\n    if (!control) {\n      return null;\n    }\n    return this.passwordRegex.test(control.value) ? null : this.message();\n  }\n\n  /**\n   * build the error msg\n   *\n   * @private\n   */\n  private message(): any {\n    return {\n      password: {\n        message: this.passwordErrorMsg,\n        order: 1,\n      },\n    };\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ConfirmPasswordValidatorDirective } from './confirm-password-validator.directive';\nimport { CustomPasswordValidatorDirective } from './custom-password-validator.directive';\nimport { PasswordValidatorDirective } from './password-validator.directive';\n\n@NgModule({\n  declarations: [PasswordValidatorDirective, ConfirmPasswordValidatorDirective, CustomPasswordValidatorDirective],\n  imports: [CommonModule],\n  exports: [PasswordValidatorDirective, ConfirmPasswordValidatorDirective, CustomPasswordValidatorDirective],\n})\nexport class PasswordValidatorModule {}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'lib-section-separator',\n  standalone: true,\n  imports: [CommonModule],\n  template: `<div class=\"fading-line\"></div>`,\n  styles: `\n    .fading-line {\n      position: relative;\n      height: 0.05em;\n      min-height: 1px;\n      background: var(--border-fading-edges);\n      opacity: 0.3;\n      margin-top: var(--margin-top, 1.75em);\n      margin-bottom: var(--margin-bottom, 1.5em);\n    }\n\n    .fading-line::after {\n      content: '';\n      position: absolute;\n      bottom: -5px;\n      left: 10%;\n      width: 90%;\n      height: 4px;\n      background: var(--cyrano-solid-no-transparency);\n      filter: blur(2px);\n      opacity: 0.27;\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SectionSeparatorComponent {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { BaseBtnLogic } from '../base-btn/base-btn-logic';\n\n@Component({\n  selector: 'lib-bubble-btn',\n  templateUrl: './bubble-btn.component.html',\n  styleUrls: ['./bubble-btn.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class BubbleBtnComponent extends BaseBtnLogic {\n  @Input() title: string = '';\n  @Input() subTitle: string = '';\n  @Input() hasIcon?: boolean = false;\n  @Input() enableActiveStyle: boolean = false;\n\n  @HostBinding('class.enable-active-style') get enableActiveStyleClass() {\n    return this.enableActiveStyle;\n  }\n\n  @Input() override checked: boolean = false;\n  @Input() override disabled: boolean = false;\n  @Input() override loading$: Observable<boolean> = of(false);\n}\n","<lib-base-btn [disabled]=\"disabled\" [loading$]=\"loading$\" [checked]=\"checked\" [ngClass]=\"{ 'icon-btn': hasIcon }\">\n  <div class=\"ellipse\"></div>\n  <div class=\"ellipse4\"></div>\n  <ng-content></ng-content>\n  @if (!hasIcon) {\n    <div class=\"title f-xs f-gilroy-regular\">{{ title }}</div>\n    <div class=\"subtitle f-gilroy-regular\">{{ subTitle }}</div>\n  }\n</lib-base-btn>\n@if (hasIcon) {\n  <div class=\"title title-icon f-xs f-gilroy-regular\">{{ title }}</div>\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BaseBtnLogic } from '../base-btn/base-btn-logic';\n\n@Component({\n  selector: 'lib-hover-btn',\n  templateUrl: './hover-btn.component.html',\n  styleUrls: ['./hover-btn.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class HoverBtnComponent extends BaseBtnLogic {\n  @Input() iconUrl: string = '';\n}\n","<lib-base-btn [disabled]=\"disabled\" [form]=\"form\" [type]=\"type\" [loading$]=\"loading$\">\n  <ng-content></ng-content>\n  <img *ngIf=\"iconUrl\" [src]=\"iconUrl\" alt=\"\" class=\"hover-icon\" />\n</lib-base-btn>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseBtnLogic } from '../base-btn/base-btn-logic';\n\n@Component({\n  selector: 'lib-list-btn',\n  templateUrl: './list-btn.component.html',\n  styleUrls: ['./list-btn.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ListBtnComponent extends BaseBtnLogic {\n  @Input() actionLabel: string = '';\n  @Input() hideActionIcon: boolean = false;\n\n  @Input() override hoverOutline!: boolean;\n  @Input() override disabled!: boolean;\n  @Input() override type: string = 'button';\n  @Input() override form: string = '';\n  @Input() override showArrowIcon!: boolean;\n  @Input() override label!: string;\n  @Input() override loading$!: Observable<boolean>;\n}\n","<lib-base-btn [disabled]=\"disabled\" [form]=\"form\" [showArrowIcon]=\"showArrowIcon\" [hoverOutline]=\"hoverOutline\" [type]=\"type\" [label]=\"label\" [loading$]=\"loading$\">\n  <ng-content></ng-content>\n  <ng-container buttonIconContainer>\n    <span class=\"spacer\" *ngIf=\"actionLabel || !hideActionIcon\"></span>\n    <span *ngIf=\"actionLabel\" class=\"action-label\" [class.action-label-without-arrow]=\"hideActionIcon\">{{ actionLabel }}</span>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"7\" height=\"11\" viewBox=\"0 0 7 11\" fill=\"none\" class=\"menu-button-icon\" *ngIf=\"!hideActionIcon\">\n      <path d=\"M0.950928 9.66406L5.24176 5.37323L0.950928 1.08241\" stroke=\"#F7416E\" stroke-width=\"1.60906\" stroke-linecap=\"round\" />\n    </svg>\n  </ng-container>\n</lib-base-btn>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SectionSeparatorComponent } from '../section-separator/section-separator.component';\nimport { BaseBtnComponent } from './base-btn/base-btn.component';\nimport { BubbleBtnComponent } from './bubble-btn/bubble-btn.component';\nimport { ChipBtnComponent } from './chip-btn/chip-btn.component';\nimport { HoverBtnComponent } from './hover-btn/hover-btn.component';\nimport { IconBtnComponent } from './icon-btn/icon-btn.component';\nimport { ListBtnComponent } from './list-btn/list-btn.component';\nimport { MenuBtnComponent } from './menu-btn/menu-btn.component';\nimport { MenuItemComponent } from './menu-btn/menu-item/menu-item.component';\nimport { PrimaryBtnComponent } from './primary-btn/primary-btn.component';\nimport { SecondaryBtnComponent } from './secondary-btn/secondary-btn.component';\n\nconst components = [\n  BaseBtnComponent,\n  ChipBtnComponent,\n  PrimaryBtnComponent,\n  SecondaryBtnComponent,\n  MenuBtnComponent,\n  IconBtnComponent,\n  ListBtnComponent,\n  HoverBtnComponent,\n  MenuItemComponent,\n  BubbleBtnComponent,\n];\n\n@NgModule({\n  declarations: [...components],\n  imports: [CommonModule, IonicModule, MatRippleModule, MatMenuModule, TranslateModule, MatIconModule, MatTooltipModule, SectionSeparatorComponent],\n  exports: [...components],\n})\nexport class ButtonsModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DashedCheckboxComponent } from './dashed-checkbox.component';\n\n@NgModule({\n  declarations: [DashedCheckboxComponent],\n  imports: [CommonModule],\n  exports: [DashedCheckboxComponent],\n})\nexport class DashedCheckboxModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AbstractControl, UntypedFormArray } from '@angular/forms';\n\n@Pipe({\n  name: 'asFormArray',\n  pure: true,\n  standalone: false,\n})\nexport class AsFormArrayPipe implements PipeTransform {\n  transform(control: AbstractControl | null | undefined): UntypedFormArray {\n    if (control instanceof UntypedFormArray) {\n      return control;\n    }\n    // Return an empty array control if valid cast fails, to prevent template errors\n    return new UntypedFormArray([]);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AbstractControl, FormControl, UntypedFormControl } from '@angular/forms';\n\n@Pipe({\n  name: 'asFormControl',\n  pure: true,\n  standalone: false,\n})\nexport class AsFormControlPipe implements PipeTransform {\n  transform(control: AbstractControl | null | undefined): FormControl | UntypedFormControl {\n    if (control instanceof FormControl || control instanceof UntypedFormControl) {\n      return control;\n    }\n    return new UntypedFormControl();\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'countNonEmptyFields',\n  pure: true,\n  standalone: false,\n})\nexport class CountNonEmptyFieldsPipe implements PipeTransform {\n  transform(records: Record<string, string | null>): number {\n    return Object.values(records).filter(Boolean).length;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { format, isValid, parse, parseISO } from 'date-fns';\n\n@Pipe({\n  name: 'dateLocalization',\n  pure: true,\n  standalone: false,\n})\nexport class DateLocalizationPipe implements PipeTransform {\n  transform(value: string | Date, dateFormat: string): string {\n    if (!value) return '';\n\n    let date: Date | undefined;\n\n    if (value instanceof Date) {\n      if (!isValid(value)) return '';\n      date = value;\n    } else if (typeof value === 'string') {\n      // Try parsing as ISO first (date-fns parseISO is robust for ISO strings)\n      const isoDate = parseISO(value);\n      if (isValid(isoDate)) {\n        date = isoDate;\n      } else {\n        // Fallback: Try parsing with the provided format using reference date (now)\n        const parsed = parse(value, dateFormat, new Date());\n        if (isValid(parsed)) {\n          date = parsed;\n        } else {\n          // One last attempt: try parsing very common manual input formats if dateFormat failed or didn't match\n          // This mimics the loose parsing moment sometimes does, but being safer.\n          // For now, if strict format fails, we return empty string to be safe or try standard constructor\n          const naiveDate = new Date(value);\n          if (isValid(naiveDate)) {\n            date = naiveDate;\n          }\n        }\n      }\n    }\n\n    if (date && isValid(date)) {\n      return format(date, dateFormat);\n    }\n    return '';\n  }\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n  name: 'fallbackTranslate',\n  standalone: false,\n})\n@Injectable({\n  providedIn: 'root',\n})\nexport class FallbackTranslatePipe implements PipeTransform {\n  constructor(private translate: TranslateService) {}\n\n  transform(key: string, fallback: string): string {\n    const translated = this.translate.instant(key);\n    return translated === key ? fallback : translated;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'fieldType',\n  standalone: false,\n})\nexport class FieldTypePipe implements PipeTransform {\n  transform(controlType: string | undefined): string {\n    if (!controlType) return 'text';\n\n    const typeMap: { [key: string]: string } = {\n      SingleSelect: 'select',\n      MultiSelect: 'multiselectdropdown',\n      Number: 'number',\n      Percent: 'percentage',\n      Text: 'text',\n      Date: 'date',\n      Currency: 'currency',\n      Boolean: 'select',\n      AutoComplete: 'autocomplete',\n      AutoCompleteMulti: 'autocompletemulti',\n      MultiField: 'multifield',\n      Image: 'image',\n      Html: 'html',\n    };\n\n    return typeMap[controlType] || 'text';\n  }\n}\n","import { CurrencyPipe, formatNumber } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { IGridColumn } from '../../model/grid-column';\r\nimport { DateLocalizationPipe } from '../date-localization/date-localization.pipe';\r\n\r\n@Pipe({\r\n  name: 'getDisplayValue',\r\n  pure: true,\r\n  standalone: false,\r\n})\r\nexport class GetDisplayValuePipe implements PipeTransform {\r\n  constructor(\r\n    private dateLocalizationPipe: DateLocalizationPipe,\r\n    private currencyPipe: CurrencyPipe,\r\n  ) {}\r\n\r\n  transform(data: any, column: IGridColumn, dateFormat: string, corporateCurrency: string = 'USD'): string {\r\n    if ((typeof data != 'boolean' && !data && data !== 0) || !column) {\r\n      return '';\r\n    }\r\n\r\n    if (column.controlType === 'SingleSelect' || column.controlType === 'MultiSelect') {\r\n      if (Array.isArray(data)) {\r\n        return data.map((value) => column.values?.find((col) => col.Key === value)?.Value)?.join(', ') ?? '';\r\n      }\r\n      return column.values?.find((col) => col.Key === data)?.Value ?? '';\r\n    }\r\n\r\n    if (column.controlType === 'AutoComplete' || column.controlType === 'AutoCompleteMulti' || column.controlType === 'MultiField') {\r\n      if (Array.isArray(data)) {\r\n        return data?.map((kv) => kv?.Value)?.join(', ') ?? '';\r\n      }\r\n      return data?.Value ?? '';\r\n    }\r\n\r\n    if (column.controlType === 'Date') {\r\n      return this.dateLocalizationPipe.transform(data, dateFormat);\r\n    }\r\n\r\n    if (column.controlType === 'Percent') {\r\n      return `${formatNumber(data, 'en-US', '1.0-0')}%`;\r\n    }\r\n\r\n    if (column.controlType === 'Currency') {\r\n      const rounded = Math.round(data);\r\n      if (isNaN(rounded)) return '';\r\n      return this.currencyPipe.transform(rounded, corporateCurrency || 'USD', 'symbol', '1.0-0') ?? '';\r\n    }\r\n\r\n    if (column.controlType === 'Boolean') {\r\n      return data ? 'Yes' : 'No';\r\n    }\r\n\r\n    if (data.en) return data.en;\r\n\r\n    return data.toString();\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FilterOperator } from '../../model/filter-operator';\n\ntype FilterValueType = FilterOperator<any>[][][][];\n\n@Pipe({\n  name: 'getFilterValues',\n  pure: true,\n  standalone: false,\n})\nexport class GetFilterValuesPipe implements PipeTransform {\n  transform(values: FilterValueType, fieldId: number | undefined, operatorId: number | undefined, index: number): FilterOperator<any>[] {\n    if (!values || fieldId === undefined || fieldId < 0 || operatorId === undefined || operatorId < 0) {\n      return [];\n    }\n    return values[fieldId]?.[operatorId]?.[index] || [];\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SelectOption } from '../../model/select-option';\n\n@Pipe({\n  name: 'getMultiSelectDisplayText',\n  pure: true,\n  standalone: false,\n})\nexport class GetMultiSelectDisplayTextPipe implements PipeTransform {\n  transform(formValue: any[], options: SelectOption<any>[]): string {\n    if (Array.isArray(formValue) && formValue?.length > 0) {\n      return formValue.map((value) => options.find((option) => option.value === value)?.label)?.join(', ');\n    } else {\n      return '';\n    }\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'initials',\n  pure: true,\n  standalone: false,\n})\nexport class InitialsPipe implements PipeTransform {\n  transform(fullName: string, numChars: number = 2): string {\n    if (!fullName?.trim()) {\n      return '';\n    }\n    return fullName\n      .trim()\n      .split(/\\s+/)\n      .slice(0, numChars)\n      .map((n) => n.substring(0, 2).toUpperCase())\n      .join('');\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'round',\n  pure: true,\n  standalone: false,\n})\nexport class RoundPipe implements PipeTransform {\n  transform(value: number): number {\n    return Math.round(value);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SelectOption } from '../../model/select-option';\n\n@Pipe({\n  name: 'updateLLMPreference',\n  pure: true,\n  standalone: false,\n})\nexport class UpdateLLMPreferencePipe implements PipeTransform {\n  transform(values: SelectOption<string>[], llmPreferenceLoading: string[]): SelectOption<string>[] {\n    if (!values) {\n      return [];\n    }\n    return values.map((option) => {\n      if (llmPreferenceLoading?.includes(option.value)) {\n        return { ...option, loading: true };\n      } else {\n        return { ...option, loading: false };\n      }\n    });\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AsFormArrayPipe } from './as-form-array/as-form-array.pipe';\nimport { AsFormControlPipe } from './as-form-control/as-form-control.pipe';\nimport { CountNonEmptyFieldsPipe } from './count-non-empty-fields/count-non-empty-fields.pipe';\nimport { DateLocalizationPipe } from './date-localization/date-localization.pipe';\nimport { FallbackTranslatePipe } from './fallback-translate/fallback-translate.pipe';\nimport { FieldTypePipe } from './field-type/field-type.pipe';\nimport { GetDisplayValuePipe } from './get-display-value/get-display-value.pipe';\nimport { GetFilterValuesPipe } from './get-filter-values/get-filter-values.pipe';\nimport { GetMultiSelectDisplayTextPipe } from './get-multi-select-display-text/get-multi-select-display-text.pipe';\nimport { InitialsPipe } from './initials/initials.pipe';\nimport { RoundPipe } from './round/round.pipe';\nimport { UpdateLLMPreferencePipe } from './update-llm-preference/update-llm-preference.pipe';\n\n@NgModule({\n  declarations: [\n    AsFormArrayPipe,\n    AsFormControlPipe,\n    CountNonEmptyFieldsPipe,\n    DateLocalizationPipe,\n    FallbackTranslatePipe,\n    FieldTypePipe,\n    GetDisplayValuePipe,\n    GetFilterValuesPipe,\n    GetMultiSelectDisplayTextPipe,\n    InitialsPipe,\n    RoundPipe,\n    UpdateLLMPreferencePipe,\n  ],\n  imports: [CommonModule],\n  exports: [\n    AsFormArrayPipe,\n    AsFormControlPipe,\n    CountNonEmptyFieldsPipe,\n    DateLocalizationPipe,\n    FallbackTranslatePipe,\n    FieldTypePipe,\n    GetDisplayValuePipe,\n    GetFilterValuesPipe,\n    GetMultiSelectDisplayTextPipe,\n    InitialsPipe,\n    RoundPipe,\n    UpdateLLMPreferencePipe,\n  ],\n  providers: [\n    AsFormArrayPipe,\n    AsFormControlPipe,\n    CountNonEmptyFieldsPipe,\n    DateLocalizationPipe,\n    FallbackTranslatePipe,\n    FieldTypePipe,\n    GetDisplayValuePipe,\n    GetFilterValuesPipe,\n    GetMultiSelectDisplayTextPipe,\n    InitialsPipe,\n    RoundPipe,\n    UpdateLLMPreferencePipe,\n  ],\n})\nexport class PipeModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NavController } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PipeModule } from '../../../pipes/pipe.module';\nimport { IErrorMessageConfig } from './error-message-config.interface';\n\n@Component({\n  selector: 'lib-error-message',\n  standalone: true,\n  imports: [CommonModule, FormsModule, TranslateModule, PipeModule],\n  templateUrl: './error-message.component.html',\n  styleUrls: ['./error-message.component.scss'],\n})\nexport class LibErrorMessageComponent {\n  @ContentChild('customerError') customerErrorTmpl!: TemplateRef<unknown>;\n  @Input() config!: Partial<IErrorMessageConfig>;\n\n  constructor(private navController: NavController) {}\n\n  public navigate(url: string, queryParams = {}): void {\n    this.navController.navigateForward(url, { queryParams });\n  }\n}\n","<div class=\"error-messages\" [class.error-messages-centered]=\"config.centered\">\n  <ng-container *ngIf=\"!customerErrorTmpl && config.control && config.control.errors\">\n    <ng-container [ngSwitch]=\"true\" *ngIf=\"config.control.dirty || config.control.touched\">\n      <p class=\"error\" [class.email-dup]=\"config.control.errors['notUniqueEmail'] || config.control.errors['notUniquePhone']\">\n        @switch (true) {\n          @case (config.control.errors['required']) {\n            {{ config.requiredErrorMessage || 'VALIDATIONS.REQUIRED' | fallbackTranslate: '*Required' }}\n          }\n          @case (!!config.control.errors['invalidEmail']) {\n            {{ 'VALIDATIONS.NOT_VALID_EMAIL' | translate }}\n          }\n          <!-- Fix TS2532 - Add safe navigation for config properties -->\n          @case (config.control.errors['minlength'] && (config.minLength ?? 0) > 0) {\n            {{ 'VALIDATIONS.NOT_VALID_MIN_LENGTH' | translate: { minLength: config.minLength } }}\n          }\n          @case (config.control.errors['maxlength'] && (config.maxLength ?? 0) > 0) {\n            {{ 'VALIDATIONS.NOT_VALID_MAX_LENGTH' | translate: { maxLength: config.maxLength } }}\n          }\n          @case (config.control.errors['min'] && (config.min ?? -1) >= 0) {\n            {{ 'VALIDATIONS.NOT_VALID_MIN' | translate: { min: config.min } }}\n          }\n          @case (config.control.errors['max'] && (config.max ?? 0) > 0) {\n            {{ 'VALIDATIONS.NOT_VALID_MAX' | translate: { max: config.max } }}\n          }\n          @case (config.control.errors['notUniqueEmail']) {\n            <span>{{ 'ERRORS.DUPLICATE_EMAIL' | translate }}</span>\n            <span class=\"login\" *ngIf=\"!config.hideLogin\" (click)=\"navigate('/login', { username: config.control.value })\">\n              {{ 'CLIENT_USER.LOGIN' | translate }} <span> 〉</span>\n            </span>\n          }\n          @case (config.control.errors['notUniquePhone']) {\n            <span> {{ 'ERRORS.PHONE_NUMBER_EXISTS' | translate }} </span>\n            <span class=\"login\" (click)=\"navigate('/login', { username: config.control.value?.['e164Number'] })\">{{ 'CLIENT_USER.LOGIN' | translate }} <span> 〉</span></span>\n          }\n          @case (config.control.errors['notUniqueUsername']) {\n            {{ 'ERRORS.USERNAME_EXISTS' | translate }}\n          }\n          @case (config.control.errors['searching']) {\n            {{ 'VALIDATIONS.SEARCHING' | fallbackTranslate: 'Searching...' }}\n          }\n          @case (config.control.errors['searchError']) {\n            {{ 'VALIDATIONS.SEARCH_ERROR' | fallbackTranslate: 'Error Searching' }}\n          }\n          @case (config.control.errors['invalidField']) {\n            {{ 'VALIDATIONS.INVALID' | fallbackTranslate: 'Invalid' }}\n          }\n        }\n      </p>\n    </ng-container>\n    <p class=\"error\" [ngClass]=\"{ 'free-content': config.freeContent }\">\n      @if (config.customErrorMessage) {\n        {{ config.customErrorMessage }}\n      } @else if (config.control.errors['invalidDateRange']) {\n        {{ 'VALIDATIONS.INVALID_DATE_RANGE' | fallbackTranslate: 'Invalid date range' }}\n      } @else if (config.control.errors['invalidTimeRange']) {\n        {{ 'VALIDATIONS.INVALID_TIME_RANGE' | fallbackTranslate: 'Invalid time' }}\n      }\n    </p>\n  </ng-container>\n  <ng-container *ngIf=\"customerErrorTmpl\" [ngTemplateOutlet]=\"customerErrorTmpl\"></ng-container>\n</div>\n","export enum MapProvider {\n  AWS = 'aws',\n  TRIPADVISOR = 'tripadvisor',\n  GOOGLE = 'google',\n}\n\nexport interface ITripAdvisorSearchResult {\n  data: ITripAdvisorPlace[];\n}\n\nexport interface ITripAdvisorPlace {\n  location_id?: string | number;\n  name: string;\n  address_obj?: {\n    address_string?: string;\n  };\n  latitude?: string | number;\n  longitude?: string | number;\n  web_url?: string;\n  rating?: string | number;\n  photo?: {\n    images?: {\n      thumbnail?: { url?: string };\n    };\n  };\n  category?: { key?: string };\n}\n\nexport interface IMapLibConfig {\n  provider: MapProvider;\n  awsConfig?: {\n    region: string;\n    identityPoolId: string;\n    placeIndexName: string;\n    geocodingIndexName: string;\n  };\n  tripadvisorConfig?: {\n    apiKey: string;\n    apiUrl: string;\n  };\n  googleConfig?: {\n    apiKey: string;\n    apiUrl: string;\n  };\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { LocationClient, SearchPlaceIndexForTextCommand, SearchForTextResult } from '@aws-sdk/client-location';\nimport { Observable, from, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { IPosition } from '../../interfaces/position.interface';\nimport { IMapLibConfig, ITripAdvisorPlace, ITripAdvisorSearchResult, MapProvider } from './interfaces/map-lib-config.interface';\nimport { IPlaceQuery } from './place-query-parameters.model';\nimport { IPlace } from './place.model';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class MapLibService {\n  private readonly http = inject(HttpClient);\n  private config: IMapLibConfig | null = null;\n  private awsLocationClient: LocationClient | null = null;\n\n  /**\n   * Initialize the map-lib service with configuration\n   */\n  public initialize(config: IMapLibConfig): void {\n    this.config = config;\n\n    if (config.provider === MapProvider.AWS && config.awsConfig) {\n      this.awsLocationClient = new LocationClient({\n        region: config.awsConfig.region,\n      });\n    }\n  }\n\n  /**\n   * Get the current map provider\n   */\n  public getProvider(): MapProvider | null {\n    return this.config?.provider || null;\n  }\n\n  /**\n   * Find nearby places using the configured provider (AWS Location Service or TripAdvisor)\n   */\n  public findNearbyPlaces(query: IPlaceQuery): Observable<IPlace[]> {\n    if (!this.config) {\n      throw new Error('MapLibService not initialized. Call initialize() first.');\n    }\n\n    switch (this.config.provider) {\n      case MapProvider.AWS:\n        return this.findNearbyPlacesAWS(query);\n      case MapProvider.TRIPADVISOR:\n        return this.findNearbyPlacesTripAdvisor(query);\n      case MapProvider.GOOGLE:\n      default:\n        // Fallback to Google Maps if configured\n        return of([]);\n    }\n  }\n\n  /**\n   * Get coordinates from address using AWS Location Service\n   */\n  public getCoordinatesFromAddress(address: string): Observable<{ lat: number; lng: number }> {\n    if (!this.config || !this.config.awsConfig) {\n      return of({ lat: 0, lng: 0 });\n    }\n\n    return from(\n      this.awsLocationClient!.send(\n        new SearchPlaceIndexForTextCommand({\n          IndexName: this.config.awsConfig.geocodingIndexName,\n          Text: address,\n          MaxResults: 1,\n        }),\n      ),\n    ).pipe(\n      map((response) => {\n        if (response.Results && response.Results.length > 0) {\n          const result = response.Results[0];\n          const coordinates = result.Place?.Geometry?.Point;\n          if (coordinates) {\n            return {\n              lat: coordinates[1] || 0, // AWS returns [longitude, latitude]\n              lng: coordinates[0] || 0,\n            };\n          }\n        }\n        return { lat: 0, lng: 0 };\n      }),\n      catchError(() => of({ lat: 0, lng: 0 })),\n    );\n  }\n\n  /**\n   * Get address from coordinates using AWS Location Service\n   */\n  public getAddressFromCoordinates(location: IPosition): Observable<string> {\n    if (!this.config || !this.config.awsConfig) {\n      return of('');\n    }\n\n    const locationString = `${location.lat},${location.lng}`;\n    return from(\n      this.awsLocationClient!.send(\n        new SearchPlaceIndexForTextCommand({\n          IndexName: this.config.awsConfig.geocodingIndexName,\n          Text: locationString,\n          MaxResults: 1,\n        }),\n      ),\n    ).pipe(\n      map((response) => {\n        if (response.Results && response.Results.length > 0) {\n          return response.Results[0].Place?.Label || '';\n        }\n        return '';\n      }),\n      catchError(() => of('')),\n    );\n  }\n\n  /**\n   * Find nearby places using AWS Location Service\n   */\n  private findNearbyPlacesAWS(query: IPlaceQuery): Observable<IPlace[]> {\n    if (!this.config?.awsConfig || !this.awsLocationClient) {\n      return of([]);\n    }\n\n    // Build search text based on location and types\n    const searchText = `${query.location.lat},${query.location.lng}`;\n\n    return from(\n      this.awsLocationClient.send(\n        new SearchPlaceIndexForTextCommand({\n          IndexName: this.config.awsConfig.placeIndexName,\n          Text: searchText,\n          MaxResults: 10,\n          FilterCountries: [],\n        }),\n      ),\n    ).pipe(\n      map((response) => {\n        if (!response.Results) {\n          return [];\n        }\n\n        return response.Results.map((result: SearchForTextResult, index: number) => {\n          const place = result.Place;\n          const geometry = place?.Geometry;\n          const coordinates = geometry?.Point;\n          // Generate unique ID from result or use index\n          const placeId = result.Relevance ? `aws_${index}_${result.Relevance}` : `aws_${index}`;\n\n          // Convert AWS result to IPlace model\n          const placeResult: IPlace = {\n            place_id: placeId,\n            name: place?.Label || '',\n            vicinity: place?.Label || '',\n            geometry: {\n              location: {\n                lat: () => coordinates?.[1] || query.location.lat,\n                lng: () => coordinates?.[0] || query.location.lng,\n              },\n            },\n            url: '',\n            rating: 0,\n            icon: '',\n            types: [],\n          };\n\n          return placeResult;\n        });\n      }),\n      catchError(() => of([])),\n    );\n  }\n\n  /**\n   * Find nearby places using TripAdvisor API\n   */\n  private findNearbyPlacesTripAdvisor(query: IPlaceQuery): Observable<IPlace[]> {\n    if (!this.config?.tripadvisorConfig) {\n      return of([]);\n    }\n\n    const { apiKey, apiUrl } = this.config.tripadvisorConfig;\n    const url = `${apiUrl}/search?key=${apiKey}&latLong=${query.location.lat},${query.location.lng}&radius=${query.radius || 5000}`;\n\n    return this.http.get<ITripAdvisorSearchResult>(url).pipe(\n      map((data: ITripAdvisorSearchResult) => {\n        if (!data.data || !Array.isArray(data.data)) {\n          return [];\n        }\n\n        return data.data.map((item: ITripAdvisorPlace, index: number) => {\n          const placeResult: IPlace = {\n            place_id: item.location_id?.toString() || `tripadvisor_${index}`,\n            name: item.name || '',\n            vicinity: item.address_obj?.address_string || '',\n            geometry: {\n              location: {\n                lat: () => parseFloat(String(item.latitude ?? '')) || query.location.lat,\n                lng: () => parseFloat(String(item.longitude ?? '')) || query.location.lng,\n              },\n            },\n            url: item.web_url || '',\n            rating: item.rating ? parseFloat(String(item.rating)) : 0,\n            icon: item.photo?.images?.thumbnail?.url || '',\n            types: item.category?.key ? [item.category.key] : [],\n          };\n\n          return placeResult;\n        });\n      }),\n      catchError(() => of([])),\n    );\n  }\n\n  /**\n   * Get AWS Location Service signer for map tiles\n   * Note: Signer implementation should be done using @aws/amazon-location-utilities-auth-helper\n   * This method returns configuration for signer usage\n   */\n  public getAWSSignerConfig(): { region: string; identityPoolId: string } | null {\n    if (!this.config?.awsConfig) {\n      return null;\n    }\n\n    return {\n      region: this.config.awsConfig.region,\n      identityPoolId: this.config.awsConfig.identityPoolId,\n    };\n  }\n}\n","export enum ToastrSeverity {\n  SUCCESS = 'success',\n  WARNING = 'warning',\n  ERROR = 'error',\n  INFO = 'info',\n}\n","export enum MapActionTypes {\n  MapLoaded = 'map-loaded',\n  MarkerClick = 'marker-click',\n  MarkerUpdated = 'marker-updated',\n  MapsAlertsEvent = 'maps-alerts-event',\n  UpdatedLocations = 'updated-locations',\n  SetMapsSearch = 'set-maps-search',\n  SetDeleteLocationIndex = 'set-delete-location-index',\n  SetEditLocationIndex = 'set-edit-location-index',\n  MapClick = 'map-click',\n  MapCenterChanged = 'map-center-changed',\n}\n","import { IPosition } from '../../interfaces/position.interface';\n\nexport const MAP_CIRCLE_RADIUS_KMS: number = 15000;\nexport const MAP_STYLES: google.maps.MapTypeStyle[] | null = [\n  { elementType: 'geometry', stylers: [{ color: '#242f3e' }] },\n  { elementType: 'labels.text.stroke', stylers: [{ color: '#242f3e' }] },\n  { elementType: 'labels.text.fill', stylers: [{ color: '#746855' }] },\n  {\n    featureType: 'administrative.locality',\n    elementType: 'labels.text.fill',\n    stylers: [{ color: '#d59563' }],\n  },\n  {\n    featureType: 'poi',\n    elementType: 'labels.text.fill',\n    stylers: [{ color: '#d59563' }],\n  },\n  {\n    featureType: 'poi.park',\n    elementType: 'geometry',\n    stylers: [{ color: '#263c3f' }],\n  },\n  {\n    featureType: 'poi.park',\n    elementType: 'labels.text.fill',\n    stylers: [{ color: '#6b9a76' }],\n  },\n  {\n    featureType: 'road',\n    elementType: 'geometry',\n    stylers: [{ color: '#38414e' }],\n  },\n  {\n    featureType: 'road',\n    elementType: 'geometry.stroke',\n    stylers: [{ color: '#212a37' }],\n  },\n  {\n    featureType: 'road',\n    elementType: 'labels.text.fill',\n    stylers: [{ color: '#9ca5b3' }],\n  },\n  {\n    featureType: 'road.highway',\n    elementType: 'geometry',\n    stylers: [{ color: '#746855' }],\n  },\n  {\n    featureType: 'road.highway',\n    elementType: 'geometry.stroke',\n    stylers: [{ color: '#1f2835' }],\n  },\n  {\n    featureType: 'road.highway',\n    elementType: 'labels.text.fill',\n    stylers: [{ color: '#f3d19c' }],\n  },\n  {\n    featureType: 'transit',\n    elementType: 'geometry',\n    stylers: [{ color: '#2f3948' }],\n  },\n  {\n    featureType: 'transit.station',\n    elementType: 'labels.text.fill',\n    stylers: [{ color: '#d59563' }],\n  },\n  {\n    featureType: 'water',\n    elementType: 'geometry',\n    stylers: [{ color: '#17263c' }],\n  },\n  {\n    featureType: 'water',\n    elementType: 'labels.text.fill',\n    stylers: [{ color: '#515c6d' }],\n  },\n  {\n    featureType: 'water',\n    elementType: 'labels.text.stroke',\n    stylers: [{ color: '#17263c' }],\n  },\n];\n\nexport const DEFAULT_POSITION: IPosition = {\n  lat: 0,\n  lng: 0,\n};\n\nexport const DEFAULT_MAP_OPTIONS: google.maps.MapOptions = {\n  minZoom: 2,\n  zoom: 11,\n  styles: MAP_STYLES,\n  fullscreenControl: false,\n  zoomControl: false,\n  keyboardShortcuts: false,\n  panControl: false,\n  disableDefaultUI: true,\n  restriction: {\n    latLngBounds: {\n      north: 85,\n      south: -85,\n      east: 180,\n      west: -180,\n    },\n    strictBounds: true,\n  },\n};\n\nexport const MARKER_OPTIONS: google.maps.MarkerOptions = {\n  draggable: false,\n  clickable: true,\n  optimized: false,\n};\n\nexport const MARKER_OPTIONS_ENABLE_DRAG: google.maps.MarkerOptions = {\n  draggable: true,\n  clickable: true,\n  optimized: false,\n};\n\nexport const CIRCLE_OPTIONS: google.maps.CircleOptions = {\n  draggable: false,\n  editable: true,\n  strokeColor: '#fe3c72',\n  fillColor: '#fe3c72',\n  fillOpacity: 0.07,\n  strokeWeight: 1.5,\n};\n\nexport const MAP_ZOOM_POSITION = {\n  1: 0,\n  2: 0,\n  3: 0,\n  4: 40,\n  5: 20,\n  6: 10,\n  7: 5,\n  8: 2.5,\n  9: 1.25,\n  10: 0.625,\n  11: 0.3125,\n  12: 0.15625,\n  13: 0.078125,\n  14: 0.0390625,\n  15: 0.01953125,\n  16: 0.009765625,\n  17: 0.0048828125,\n  18: 0.00244140625,\n  19: 0.001220703125,\n  20: 0.0006103515625,\n  21: 0.00030517578125,\n  22: 0.000152587890625,\n};\n","// OBSERVATION: MapService is providedIn:'root' (singleton), but LibMapModule.forRoot creates\n// a NEW instance via useFactory. Components outside forRoot modules (e.g. base-registration)\n// inject the root singleton which has googleMapsKey=''. Added guard in loadGoogleApis to skip\n// script injection when key is empty, preventing the ?key=&libraries=places SyntaxError.\nimport { inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { from, Observable, Observer, of, ReplaySubject, Subject } from 'rxjs';\nimport { catchError, concatMap, finalize, map, take, toArray } from 'rxjs/operators';\nimport { IPosition } from '../../interfaces/position.interface';\nimport { IMapMarkerModel } from '../../model/map.marker';\nimport { IMapData } from './interfaces/map-data.interface';\nimport { MapAddressType } from './map-address.type';\nimport { MapLibService } from './map-lib.service';\nimport { MAP_CIRCLE_RADIUS_KMS } from './map.config';\nimport { IPlaceQuery } from './place-query-parameters.model';\nimport { IPlace } from './place.model';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class MapService {\n  private readonly rendererFactory: RendererFactory2 = inject(RendererFactory2);\n  private readonly mapLibService: MapLibService = inject(MapLibService);\n  private googleMapsKey: string = '';\n  private googleMapsURL: string = '';\n  private googleMapsMapId: string = '';\n  private renderer: Renderer2;\n  private scriptElement!: HTMLElement;\n  private _updateLocations$: Subject<IMapData>;\n  private _googleApiLoader$!: ReplaySubject<boolean>;\n  private useMapLib: boolean = false;\n\n  public onUpdateLocations: Observable<IMapData>;\n\n  constructor() {\n    this._updateLocations$ = new Subject();\n    this.onUpdateLocations = this._updateLocations$.asObservable();\n    this.renderer = this.rendererFactory.createRenderer(null, null);\n  }\n\n  /**\n   * Enable map-lib usage (AWS/TripAdvisor) instead of Google Maps\n   */\n  public enableMapLib(): void {\n    this.useMapLib = true;\n  }\n\n  public setGoogleMapsKey(key: string): void {\n    this.googleMapsKey = key;\n  }\n\n  public getGoogleMapsKey(): string {\n    return this.googleMapsKey;\n  }\n\n  public setGoogleMapsURL(url: string): void {\n    this.googleMapsURL = url;\n  }\n\n  public getGoogleMapsURL(): string {\n    return this.googleMapsURL;\n  }\n\n  public setGoogleMapsMapId(mapId: string): void {\n    this.googleMapsMapId = mapId;\n  }\n\n  public getGoogleMapsMapId(): string {\n    return this.googleMapsMapId;\n  }\n\n  public matchesGoogleMapsApiKey(googleMapsAPIKey: string): boolean {\n    return this.googleMapsKey === googleMapsAPIKey;\n  }\n\n  /**\n   * Loads the Google Maps API, optionally reloading if already loaded unless `reloadApi` is set to `false`.\n   *\n   * @param {boolean} [reloadApi=true] - A flag to determine whether to reload the API if it has already been loaded. Defaults to `true`, meaning the API will be unloaded and loaded by default.\n   * @return {Observable<boolean>} - An observable that emits `true` when the API has been successfully loaded.\n   */\n  public loadGoogleApis(reloadApi: boolean = true): Observable<boolean> {\n    if (this._googleApiLoader$) {\n      return this._googleApiLoader$.asObservable();\n    }\n\n    // Skip loading when no API key is configured to avoid broken script injection\n    if (!this.googleMapsKey) {\n      this._googleApiLoader$ = new ReplaySubject<boolean>(1);\n      this._googleApiLoader$.next(false);\n      this._googleApiLoader$.complete();\n      const loader = this._googleApiLoader$;\n      this._googleApiLoader$ = null!;\n      return loader.asObservable();\n    }\n\n    this._googleApiLoader$ = new ReplaySubject<boolean>(1);\n    (reloadApi ? this.unloadGoogleMapApis() : of(true)).pipe(take(1)).subscribe((apiDidUnload) => {\n      // Stop the ritual if there is a failure in unloading the previously loaded Google Maps API to avoid errors\n      if (!apiDidUnload) {\n        this._googleApiLoader$?.error('An error occurred while unloading the Google Maps API');\n        this._googleApiLoader$?.next(false);\n        this._googleApiLoader$?.complete();\n        return;\n      }\n\n      // If window['google'] is not undefined, it indicates that the Google Maps API has already been loaded.\n      if (window?.google) {\n        // Therefore, we skip the ritual for reloading the Google Maps API.\n        this._googleApiLoader$?.next(true);\n        this._googleApiLoader$?.complete();\n        return;\n      } else {\n        // Or, begin the ritual for loading the Google Maps API\n        // loading=async is a URL parameter (not a script attribute) that tells\n        // Google Maps the API is being loaded asynchronously. The `marker` library\n        // is included to enable AdvancedMarkerElement support.\n        this.scriptElement = this.renderer.createElement('script');\n        this.renderer.setAttribute(this.scriptElement, 'src', `${this.googleMapsURL}?key=${this.googleMapsKey}&libraries=places,marker&loading=async`);\n        this.renderer.setAttribute(this.scriptElement, 'async', '');\n        this.renderer.setAttribute(this.scriptElement, 'defer', '');\n        this.renderer.listen(this.scriptElement, 'load', () => {\n          this._googleApiLoader$?.next(true);\n          this._googleApiLoader$?.complete();\n        });\n        this.renderer.listen(this.scriptElement, 'error', () => {\n          this._googleApiLoader$?.error('Google Maps API script failed to load');\n          this._googleApiLoader$?.complete();\n        });\n        this.renderer.appendChild(document.head, this.scriptElement);\n      }\n    });\n    return this._googleApiLoader$.pipe(\n      finalize(() => {\n        this._googleApiLoader$.complete();\n        this._googleApiLoader$ = null!;\n      }),\n    );\n  }\n\n  /**\n   * Unloads the Google Maps API by removing associated script tags from the DOM and clearing the global `google` object.\n   *\n   * @return {Observable<boolean>} - An observable that emits `true` if the Google Maps API was successfully unloaded,\n   * or `false` if the API was not loaded or an error occurred.\n   *\n   * @example\n   * // To unsubscribe from the Google Maps API:\n   * this.unloadGoogleMapApis().subscribe((result) => {\n   *   console.log(result ? 'API unloaded successfully' : 'API unload failure');\n   * });\n   */\n  public unloadGoogleMapApis(): Observable<boolean> {\n    if (this._googleApiLoader$) {\n      // If the API is already being loaded, return 'true'\n      return of(true);\n    }\n    return new Observable((observer) => {\n      try {\n        if (window?.google) {\n          Array.from(document.querySelectorAll('script[src*=\"maps.googleapis.com\"]') || []).forEach((scriptTag) => scriptTag.remove());\n          delete (window as any).google;\n        }\n        observer.next(true);\n      } catch (exception) {\n        observer.error(exception);\n        observer.next(false);\n      }\n      observer.complete();\n    });\n  }\n\n  public buildMapMarker(\n    id: string,\n    icon: string,\n    position: IPosition,\n    radius: number = MAP_CIRCLE_RADIUS_KMS,\n    customClass: string = '#custom_marker',\n    iconWidth: number = 70,\n    iconHeight: number = 70,\n    omitMarkerCircle: boolean = false,\n    anchor: google.maps.Point | { x: number; y: number } | null = null,\n  ): IMapMarkerModel {\n    const imgEl = document.createElement('img');\n    imgEl.src = icon;\n    imgEl.width = iconWidth;\n    imgEl.height = iconHeight;\n    imgEl.style.cursor = 'pointer';\n    imgEl.className = customClass.replace('#', '');\n\n    return {\n      id,\n      position,\n      radius,\n      omitMarkerCircle,\n      content: imgEl,\n      icon: {\n        url: icon + customClass,\n        size: new google.maps.Size(iconWidth, iconHeight),\n        scaledSize: new google.maps.Size(iconWidth, iconHeight),\n        anchor: anchor ? (anchor instanceof google.maps.Point ? anchor : new google.maps.Point(anchor.x, anchor.y)) : undefined,\n      },\n    };\n  }\n\n  public getAddressObject(location: google.maps.LatLngLiteral): Observable<MapAddressType> {\n    return new Observable<MapAddressType>((observer) => {\n      const geocoder = new google.maps.Geocoder();\n      geocoder.geocode({ location }, (results, status) => {\n        if (status === 'OK' && results?.[0]) {\n          const addressComponents = results[0]?.address_components;\n          let streetNumber: string | undefined;\n          let streetName: string | undefined;\n          let town: string | undefined;\n          let city: string | undefined;\n          let state: string | undefined;\n          let country: string | undefined;\n          if (addressComponents) {\n            for (const component of addressComponents) {\n              if (component.types.includes('street_number')) {\n                streetNumber = component.long_name;\n              } else if (component.types.includes('route')) {\n                streetName = component.long_name;\n              } else if (component.types.includes('sublocality')) {\n                town = component.long_name;\n              } else if (component.types.includes('locality')) {\n                city = component.long_name;\n              } else if (component.types.includes('administrative_area_level_1')) {\n                state = component.long_name;\n              } else if (component.types.includes('country')) {\n                country = component.long_name;\n              }\n            }\n          }\n          const mapAddressObject: MapAddressType = { objectAdress: { streetName, streetNumber, town, city, state, country }, formattedAddress: results[0]?.formatted_address };\n          observer.next(mapAddressObject);\n          observer.complete();\n        } else if (status === 'OVER_QUERY_LIMIT') {\n          observer.error(status);\n        } else {\n          observer.error(`Geocoding failed: ${status}`);\n        }\n      });\n    });\n  }\n\n  public getMapAddressString(location: google.maps.LatLngLiteral): Observable<string> {\n    // Use map-lib (AWS/TripAdvisor) if enabled\n    if (this.useMapLib && this.mapLibService.getProvider() !== null) {\n      const position: IPosition = { lat: location.lat, lng: location.lng };\n      return this.mapLibService.getAddressFromCoordinates(position);\n    }\n\n    // Fallback to Google Maps\n    return this.getAddressObject(location).pipe(\n      map(({ objectAdress: { streetNumber, streetName, town, city, state, country }, formattedAddress }: MapAddressType) => {\n        const address: string = [streetNumber, streetName, town, city, state, country].filter((entity) => !!entity).join(', ');\n        return address.match(/[a-zA-Z0-9]+/g) ? address : formattedAddress!;\n      }),\n    );\n  }\n\n  public getBatchAddresses(locations: google.maps.LatLngLiteral[]): Observable<string[]> {\n    const geocoder = new google.maps.Geocoder();\n\n    return from(locations).pipe(\n      concatMap((location) =>\n        new Observable<string>((observer) => {\n          geocoder.geocode({ location }, (results, status) => {\n            if (status === 'OK' && results?.[0]) {\n              const addressComponents = results[0]?.address_components;\n              const address = ['street_number', 'route', 'locality', 'administrative_area_level_1', 'country']\n                .map((type) => addressComponents?.find((component) => component.types.includes(type))?.long_name)\n                .filter((entity) => !!entity)\n                .join(', ');\n              observer.next(address.match(/[a-zA-Z0-9]+/g) ? address : results[0]?.formatted_address!); // Fix: Non-null assertion\n              observer.complete();\n            } else if (status === 'OVER_QUERY_LIMIT') {\n              observer.error(status);\n            } else {\n              observer.error(`Geocoding failed for location: ${location}, status: ${status}`);\n            }\n          });\n        }).pipe(catchError((error) => of(error))),\n      ),\n      toArray(),\n    );\n  }\n\n  public getCoordinatesFromAddress(address: string): Observable<{ lat: number; lng: number }> {\n    // Use map-lib (AWS/TripAdvisor) if enabled\n    if (this.useMapLib && this.mapLibService.getProvider() !== null) {\n      return this.mapLibService.getCoordinatesFromAddress(address);\n    }\n\n    // Fallback to Google Maps\n    const geocoder = new google.maps.Geocoder();\n\n    return new Observable((observer) => {\n      geocoder.geocode({ address }, (response, status) => {\n        if (status === 'OK' && response?.[0]) {\n          const coordinates = response[0].geometry.location;\n          observer.next({ lat: coordinates.lat(), lng: coordinates.lng() });\n          observer.complete();\n        } else if (status === 'OVER_QUERY_LIMIT') {\n          observer.error(status);\n        } else {\n          observer.next({ lat: 0, lng: 0 });\n          observer.complete();\n        }\n      });\n    });\n  }\n\n  public findNearbyPlaces(query: IPlaceQuery): Observable<IPlace[]> {\n    // Use map-lib (AWS/TripAdvisor) if enabled\n    if (this.useMapLib && this.mapLibService.getProvider() !== null) {\n      return this.mapLibService.findNearbyPlaces(query).pipe(\n        map((places) => {\n          // Ensure URL is set for places\n          places.forEach((place) => {\n            if (!place.url && place.place_id) {\n              place.url = place.place_id.startsWith('tripadvisor_')\n                ? `https://www.tripadvisor.com/IPlace/${place.place_id}`\n                : `${this.googleMapsURL}&query=IPlace&query_place_id=${place.place_id}`;\n            }\n          });\n          return places;\n        }),\n        catchError(() => of([])),\n      );\n    }\n\n    // Fallback to Google Maps\n    return new Observable((observer: Observer<IPlace[]>) => {\n      const location = new google.maps.LatLng(query.location.lat, query.location.lng);\n      // TODO: Remove as google.maps.places.TextSearchRequest after upgrading to Angular 18 because the current version's interface doesn't include types definition\n      const request: google.maps.places.TextSearchRequest = { location: location, radius: query.radius, types: query.types } as google.maps.places.TextSearchRequest;\n      const mapObject = new google.maps.Map(document.createElement('div'));\n      const service = new google.maps.places.PlacesService(mapObject);\n\n      // Text seach is better as it allows to search by multiple types\n      service.textSearch(request, (results, status) => {\n        if (status === google.maps.places.PlacesServiceStatus.OK) {\n          const places = results as IPlace[];\n          places.forEach((place) => {\n            place.url = `${this.googleMapsURL}&query=Google&query_place_id=${place.place_id}`;\n          });\n          observer.next(places);\n          observer.complete();\n        } else {\n          observer.error(status);\n        }\n      });\n    });\n  }\n\n  /**\n   * Builds a map marker by the provided index.\n   *\n   * @param {number} index - The index of the marker.\n   * @param {PositionModel} position - The position of the marker.\n   * @param {number} radius - The radius of the marker.\n   * @return {IMapMarkerModel} - The built map marker.\n   */\n  private buildMapMarkerByIndex(index: number, position: IPosition, radius: number): IMapMarkerModel {\n    return this.buildMapMarker(index.toString(), '/assets/images/maps-count/' + index + '.png', position, radius, '#custom_pin_maps');\n  }\n\n  /**\n   * Updates the locations and markers by emitting the provided payload.\n   *\n   * @param {{ locations: string[], markers: IMapMarkerModel[] }} payload - The updated locations and markers.\n   */\n  public updateLocations(payload: IMapData): void {\n    this._updateLocations$.next(payload);\n  }\n\n  /**\n   * Moves a location and its corresponding marker from one index to another.\n   *\n   * @param {number} fromIndex - The current index of the location.\n   * @param {number} toIndex - The target index to move the location to.\n   * @param {string[]} locations - The array of locations.\n   * @param {IMapMarkerModel[]} markers - The array of map markers.\n   */\n  public moveLocation(fromIndex: number, toIndex: number, locations: string[], markers: IMapMarkerModel[]): void {\n    // Check if the locations and markers arrays are of the same length, and if the fromIndex and toIndex are valid.\n    if (\n      !locations ||\n      !markers ||\n      locations.length !== markers.length ||\n      fromIndex === toIndex ||\n      fromIndex < 0 ||\n      fromIndex >= locations.length ||\n      toIndex < 0 ||\n      toIndex >= locations.length\n    ) {\n      return;\n    }\n\n    // Store the location and map marker to be moved using destructuring assignment.\n    const [movedItemLocation, movedItemMapMarker] = [locations[fromIndex], markers[fromIndex]];\n\n    // Create a new locations array excluding the item at fromIndex.\n    const updatedLocationsArray = locations.filter((_, index) => index !== fromIndex);\n\n    // Create a new markers array excluding the item at fromIndex.\n    const updatedMapMarkersArray = markers.filter((_, index) => index !== fromIndex);\n\n    // Rebuild the locations array by inserting the moved location into the new position (toIndex).\n    locations = [\n      ...updatedLocationsArray.slice(0, toIndex), // Add all locations before the toIndex.\n      movedItemLocation, // Insert the moved location.\n      ...updatedLocationsArray.slice(toIndex), // Add all locations after the toIndex.\n    ];\n\n    // Rebuild the markers array by inserting the moved marker into the new position and rebuilding each marker.\n    markers = [\n      ...updatedMapMarkersArray.slice(0, toIndex), // Add all markers before the toIndex.\n      movedItemMapMarker, // Insert the moved marker.\n      ...updatedMapMarkersArray.slice(toIndex), // Add all markers after the toIndex.\n    ].map(({ position, radius }, index) => {\n      // Rebuild each marker by passing its position and radius to buildMapMarkerByIndex.\n      return this.buildMapMarkerByIndex(index + 1, position, radius);\n    });\n\n    // Update the locations and markers by calling a method that applies these new values.\n    this.updateLocations({ locations, markers });\n  }\n\n  /**\n   * Removes a location and its corresponding marker by index.\n   *\n   * @param {number} index - The index of the location to be removed.\n   * @param {string[]} locations - The array of locations.\n   * @param {IMapMarkerModel[]} markers - The array of map markers.\n   */\n  public removeLocation(index: number, locations: string[], markers: IMapMarkerModel[]): void {\n    if (locations.length !== markers.length || index < 0 || index >= locations.length) {\n      return;\n    }\n\n    locations = locations.filter((_, _index) => index !== _index);\n    markers = markers\n      .filter((_, _index) => index !== _index)\n      .map((marker, _index) => {\n        return this.buildMapMarkerByIndex(_index + 1, marker.position, marker.radius);\n      });\n    this.updateLocations({ locations, markers });\n  }\n\n  /**\n   * Adds a new location to the existing set of locations.\n   *\n   * @param {Location} newLocation - The new location to add.\n   * @param {string[]} locations - The array of locations.\n   * @param {IMapMarkerModel[]} markers - The array of map markers.\n   * @return {void}\n   */\n  public addLocation({ address, position }: { address: string; position: google.maps.LatLngLiteral }, locations: string[], markers: IMapMarkerModel[]): void {\n    locations.push(address);\n    const marker = this.buildMapMarkerByIndex(markers.length + 1, position, MAP_CIRCLE_RADIUS_KMS);\n    markers.push(marker);\n    this.updateLocations({ locations, markers });\n  }\n\n  /**\n   * Edits an existing location by updating its address and position.\n   *\n   * @param {Object} updatedLocation - The location to edit.\n   * @param {number} updatedLocation.index - The index of the location to edit.\n   * @param {string} updatedLocation.address - The new address.\n   * @param {google.maps.LatLngLiteral} updatedLocation.position - The new position.\n   * @param {string[]} locations - The array of locations.\n   * @param {IMapMarkerModel[]} markers - The array of map markers.\n   * @return {void}\n   */\n  public editLocation(\n    { index, address, position }: { index: number; address: string; position: google.maps.LatLngLiteral },\n    locations: string[],\n    markers: IMapMarkerModel[],\n  ): void {\n    locations[index] = address;\n    markers[index] = this.buildMapMarkerByIndex(index + 1, position, MAP_CIRCLE_RADIUS_KMS);\n    this.updateLocations({ locations, markers });\n  }\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { GoogleMap, MapCircle } from '@angular/google-maps';\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\n\nimport { Observable } from 'rxjs';\nimport { IPosition } from '../../interfaces/position.interface';\nimport { IMapMarkerModel } from '../../model/map.marker';\nimport { IMapsAlertModel } from '../../model/maps-alert';\nimport { ToastrSeverity } from '../toastr-stack/enums/toastr-severity.enum';\nimport { MapActionTypes } from './enums/map-action-types.enum';\nimport { IMapActionEvent } from './interfaces/map-action-event.interface';\nimport { IMapCircleItem } from './interfaces/map-circle-item.interface';\nimport { CIRCLE_OPTIONS, DEFAULT_MAP_OPTIONS, DEFAULT_POSITION, MAP_CIRCLE_RADIUS_KMS, MAP_ZOOM_POSITION, MARKER_OPTIONS, MARKER_OPTIONS_ENABLE_DRAG } from './map.config';\nimport { MapService } from './map.service';\n\n@Component({\n  selector: 'lib-map',\n  templateUrl: './map.component.html',\n  styleUrls: ['./map.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class LibMapsComponent implements AfterViewInit, OnChanges, OnDestroy, OnInit {\n  @Input() disableNotification: boolean = false;\n  @Input() markers: IMapMarkerModel[] = [];\n  @Input() initialLocation: IPosition = DEFAULT_POSITION;\n  /** Optional override from host apps (template uses `initialLocation` / `mapOptions` for the map widget). */\n  @Input() center: google.maps.LatLngLiteral | google.maps.LatLng | undefined;\n  @Input() options: google.maps.MapOptions | undefined;\n  @Input() mapType: google.maps.MapTypeId | undefined;\n  @Input() enableDrag: boolean = false;\n  @Input() locations: string[] = [];\n  @Input() searchMapsString: string = '';\n  @Input() mapOptions: google.maps.MapOptions = DEFAULT_MAP_OPTIONS;\n  /** Google Cloud map style id; bound to `<google-map [mapId]>`. */\n  @Input() mapId?: string;\n  // config for map-direction renderer options\n  @Input() directions$!: Observable<google.maps.DirectionsResult>;\n  @Input() directionRenderOptions: google.maps.DirectionsRendererOptions = { polylineOptions: { strokeColor: 'green' } };\n\n  @Output() mapActionEvent: EventEmitter<IMapActionEvent> = new EventEmitter<IMapActionEvent>();\n\n  public markerOptions: google.maps.MarkerOptions = MARKER_OPTIONS;\n  public circleOptions: google.maps.CircleOptions = CIRCLE_OPTIONS;\n  public apiLoaded: boolean = false;\n  public editLocationIndex: number | null = null;\n  public deleteLocationIndex: number | null = null;\n  public locationTrack: IPosition = DEFAULT_POSITION;\n  @ViewChild(GoogleMap, { static: false }) map!: GoogleMap;\n  @Input() public zoom: number = DEFAULT_MAP_OPTIONS.zoom!;\n  public editOptionClicked: boolean = false;\n\n  private centerPosition: google.maps.LatLngLiteral = DEFAULT_POSITION;\n  private validatedPosition: google.maps.LatLngLiteral = DEFAULT_POSITION;\n  private mapCircleItem$!: Subject<IMapCircleItem>;\n  private componentDestroyed$!: Subject<void>;\n  private centerChanged$!: Subject<google.maps.LatLngLiteral>;\n\n  constructor(\n    private mapService: MapService,\n    private cdr: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit(): void {\n    this.componentDestroyed$ = new Subject<void>();\n    this.mapCircleItem$ = new Subject<IMapCircleItem>();\n    this.centerChanged$ = new Subject<google.maps.LatLngLiteral>();\n    this.centerChanged$.pipe(takeUntil(this.componentDestroyed$), debounceTime(100)).subscribe((mapCenterChanged: google.maps.LatLngLiteral) => {\n      this.mapActionEvent.emit({ type: MapActionTypes.MapCenterChanged, mapCenterChanged });\n    });\n\n    // The following shall be invoked when host application changes the locations or markers of map component\n    // From host application these values shall be updated\n    this.mapService.onUpdateLocations.pipe(takeUntil(this.componentDestroyed$)).subscribe(({ locations, markers }) => {\n      this.locations = locations;\n      this.markers = markers;\n      this.cdr.detectChanges();\n    });\n  }\n\n  public onPlaceChange(place: google.maps.places.PlaceResult): void {\n    if (place.geometry?.location) {\n      const position = {\n        lat: place.geometry.location.lat(),\n        lng: place.geometry.location.lng(),\n      };\n      this.initialLocation = position.lat && position.lng ? position : DEFAULT_POSITION;\n      this.centerPosition = position.lat && position.lng ? position : DEFAULT_POSITION;\n      this.capturePositionChanges(position);\n      this.initializeMapConfig();\n      this.cdr.detectChanges();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.loadMap();\n    this.mapCircleItem$.pipe(takeUntil(this.componentDestroyed$), debounceTime(20)).subscribe((results) => {\n      this.markerDragEndCircle(results.index, results.circle);\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['enableDrag']) {\n      this.markerOptions = this.enableDrag ? MARKER_OPTIONS_ENABLE_DRAG : MARKER_OPTIONS;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  /**\n   * load & initialize the map\n   *\n   * @private\n   */\n  private loadMap(): void {\n    if (!this.apiLoaded) {\n      this.mapService.loadGoogleApis().subscribe({\n        next: (loaded) => {\n          if (loaded) {\n            this.initializeMapConfig();\n            this.apiLoaded = true;\n            this.cdr.detectChanges();\n            this.mapActionEvent.emit({ type: MapActionTypes.MapLoaded, mapLoaded: this.apiLoaded });\n          }\n        },\n        error: () => {\n          const mapsAlertsEvent: IMapsAlertModel = {\n            title: 'MAP.LOADING_ERROR_TITLE',\n            message: 'MAP.LOADING_ERROR',\n            severity: ToastrSeverity.WARNING,\n          };\n          this.mapActionEvent.emit({ type: MapActionTypes.MapsAlertsEvent, mapsAlertsEvent });\n        },\n      });\n    } else {\n      this.initializeMapConfig();\n      this.mapActionEvent.emit({ type: MapActionTypes.MapLoaded, mapLoaded: this.apiLoaded });\n    }\n  }\n\n  public zoomChanged(maps: GoogleMap): void {\n    const zoomLevel = this.map.getZoom();\n    const zoomOffset = zoomLevel != null && zoomLevel in MAP_ZOOM_POSITION ? MAP_ZOOM_POSITION[zoomLevel as keyof typeof MAP_ZOOM_POSITION] : 0;\n    const lat = this.checkLatPositionBoundary(maps.getCenter()!.lat() + zoomOffset);\n    this.zoom = null!;\n    const lng = maps.getCenter()!.lng();\n    this.centerPosition = {\n      lat: lat ? lat : DEFAULT_POSITION.lat,\n      lng: lng ? lng : DEFAULT_POSITION.lng,\n    };\n  }\n\n  public checkLatPositionBoundary(latPosition: number): number {\n    if (latPosition > 90) return 90;\n    if (latPosition < -90) return -90;\n    return latPosition;\n  }\n\n  /**\n   * configure the map\n   *\n   * @private\n   */\n  private initializeMapConfig(): void {\n    this.mapOptions.center = this.initialLocation;\n    if (this.enableDrag) this.markerOptions = MARKER_OPTIONS_ENABLE_DRAG;\n    this.centerPosition = this.initialLocation;\n    this.locationTrack = this.initialLocation;\n    this.markerOptions.animation = typeof google !== 'undefined' && google.maps?.Animation ? google.maps.Animation.DROP : null;\n  }\n\n  private handleGoogleMapsApiError(error: string) {\n    const title = error === 'OVER_QUERY_LIMIT' ? 'MAP.OVER_QUERY_LIMIT' : 'MAP.LOADING_ERROR_TITLE';\n    const message = error === 'OVER_QUERY_LIMIT' ? 'MAP.OVER_QUERY_LIMIT_MESSAGE' : 'MAP.LOADING_ERROR';\n\n    const mapsAlertsEvent: IMapsAlertModel = {\n      title: title,\n      message: message,\n      severity: ToastrSeverity.WARNING,\n    };\n\n    this.mapActionEvent.emit({ type: MapActionTypes.MapsAlertsEvent, mapsAlertsEvent });\n  }\n\n  public centerChanged(maps: GoogleMap): void {\n    this.zoom = null!; // Fix: Non-null assertion for null assignment\n    if (this.searchMapsString?.length > 0) {\n      this.centerPosition = this.validatedPosition;\n    } else {\n      const lat = maps.getCenter()!.lat(); // Fix: Non-null assertion\n      const lng = maps.getCenter()!.lng(); // Fix: Non-null assertion\n      this.centerPosition = {\n        lat: lat ? lat : DEFAULT_POSITION.lat,\n        lng: lng ? lng : DEFAULT_POSITION.lng,\n      };\n    }\n\n    const mapCenter = maps.getCenter();\n    if (mapCenter) {\n      const mapCenterChanged: google.maps.LatLngLiteral = { lat: mapCenter.lat(), lng: mapCenter.lng() };\n      this.centerChanged$.next(mapCenterChanged);\n    }\n  }\n\n  public adjustLatitude(lat: number, constant: number, addLat = true): number {\n    const adjustmentFactor = Math.cos((lat * Math.PI) / 180);\n    const adjustedDeltaLat = constant * adjustmentFactor;\n    let newLat: number;\n    if (addLat) newLat = lat + adjustedDeltaLat;\n    else newLat = lat - adjustedDeltaLat;\n    return newLat;\n  }\n\n  public radiusChanged(circle: MapCircle, index: number): void {\n    this.markers[index].radius = circle.getRadius()!; // Fix: Non-null assertion\n    if (circle && circle.getRadius()! > MAP_CIRCLE_RADIUS_KMS) {\n      circle.radius = MAP_CIRCLE_RADIUS_KMS;\n      this.markers[index].radius = MAP_CIRCLE_RADIUS_KMS;\n    }\n    if (circle && circle.getRadius()! < 20000) {\n      circle.radius = 20000;\n      this.markers[index].radius = 20000;\n    }\n    // Lock the circle center to the marker pin position so radius-handle drags\n    // (which fire center_changed on the MapCircle) never relocate the circle center.\n    circle.center = this.markers[index].position;\n    // Emit updated markers so the host component stays in sync with current radii.\n    this.mapService.updateLocations({ locations: this.locations, markers: this.markers });\n    this.cdr.detectChanges();\n  }\n\n  public markerDragEnd(index: number, $event: google.maps.MapMouseEvent): void {\n    if (this.enableDrag) {\n      const coords = {\n        lat: $event.latLng!.lat(), // Fix: Non-null assertion\n        lng: $event.latLng!.lng(), // Fix: Non-null assertion\n      };\n      if (this.checkLocationNotExists(coords, index)) {\n        this.markerOptions.animation = null;\n        this.markers[index] = this.mapService.buildMapMarker(\n          (index + 1).toString(),\n          '/assets/images/maps-count/' + (index + 1) + '.png',\n          this.markers[index].position,\n          this.markers[index].radius,\n          '#custom_pin_maps',\n        );\n        this.cdr.detectChanges();\n        this.markerOptions.animation = typeof google !== 'undefined' && google.maps?.Animation ? google.maps.Animation.DROP : null;\n        return;\n      }\n      this.resetEditMarker();\n      this.editLocationIndex = null;\n      this.deleteLocationIndex = null;\n      this.markers[index].position = coords;\n      this.mapActionEvent.emit({ type: MapActionTypes.SetEditLocationIndex, setEditLocationIndex: undefined }); // Fix: Use undefined instead of null\n      this.mapActionEvent.emit({ type: MapActionTypes.SetDeleteLocationIndex, setDeleteLocationIndex: undefined }); // Fix: Use undefined instead of null\n      this.mapActionEvent.emit({ type: MapActionTypes.SetMapsSearch, setMapsSearch: '' });\n      this.mapService.getMapAddressString(this.markers[index].position).subscribe((address) => {\n        this.locations[index] = address;\n        this.mapActionEvent.emit({ type: MapActionTypes.UpdatedLocations, updatedLocations: this.locations });\n        this.cdr.detectChanges();\n      });\n    }\n  }\n\n  public debounceCenterchanged(index: number, circle: MapCircle): void {\n    this.mapCircleItem$.next({\n      index,\n      circle,\n    });\n  }\n\n  public markerDragEndCircle(index: number, circle: MapCircle): void {\n    const coords: google.maps.LatLngLiteral = {\n      lat: circle.getCenter()!.lat(), // Fix: Non-null assertion\n      lng: circle.getCenter()!.lng(), // Fix: Non-null assertion\n    };\n    if (this.enableDrag && (coords.lat !== this.markers[index].position.lat || coords.lng !== this.markers[index].position.lng)) {\n      if (this.checkLocationNotExists(coords, index)) {\n        circle.center = this.markers[index].position;\n        this.cdr.detectChanges();\n        return;\n      }\n      this.markers[index].position = coords;\n      this.resetEditMarker();\n      this.editLocationIndex = null;\n      this.deleteLocationIndex = null;\n      this.mapActionEvent.emit({ type: MapActionTypes.SetEditLocationIndex, setEditLocationIndex: undefined }); // Fix: Use undefined instead of null\n      this.mapActionEvent.emit({ type: MapActionTypes.SetDeleteLocationIndex, setDeleteLocationIndex: undefined }); // Fix: Use undefined instead of null\n      this.mapActionEvent.emit({ type: MapActionTypes.SetMapsSearch, setMapsSearch: '' });\n      this.cdr.detectChanges();\n      this.mapService\n        .getMapAddressString(this.markers[index].position)\n        .pipe(takeUntil(this.componentDestroyed$))\n        .subscribe((address) => {\n          this.locations[index] = address;\n          this.mapActionEvent.emit({ type: MapActionTypes.UpdatedLocations, updatedLocations: this.locations });\n          this.cdr.detectChanges();\n        });\n    }\n  }\n\n  public checkLocationNotExists(obj: google.maps.LatLngLiteral, ignoreIndex: number = -1): boolean {\n    const found = this.markers.some((el, index) => {\n      const latObj = Math.trunc(obj.lat * 100);\n      const lngObj = Math.trunc(obj.lng * 100);\n      const latEl = Math.trunc(el.position.lat * 100);\n      const lngEl = Math.trunc(el.position.lng * 100);\n      const diffLat = Math.abs(latObj - latEl);\n      const diffLng = Math.abs(lngObj - lngEl);\n      return diffLat < 15 && diffLng < 15 && ignoreIndex !== index;\n    });\n    if (found) {\n      const mapAlert = {\n        title: 'MAP.LOCATION_ALREADY_ADDED_TITLE',\n        message: 'MAP.LOCATION_ALREADY_ADDED',\n        severity: ToastrSeverity.WARNING,\n      };\n      this.mapActionEvent.emit({ type: MapActionTypes.MapsAlertsEvent, mapsAlertsEvent: mapAlert });\n      return true;\n    }\n    return false;\n  }\n\n  public drop(event: CdkDragDrop<string[]>): void {\n    moveItemInArray(this.markers, event.previousIndex, event.currentIndex);\n    this.markers = this.markers.map((x, i) =>\n      this.mapService.buildMapMarker((i + 1).toString(), '/assets/images/maps-count/' + (i + 1) + '.png', x.position, x.radius, '#custom_pin_maps'),\n    );\n    moveItemInArray(this.locations, event.previousIndex, event.currentIndex);\n    this.mapActionEvent.emit({ type: MapActionTypes.UpdatedLocations, updatedLocations: this.locations });\n  }\n\n  public resetEditMarker(): void {\n    if (this.editLocationIndex !== null) {\n      this.markers[this.editLocationIndex] = this.mapService.buildMapMarker(\n        (this.editLocationIndex + 1).toString(),\n        '/assets/images/maps-count/' + (this.editLocationIndex + 1) + '.png',\n        this.markers[this.editLocationIndex].position,\n        this.markers[this.editLocationIndex].radius,\n        '#custom_pin_maps',\n      );\n    }\n  }\n\n  public capturePositionChanges(position?: IPosition): void {\n    this.editOptionClicked = false;\n    const address: string = this.searchMapsString;\n    if (position?.lat && position?.lng) {\n      this.validatedPosition = position;\n      return;\n    }\n    if (!address) {\n      this.validatedPosition = { lat: 0, lng: 0 };\n      return;\n    }\n    this.mapService\n      .getCoordinatesFromAddress(address)\n      .pipe(takeUntil(this.componentDestroyed$))\n      .subscribe({\n        next: (coordinates) => {\n          this.validatedPosition = coordinates;\n        },\n        error: (error) => this.handleGoogleMapsApiError(error),\n      });\n  }\n\n  public navigateToItem(index: number): void {\n    this.zoom = DEFAULT_MAP_OPTIONS.zoom!; // Fix: Non-null assertion\n    this.centerPosition = this.markers[index].position;\n    this.mapOptions.center = this.markers[index].position;\n    this.locationTrack = this.markers[index].position;\n    this.cdr.detectChanges();\n  }\n\n  public onMapClick(mapClick: google.maps.MapMouseEvent): void {\n    this.mapActionEvent.emit({ type: MapActionTypes.MapClick, mapClick });\n  }\n\n  public onMarkerClick(markerClick: IMapMarkerModel): void {\n    this.mapActionEvent.emit({ type: MapActionTypes.MarkerClick, markerClick });\n  }\n\n  public centerMap(position?: google.maps.LatLngLiteral) {\n    const center = position || this.initialLocation || this.mapOptions.center;\n    this.map.googleMap?.setCenter(center);\n  }\n}\n","<google-map\n  #maps\n  *ngIf=\"apiLoaded\"\n  [mapTypeId]=\"$any(mapType)\"\n  [options]=\"mapOptions\"\n  [center]=\"initialLocation || mapOptions.center\"\n  [zoom]=\"zoom\"\n  [width]=\"'100%'\"\n  [height]=\"'100%'\"\n  [mapId]=\"mapId\"\n  (centerChanged)=\"centerChanged(maps)\"\n  (zoomChanged)=\"zoomChanged(maps)\"\n  (mapClick)=\"onMapClick($event)\"\n>\n  <!--DIRECTION RENDERER-->\n  <map-directions-renderer *ngIf=\"directions$ | async as directionsRes\" [directions]=\"directionsRes\" [options]=\"directionRenderOptions\"></map-directions-renderer>\n  <ng-container *ngFor=\"let marker of markers; let i = index\">\n    <map-advanced-marker\n      [position]=\"marker.position\"\n      [content]=\"marker.content ?? null\"\n      [gmpDraggable]=\"enableDrag\"\n      (mapClick)=\"onMarkerClick(marker)\"\n      (mapDragend)=\"markerDragEnd(i, $event)\"\n    >\n    </map-advanced-marker>\n    <map-circle\n      #circle=\"mapCircle\"\n      *ngIf=\"markers[i] && markers[i].position && !markers[i].omitMarkerCircle\"\n      [center]=\"markers[i].position\"\n      [options]=\"circleOptions\"\n      [radius]=\"markers[i].radius\"\n      (radiusChanged)=\"radiusChanged(circle, i)\"\n      (centerChanged)=\"debounceCenterchanged(i, circle)\"\n    ></map-circle>\n  </ng-container>\n</google-map>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { GoogleMapsModule, MapAdvancedMarker } from '@angular/google-maps';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ILibMapModuleConfig } from './interfaces/lib-map-module-config.interface';\nimport { MapLibService } from './map-lib.service';\nimport { LibMapsComponent } from './map.component';\nimport { MapService } from './map.service';\n\nexport { ILibMapModuleConfig } from './interfaces/lib-map-module-config.interface';\n\n@NgModule({\n  declarations: [LibMapsComponent],\n  imports: [CommonModule, GoogleMapsModule, MapAdvancedMarker, TranslateModule, DragDropModule],\n  exports: [LibMapsComponent],\n})\nexport class LibMapModule {\n  static forRoot(config: ILibMapModuleConfig): ModuleWithProviders<LibMapModule> {\n    return {\n      ngModule: LibMapModule,\n      providers: [\n        {\n          provide: MapService,\n          useFactory: (mapLibService: MapLibService) => {\n            const mapService = new MapService();\n\n            // Configure map-lib if provided (AWS/TripAdvisor)\n            if (config.mapLibConfig) {\n              mapLibService.initialize(config.mapLibConfig);\n              mapService.enableMapLib();\n            }\n\n            // Fallback to Google Maps if keys are provided\n            if (config.googleMapsKey && config.googleMapsURL) {\n              mapService.setGoogleMapsKey(config.googleMapsKey);\n              mapService.setGoogleMapsURL(config.googleMapsURL);\n            }\n\n            if (config.googleMapsMapId) {\n              mapService.setGoogleMapsMapId(config.googleMapsMapId);\n            }\n\n            return mapService;\n          },\n          deps: [MapLibService],\n        },\n      ],\n    };\n  }\n}\n","export enum ImageFormats {\n  JPG = 'jpg',\n  JPEG = 'jpeg',\n  PNG = 'png',\n  GIF = 'gif',\n  BMP = 'bmp',\n  WEBP = 'webp',\n}\n","export const DATA_PATH_EXTRACTOR_REGEX = /data:([a-zA-Z0-9]+\\/[a-zA-Z0-9]+);/;\n","import { ImageModel } from '../../model/image-model';\n\nexport interface IModalViewState {\n  selectedImageIndex: number;\n  validating: boolean;\n  cropperLoaded: boolean;\n  enableFaceCheck: boolean;\n  enableNsfwCheck: boolean;\n  faceChecker: unknown | null;\n  nsfwChecker: unknown | null;\n  maxNumOfImages: number;\n}\n\nexport function isFooterValid(image: ImageModel | undefined, validating: boolean): boolean {\n  if (!image) return false;\n  return !!image.isSafeForWork && !!image.constainsFace && !validating;\n}\n\nexport function isCloseIlluminated(image: ImageModel | undefined): boolean {\n  if (!image) return false;\n  return (!!image.invalid && !image.deactivated) ?? false;\n}\n\nexport function isNextDisabled(image: ImageModel | undefined, state: Pick<IModalViewState, 'validating' | 'cropperLoaded'>): boolean {\n  if (!image) return true;\n  if (state.validating || !state.cropperLoaded) return true;\n  return (!!image.invalid && !image.deactivated) ?? false;\n}\n\nexport function isControlsDisabled(state: Pick<IModalViewState, 'validating' | 'cropperLoaded'>): boolean {\n  return state.validating || !state.cropperLoaded;\n}\n\nexport function shouldShowSpinner(state: Pick<IModalViewState, 'validating' | 'cropperLoaded'>): boolean {\n  return state.validating || !state.cropperLoaded;\n}\n\nexport function shouldShowValidationErrors(image: ImageModel | undefined, state: Pick<IModalViewState, 'validating' | 'cropperLoaded'>): boolean {\n  if (!image) return false;\n  return !state.validating && state.cropperLoaded;\n}\n\nexport function shouldShowFaceError(image: ImageModel | undefined, state: Pick<IModalViewState, 'enableFaceCheck' | 'faceChecker'>): boolean {\n  if (!image) return false;\n  return !image.constainsFace && state.enableFaceCheck && !!state.faceChecker;\n}\n\nexport function shouldShowNsfwError(image: ImageModel | undefined, state: Pick<IModalViewState, 'enableNsfwCheck' | 'nsfwChecker'>): boolean {\n  if (!image) return false;\n  return !image.isSafeForWork && state.enableNsfwCheck && !!state.nsfwChecker;\n}\n\nexport function showMaxImageWarning(totalImages: number, maxImages: number): boolean {\n  return totalImages > maxImages;\n}\n\nexport function getNavIcon(selectedIndex: number, totalImages: number): string {\n  return selectedIndex === totalImages - 1 ? 'checkmark' : 'navigate_next';\n}\n\nexport function isImageSelected(index: number, selectedIndex: number): boolean {\n  return index === selectedIndex;\n}\n\nexport function isImageDisabledVisual(image: ImageModel | undefined): boolean {\n  if (!image) return false;\n  return !!image.isDark;\n}\n\nexport function isImageDeactivated(image: ImageModel | undefined): boolean {\n  return image?.deactivated ?? false;\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'lib-image-tmplt',\n  templateUrl: './image-tmplt.component.html',\n  styleUrls: ['./image-tmplt.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ImageTmpltComponent {\n  @Input() disabled: boolean = false;\n  @Input() src: string = '';\n}\n","<img *ngIf=\"src; else noImage\" [src]=\"src\" alt=\"\" />\n<ng-template #noImage>\n  <lib-icon-btn class=\"no-image\">\n    <mat-icon>image</mat-icon>\n  </lib-icon-btn>\n</ng-template>\n<svg *ngIf=\"disabled\" class=\"enable-or-disable-icon\" version=\"1.1\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\">\n  <line x1=\"0\" y1=\"0\" x2=\"100%\" y2=\"100%\" stroke-width=\"5\" stroke=\"var(--icon-color)\" />\n  <line x1=\"0\" y1=\"100%\" x2=\"100%\" y2=\"0\" stroke-width=\"5\" stroke=\"var(--icon-color\" />\n</svg>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { NgxImageCompressService } from 'ngx-image-compress';\nimport { CropperPosition, ImageCroppedEvent } from 'ngx-image-cropper';\nimport { Observable, forkJoin } from 'rxjs';\nimport { ICroppedImageModel, ImageCropperModel } from '../../model/image-cropper.models';\nimport { ImageModel } from '../../model/image-model';\nimport { MODAL_DATA } from '../modal/popup-injection-tokens';\nimport { PopupModalService } from '../modal/popup-modal/popup-modal.service';\nimport {\n  isFooterValid,\n  isCloseIlluminated,\n  isNextDisabled,\n  isControlsDisabled,\n  shouldShowSpinner,\n  shouldShowValidationErrors,\n  shouldShowFaceError,\n  shouldShowNsfwError,\n  showMaxImageWarning,\n  getNavIcon,\n  isImageSelected,\n  isImageDisabledVisual,\n  isImageDeactivated,\n} from './image-upload-modal.utils';\n\n// Enumerates a list of actions that can cause the cropped Event to fire\n// 1. firstVisit: First time the image is seen and validated\n// 2. revisite: When the user goes back to an image\n// 3. posRetention: Going back to the image retains its previous cropped position which will inn turn cause imageCropped to fire\nenum ImageUploadActions {\n  firstVisit,\n  revisit,\n  posRetention,\n}\n@Component({\n  selector: 'lib-image-upload-modal',\n  templateUrl: './image-upload-modal.component.html',\n  styleUrls: ['./image-upload-modal.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class ImageUploadModalComponent implements OnInit {\n  @Input() enableFaceCheck: boolean = false;\n  @Input() enableNsfwCheck: boolean = false;\n  @Output() cropped: EventEmitter<ICroppedImageModel[]> = new EventEmitter();\n  @Output() faceChecked: EventEmitter<ICroppedImageModel[]> = new EventEmitter();\n  @Output() sizeChecked: EventEmitter<ICroppedImageModel[]> = new EventEmitter();\n\n  public selectedImageIndex = 0;\n  public currImageIndex = 0;\n  public selectedImageBase64: string = '';\n  public croppedImages: ICroppedImageModel[] = [];\n  public aspectRatio: number = 1;\n  public allImagesCropped: boolean = false;\n  public allImagesValid: boolean = false;\n  public showCropper: boolean = false;\n  public cropperLoaded: boolean = false;\n  public fullImageData: ImageModel[] = [];\n\n  public imageAttributeMap: boolean[] = [];\n  public faceCheckMap: boolean[] = [];\n  public nsfwCheckMap: boolean[] = [];\n\n  public faceChecker: ((image: string) => Observable<boolean>) | null = null;\n  public nsfwChecker: ((image: string) => Observable<boolean>) | null = null;\n  public maxNumOfImages: number = 6;\n\n  public title: string = 'Crop Images';\n  public currentCroppedCoords: CropperPosition = { x1: 0, y1: 0, x2: 0, y2: 0 };\n  public selectedCropCoords: CropperPosition | undefined;\n\n  public validating: boolean = false;\n  public action: ImageUploadActions = ImageUploadActions.firstVisit;\n\n  private readonly twoMB: number = 2097152;\n  private imageCropperdata: ImageCropperModel;\n\n  get currentImage(): ImageModel | undefined {\n    return this.fullImageData[this.selectedImageIndex];\n  }\n\n  private get viewState() {\n    return {\n      selectedImageIndex: this.selectedImageIndex,\n      validating: this.validating,\n      cropperLoaded: this.cropperLoaded,\n      enableFaceCheck: this.enableFaceCheck,\n      enableNsfwCheck: this.enableNsfwCheck,\n      faceChecker: this.faceChecker,\n      nsfwChecker: this.nsfwChecker,\n      maxNumOfImages: this.maxNumOfImages,\n    };\n  }\n\n  get footerValid(): boolean {\n    return isFooterValid(this.currentImage, this.validating);\n  }\n\n  get closeIlluminated(): boolean {\n    return isCloseIlluminated(this.currentImage);\n  }\n\n  get nextBtnDisabled(): boolean {\n    return isNextDisabled(this.currentImage, this.viewState);\n  }\n\n  get controlsDisabled(): boolean {\n    return isControlsDisabled(this.viewState);\n  }\n\n  get showSpinner(): boolean {\n    return shouldShowSpinner(this.viewState);\n  }\n\n  get showValidationErrors(): boolean {\n    return shouldShowValidationErrors(this.currentImage, this.viewState);\n  }\n\n  get showFaceError(): boolean {\n    return shouldShowFaceError(this.currentImage, this.viewState);\n  }\n\n  get showNsfwError(): boolean {\n    return shouldShowNsfwError(this.currentImage, this.viewState);\n  }\n\n  get showMaxWarning(): boolean {\n    return showMaxImageWarning(this.fullImageData.length, this.maxNumOfImages);\n  }\n\n  get navIcon(): string {\n    return getNavIcon(this.selectedImageIndex, this.fullImageData.length);\n  }\n\n  isSelected(index: number): boolean {\n    return isImageSelected(index, this.selectedImageIndex);\n  }\n\n  isDisabledVisual(index: number): boolean {\n    return isImageDisabledVisual(this.fullImageData[index]);\n  }\n\n  isDeactivated(index: number): boolean {\n    return isImageDeactivated(this.fullImageData[index]);\n  }\n\n  // Theming input\n  public imageDeactivationToggleIcon: string = 'assets/icons/close.svg';\n\n  constructor(\n    @Inject(MODAL_DATA) data: ImageCropperModel,\n    private popupModalService: PopupModalService,\n    private imageCompress: NgxImageCompressService,\n    private cdr: ChangeDetectorRef,\n  ) {\n    this.imageCropperdata = data;\n  }\n\n  ngOnInit(): void {\n    if (this.imageCropperdata.faceChecker) this.faceChecker = this.imageCropperdata.faceChecker;\n    if (this.imageCropperdata.nsfwChecker) this.nsfwChecker = this.imageCropperdata.nsfwChecker;\n    this.intImagesCropper(this.imageCropperdata);\n  }\n\n  public onClose(): void {\n    this.popupModalService.hide([]);\n  }\n\n  /**\n   * handle image cropped event\n   * @param event\n   */\n  public imageCropped(event: ImageCroppedEvent): void {\n    if (this.action === ImageUploadActions.revisit) {\n      this.action = ImageUploadActions.firstVisit;\n      return;\n    }\n\n    if (this.action === ImageUploadActions.posRetention) {\n      this.action = ImageUploadActions.firstVisit;\n    }\n\n    if (event.base64) {\n      this.croppedImages[this.selectedImageIndex].image = event.base64;\n    }\n    this.fullImageData[this.selectedImageIndex].croppedCoordinates = { ...event.cropperPosition };\n\n    this.validating = true;\n    this.doNsfwAndFaceCheck();\n  }\n\n  // Check with two functions injected into this component through its data injection to check for the presence of a face in the picture or if NSFW\n  // nsfw validator, validates for nsfw\n  // face validator checks for the presence of a face\n  private doNsfwAndFaceCheck(): void {\n    // validations\n    this.fullImageData[this.selectedImageIndex].moreThan2mb = this.imageSizeValidation();\n    this.fullImageData[this.selectedImageIndex].dupName = this.imageNameValidation() || undefined;\n\n    const observables: Observable<boolean>[] = [];\n\n    //  Face check is enabled and there's a faceChecker function passed to modal\n    if (this.enableFaceCheck && this.faceChecker) {\n      const faceValidationResult = this.faceValidation();\n      if (faceValidationResult) {\n        observables.push(faceValidationResult);\n      }\n    }\n\n    // nsfw check is enabled and there's a faceChecker function passed to modal\n    if (this.enableNsfwCheck && this.nsfwChecker) {\n      const nsfwValidationResult = this.nsfwValidation();\n      if (nsfwValidationResult) {\n        observables.push(nsfwValidationResult);\n      }\n    }\n\n    let invalid = false;\n    // There's at least one of nsfw or faceCheck and all the validation process did not throw and error\n    if (observables.length > 0) {\n      forkJoin(observables).subscribe(\n        (results) => {\n          // check if there was nsfw check and pop out the last result\n          if (this.enableNsfwCheck && this.nsfwChecker) this.fullImageData[this.selectedImageIndex].isSafeForWork = results.pop() || false;\n          invalid = !this.fullImageData[this.selectedImageIndex].isSafeForWork;\n\n          // check if there's validation left\n          if (results.length > 0) {\n            this.fullImageData[this.selectedImageIndex].constainsFace = results.pop() || false;\n            invalid = invalid || !this.fullImageData[this.selectedImageIndex].constainsFace;\n          }\n\n          // reactivate an image that was previously invalid\n          if (!invalid && this.fullImageData[this.selectedImageIndex].deactivated) {\n            this.fullImageData[this.selectedImageIndex].deactivated = false;\n          }\n\n          this.updateValidationResult(invalid);\n        },\n        (err) => {\n          // there was an error in one of the validations\n          invalid = true;\n          this.fullImageData[this.selectedImageIndex].constainsFace = false;\n          this.fullImageData[this.selectedImageIndex].isSafeForWork = false;\n          this.updateValidationResult(invalid);\n        },\n      );\n    } else {\n      this.updateValidationResult(invalid);\n    }\n  }\n\n  public updateValidationResult(invalidity: boolean): void {\n    this.fullImageData[this.selectedImageIndex].invalid = invalidity;\n\n    this.allImagesValid = this.checkAllImagesValid();\n    this.validating = false;\n    this.cdr.detectChanges();\n  }\n\n  /**\n   * on cropper ready\n   */\n  public cropperReady(): void {\n    this.cropperLoaded = true;\n    this.fullImageData[this.selectedImageIndex].isDark = false;\n    const currentImage = this.fullImageData[this.selectedImageIndex];\n    if (currentImage.croppedCoordinates) {\n      this.action = ImageUploadActions.posRetention;\n      this.selectedCropCoords = {\n        x1: currentImage.croppedCoordinates.x1 || 0,\n        y1: currentImage.croppedCoordinates.y1 || 0,\n        x2: currentImage.croppedCoordinates.x2 || 0,\n        y2: currentImage.croppedCoordinates.y2 || 0,\n      };\n    }\n    this.cdr.detectChanges();\n  }\n  /**\n   * on image Loaded\n   */\n  public imageLoaded(): void {\n    this.showCropper = true;\n    this.cdr.detectChanges();\n  }\n\n  /**\n   * select image to display in the image cropper\n   * @param index\n   */\n  public selectImg(index: number): void {\n    this.cropperLoaded = false;\n    const exitingImage = this.fullImageData[this.selectedImageIndex].image;\n    this.selectedImageIndex = index;\n    const firstVisit = this.fullImageData[this.selectedImageIndex].isDark;\n\n    const currentImage = this.fullImageData[this.selectedImageIndex];\n    this.selectedCropCoords = currentImage.croppedCoordinates\n      ? {\n          x1: currentImage.croppedCoordinates.x1 || 0,\n          y1: currentImage.croppedCoordinates.y1 || 0,\n          x2: currentImage.croppedCoordinates.x2 || 0,\n          y2: currentImage.croppedCoordinates.y2 || 0,\n        }\n      : undefined;\n    if (exitingImage === this.fullImageData[this.selectedImageIndex].image) {\n      this.selectedImageBase64 = '';\n      this.cdr.detectChanges();\n    }\n    this.selectedImageBase64 = this.fullImageData[this.selectedImageIndex].image;\n    this.croppedImages[index].cropped = true;\n    this.allImagesCropped = this.croppedImages.filter((image) => image.cropped)?.length === this.croppedImages.length;\n\n    if (firstVisit) this.fullImageData[this.selectedImageIndex].isDark = false;\n    else this.action = ImageUploadActions.revisit;\n\n    this.cdr.detectChanges();\n  }\n\n  /**\n   * on click continue || finish button\n   */\n  public stepNextImage(): void {\n    // Check if current image is valid\n    if (!this.isPassedCheck()) return;\n\n    if (this.fullImageData.length - this.selectedImageIndex < 2) {\n      this.complete();\n      return;\n    }\n    this.selectImg(this.selectedImageIndex + 1);\n  }\n\n  public stepPreviousImage(): void {\n    if (this.selectedImageIndex > 0) this.selectImg(this.selectedImageIndex - 1);\n  }\n\n  public deactivateImage(): void {\n    this.fullImageData[this.selectedImageIndex].deactivated = true;\n\n    if (this.selectedImageIndex < this.fullImageData.length - 1) {\n      this.selectImg(this.selectedImageIndex + 1);\n    }\n  }\n\n  public invalidateAllImages(): void {\n    for (let i = 0; i < this.fullImageData.length; i++) {\n      this.fullImageData[i].isDark = true;\n      this.fullImageData[i].invalid = true;\n    }\n  }\n\n  public complete(): void {\n    if (this.allImagesCropped) {\n      let acceptedImages;\n\n      acceptedImages = this.croppedImages.filter((value, index) => !this.fullImageData[index].invalid && !this.fullImageData[index].deactivated);\n      acceptedImages = acceptedImages.map((value) => value.image);\n\n      acceptedImages = acceptedImages.slice(0, this.maxNumOfImages);\n      this.popupModalService.hide(acceptedImages);\n    }\n  }\n\n  private imageSizeValidation(): boolean {\n    return this.imageCompress.byteCount(this.croppedImages[this.selectedImageIndex].image) > this.twoMB;\n  }\n\n  private imageNameValidation(): string | null {\n    let currIndex = this.selectedImageIndex;\n    const currentImage = this.fullImageData[currIndex];\n    currIndex--;\n    while (currIndex >= 0) {\n      if (currentImage.fileName === this.fullImageData[currIndex].fileName) return currentImage.fileName;\n      currIndex--;\n    }\n\n    return null;\n  }\n\n  private faceValidation(): Observable<boolean> | null {\n    if (this.faceChecker) return this.faceChecker(this.croppedImages[this.selectedImageIndex].image);\n    return null;\n  }\n\n  private nsfwValidation(): Observable<boolean> | null {\n    if (this.nsfwChecker) return this.nsfwChecker(this.croppedImages[this.selectedImageIndex].image);\n    return null;\n  }\n\n  private isPassedCheck(): boolean {\n    if (this.fullImageData[this.selectedImageIndex].deactivated) return true;\n    //  Face check enabled and facecheck result\n    if (this.enableFaceCheck && this.faceChecker && !this.fullImageData[this.selectedImageIndex].constainsFace) return false;\n    // nsfw check enabled and nsfw result\n    if (this.enableNsfwCheck && this.nsfwChecker && !this.fullImageData[this.selectedImageIndex].isSafeForWork) return false;\n    return true;\n  }\n\n  private checkAllImagesValid(): boolean {\n    for (const image of this.fullImageData) {\n      if (!image.constainsFace || !image.isSafeForWork || image.dupName !== null) return false;\n    }\n    return true;\n  }\n\n  /**\n   * initialize the image cropper\n   * @param data\n   * @private\n   */\n  private intImagesCropper(data: ImageCropperModel): void {\n    this.croppedImages = [];\n    this.enableFaceCheck = data.enableFaceCheck ?? false;\n    this.enableNsfwCheck = data.enableNsfwCheck ?? false;\n    this.selectedImageBase64 = data.images ? data.images[0].image : '';\n    this.fullImageData = data.images || [];\n    this.aspectRatio = data.aspectRatio || 1;\n    this.imageDeactivationToggleIcon = data.imageDeactivationToggleIcon || this.imageDeactivationToggleIcon;\n    this.fullImageData.forEach((imageData, index) => this.croppedImages.push({ image: imageData.image, cropped: index === 0 }));\n    this.maxNumOfImages = data.maxNumOfPhotos || 6;\n    this.allImagesCropped = this.fullImageData.length <= 1;\n    this.invalidateAllImages();\n  }\n}\n","<div class=\"image-cropper-container\" *ngIf=\"fullImageData.length\">\n  <lib-icon-btn class=\"btn-close-modal\" [illuminateIcon]=\"false\" (click)=\"onClose()\"><mat-icon>close</mat-icon></lib-icon-btn>\n  <!-- Image Cropper section -->\n  <div class=\"image-cropper-body\">\n    <div class=\"original-images\">\n      <div class=\"title\">{{ 'IMAGE_CROPPER.ORIGINAL' | translate }}</div>\n      <div class=\"image-list\">\n        <lib-image-tmplt\n          [src]=\"img.image\"\n          *ngFor=\"let img of fullImageData; let i = index\"\n          [ngClass]=\"{ selected: isSelected(i), disabled: isDisabledVisual(i) }\"\n          [disabled]=\"isDeactivated(i)\"\n        ></lib-image-tmplt>\n      </div>\n    </div>\n\n    <div class=\"image-sample-container\">\n      <div class=\"cropper\">\n        <image-cropper\n          *ngIf=\"selectedImageBase64\"\n          [style.display]=\"showCropper ? null : 'none'\"\n          [imageBase64]=\"selectedImageBase64\"\n          [imageQuality]=\"80\"\n          [maintainAspectRatio]=\"true\"\n          [aspectRatio]=\"aspectRatio\"\n          [format]=\"'jpeg'\"\n          [output]=\"'base64'\"\n          [cropper]=\"selectedCropCoords\"\n          (imageCropped)=\"imageCropped($event)\"\n          (imageLoaded)=\"imageLoaded()\"\n          (cropperReady)=\"cropperReady()\"\n          #imageCropperRef\n        >\n        </image-cropper>\n      </div>\n      <div class=\"image-info-validation\">\n        <p *ngIf=\"showMaxWarning\" class=\"max-image-warning\">\n          {{ 'IMAGE_CROPPER.YOU_CAN_ONLY_UPLOAD' | translate }} {{ maxNumOfImages }} {{ 'IMAGE_CROPPER.THE_REST_WILL_BE_DISCARDED' | translate }}\n        </p>\n\n        <div class=\"warnings-errors\">\n          <div class=\"warnings\">\n            <p *ngIf=\"currentImage?.moreThan2mb\">{{ 'IMAGE_CROPPER.IMAGES_WILL_TAKE_A_WHILE' | translate }}</p>\n            <p *ngIf=\"currentImage?.dupName\">\n              {{ ('IMAGE_CROPPER.DUPLICATE_IMAGE_NAME' | translate) + currentImage!.dupName + ('IMAGE_CROPPER.PROCEED' | translate) }}\n            </p>\n          </div>\n\n          <div class=\"errors\">\n            @if (showSpinner) {\n              <div style=\"display: flex; justify-content: center; align-items: center\">\n                <ion-spinner color=\"danger\" name=\"dots\"></ion-spinner>\n              </div>\n            }\n            <div *ngIf=\"showValidationErrors\">\n              <p *ngIf=\"showFaceError\">{{ 'IMAGE_CROPPER.FACE_NOT_DETECTED' | translate }}</p>\n              <p *ngIf=\"showNsfwError\">{{ 'IMAGE_CROPPER.CONTENT_POLICY_NOT_MET' | translate }}</p>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class=\"cropped-images\">\n      <div class=\"title\">{{ 'IMAGE_CROPPER.CROPPED' | translate }}</div>\n      <div class=\"image-list\">\n        <lib-image-tmplt\n          *ngFor=\"let img of croppedImages; let i = index\"\n          [src]=\"img.image\"\n          [ngClass]=\"{ selected: isSelected(i), disabled: isDisabledVisual(i) }\"\n          [disabled]=\"isDeactivated(i)\"\n        ></lib-image-tmplt>\n      </div>\n    </div>\n  </div>\n\n  <ng-container>\n    <div class=\"image-cropper-footer\" [ngClass]=\"{ 'img-valid': footerValid }\">\n      <lib-icon-btn [disabled]=\"selectedImageIndex <= 0\" class=\"btn-back\" (click)=\"stepPreviousImage()\">\n        <mat-icon>navigate_before</mat-icon>\n      </lib-icon-btn>\n      <lib-icon-btn class=\"btn-close\" [illuminateIcon]=\"closeIlluminated\" [disabled]=\"controlsDisabled\" (click)=\"deactivateImage()\">\n        <mat-icon>close</mat-icon>\n      </lib-icon-btn>\n      <lib-icon-btn [illuminateIcon]=\"true\" [disabled]=\"nextBtnDisabled\" (click)=\"stepNextImage()\">\n        <mat-icon>{{ navIcon }}</mat-icon>\n      </lib-icon-btn>\n    </div>\n  </ng-container>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ImageCropperModel } from '../../model/image-cropper.models';\nimport { PopupModalService } from '../modal/popup-modal/popup-modal.service';\nimport { ImageUploadModalComponent } from './image-upload-modal.component';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ImageCropperService {\n  constructor(private popupModalService: PopupModalService) {}\n\n  public openImageCropper(data: ImageCropperModel): Observable<string[]> {\n    const modal = this.popupModalService.show(ImageUploadModalComponent, data).afterClose;\n    this.popupModalService.setValues({ customClass: 'image-upload-modal' }); // set a css class for styling only the image-upload-modal's popupModal\n    return modal;\n  }\n}\n","// CAVEAT: NgxImageCompressService.uploadMultipleFiles() has a Chrome \"user activation\" bug.\n// It wraps input.click() inside Promise.resolve().then(), creating a microtask boundary that\n// breaks Chrome's user gesture requirement. The file picker dialog silently never opens.\n// Fix: bypass ngx-image-compress and use a native <input type=\"file\"> ViewChild with\n// synchronous .click(). If this flow stops working, check whether the native input path\n// is still being used (not the ngx-image-compress path). This regression has occurred 3+ times.\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { DOC_ORIENTATION, NgxImageCompressService } from 'ngx-image-compress';\nimport { Observable, catchError, forkJoin, from, map, of, switchMap, take, tap } from 'rxjs';\nimport { ImageFormats } from '../../../enums/image-formats.enum';\nimport { DATA_PATH_EXTRACTOR_REGEX } from '../../../lookups/regexs';\nimport { ImageModel } from '../../../model/image-model';\nimport { ImageCropperService } from '../../image-cropper/image-cropper.service';\n\n@Component({\n  selector: 'lib-image-base',\n  templateUrl: './image-base.component.html',\n  styleUrls: ['./image-base.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class ImageBaseComponent {\n  @Input() imageUrl: string = '';\n  @Input() imageLabel: string = '';\n  @Input() maxNumOfPhotos: number = 0;\n  @Input() minPhotos: number = 0;\n  @Input() loading: boolean = false;\n  @Input() disabled: boolean = false;\n  @Input() enableDelete: boolean = true;\n  /** When true, shows the delete button even if imageUrl hasn't resolved yet (e.g. S3 presign pending) */\n  @Input() hasImage: boolean = false;\n  @Input() enableCropper: boolean = false;\n  @Input() imageFormats: ImageFormats[] = Object.values(ImageFormats);\n  @Input() cropperModalViewRef: ViewContainerRef = null!;\n  @Input() enableCompression: boolean = true;\n  @Input() maxImageSizeInBytes: number = 2097152;\n  @Input() maxImageCompressSizeInBytes: number = 700000;\n  @Input() photoAspectRatio: number = 1;\n  @Input() photos: ImageModel[] = [];\n  @Input() disableUploadOnClick: boolean = false;\n  @Input() faceDetector: (images: string) => Observable<boolean> = () => new Observable<boolean>();\n  @Input() nsfwChecker: (images: string) => Observable<boolean> = () => new Observable<boolean>();\n  @Input() enableNsfwCheck: boolean = false;\n  @Input() enableFaceCheck: boolean = false;\n  @Input() compressRatio: number = 50;\n  @Input() compressQuality: number = 50;\n  /**\n   * When true, allows video uploads (mp4, webm, quicktime); compression is skipped for video.\n   * Overridden on `ImageCardComponent` with `@Input()`.\n   */\n  protected allowVideo: boolean = false;\n\n  @Output() photosUpload: EventEmitter<ImageModel[]> = new EventEmitter();\n  @Output() photoUploadFail: EventEmitter<string> = new EventEmitter<string>();\n  @Output() dupPhotosDetect: EventEmitter<number> = new EventEmitter<number>();\n  @Output() unsupportedFormatsDetect: EventEmitter<string[]> = new EventEmitter<string[]>();\n  @Output() maxUploadLimitExceeded: EventEmitter<null> = new EventEmitter();\n\n  private newImages: ImageModel[] = [];\n\n  constructor(\n    private imageCompressService: NgxImageCompressService,\n    private imageCropperService: ImageCropperService,\n  ) {}\n\n  public onSelectImages(imageFiles: ImageModel[]): void {\n    if (this.loading || this.disabled || imageFiles?.length == 0 || (this.maxNumOfPhotos > 0 && this.photos.length >= this.maxNumOfPhotos)) {\n      return;\n    }\n    imageFiles = this.validateImages(imageFiles);\n    if (imageFiles?.length > 0) {\n      const data = {\n        images: imageFiles,\n        aspectRatio: this.photoAspectRatio,\n        nsfwChecker: this.nsfwChecker,\n        faceChecker: this.faceDetector,\n        enableFaceCheck: this.enableFaceCheck,\n        enableNsfwCheck: this.enableNsfwCheck,\n        maxNumOfPhotos: this.maxNumOfPhotos - this.photos.length,\n      };\n      if (this.enableCropper) {\n        this.imageCropperService\n          .openImageCropper(data)\n          .pipe(\n            take(1),\n            switchMap((croppedImages) => {\n              this.newImages =\n                croppedImages?.map((image, index) => {\n                  return {\n                    image,\n                    fileName: imageFiles[index].fileName,\n                    isDark: true,\n                  };\n                }) || [];\n\n              return this.compressImages();\n            }),\n          )\n          .subscribe();\n      } else {\n        this.newImages = imageFiles;\n        this.compressImages().subscribe();\n      }\n    }\n  }\n\n  private validateImages(images: ImageModel[]): ImageModel[] {\n    // Truncate images array to remove extra images\n    if (this.maxNumOfPhotos > 0 && this.photos?.length >= this.maxNumOfPhotos) {\n      this.maxUploadLimitExceeded.emit();\n      return [];\n    }\n\n    const allowedNoOfImages = this.maxNumOfPhotos > 0 ? this.maxNumOfPhotos - this.photos?.length || 0 : -1;\n    if (allowedNoOfImages > -1 && images.length > allowedNoOfImages) {\n      images = images.slice(0, allowedNoOfImages);\n      this.maxUploadLimitExceeded.emit();\n    }\n\n    const existingFileNames = new Set(this.photos?.map((photo) => photo.fileName));\n    const invalidMimeTypes: string[] = [];\n    let dupeImages = 0;\n\n    const formatPattern = this.imageFormats?.length > 0 ? this.imageFormats.join('|') : '';\n    const regexPattern: RegExp = new RegExp(`\\\\b(${formatPattern})\\\\b`, 'i');\n\n    images = images.filter((file) => {\n      const mimeTypeMatch = file.image.match(DATA_PATH_EXTRACTOR_REGEX);\n      const mimeType = mimeTypeMatch ? mimeTypeMatch[1] : '';\n      let invalidFileType = true;\n\n      const isAllowedVideo = this.allowVideo && !!mimeType && (mimeType === 'video/mp4' || mimeType === 'video/webm' || mimeType === 'video/quicktime');\n\n      if (mimeType && this.imageFormats?.length > 0) {\n        if (isAllowedVideo) {\n          invalidFileType = false;\n        } else {\n          const formatFromMime = mimeType.split('/')[1];\n          invalidFileType = !regexPattern.test(formatFromMime);\n          if (invalidFileType) {\n            invalidMimeTypes.push(mimeType);\n          }\n        }\n      }\n\n      // Check for duplicate images\n      const isDupe = existingFileNames.has(file.fileName);\n      if (isDupe) {\n        dupeImages++;\n      }\n\n      return !(isDupe || invalidFileType);\n    });\n\n    if (dupeImages) {\n      this.dupPhotosDetect.emit(dupeImages);\n    }\n    if (invalidMimeTypes.length) {\n      this.unsupportedFormatsDetect.emit(invalidMimeTypes);\n    }\n\n    return images;\n  }\n\n  protected isVideoDataUrl(url: string): boolean {\n    if (!url) return false;\n    const lower = url.toLowerCase();\n    return lower.startsWith('data:video/') || /\\.(mp4|webm|ogg|mov)(\\?|$)/i.test(lower) || lower.startsWith('blob:');\n  }\n\n  private compressImages(): Observable<ImageModel[]> {\n    if (this.enableCompression) {\n      const compressObservables: Observable<ImageModel>[] = this.newImages.map((imageFile) =>\n        this.isVideoDataUrl(imageFile.image)\n          ? of(imageFile)\n          : this.compressImage(imageFile).pipe(\n              map((compressedImage) => {\n                imageFile.image = compressedImage;\n                return imageFile;\n              }),\n              catchError((err) => {\n                this.photoUploadFail.emit(imageFile.fileName);\n                return of(imageFile);\n              }),\n            ),\n      );\n\n      return forkJoin(compressObservables).pipe(\n        tap((compressedImages: ImageModel[]) => {\n          this.photosUpload.emit(compressedImages);\n        }),\n      );\n    } else {\n      this.photosUpload.emit(this.newImages);\n      return of(this.newImages);\n    }\n  }\n\n  private compressImage(file: ImageModel): Observable<string> {\n    const orientation = file.orientation !== undefined ? file.orientation : DOC_ORIENTATION.Default;\n\n    return from(this.imageCompressService.compressFile(file.image, orientation, this.compressRatio, this.compressQuality)).pipe(\n      switchMap((compressedImage: string) => {\n        if (this.imageCompressService.byteCount(compressedImage) > this.maxImageCompressSizeInBytes) {\n          const imageToCompress: ImageModel = {\n            image: compressedImage,\n            fileName: file.fileName,\n            isDark: true,\n          };\n          return this.compressImage(imageToCompress);\n        }\n\n        return of(compressedImage);\n      }),\n    );\n  }\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { ImageBaseComponent } from './image-base.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n  declarations: [ImageBaseComponent],\n  imports: [CommonModule],\n  exports: [ImageBaseComponent],\n})\nexport class ImageBaseModule {}\n","import { ImageModel } from '../../../model/image-model';\n\nexport interface IFileUploadResult {\n  image: string;\n  fileName: string;\n  orientation: number;\n}\n\nexport interface IImageCardState {\n  loading: boolean;\n  disabled: boolean;\n  imageUrl: string;\n  disableUploadOnClick: boolean;\n}\n\nexport function canOpenFilePicker(state: IImageCardState): boolean {\n  return !state.loading && !state.disabled && !state.imageUrl && !state.disableUploadOnClick;\n}\n\nexport function isVideoFile(file: File): boolean {\n  return file.type.startsWith('video/');\n}\n\nexport function toImageModels(results: IFileUploadResult[]): ImageModel[] {\n  return results.map((r) => ({\n    image: r.image,\n    fileName: r.fileName,\n    orientation: r.orientation,\n    isDark: true,\n  }));\n}\n\nexport function extractFilesFromInput(input: HTMLInputElement): File[] {\n  const files = input.files ? Array.from(input.files) : [];\n  input.value = '';\n  return files;\n}\n","// OBSERVATION (2026-04-15): The <input type=\"file\"> is visually hidden and placed OUTSIDE\n// the container div so it cannot affect flex layout or centering. The container div handles\n// click → selectImages() → fileInput.nativeElement.click(). The lib-icon-btn.add-btn has\n// pointer-events:none so the click reaches the div directly, preserving user-activation.\n//\n// Approaches that FAILED:\n// 1. <label> wrapping a hidden <input> — the <button> inside lib-icon-btn is an interactive\n//    element; per HTML spec, clicking an interactive element inside a <label> does NOT\n//    activate the label's associated input. The button swallows the activation.\n// 2. Transparent input overlay (position:absolute covering card) — native file input has\n//    intrinsic dimensions that push the + icon off-center in flex layout.\n//\n// FileList is a LIVE reference — clearing `input.value = ''` empties the FileList object\n// even if captured before clearing. The fix: copy files into Array.from() BEFORE clearing.\n//\n// All pure logic (guards, file classification, model mapping) is extracted to image-card.utils.ts\n// so it can be tested without a browser or Angular TestBed.\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { DOC_ORIENTATION, NgxImageCompressService } from 'ngx-image-compress';\nimport { ImageCropperService } from '../../image-cropper/image-cropper.service';\nimport { ImageBaseComponent } from '../image-base/image-base.component';\nimport { IFileUploadResult, canOpenFilePicker, extractFilesFromInput, isVideoFile, toImageModels } from './image-card.utils';\n\n@Component({\n  selector: 'lib-image-card',\n  templateUrl: './image-card.component.html',\n  styleUrls: ['./image-card.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class ImageCardComponent extends ImageBaseComponent {\n  @Input() override allowVideo: boolean = false;\n  @Input() enableDrag: boolean = false;\n\n  @ViewChild('fileInput') fileInput?: ElementRef<HTMLInputElement>;\n\n  @Output() removeImage: EventEmitter<void> = new EventEmitter();\n\n  constructor(\n    private imageCompress: NgxImageCompressService,\n    private imageCropper: ImageCropperService,\n    private cdr: ChangeDetectorRef,\n  ) {\n    super(imageCompress, imageCropper);\n  }\n\n  public onRemoveImage(event: Event): void {\n    this.removeImage.emit();\n    event.stopPropagation();\n  }\n\n  public selectImages(): void {\n    if (!canOpenFilePicker(this)) {\n      return;\n    }\n    this.fileInput?.nativeElement?.click();\n  }\n\n  async onFileInputChange(event: Event): Promise<void> {\n    const input = event.target as HTMLInputElement;\n    const files = extractFilesFromInput(input);\n    if (!files.length) {\n      return;\n    }\n\n    const results = await this.processFiles(files);\n    if (!results.length) {\n      return;\n    }\n\n    this.onSelectImages(toImageModels(results));\n    this.cdr.detectChanges();\n  }\n\n  async processFiles(files: File[]): Promise<IFileUploadResult[]> {\n    const results: IFileUploadResult[] = [];\n    for (const file of files) {\n      try {\n        if (isVideoFile(file) && file.size > this.maxImageSizeInBytes) {\n          this.photoUploadFail.emit(file.name);\n          continue;\n        }\n        let orientation = DOC_ORIENTATION.Default;\n        if (!isVideoFile(file)) {\n          try {\n            orientation = await this.imageCompress.getOrientation(file);\n          } catch {\n            orientation = DOC_ORIENTATION.Default;\n          }\n        }\n        const image = await this.readFileAsDataUrl(file);\n        results.push({ image, fileName: file.name, orientation });\n      } catch {\n        // Skip unreadable files\n      }\n    }\n    return results;\n  }\n\n  public override isVideoDataUrl(url: string): boolean {\n    return super.isVideoDataUrl(url);\n  }\n\n  private readFileAsDataUrl(file: File): Promise<string> {\n    return new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.onload = () => resolve(reader.result as string);\n      reader.onerror = () => reject(reader.error);\n      reader.readAsDataURL(file);\n    });\n  }\n}\n","<ng-container>\n  <input\n    #fileInput\n    type=\"file\"\n    class=\"lib-image-card-file-input\"\n    [accept]=\"allowVideo ? 'image/*,video/mp4,video/webm,video/quicktime' : 'image/*'\"\n    [multiple]=\"maxNumOfPhotos === 0 || maxNumOfPhotos > 1\"\n    (change)=\"onFileInputChange($event)\"\n    tabindex=\"-1\"\n    aria-hidden=\"true\"\n  />\n  <div\n    class=\"lib-image-card-container\"\n    (click)=\"selectImages()\"\n    [class.lib-image-card-container-image]=\"imageUrl && !isVideoDataUrl(imageUrl)\"\n    [ngStyle]=\"imageUrl && !isVideoDataUrl(imageUrl) ? { 'background-image': 'url(' + imageUrl + ')' } : {}\"\n  >\n    <video\n      *ngIf=\"imageUrl && isVideoDataUrl(imageUrl)\"\n      [src]=\"imageUrl\"\n      class=\"lib-image-card-video-preview\"\n      preload=\"metadata\"\n      muted\n      playsinline\n      (click)=\"$event.stopPropagation()\"\n    ></video>\n    <lib-icon-btn class=\"add-btn\" *ngIf=\"!imageUrl && !loading\" [disabled]=\"disabled\"><mat-icon>add</mat-icon></lib-icon-btn>\n    <span class=\"lib-image-card-label\" *ngIf=\"imageLabel && imageUrl && !loading\">{{ imageLabel }}</span>\n    <div class=\"lib-image-card-loader\" *ngIf=\"loading\"></div>\n    <div class=\"drag-handle\" *ngIf=\"enableDrag && (imageUrl || hasImage) && !loading && !disabled\">\n      <mat-icon>drag_indicator</mat-icon>\n    </div>\n    <lib-icon-btn class=\"delete-btn\" [disabled]=\"disabled || loading\" *ngIf=\"!loading && (imageUrl || hasImage) && enableDelete\" (click)=\"onRemoveImage($event)\">\n      <mat-icon>delete</mat-icon>\n    </lib-icon-btn>\n  </div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { ButtonsModule } from '../../buttons/buttons.module';\nimport { ImageBaseModule } from '../image-base/image-base.module';\nimport { ImageCardComponent } from './image-card.component';\n\n@NgModule({\n  declarations: [ImageCardComponent],\n  imports: [CommonModule, DragDropModule, MatRippleModule, MatIconModule, ButtonsModule, SkeletonModule, ImageBaseModule],\n  exports: [ImageCardComponent],\n})\nexport class ImageCardModule {}\n","// OBSERVATION: locationSearchFn accepts any (query) => Observable<ILocationSearchResult[]> callback,\n// decoupling this component from AWS/Google/etc. The consumer provides the search implementation.\n// Playwright's pressSequentially/keyboard.type may fail to trigger valueChanges in the Ionic 8.8.3\n// + esbuild dev server; use comp.valueControl.setValue() via evaluate as a workaround.\n// suppressNextSearch prevents the debounced search from re-firing after programmatic setValue on\n// suggestion selection. The 200ms setTimeout in hideSuggestionsDelayed is required so mousedown\n// on a suggestion fires before blur hides the dropdown.\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgxMaskConfig } from 'ngx-mask';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\nimport { first } from 'rxjs/operators';\nimport { ILocationAutocompleteConfig, ILocationCoordinates, ILocationModel, ILocationSearchResult } from '../../model/location.model';\nimport { MapService } from '../map/map.service';\n\n@Component({\n  selector: 'lib-input-field,[lib-input-field]',\n  templateUrl: './input-field.component.html',\n  styleUrls: ['./input-field.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => InputFieldComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class InputFieldComponent<T = string> implements ControlValueAccessor, AfterViewInit, OnDestroy {\n  @Input() name: string = '';\n  @Input() autocomplete: string = '';\n  @Input() label: string = '';\n  @Input() placeholder = ' ';\n  @Input() type: string = 'text';\n  @Input() readonly = false;\n  @Input() focus: boolean = false;\n  @Input() enableGoogleAddress: boolean = false;\n  @Input() locationAutocompleteConfig: ILocationAutocompleteConfig = {};\n  @Input() defaultLocation: ILocationCoordinates | null = null;\n  @Input() mask: string = '';\n  @Input() prefix: string = '';\n  @Input() suffix: string = '';\n  @Input() maxLength: string = '20';\n  @Input() address: string = '';\n  @Input() textarea: boolean = false;\n  @Input() resize: boolean = true;\n  @Input() counter: boolean = false;\n  @Input() patterns: NgxMaskConfig['patterns'] | null = null;\n  @Input() trimWhiteSpace: boolean = true;\n  @Input() disabled: boolean = false;\n  @Input() locationSearchFn: ((query: string) => Observable<ILocationSearchResult[]>) | null = null;\n  @Input() locationSearchDebounce: number = 300;\n  @Input() locationSearchMinLength: number = 3;\n  @Output() mapError: EventEmitter<void> = new EventEmitter<void>();\n  @Output() locationChange: EventEmitter<ILocationModel> = new EventEmitter();\n  @Output() keyDown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n  // eslint-disable-next-line\n  @Output() onBlur: EventEmitter<void> = new EventEmitter<void>();\n\n  @ViewChild('inputFieldRef') inputFieldRef!: ElementRef;\n  public apiLoaded: boolean = false;\n\n  public placeSelected: boolean = false;\n  public locationSuggestions: ILocationSearchResult[] = [];\n  public showSuggestions = false;\n\n  readonly valueControl = new FormControl<string>('', { nonNullable: true });\n\n  private readonly destroyRef = inject(DestroyRef);\n  private searchInput$ = new Subject<string>();\n  private searchSub: Subscription | null = null;\n  private suppressNextSearch = false;\n\n  constructor(\n    private ngZone: NgZone,\n    private cdr: ChangeDetectorRef,\n    private mapService: MapService,\n  ) {\n    this.valueControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((v) => this.onChange(v));\n  }\n\n  public get inputRef(): HTMLInputElement {\n    return this.inputFieldRef.nativeElement;\n  }\n\n  ngAfterViewInit(): void {\n    if (this.locationSearchFn) {\n      this.initLocationSearch();\n    } else if (this.enableGoogleAddress) {\n      this.mapService\n        .loadGoogleApis()\n        .pipe(first())\n        .subscribe({\n          next: () => this.initAutocomplete(),\n          error: () => this.mapError.emit(),\n        });\n    }\n    if (this.focus && this.inputFieldRef) {\n      this.inputFieldRef.nativeElement.focus();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.searchSub?.unsubscribe();\n  }\n\n  public onChange(value: any): void {}\n  public onTouched(touched: boolean): void {}\n\n  writeValue(value: string | T): void {\n    const v = (value ?? '') as string;\n    this.valueControl.setValue(v, { emitEvent: false });\n    this.cdr.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  public touched(touched: boolean): void {\n    this.onTouched(touched);\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    if (isDisabled) {\n      this.valueControl.disable({ emitEvent: false });\n    } else {\n      this.valueControl.enable({ emitEvent: false });\n    }\n    this.disabled = isDisabled;\n    this.cdr.markForCheck();\n  }\n\n  public focused(): void {\n    this.placeSelected = false;\n  }\n\n  public initAutocomplete(): void {\n    // I added the eslint-disable because google throw exception with eslint\n    // eslint-disable-next-line\n    const autocomplete = new google.maps.places.Autocomplete(this.inputFieldRef.nativeElement, this.locationAutocompleteConfig);\n    autocomplete.addListener('place_changed', () => {\n      this.ngZone.run(() => {\n        this.onPlaceChange(autocomplete.getPlace());\n      });\n    });\n    if (this.defaultLocation) {\n      // eslint-disable-next-line\n      const geocoder = new google.maps.Geocoder();\n      // eslint-disable-next-line\n      const latLng = new google.maps.LatLng(this.defaultLocation.lat, this.defaultLocation.lng);\n      geocoder.geocode({ location: latLng }, (results, status) => {\n        if (status === 'OK' && results && results?.length > 0) {\n          results.forEach((result) => {\n            if (result.types && (result.types.indexOf('country') > -1 || result.types.indexOf('political') > -1)) {\n              this.inputFieldRef.nativeElement.value = result.formatted_address;\n            }\n          });\n        }\n      });\n    }\n  }\n\n  // because google throw exception with eslint\n  // eslint-disable-next-line\n  private onPlaceChange(place: google.maps.places.PlaceResult): void {\n    if (place.geometry?.location) {\n      const lng = place.geometry.location.lng();\n      const lat = place.geometry.location.lat();\n      const address = place.formatted_address || '';\n\n      this.locationChange.emit({ coordinates: [lng, lat], address });\n      this.valueControl.setValue(address, { emitEvent: true });\n      this.placeSelected = true;\n      this.touched(true);\n    }\n  }\n\n  public selectLocationSuggestion(suggestion: ILocationSearchResult): void {\n    this.suppressNextSearch = true;\n    this.valueControl.setValue(suggestion.address, { emitEvent: true });\n    this.locationSuggestions = [];\n    this.showSuggestions = false;\n    this.placeSelected = true;\n    this.locationChange.emit({\n      coordinates: [suggestion.lng, suggestion.lat],\n      address: suggestion.address,\n    });\n    this.touched(true);\n    this.cdr.markForCheck();\n  }\n\n  public hideSuggestionsDelayed(): void {\n    setTimeout(() => {\n      this.showSuggestions = false;\n      this.cdr.markForCheck();\n    }, 200);\n  }\n\n  public onLocationKeydown(event: KeyboardEvent): void {\n    if (event.key === 'Enter' && this.locationSuggestions.length > 0) {\n      event.preventDefault();\n      this.selectLocationSuggestion(this.locationSuggestions[0]);\n    }\n  }\n\n  private initLocationSearch(): void {\n    this.searchSub = this.searchInput$\n      .pipe(\n        debounceTime(this.locationSearchDebounce),\n        distinctUntilChanged(),\n        switchMap((query) => {\n          if (this.suppressNextSearch) {\n            this.suppressNextSearch = false;\n            return [];\n          }\n          if (!query || query.length < this.locationSearchMinLength) {\n            this.locationSuggestions = [];\n            this.showSuggestions = false;\n            this.cdr.markForCheck();\n            return [];\n          }\n          return this.locationSearchFn!(query);\n        }),\n      )\n      .subscribe((results: ILocationSearchResult[]) => {\n        this.locationSuggestions = results;\n        this.showSuggestions = results.length > 0;\n        this.cdr.markForCheck();\n      });\n\n    this.valueControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\n      if (this.locationSearchFn) {\n        this.searchInput$.next(value);\n      }\n    });\n  }\n\n  public detectAutofill(event: any): void {\n    this.cdr.detectChanges();\n  }\n\n  //  Events propagated from native html input\n  public onKeyDown(event: KeyboardEvent): void {\n    if (event.code === 'Space' && this.trimWhiteSpace) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n    this.keyDown.emit(event);\n  }\n\n  public onKeyDownTextArea(event: KeyboardEvent): void {\n    if (event.code === 'Enter' && this.trimWhiteSpace) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n    this.keyDown.emit(event);\n  }\n}\n","<div class=\"content-wrapper\" [ngClass]=\"{ 'content-wrapper-textarea': textarea }\">\n  <ng-container *ngIf=\"mask && patterns\" [ngTemplateOutlet]=\"maskedInputWithPatternsTmpl\"></ng-container>\n  <ng-container *ngIf=\"mask && !patterns\" [ngTemplateOutlet]=\"maskedInputTmpl\"></ng-container>\n  <ng-container *ngIf=\"!mask\" [ngTemplateOutlet]=\"nonMaskedInputTmpl\"></ng-container>\n  <textarea\n    type=\"text\"\n    [ngClass]=\"{ 'resize-disabled': !resize }\"\n    *ngIf=\"textarea\"\n    #inputFieldRef\n    [readonly]=\"readonly\"\n    [class]=\"readonly ? 'input-field-readonly' : 'input-field input-field-textarea'\"\n    [attr.name]=\"name || label\"\n    [attr.autocomplete]=\"autocomplete\"\n    [maxlength]=\"maxLength\"\n    [placeholder]=\"placeholder\"\n    [formControl]=\"valueControl\"\n    (blur)=\"touched(true); onBlur.emit()\"\n    (focus)=\"focused()\"\n    (keydown)=\"onKeyDownTextArea($event)\"\n  >\n  </textarea>\n  <div *ngIf=\"counter\" class=\"counter\">{{ valueControl.value.length + ' / ' + maxLength }}</div>\n  <label *ngIf=\"label\" class=\"input-label\" [ngClass]=\"{ 'with-value': valueControl.value }\">{{ label }}</label>\n  <div class=\"error-outline\" [ngClass]=\"{ 'error-outline-textarea': textarea }\"></div>\n</div>\n\n<!--Non-Masked input-->\n<ng-template #nonMaskedInputTmpl>\n  <input\n    *ngIf=\"!textarea\"\n    #inputFieldRef\n    [readonly]=\"readonly\"\n    [class]=\"readonly ? 'input-field-readonly' : 'input-field'\"\n    [type]=\"type\"\n    [attr.name]=\"name || label\"\n    [attr.autocomplete]=\"autocomplete\"\n    [formControl]=\"valueControl\"\n    (blur)=\"touched(true); onBlur.emit()\"\n    (focus)=\"focused()\"\n    [maxlength]=\"maxLength\"\n    [placeholder]=\"placeholder\"\n    (keydown)=\"onKeyDown($event)\"\n  />\n</ng-template>\n\n<!--Masked input without custom patterns (uses ngx-mask defaults)-->\n<ng-template #maskedInputTmpl>\n  <input\n    *ngIf=\"!textarea\"\n    #inputFieldRef\n    [readonly]=\"readonly\"\n    [class]=\"readonly ? 'input-field-readonly' : 'input-field'\"\n    [type]=\"type\"\n    [attr.name]=\"name || label\"\n    [attr.autocomplete]=\"autocomplete\"\n    [formControl]=\"valueControl\"\n    (blur)=\"touched(true); onBlur.emit()\"\n    (focus)=\"focused()\"\n    [mask]=\"mask\"\n    [prefix]=\"prefix\"\n    [suffix]=\"suffix\"\n    [maxlength]=\"maxLength\"\n    [placeholder]=\"placeholder\"\n    (keydown)=\"onKeyDown($event)\"\n  />\n</ng-template>\n\n<!--Masked input with custom patterns-->\n<ng-template #maskedInputWithPatternsTmpl>\n  <input\n    *ngIf=\"!textarea\"\n    #inputFieldRef\n    [readonly]=\"readonly\"\n    [class]=\"readonly ? 'input-field-readonly' : 'input-field'\"\n    [type]=\"type\"\n    [attr.name]=\"name || label\"\n    [attr.autocomplete]=\"autocomplete\"\n    [patterns]=\"patterns!\"\n    [formControl]=\"valueControl\"\n    (blur)=\"touched(true); onBlur.emit()\"\n    (focus)=\"focused()\"\n    [mask]=\"mask\"\n    [prefix]=\"prefix\"\n    [suffix]=\"suffix\"\n    [maxlength]=\"maxLength\"\n    [placeholder]=\"placeholder\"\n    (keydown)=\"onKeyDown($event)\"\n  />\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { GoogleMapsModule } from '@angular/google-maps';\nimport { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { LibMapModule } from '../map/map.module';\nimport { ImageCardModule } from '../photo-upload/image-card/image-card.module';\nimport { InputFieldComponent } from './input-field.component';\n\n@NgModule({\n  declarations: [InputFieldComponent],\n  imports: [CommonModule, ReactiveFormsModule, GoogleMapsModule, NgxMaskDirective, NgxMaskPipe, ImageCardModule, LibMapModule],\n  exports: [InputFieldComponent],\n  providers: [provideNgxMask()],\n})\nexport class InputFieldModule {}\n","import { Directive, ElementRef, OnInit } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n/*\n\"Property 'nativeElement' does not exist on type 'FormControl'\".\n'NativeElementInjectorDirective' injects nativeElement to each control,\nso we can access it from inside validator for example.\nMore about this approach and reasons for this:\nhttps://github.com/angular/angular/issues/18025\nhttps://stackoverflow.com/a/54075119/1617590\n*/\n@Directive({\n  // tslint:disable-next-line: directive-selector\n  selector: '[ngModel], [formControl], [formControlName]',\n  standalone: false,\n})\nexport class NativeElementInjectorDirective implements OnInit {\n  constructor(\n    private controlDir: NgControl,\n    private host: ElementRef<HTMLFormElement>,\n  ) {}\n  ngOnInit() {\n    if (this.controlDir.control) {\n      // @ts-ignore\n      this.controlDir.control['nativeElement'] = this.host.nativeElement;\n    }\n  }\n}\n","/**\n * operations.ts - Contains common operations utility functions.\n *\n * @file This file exports utility functions for common operations.\n */\n\n/**\n * Generates a random string of the specified length.\n *\n * @param {number} [length=10] - The length of the random string to generate. Default is 10.\n * @return {string} A randomly generated string.\n */\nfunction randomString(length: number = 10): string {\n  return Array.from({ length }, () => Math.random().toString(36).charAt(2)).join('');\n}\n\n/**\n * Collection of common operations utility functions.\n */\nexport const CommonOperations = { randomString };\n","export enum ToggleStatuses {\n  Initial = 'initial',\n  MovedRight = 'right',\n  MovedLeft = 'left',\n}\n","export enum ToggleVariants {\n  /**\n   * Basic Variant:\n   * - This is the default toggle variant.\n   * - In this variant, the toggle operates as a simple switch without any additional graphics or labels.\n   * - No images or text will be displayed on the toggle when using this variant.\n   * - The toggle will purely indicate its state (on/off) visually, typically by changing its background color or position.\n   */\n  Basic = 'basic',\n\n  /**\n   * Image Variant:\n   * - In this variant, the toggle button can display images on either side to represent its state.\n   * - The `enable` and `disable` keys in the `IToggleGraphics` interface will define the images that are shown.\n   *\n   * - When the toggle is in the \"off\" state:\n   *   - The image specified in the `enable` key will be shown on the left side of the toggle.\n   *   - The image specified in the `disable` key will be shown on the right side of the toggle.\n   *\n   * - When the toggle is in the \"on\" state:\n   *   - The image specified in the `disable` key will be shown on the left side of the toggle.\n   *   - The image specified in the `enable` key will be shown on the right side of the toggle.\n   *\n   * - This variant is useful when you want to visually represent the toggle's state with icons or other graphics.\n   */\n  Image = 'image',\n\n  /**\n   * Text Variant:\n   * - In this variant, the toggle button can display text labels on either side to represent its state.\n   * - The `enable` and `disable` keys in the `IToggleGraphics` interface will define the text that is shown.\n   *\n   * - When the toggle is in the \"off\" state:\n   *   - The text specified in the `enable` key will be shown on the left side of the toggle.\n   *   - The text specified in the `disable` key will be shown on the right side of the toggle.\n   *\n   * - When the toggle is in the \"on\" state:\n   *   - The text specified in the `disable` key will be shown on the left side of the toggle.\n   *   - The text specified in the `enable` key will be shown on the right side of the toggle.\n   *\n   * - This variant is ideal when you want to provide users with clear, descriptive labels indicating the toggle's current state.\n   */\n  Text = 'text',\n\n  // Multiple Images:\n  //   - In this ToggleVariants, the toggle button can move between multiple images and return selected image's id\n\n  MultipleImages = 'multipleImages',\n}\n","/**\n * OBSERVATION: toggleMultipleOptions() used to silently ignore clicks on the\n * already-selected option (line: `if (index === this.optionId) return`). This\n * meant consumers could never detect a \"re-click\" to implement deselection or\n * disengage behaviors. Added `toggleReselect` @Output that fires when the user\n * clicks the currently active option, enabling parent components to implement\n * toggle-off / disengage without needing dblclick or touchend hacks.\n */\nimport { ChangeDetectorRef, Component, EventEmitter, forwardRef, inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonOperations } from '../../operations/operations';\nimport { ToggleStatuses } from './enums/toggle-status.enum';\nimport { ToggleVariants } from './enums/toggle-variants.enum';\nimport { IToggleCircleMask } from './interfaces/toggle-circle-mask.interface';\nimport { IToggleGraphics } from './interfaces/toggle-graphics.interface';\n\nconst TOGGLE_BUTTON_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => ToggleComponent),\n  multi: true,\n};\n\n@Component({\n  selector: 'lib-toggle',\n  templateUrl: './toggle.component.html',\n  styleUrls: ['./toggle.component.scss'],\n  providers: [TOGGLE_BUTTON_ACCESSOR],\n  standalone: false,\n})\nexport class ToggleComponent implements OnInit, OnDestroy, ControlValueAccessor {\n  private cdr = inject(ChangeDetectorRef);\n  @Input() public disabled: boolean = false;\n\n  @Input()\n  set toggleState(value: boolean | number) {\n    if (this._toggleState !== value) {\n      const previousState = this._toggleState;\n      this._toggleState = value;\n      this.setToggleKnobPosition(value, previousState);\n    }\n  }\n\n  @Input() public variant: ToggleVariants = ToggleVariants.Basic;\n  @Input() public left: IToggleGraphics | null = null;\n  @Input() public right: IToggleGraphics | null = null;\n  @Input() public thumbImg: string = '';\n  @Output() toggleStateChange: EventEmitter<boolean | number> = new EventEmitter<boolean | number>();\n  @Output() toggleReselect: EventEmitter<number> = new EventEmitter<number>();\n\n  public TOGGLE_VARIANT: typeof ToggleVariants = ToggleVariants;\n  public TOGGLE_STATUS: typeof ToggleStatuses = ToggleStatuses;\n\n  public circleMask: IToggleCircleMask | null = null; // This contains the unique 'id' string which will be used for keeping every <mask> element of toggle's svg separate from others\n  public currentToggleStatus: ToggleStatuses = ToggleStatuses.Initial; // This variable is to avoid unexpected animation everytime when toggle appears on a webpage\n  public _toggleState: boolean | number = false;\n\n  private onChange = (state: boolean | number) => {};\n  private onTouched = () => {};\n\n  @Input() public multipleOptions: IToggleGraphics[] = [];\n  protected optionId: number = 0;\n  protected previousOptionId: number = 0;\n\n  private readonly multiOptionAnimationDurationMs: number = 400;\n  private multiOptionAnimationTimeout: ReturnType<typeof setTimeout> | null = null;\n  private multiOptionAnimationFrame: number | null = null;\n\n  ngOnInit(): void {\n    this.circleMask = {\n      primary: CommonOperations.randomString(25),\n      secondary: CommonOperations.randomString(25),\n    };\n    this.currentToggleStatus = ToggleStatuses.Initial;\n    // Set the initial position without animation\n    if (typeof this._toggleState === 'boolean') {\n      this.currentToggleStatus = this._toggleState ? ToggleStatuses.MovedRight : ToggleStatuses.MovedLeft;\n    }\n    this.setToggleKnobPosition(this._toggleState);\n  }\n\n  ngOnDestroy(): void {\n    this.clearMultiOptionAnimationHandlers();\n  }\n\n  writeValue(value: boolean | number): void {\n    if (value === this._toggleState) return;\n    const previousState = this._toggleState;\n    this._toggleState = value;\n    this.setToggleKnobPosition(value, previousState);\n    this.cdr.detectChanges();\n  }\n\n  registerOnChange(fn: (value: boolean | number) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public toggleButtonClick(): void {\n    if (this.disabled) return;\n\n    const newState = !this._toggleState;\n    this.onTouched();\n\n    const previousState = this._toggleState;\n    this._toggleState = newState;\n    this.onChange(newState);\n    this.toggleStateChange.emit(newState);\n    this.setToggleKnobPosition(newState, previousState);\n    this.cdr.detectChanges();\n  }\n\n  /**\n   * Toggles to the specified option index in multiple options mode.\n   * @param index - The index of the option to toggle to\n   */\n  public toggleMultipleOptions(index: number): void {\n    if (this.disabled) return;\n    if (index === this.optionId) {\n      this.toggleReselect.emit(index);\n      return;\n    }\n    this.onTouched();\n\n    const previousState = this._toggleState;\n    this._toggleState = index;\n    this.onChange(index);\n    this.toggleStateChange.emit(index);\n    this.setToggleKnobPosition(index, previousState);\n    this.cdr.detectChanges();\n  }\n\n  /**\n   * Sets the position of the toggle knob based on the provided value.\n   *\n   * @param {boolean} value - The new state of the toggle. `true` represents the \"on\" state, and `false` represents the \"off\" state.\n   *\n   * @remarks\n   * If the toggle is in its initial state (`ToggleStatuses.Initial`) and the provided value\n   * is `false` (i.e., \"off\"), the method prevents the toggle knob from unnecessarily animating\n   * from right to left, maintaining its initial position to avoid unexpected visual behavior.\n   */\n  private setToggleKnobPosition(value: boolean | number, previousState?: boolean | number): void {\n    if (typeof value === 'boolean') {\n      if (this.currentToggleStatus === ToggleStatuses.Initial && !value) {\n        // Set the status to MovedLeft without animation when initially \"off\"\n        this.currentToggleStatus = ToggleStatuses.MovedLeft;\n        return;\n      }\n      const targetStatus = value ? ToggleStatuses.MovedRight : ToggleStatuses.MovedLeft;\n      this.updateCurrentToggleStatus(targetStatus, false);\n      return;\n    }\n\n    if (typeof value !== 'number') {\n      return;\n    }\n\n    const resolvedPreviousIndex = typeof previousState === 'number' ? previousState : this.optionId;\n\n    this.clearMultiOptionAnimationHandlers();\n\n    this.previousOptionId = resolvedPreviousIndex;\n    this.optionId = value;\n\n    if (value === resolvedPreviousIndex) {\n      this.currentToggleStatus = ToggleStatuses.Initial;\n      return;\n    }\n\n    const targetStatus = value > resolvedPreviousIndex ? ToggleStatuses.MovedRight : ToggleStatuses.MovedLeft;\n    const needsReplay = this.currentToggleStatus === targetStatus;\n\n    if (typeof window === 'undefined') {\n      this.currentToggleStatus = targetStatus;\n      this.previousOptionId = this.optionId;\n      return;\n    }\n\n    this.updateCurrentToggleStatus(targetStatus, needsReplay);\n\n    this.multiOptionAnimationTimeout = window.setTimeout(() => {\n      this.previousOptionId = this.optionId;\n      this.multiOptionAnimationTimeout = null;\n      this.cdr.detectChanges();\n    }, this.multiOptionAnimationDurationMs);\n  }\n\n  private updateCurrentToggleStatus(targetStatus: ToggleStatuses, shouldReplay: boolean): void {\n    if (!shouldReplay) {\n      this.currentToggleStatus = targetStatus;\n      return;\n    }\n\n    this.currentToggleStatus = ToggleStatuses.Initial;\n    setTimeout(() => {\n      this.currentToggleStatus = targetStatus;\n      this.cdr.detectChanges();\n    }, 0);\n  }\n\n  private clearMultiOptionAnimationHandlers(): void {\n    if (this.multiOptionAnimationTimeout !== null) {\n      clearTimeout(this.multiOptionAnimationTimeout);\n      this.multiOptionAnimationTimeout = null;\n    }\n\n    if (this.multiOptionAnimationFrame !== null && typeof window !== 'undefined') {\n      clearTimeout(this.multiOptionAnimationFrame);\n      this.multiOptionAnimationFrame = null;\n    }\n  }\n}\n","@if (variant === TOGGLE_VARIANT.MultipleImages) {\n  <div\n    class=\"selectables\"\n    [ngClass]=\"{\n      'lib-toggle-wrapper--disabled': disabled,\n    }\"\n    [style.--selected-index]=\"optionId\"\n    [style.--previous-index]=\"previousOptionId\"\n  >\n    <div\n      class=\"selectables__thumb\"\n      [ngClass]=\"{\n        'selectables__thumb--move-right': currentToggleStatus === TOGGLE_STATUS.MovedRight,\n        'selectables__thumb--move-left': currentToggleStatus === TOGGLE_STATUS.MovedLeft,\n      }\"\n    ></div>\n    @for (item of multipleOptions; track $index) {\n      <div (click)=\"toggleMultipleOptions($index)\" class=\"actions\" [ngClass]=\"{ selected: $index === optionId }\">\n        <img [src]=\"$index === optionId ? item.enable : item.disable\" alt=\"icon\" loading=\"lazy\" width=\"17\" />\n      </div>\n    }\n  </div>\n} @else {\n  <div\n    class=\"lib-toggle-wrapper\"\n    [ngClass]=\"{\n      'lib-toggle-wrapper--active': _toggleState,\n      'lib-toggle-wrapper--inactive': !_toggleState,\n      'lib-toggle-wrapper--disabled': disabled,\n    }\"\n    (click)=\"toggleButtonClick()\"\n  >\n    @if (circleMask) {\n      <svg class=\"lib-toggle-container\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 -0.125 4.5 2.25\" preserveAspectRatio=\"none\">\n        <mask [attr.id]=\"circleMask.primary\">\n          <rect x=\"0\" y=\"0\" width=\"5\" height=\"2\" fill=\"black\"></rect>\n          <ellipse\n            class=\"lib-toggle-container__thumb\"\n            fill=\"white\"\n            [ngClass]=\"{\n              'lib-toggle-container__thumb--move-right': currentToggleStatus === TOGGLE_STATUS.MovedRight,\n              'lib-toggle-container__thumb--move-left': currentToggleStatus === TOGGLE_STATUS.MovedLeft,\n            }\"\n          />\n        </mask>\n        <mask [attr.id]=\"circleMask.secondary\">\n          <rect x=\"0\" y=\"0\" width=\"5\" height=\"2\" fill=\"white\"></rect>\n          <ellipse\n            class=\"lib-toggle-container__thumb\"\n            fill=\"black\"\n            [ngClass]=\"{\n              'lib-toggle-container__thumb--move-right': currentToggleStatus === TOGGLE_STATUS.MovedRight,\n              'lib-toggle-container__thumb--move-left': currentToggleStatus === TOGGLE_STATUS.MovedLeft,\n            }\"\n          />\n        </mask>\n        @if (thumbImg) {\n          <g class=\"lib-toggle-container__thumb-img-wrapper\">\n            <image\n              x=\"0.2\"\n              y=\"0.2\"\n              width=\"1.6\"\n              height=\"1.6\"\n              class=\"lib-toggle-container__thumb-img\"\n              [attr.href]=\"thumbImg\"\n              preserveAspectRatio=\"xMidYMid meet\"\n              [ngClass]=\"{\n                'lib-toggle-container__thumb-img--move-right': currentToggleStatus === TOGGLE_STATUS.MovedRight,\n                'lib-toggle-container__thumb-img--move-left': currentToggleStatus === TOGGLE_STATUS.MovedLeft,\n              }\"\n            />\n          </g>\n        } @else {\n          <ellipse\n            class=\"lib-toggle-container__thumb\"\n            fill=\"var(--knob-color)\"\n            [ngClass]=\"{\n              'lib-toggle-container__thumb--move-right': currentToggleStatus === TOGGLE_STATUS.MovedRight,\n              'lib-toggle-container__thumb--move-left': currentToggleStatus === TOGGLE_STATUS.MovedLeft,\n            }\"\n          />\n        }\n\n        <defs>\n          <clipPath [attr.id]=\"'clip-left-' + circleMask.primary\" clipPathUnits=\"userSpaceOnUse\">\n            <circle cx=\"1\" cy=\"1\" r=\"0.8\" />\n          </clipPath>\n          <clipPath [attr.id]=\"'clip-right-' + circleMask.primary\" clipPathUnits=\"userSpaceOnUse\">\n            <circle cx=\"3.3\" cy=\"1\" r=\"0.8\" />\n          </clipPath>\n          <filter [attr.id]=\"'glow-' + circleMask.primary\">\n            <feGaussianBlur stdDeviation=\"2\" result=\"coloredBlur\" />\n            <feMerge>\n              <feMergeNode in=\"coloredBlur\" />\n              <feMergeNode in=\"SourceGraphic\" />\n            </feMerge>\n          </filter>\n        </defs>\n        @switch (variant) {\n          @case (TOGGLE_VARIANT.Image) {\n            <g class=\"lib-toggle-container__image-variant-group lib-toggle-container__image-variant-group--active\" [attr.mask]=\"'url(#' + circleMask.primary + ')'\">\n              <g class=\"icon-clip-left icon-clip-left--active\" [attr.clip-path]=\"'url(#clip-left-' + circleMask.primary + ')'\">\n                <image *ngIf=\"left?.enable\" x=\"0.2\" y=\"0.2\" width=\"1.6\" height=\"1.6\" [attr.href]=\"left?.enable\" preserveAspectRatio=\"xMidYMid meet\" />\n              </g>\n              <g class=\"icon-clip-right icon-clip-right--active\" [attr.clip-path]=\"'url(#clip-right-' + circleMask.primary + ')'\">\n                <image *ngIf=\"right?.enable\" x=\"2.5\" y=\"0.2\" width=\"1.6\" height=\"1.6\" [attr.href]=\"right?.enable\" preserveAspectRatio=\"xMidYMid meet\" />\n              </g>\n            </g>\n            <g class=\"lib-toggle-container__image-variant-group lib-toggle-container__image-variant-group--inactive\" [attr.mask]=\"'url(#' + circleMask.secondary + ')'\">\n              <g class=\"icon-clip-left icon-clip-left--inactive\" [attr.clip-path]=\"'url(#clip-left-' + circleMask.primary + ')'\">\n                <image *ngIf=\"left?.disable\" x=\"0.2\" y=\"0.2\" width=\"1.6\" height=\"1.6\" [attr.href]=\"left?.disable\" preserveAspectRatio=\"xMidYMid meet\" />\n              </g>\n              <g class=\"icon-clip-right icon-clip-right--inactive\" [attr.clip-path]=\"'url(#clip-right-' + circleMask.primary + ')'\">\n                <image *ngIf=\"right?.disable\" x=\"2.5\" y=\"0.2\" width=\"1.6\" height=\"1.6\" [attr.href]=\"right?.disable\" preserveAspectRatio=\"xMidYMid meet\" />\n              </g>\n            </g>\n          }\n\n          @case (TOGGLE_VARIANT.Text) {\n            <text y=\"1em\" x=\"1.5em\" class=\"lib-toggle-container__graphic-inactive-text\" *ngIf=\"_toggleState\">\n              {{ (left?.enable | translate) || '' }}\n            </text>\n\n            <text y=\"1em\" x=\"4.5em\" class=\"lib-toggle-container__graphic-inactive-text\" *ngIf=\"!_toggleState\">\n              {{ (right?.enable | translate) || '' }}\n            </text>\n          }\n        }\n      </svg>\n    }\n  </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ToggleComponent } from './toggle.component';\n\n@NgModule({\n  declarations: [ToggleComponent],\n  imports: [CommonModule, FormsModule, TranslateModule],\n  exports: [ToggleComponent],\n})\nexport class ToggleModule {}\n","import { Component, Input } from '@angular/core';\nimport { TelInputComponent } from '../tel-input.component';\n\n@Component({\n  selector: 'lib-tel-errors',\n  templateUrl: './tel-errors.component.html',\n  standalone: false,\n})\nexport class TelErrorsComponent {\n  @Input() phoneNumberComponent!: TelInputComponent;\n}\n","<p class=\"error\" [ngSwitch]=\"phoneNumberComponent.freeInputMode\">\n  <ng-container *ngSwitchCase=\"false\">\n    {{ 'PHONE_NUM_ERROR.DOES_NOT_SEEM_RIGHT' | translate }}\n    <a [href]=\"'https://countrycode.org/' + phoneNumberComponent.selectedCountry.iso2.toLowerCase() + '#collapseNationalCodes'\" target=\"_blank\">\n      {{ 'PHONE_NUM_ERROR.HERE' | translate }}\n    </a>\n    <br />\n    <span>\n      {{ 'PHONE_NUM_ERROR.ADD_PHONE_MANUALLY' | translate }}\n      <a class=\"text-underline\" (click)=\"phoneNumberComponent.toggleFreeInputMode(); phoneNumberComponent.focusPhoneField()\"> {{ 'PHONE_NUM_ERROR.HERE' | translate }}</a>\n    </span>\n  </ng-container>\n  <ng-container *ngSwitchCase=\"true\">\n    {{ 'PHONE_NUM_ERROR.ADD_PHONE_USING_GUIDE' | translate }}\n    <a class=\"text-underline\" (click)=\"phoneNumberComponent.toggleFreeInputMode(); phoneNumberComponent.focusPhoneField()\">\n      {{ 'PHONE_NUM_ERROR.HERE' | translate }}\n    </a>\n  </ng-container>\n</p>\n","export enum CountryISO {\n  Afghanistan = 'af',\n  Albania = 'al',\n  Algeria = 'dz',\n  AmericanSamoa = 'as',\n  Andorra = 'ad',\n  Angola = 'ao',\n  Anguilla = 'ai',\n  AntiguaAndBarbuda = 'ag',\n  Argentina = 'ar',\n  Armenia = 'am',\n  Aruba = 'aw',\n  Australia = 'au',\n  Austria = 'at',\n  Azerbaijan = 'az',\n  Bahamas = 'bs',\n  Bahrain = 'bh',\n  Bangladesh = 'bd',\n  Barbados = 'bb',\n  Belarus = 'by',\n  Belgium = 'be',\n  Belize = 'bz',\n  Benin = 'bj',\n  Bermuda = 'bm',\n  Bhutan = 'bt',\n  Bolivia = 'bo',\n  BosniaAndHerzegovina = 'ba',\n  Botswana = 'bw',\n  Brazil = 'br',\n  BritishIndianOceanTerritory = 'io',\n  BritishVirginIslands = 'vg',\n  Brunei = 'bn',\n  Bulgaria = 'bg',\n  BurkinaFaso = 'bf',\n  Burundi = 'bi',\n  Cambodia = 'kh',\n  Cameroon = 'cm',\n  Canada = 'ca',\n  CapeVerde = 'cv',\n  CaribbeanNetherlands = 'bq',\n  CaymanIslands = 'ky',\n  CentralAfricanRepublic = 'cf',\n  Chad = 'td',\n  Chile = 'cl',\n  China = 'cn',\n  ChristmasIsland = 'cx',\n  Cocos = 'cc',\n  Colombia = 'co',\n  Comoros = 'km',\n  CongoDRCJamhuriYaKidemokrasiaYaKongo = 'cd',\n  CongoRepublicCongoBrazzaville = 'cg',\n  CookIslands = 'ck',\n  CostaRica = 'cr',\n  CôteDIvoire = 'ci',\n  Croatia = 'hr',\n  Cuba = 'cu',\n  Curaçao = 'cw',\n  Cyprus = 'cy',\n  CzechRepublic = 'cz',\n  Denmark = 'dk',\n  Djibouti = 'dj',\n  Dominica = 'dm',\n  DominicanRepublic = 'do',\n  Ecuador = 'ec',\n  Egypt = 'eg',\n  ElSalvador = 'sv',\n  EquatorialGuinea = 'gq',\n  Eritrea = 'er',\n  Estonia = 'ee',\n  Ethiopia = 'et',\n  FalklandIslands = 'fk',\n  FaroeIslands = 'fo',\n  Fiji = 'fj',\n  Finland = 'fi',\n  France = 'fr',\n  FrenchGuiana = 'gf',\n  FrenchPolynesia = 'pf',\n  Gabon = 'ga',\n  Gambia = 'gm',\n  Georgia = 'ge',\n  Germany = 'de',\n  Ghana = 'gh',\n  Gibraltar = 'gi',\n  Greece = 'gr',\n  Greenland = 'gl',\n  Grenada = 'gd',\n  Guadeloupe = 'gp',\n  Guam = 'gu',\n  Guatemala = 'gt',\n  Guernsey = 'gg',\n  Guinea = 'gn',\n  GuineaBissau = 'gw',\n  Guyana = 'gy',\n  Haiti = 'ht',\n  Honduras = 'hn',\n  HongKong = 'hk',\n  Hungary = 'hu',\n  Iceland = 'is',\n  India = 'in',\n  Indonesia = 'id',\n  Iran = 'ir',\n  Iraq = 'iq',\n  Ireland = 'ie',\n  IsleOfMan = 'im',\n  Israel = 'il',\n  Italy = 'it',\n  Jamaica = 'jm',\n  Japan = 'jp',\n  Jersey = 'je',\n  Jordan = 'jo',\n  Kazakhstan = 'kz',\n  Kenya = 'ke',\n  Kiribati = 'ki',\n  Kosovo = 'xk',\n  Kuwait = 'kw',\n  Kyrgyzstan = 'kg',\n  Laos = 'la',\n  Latvia = 'lv',\n  Lebanon = 'lb',\n  Lesotho = 'ls',\n  Liberia = 'lr',\n  Libya = 'ly',\n  Liechtenstein = 'li',\n  Lithuania = 'lt',\n  Luxembourg = 'lu',\n  Macau = 'mo',\n  Macedonia = 'mk',\n  Madagascar = 'mg',\n  Malawi = 'mw',\n  Malaysia = 'my',\n  Maldives = 'mv',\n  Mali = 'ml',\n  Malta = 'mt',\n  MarshallIslands = 'mh',\n  Martinique = 'mq',\n  Mauritania = 'mr',\n  Mauritius = 'mu',\n  Mayotte = 'yt',\n  Mexico = 'mx',\n  Micronesia = 'fm',\n  Moldova = 'md',\n  Monaco = 'mc',\n  Mongolia = 'mn',\n  Montenegro = 'me',\n  Montserrat = 'ms',\n  Morocco = 'ma',\n  Mozambique = 'mz',\n  Myanmar = 'mm',\n  Namibia = 'na',\n  Nauru = 'nr',\n  Nepal = 'np',\n  Netherlands = 'nl',\n  NewCaledonia = 'nc',\n  NewZealand = 'nz',\n  Nicaragua = 'ni',\n  Niger = 'ne',\n  Nigeria = 'ng',\n  Niue = 'nu',\n  NorfolkIsland = 'nf',\n  NorthKorea = 'kp',\n  NorthernMarianaIslands = 'mp',\n  Norway = 'no',\n  Oman = 'om',\n  Pakistan = 'pk',\n  Palau = 'pw',\n  Palestine = 'ps',\n  Panama = 'pa',\n  PapuaNewGuinea = 'pg',\n  Paraguay = 'py',\n  Peru = 'pe',\n  Philippines = 'ph',\n  Poland = 'pl',\n  Portugal = 'pt',\n  PuertoRico = 'pr',\n  Qatar = 'qa',\n  Réunion = 're',\n  Romania = 'ro',\n  Russia = 'ru',\n  Rwanda = 'rw',\n  SaintBarthélemy = 'bl',\n  SaintHelena = 'sh',\n  SaintKittsAndNevis = 'kn',\n  SaintLucia = 'lc',\n  SaintMartin = 'mf',\n  SaintPierreAndMiquelon = 'pm',\n  SaintVincentAndTheGrenadines = 'vc',\n  Samoa = 'ws',\n  SanMarino = 'sm',\n  SãoToméAndPríncipe = 'st',\n  SaudiArabia = 'sa',\n  Senegal = 'sn',\n  Serbia = 'rs',\n  Seychelles = 'sc',\n  SierraLeone = 'sl',\n  Singapore = 'sg',\n  SintMaarten = 'sx',\n  Slovakia = 'sk',\n  Slovenia = 'si',\n  SolomonIslands = 'sb',\n  Somalia = 'so',\n  SouthAfrica = 'za',\n  SouthKorea = 'kr',\n  SouthSudan = 'ss',\n  Spain = 'es',\n  SriLanka = 'lk',\n  Sudan = 'sd',\n  Suriname = 'sr',\n  SvalbardAndJanMayen = 'sj',\n  Swaziland = 'sz',\n  Sweden = 'se',\n  Switzerland = 'ch',\n  Syria = 'sy',\n  Taiwan = 'tw',\n  Tajikistan = 'tj',\n  Tanzania = 'tz',\n  Thailand = 'th',\n  TimorLeste = 'tl',\n  Togo = 'tg',\n  Tokelau = 'tk',\n  Tonga = 'to',\n  TrinidadAndTobago = 'tt',\n  Tunisia = 'tn',\n  Turkey = 'tr',\n  Turkmenistan = 'tm',\n  TurksAndCaicosIslands = 'tc',\n  Tuvalu = 'tv',\n  USVirginIslands = 'vi',\n  Uganda = 'ug',\n  Ukraine = 'ua',\n  UnitedArabEmirates = 'ae',\n  UnitedKingdom = 'gb',\n  UnitedStates = 'us',\n  Uruguay = 'uy',\n  Uzbekistan = 'uz',\n  Vanuatu = 'vu',\n  VaticanCity = 'va',\n  Venezuela = 've',\n  Vietnam = 'vn',\n  WallisAndFutuna = 'wf',\n  WesternSahara = 'eh',\n  Yemen = 'ye',\n  Zambia = 'zm',\n  Zimbabwe = 'zw',\n  ÅlandIslands = 'ax',\n}\n","export enum PhoneNumberFormat {\n  International = 'INTERNATIONAL',\n  National = 'NATIONAL',\n}\n","export enum SearchCountryField {\n  DialCode = 'dialCode',\n  Iso2 = 'iso2',\n  Name = 'name',\n  All = 'all',\n}\n","import { Injectable } from '@angular/core';\nimport { CountryISO } from '../../../enums/country-iso.enum';\n\n@Injectable()\nexport class CountryCode {\n  public allCountries = [\n    ['Afghanistan (‫افغانستان‬‎)', CountryISO.Afghanistan, '93'],\n    ['Albania (Shqipëri)', CountryISO.Albania, '355'],\n    ['Algeria (‫الجزائر‬‎)', CountryISO.Algeria, '213'],\n    ['American Samoa', 'as', '1', 1, ['684']],\n    ['Andorra', CountryISO.Andorra, '376'],\n    ['Angola', CountryISO.Angola, '244'],\n    ['Anguilla', 'ai', '1', 1, ['264']],\n    ['Antigua and Barbuda', 'ag', '1', 1, ['268']],\n    ['Argentina', CountryISO.Argentina, '54'],\n    ['Armenia (Հայաստան)', CountryISO.Armenia, '374'],\n    ['Aruba', CountryISO.Aruba, '297'],\n    ['Australia', CountryISO.Australia, '61', 0],\n    ['Austria (Österreich)', CountryISO.Austria, '43'],\n    ['Azerbaijan (Azərbaycan)', CountryISO.Azerbaijan, '994'],\n    ['Bahamas', 'bs', '1', 1, ['242']],\n    ['Bahrain (‫البحرين‬‎)', CountryISO.Bahrain, '973'],\n    ['Bangladesh (বাংলাদেশ)', CountryISO.Bangladesh, '880'],\n    ['Barbados', 'bb', '1', 1, ['246']],\n    ['Belarus (Беларусь)', CountryISO.Belarus, '375'],\n    ['Belgium (België)', CountryISO.Belgium, '32'],\n    ['Belize', CountryISO.Belize, '501'],\n    ['Benin (Bénin)', CountryISO.Benin, '229'],\n    ['Bermuda', 'bm', '1', 1, ['441']],\n    ['Bhutan (འབྲུག)', CountryISO.Bhutan, '975'],\n    ['Bolivia', CountryISO.Bolivia, '591'],\n    ['Bosnia and Herzegovina (Босна и Херцеговина)', CountryISO.BosniaAndHerzegovina, '387'],\n    ['Botswana', CountryISO.Botswana, '267'],\n    ['Brazil (Brasil)', CountryISO.Brazil, '55'],\n    ['British Indian Ocean Territory', CountryISO.BritishIndianOceanTerritory, '246'],\n    ['British Virgin Islands', 'vg', '1', 1, ['284']],\n    ['Brunei', CountryISO.Brunei, '673'],\n    ['Bulgaria (България)', CountryISO.Bulgaria, '359'],\n    ['Burkina Faso', CountryISO.BurkinaFaso, '226'],\n    ['Burundi (Uburundi)', CountryISO.Burundi, '257'],\n    ['Cambodia (កម្ពុជា)', CountryISO.Cambodia, '855'],\n    ['Cameroon (Cameroun)', CountryISO.Cameroon, '237'],\n    [\n      'Canada',\n      CountryISO.Canada,\n      '1',\n      1,\n      [\n        '204',\n        '226',\n        '236',\n        '249',\n        '250',\n        '289',\n        '306',\n        '343',\n        '365',\n        '387',\n        '403',\n        '416',\n        '418',\n        '431',\n        '437',\n        '438',\n        '450',\n        '506',\n        '514',\n        '519',\n        '548',\n        '579',\n        '581',\n        '587',\n        '604',\n        '613',\n        '639',\n        '647',\n        '672',\n        '705',\n        '709',\n        '742',\n        '778',\n        '780',\n        '782',\n        '807',\n        '819',\n        '825',\n        '867',\n        '873',\n        '902',\n        '905',\n      ],\n    ],\n    ['Cape Verde (Kabu Verdi)', CountryISO.CapeVerde, '238'],\n    ['Caribbean Netherlands', CountryISO.CaribbeanNetherlands, '599', 1],\n    ['Cayman Islands', 'ky', '1', 1, ['345']],\n    ['Central African Republic (République centrafricaine)', CountryISO.CentralAfricanRepublic, '236'],\n    ['Chad (Tchad)', CountryISO.Chad, '235'],\n    ['Chile', CountryISO.Chile, '56'],\n    ['China (中国)', CountryISO.China, '86'],\n    ['Christmas Island', CountryISO.ChristmasIsland, '61', 2],\n    ['Cocos (Keeling) Islands', CountryISO.Cocos, '61', 1],\n    ['Colombia', CountryISO.Colombia, '57'],\n    ['Comoros (‫جزر القمر‬‎)', CountryISO.Comoros, '269'],\n    ['Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)', CountryISO.CongoDRCJamhuriYaKidemokrasiaYaKongo, '243'],\n    ['Congo (Republic) (Congo-Brazzaville)', CountryISO.CongoRepublicCongoBrazzaville, '242'],\n    ['Cook Islands', CountryISO.CookIslands, '682'],\n    ['Costa Rica', CountryISO.CostaRica, '506'],\n    ['Côte d’Ivoire', CountryISO.CôteDIvoire, '225'],\n    ['Croatia (Hrvatska)', CountryISO.Croatia, '385'],\n    ['Cuba', CountryISO.Cuba, '53'],\n    ['Curaçao', CountryISO.Curaçao, '599', 0],\n    ['Cyprus (Κύπρος)', CountryISO.Cyprus, '357'],\n    ['Czech Republic (Česká republika)', CountryISO.CzechRepublic, '420'],\n    ['Denmark (Danmark)', CountryISO.Denmark, '45'],\n    ['Djibouti', CountryISO.Djibouti, '253'],\n    ['Dominica', CountryISO.Dominica, '1767'],\n    ['Dominican Republic (República Dominicana)', CountryISO.DominicanRepublic, '1', 2, ['809', '829', '849']],\n    ['Ecuador', CountryISO.Ecuador, '593'],\n    ['Egypt (‫مصر‬‎)', CountryISO.Egypt, '20'],\n    ['El Salvador', CountryISO.ElSalvador, '503'],\n    ['Equatorial Guinea (Guinea Ecuatorial)', CountryISO.EquatorialGuinea, '240'],\n    ['Eritrea', CountryISO.Eritrea, '291'],\n    ['Estonia (Eesti)', CountryISO.Estonia, '372'],\n    ['Ethiopia', CountryISO.Ethiopia, '251'],\n    ['Falkland Islands (Islas Malvinas)', CountryISO.FalklandIslands, '500'],\n    ['Faroe Islands (Føroyar)', CountryISO.FaroeIslands, '298'],\n    ['Fiji', CountryISO.Fiji, '679'],\n    ['Finland (Suomi)', CountryISO.Finland, '358', 0],\n    ['France', CountryISO.France, '33'],\n    ['French Guiana (Guyane française)', CountryISO.FrenchGuiana, '594'],\n    ['French Polynesia (Polynésie française)', CountryISO.FrenchPolynesia, '689'],\n    ['Gabon', CountryISO.Gabon, '241'],\n    ['Gambia', CountryISO.Gambia, '220'],\n    ['Georgia (საქართველო)', CountryISO.Georgia, '995'],\n    ['Germany (Deutschland)', CountryISO.Germany, '49'],\n    ['Ghana (Gaana)', CountryISO.Ghana, '233'],\n    ['Gibraltar', CountryISO.Gibraltar, '350'],\n    ['Greece (Ελλάδα)', CountryISO.Greece, '30'],\n    ['Greenland (Kalaallit Nunaat)', CountryISO.Greenland, '299'],\n    ['Grenada', CountryISO.Grenada, '1473'],\n    ['Guadeloupe', CountryISO.Guadeloupe, '590', 0],\n    ['Guam', 'gu', '1', 1, ['671']],\n    ['Guatemala', CountryISO.Guatemala, '502'],\n    ['Guernsey', CountryISO.Guernsey, '44', 1, [1481]],\n    ['Guinea (Guinée)', CountryISO.Guinea, '224'],\n    ['Guinea-Bissau (Guiné Bissau)', CountryISO.GuineaBissau, '245'],\n    ['Guyana', CountryISO.Guyana, '592'],\n    ['Haiti', CountryISO.Haiti, '509'],\n    ['Honduras', CountryISO.Honduras, '504'],\n    ['Hong Kong (香港)', CountryISO.HongKong, '852'],\n    ['Hungary (Magyarország)', CountryISO.Hungary, '36'],\n    ['Iceland (Ísland)', CountryISO.Iceland, '354'],\n    ['India (भारत)', CountryISO.India, '91'],\n    ['Indonesia', CountryISO.Indonesia, '62'],\n    ['Iran (‫ایران‬‎)', CountryISO.Iran, '98'],\n    ['Iraq (‫العراق‬‎)', CountryISO.Iraq, '964'],\n    ['Ireland', CountryISO.Ireland, '353'],\n    ['Isle of Man', CountryISO.IsleOfMan, '44', 2, [1624]],\n    ['Israel (‫ישראל‬‎)', CountryISO.Israel, '972'],\n    ['Italy (Italia)', CountryISO.Italy, '39', 0],\n    ['Jamaica', 'jm', '1', 1, ['876']],\n    ['Japan (日本)', CountryISO.Japan, '81'],\n    ['Jersey', CountryISO.Jersey, '44', 3, [1534]],\n    ['Jordan (‫الأردن‬‎)', CountryISO.Jordan, '962'],\n    ['Kazakhstan (Казахстан)', CountryISO.Kazakhstan, '7', 1],\n    ['Kenya', CountryISO.Kenya, '254'],\n    ['Kiribati', CountryISO.Kiribati, '686'],\n    ['Kosovo', CountryISO.Kosovo, '383'],\n    ['Kuwait (‫الكويت‬‎)', CountryISO.Kuwait, '965'],\n    ['Kyrgyzstan (Кыргызстан)', CountryISO.Kyrgyzstan, '996'],\n    ['Laos (ລາວ)', CountryISO.Laos, '856'],\n    ['Latvia (Latvija)', CountryISO.Latvia, '371'],\n    ['Lebanon (‫لبنان‬‎)', CountryISO.Lebanon, '961'],\n    ['Lesotho', CountryISO.Lesotho, '266'],\n    ['Liberia', CountryISO.Liberia, '231'],\n    ['Libya (‫ليبيا‬‎)', CountryISO.Libya, '218'],\n    ['Liechtenstein', CountryISO.Liechtenstein, '423'],\n    ['Lithuania (Lietuva)', CountryISO.Lithuania, '370'],\n    ['Luxembourg', CountryISO.Luxembourg, '352'],\n    ['Macau (澳門)', CountryISO.Macau, '853'],\n    ['Macedonia (FYROM) (Македонија)', CountryISO.Macedonia, '389'],\n    ['Madagascar (Madagasikara)', CountryISO.Madagascar, '261'],\n    ['Malawi', CountryISO.Malawi, '265'],\n    ['Malaysia', CountryISO.Malaysia, '60'],\n    ['Maldives', CountryISO.Maldives, '960'],\n    ['Mali', CountryISO.Mali, '223'],\n    ['Malta', CountryISO.Malta, '356'],\n    ['Marshall Islands', CountryISO.MarshallIslands, '692'],\n    ['Martinique', CountryISO.Martinique, '596'],\n    ['Mauritania (‫موريتانيا‬‎)', CountryISO.Mauritania, '222'],\n    ['Mauritius (Moris)', CountryISO.Mauritius, '230'],\n    ['Mayotte', CountryISO.Mayotte, '262', 1],\n    ['Mexico (México)', CountryISO.Mexico, '52'],\n    ['Micronesia', CountryISO.Micronesia, '691'],\n    ['Moldova (Republica Moldova)', CountryISO.Moldova, '373'],\n    ['Monaco', CountryISO.Monaco, '377'],\n    ['Mongolia (Монгол)', CountryISO.Mongolia, '976'],\n    ['Montenegro (Crna Gora)', CountryISO.Montenegro, '382'],\n    ['Montserrat', 'ms', '1', 1, ['664']],\n    ['Morocco (‫المغرب‬‎)', CountryISO.Morocco, '212', 0],\n    ['Mozambique (Moçambique)', CountryISO.Mozambique, '258'],\n    ['Myanmar (Burma) (မြန်မာ)', CountryISO.Myanmar, '95'],\n    ['Namibia (Namibië)', CountryISO.Namibia, '264'],\n    ['Nauru', CountryISO.Nauru, '674'],\n    ['Nepal (नेपाल)', CountryISO.Nepal, '977'],\n    ['Netherlands (Nederland)', CountryISO.Netherlands, '31'],\n    ['New Caledonia (Nouvelle-Calédonie)', CountryISO.NewCaledonia, '687'],\n    ['New Zealand', CountryISO.NewZealand, '64'],\n    ['Nicaragua', CountryISO.Nicaragua, '505'],\n    ['Niger (Nijar)', CountryISO.Niger, '227'],\n    ['Nigeria', CountryISO.Nigeria, '234'],\n    ['Niue', CountryISO.Niue, '683'],\n    ['Norfolk Island', CountryISO.NorfolkIsland, '672'],\n    ['North Korea (조선 민주주의 인민 공화국)', CountryISO.NorthKorea, '850'],\n    ['Northern Mariana Islands', CountryISO.NorthernMarianaIslands, '1670'],\n    ['Norway (Norge)', CountryISO.Norway, '47', 0],\n    ['Oman (‫عُمان‬‎)', CountryISO.Oman, '968'],\n    ['Pakistan (‫پاکستان‬‎)', CountryISO.Pakistan, '92'],\n    ['Palau', CountryISO.Palau, '680'],\n    ['Palestine (‫فلسطين‬‎)', CountryISO.Palestine, '970'],\n    ['Panama (Panamá)', CountryISO.Panama, '507'],\n    ['Papua New Guinea', CountryISO.PapuaNewGuinea, '675'],\n    ['Paraguay', CountryISO.Paraguay, '595'],\n    ['Peru (Perú)', CountryISO.Peru, '51'],\n    ['Philippines', CountryISO.Philippines, '63'],\n    ['Poland (Polska)', CountryISO.Poland, '48'],\n    ['Portugal', CountryISO.Portugal, '351'],\n    ['Puerto Rico', CountryISO.PuertoRico, '1', 3, ['787', '939']],\n    ['Qatar (‫قطر‬‎)', CountryISO.Qatar, '974'],\n    ['Réunion (La Réunion)', CountryISO.Réunion, '262', 0],\n    ['Romania (România)', CountryISO.Romania, '40'],\n    ['Russia (Россия)', CountryISO.Russia, '7', 0],\n    ['Rwanda', CountryISO.Rwanda, '250'],\n    ['Saint Barthélemy (Saint-Barthélemy)', CountryISO.SaintBarthélemy, '590', 1],\n    ['Saint Helena', CountryISO.SaintHelena, '290'],\n    ['Saint Kitts and Nevis', CountryISO.SaintKittsAndNevis, '1869'],\n    ['Saint Lucia', 'lc', '1', 1, ['758']],\n    ['Saint Martin (Saint-Martin (partie française))', CountryISO.SaintMartin, '590', 2],\n    ['Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)', CountryISO.SaintPierreAndMiquelon, '508'],\n    ['Saint Vincent and the Grenadines', 'vc', '1', 1, ['784']],\n    ['Samoa', CountryISO.Samoa, '685'],\n    ['San Marino', CountryISO.SanMarino, '378'],\n    ['São Tomé and Príncipe (São Tomé e Príncipe)', CountryISO.SãoToméAndPríncipe, '239'],\n    ['Saudi Arabia (‫المملكة العربية السعودية‬‎)', CountryISO.SaudiArabia, '966'],\n    ['Senegal (Sénégal)', CountryISO.Senegal, '221'],\n    ['Serbia (Србија)', CountryISO.Serbia, '381'],\n    ['Seychelles', CountryISO.Seychelles, '248'],\n    ['Sierra Leone', CountryISO.SierraLeone, '232'],\n    ['Singapore', CountryISO.Singapore, '65'],\n    ['Sint Maarten', 'sx', '1', 1, ['721']],\n    ['Slovakia (Slovensko)', CountryISO.Slovakia, '421'],\n    ['Slovenia (Slovenija)', CountryISO.Slovenia, '386'],\n    ['Solomon Islands', CountryISO.SolomonIslands, '677'],\n    ['Somalia (Soomaaliya)', CountryISO.Somalia, '252'],\n    ['South Africa', CountryISO.SouthAfrica, '27'],\n    ['South Korea (대한민국)', CountryISO.SouthKorea, '82'],\n    ['South Sudan (‫جنوب السودان‬‎)', CountryISO.SouthSudan, '211'],\n    ['Spain (España)', CountryISO.Spain, '34'],\n    ['Sri Lanka (ශ්‍රී ලංකාව)', CountryISO.SriLanka, '94'],\n    ['Sudan (‫السودان‬‎)', CountryISO.Sudan, '249'],\n    ['Suriname', CountryISO.Suriname, '597'],\n    ['Svalbard and Jan Mayen', CountryISO.SvalbardAndJanMayen, '47', 1],\n    ['Swaziland', CountryISO.Swaziland, '268'],\n    ['Sweden (Sverige)', CountryISO.Sweden, '46'],\n    ['Switzerland (Schweiz)', CountryISO.Switzerland, '41'],\n    ['Syria (‫سوريا‬‎)', CountryISO.Syria, '963'],\n    ['Taiwan (台灣)', CountryISO.Taiwan, '886'],\n    ['Tajikistan', CountryISO.Tajikistan, '992'],\n    ['Tanzania', CountryISO.Tanzania, '255'],\n    ['Thailand (ไทย)', CountryISO.Thailand, '66'],\n    ['Timor-Leste', CountryISO.TimorLeste, '670'],\n    ['Togo', CountryISO.Togo, '228'],\n    ['Tokelau', CountryISO.Tokelau, '690'],\n    ['Tonga', CountryISO.Tonga, '676'],\n    ['Trinidad and Tobago', 'tt', '1', 1, ['868']],\n    ['Tunisia (‫تونس‬‎)', CountryISO.Tunisia, '216'],\n    ['Turkey (Türkiye)', CountryISO.Turkey, '90'],\n    ['Turkmenistan', CountryISO.Turkmenistan, '993'],\n    ['Turks and Caicos Islands', CountryISO.TurksAndCaicosIslands, '1649'],\n    ['Tuvalu', CountryISO.Tuvalu, '688'],\n    ['U.S. Virgin Islands', 'vi', '1', 1, ['340']],\n    ['Uganda', CountryISO.Uganda, '256'],\n    ['Ukraine (Україна)', CountryISO.Ukraine, '380'],\n    ['United Arab Emirates (‫الإمارات العربية المتحدة‬‎)', CountryISO.UnitedArabEmirates, '971'],\n    ['United Kingdom', CountryISO.UnitedKingdom, '44', 0],\n    ['United States', CountryISO.UnitedStates, '1', 0],\n    ['Uruguay', CountryISO.Uruguay, '598'],\n    ['Uzbekistan (Oʻzbekiston)', CountryISO.Uzbekistan, '998'],\n    ['Vanuatu', CountryISO.Vanuatu, '678'],\n    ['Vatican City (Città del Vaticano)', CountryISO.VaticanCity, '39', 1],\n    ['Venezuela', CountryISO.Venezuela, '58'],\n    ['Vietnam (Việt Nam)', CountryISO.Vietnam, '84'],\n    ['Wallis and Futuna', CountryISO.WallisAndFutuna, '681'],\n    ['Western Sahara (‫الصحراء الغربية‬‎)', CountryISO.WesternSahara, '212', 1],\n    ['Yemen (‫اليمن‬‎)', CountryISO.Yemen, '967'],\n    ['Zambia', CountryISO.Zambia, '260'],\n    ['Zimbabwe', CountryISO.Zimbabwe, '263'],\n    ['Åland Islands', CountryISO.ÅlandIslands, '358', 1],\n  ];\n  public phoneMasks = [\n    {\n      code: '+93',\n      iso: 'AF',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+358',\n      iso: 'AX',\n      mask: '(000) 000-00-00',\n    },\n    {\n      code: '+355',\n      iso: 'AL',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+213',\n      iso: 'DZ',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+1',\n      iso: 'AS',\n      mask: '(684) 000-0000',\n    },\n    {\n      code: '+376',\n      iso: 'AD',\n      mask: '000-000',\n    },\n    {\n      code: '+244',\n      iso: 'AO',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+1',\n      iso: 'AI',\n      mask: '(264) 000-0000',\n    },\n    {\n      code: '+672',\n      iso: 'AQ',\n      mask: '100-000',\n    },\n    {\n      code: '+1',\n      iso: 'AG',\n      mask: '(268) 000-0000',\n    },\n    {\n      code: '+54',\n      iso: 'AR',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+374',\n      iso: 'AM',\n      mask: '00-000-000',\n    },\n    {\n      code: '+297',\n      iso: 'AW',\n      mask: '000-0000',\n    },\n    {\n      code: '+247',\n      iso: 'AC',\n      mask: '0000',\n    },\n    {\n      code: '+61',\n      iso: 'AU',\n      mask: '0-0000-0000',\n    },\n    {\n      code: '+43',\n      iso: 'AT',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+994',\n      iso: 'AZ',\n      mask: '00-000-00-00',\n    },\n    {\n      code: '+1',\n      iso: 'BS',\n      mask: '(242) 000-0000',\n    },\n    {\n      code: '+973',\n      iso: 'BH',\n      mask: '0000-0000',\n    },\n    {\n      code: '+880',\n      iso: 'BD',\n      mask: '1000-000000',\n    },\n    {\n      code: '+1',\n      iso: 'BB',\n      mask: '(246) 000-0000',\n    },\n    {\n      code: '+375',\n      iso: 'BY',\n      mask: '(00) 000-00-00',\n    },\n    {\n      code: '+32',\n      iso: 'BE',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+501',\n      iso: 'BZ',\n      mask: '000-0000',\n    },\n    {\n      code: '+229',\n      iso: 'BJ',\n      mask: '00-00-0000',\n    },\n    {\n      code: '+1',\n      iso: 'BM',\n      mask: '(441) 000-0000',\n    },\n    {\n      code: '+975',\n      iso: 'BT',\n      mask: ['17-000-000', '77-000-000', '0-000-000'],\n    },\n    {\n      code: '+591',\n      iso: 'BO',\n      mask: '0-000-0000',\n    },\n    {\n      code: '+387',\n      iso: 'BA',\n      mask: ['00-0000', '00-00000'],\n    },\n    {\n      code: '+267',\n      iso: 'BW',\n      mask: '00-000-000',\n    },\n    {\n      code: '+55',\n      iso: 'BR',\n      mask: ['(00) 0000-0000', '(00) 00000-0000'],\n    },\n    {\n      code: '+246',\n      iso: 'IO',\n      mask: '000-0000',\n    },\n    {\n      code: '+673',\n      iso: 'BN',\n      mask: '000-0000',\n    },\n    {\n      code: '+359',\n      iso: 'BG',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+226',\n      iso: 'BF',\n      mask: '00-00-0000',\n    },\n    {\n      code: '+257',\n      iso: 'BI',\n      mask: '00-00-0000',\n    },\n    {\n      code: '+855',\n      iso: 'KH',\n      mask: '00-000-000',\n    },\n    {\n      code: '+237',\n      iso: 'CM',\n      mask: '0000-0000',\n    },\n    {\n      code: '+1',\n      iso: 'CA',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+238',\n      iso: 'CV',\n      mask: '(000) 00-00',\n    },\n    {\n      code: '+1',\n      iso: 'KY',\n      mask: '(345) 000-0000',\n    },\n    {\n      code: '+236',\n      iso: 'CF',\n      mask: '00-00-0000',\n    },\n    {\n      code: '+235',\n      iso: 'TD',\n      mask: '00-00-00-00',\n    },\n    {\n      code: '+56',\n      iso: 'CL',\n      mask: '0-0000-0000',\n    },\n    {\n      code: '+86',\n      iso: 'CN',\n      mask: ['(000) 0000-000', '(000) 0000-0000', '00-00000-00000'],\n    },\n    {\n      code: '+61',\n      iso: 'CX',\n      mask: '0-0000-0000',\n    },\n    {\n      code: '+61',\n      iso: 'CC',\n      mask: '0-0000-0000',\n    },\n    {\n      code: '+57',\n      iso: 'CO',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+269',\n      iso: 'KM',\n      mask: '00-00000',\n    },\n    {\n      code: '+242',\n      iso: 'CG',\n      mask: '00-00000',\n    },\n    {\n      code: '+682',\n      iso: 'CK',\n      mask: '00-000',\n    },\n    {\n      code: '+506',\n      iso: 'CR',\n      mask: '0000-0000',\n    },\n    {\n      code: '+385',\n      iso: 'HR',\n      mask: '00-000-000',\n    },\n    {\n      code: '+53',\n      iso: 'CU',\n      mask: '0-000-0000',\n    },\n    {\n      code: '+357',\n      iso: 'CY',\n      mask: '00-000-000',\n    },\n    {\n      code: '+420',\n      iso: 'CZ',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+243',\n      iso: 'CD',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+45',\n      iso: 'DK',\n      mask: '00-00-00-00',\n    },\n    {\n      code: '+253',\n      iso: 'DJ',\n      mask: '00-00-00-00',\n    },\n    {\n      code: '+1',\n      iso: 'DM',\n      mask: '(767) 000-0000',\n    },\n    {\n      code: '+1',\n      iso: 'DO',\n      mask: ['(809) 000-0000', '(829) 000-0000', '(849) 000-0000'],\n    },\n    {\n      code: '+593',\n      iso: 'EC',\n      mask: ['0-000-0000', '00-000-0000'],\n    },\n    {\n      code: '+20',\n      iso: 'EG',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+503',\n      iso: 'SV',\n      mask: '00-00-0000',\n    },\n    {\n      code: '+240',\n      iso: 'GQ',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+291',\n      iso: 'ER',\n      mask: '0-000-000',\n    },\n    {\n      code: '+372',\n      iso: 'EE',\n      mask: ['000-0000', '0000-0000'],\n    },\n    {\n      code: '+268',\n      iso: 'SZ',\n      mask: '00-00-0000',\n    },\n    {\n      code: '+251',\n      iso: 'ET',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+212',\n      iso: 'EH',\n      mask: '00000-00000',\n    },\n    {\n      code: '+500',\n      iso: 'FK',\n      mask: '00000',\n    },\n    {\n      code: '+298',\n      iso: 'FO',\n      mask: '000-000',\n    },\n    {\n      code: '+679',\n      iso: 'FJ',\n      mask: '00-00000',\n    },\n    {\n      code: '+358',\n      iso: 'FI',\n      mask: '(000) 000-00-00',\n    },\n    {\n      code: '+33',\n      iso: 'FR',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+594',\n      iso: 'GF',\n      mask: '00000-0000',\n    },\n    {\n      code: '+689',\n      iso: 'PF',\n      mask: '00-00-00',\n    },\n    {\n      code: '+241',\n      iso: 'GA',\n      mask: '0-00-00-00',\n    },\n    {\n      code: '+220',\n      iso: 'GM',\n      mask: '(000) 00-00',\n    },\n    {\n      code: '+995',\n      iso: 'GE',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+49',\n      iso: 'DE',\n      mask: ['000-000', '(000) 00-00', '(000) 00-000', '(000) 00-0000', '(000) 000-0000', '(0000) 000-0000'],\n    },\n    {\n      code: '+233',\n      iso: 'GH',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+350',\n      iso: 'GI',\n      mask: '000-00000',\n    },\n    {\n      code: '+30',\n      iso: 'GR',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+299',\n      iso: 'GL',\n      mask: '00-00-00',\n    },\n    {\n      code: '+1',\n      iso: 'GD',\n      mask: '(473) 000-0000',\n    },\n    {\n      code: '+590',\n      iso: 'GP',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+1',\n      iso: 'GU',\n      mask: '(671) 000-0000',\n    },\n    {\n      code: '+502',\n      iso: 'GT',\n      mask: '0-000-0000',\n    },\n    {\n      code: '+44',\n      iso: 'GG',\n      mask: '(0000) 000000',\n    },\n    {\n      code: '+224',\n      iso: 'GN',\n      mask: '00-000-000',\n    },\n    {\n      code: '+245',\n      iso: 'GW',\n      mask: '0-000000',\n    },\n    {\n      code: '+592',\n      iso: 'GY',\n      mask: '000-0000',\n    },\n    {\n      code: '+509',\n      iso: 'HT',\n      mask: '00-00-0000',\n    },\n    {\n      code: '+39',\n      iso: 'VA',\n      mask: '06 69800000',\n    },\n    {\n      code: '+504',\n      iso: 'HN',\n      mask: '0000-0000',\n    },\n    {\n      code: '+852',\n      iso: 'HK',\n      mask: '0000-0000',\n    },\n    {\n      code: '+36',\n      iso: 'HU',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+354',\n      iso: 'IS',\n      mask: '000-0000',\n    },\n    {\n      code: '+91',\n      iso: 'IN',\n      mask: '(0000) 000-000',\n    },\n    {\n      code: '+62',\n      iso: 'ID',\n      mask: ['00-000-00', '00-000-000', '00-000-0000', '(800) 000-000', '(800) 000-00-000'],\n    },\n    {\n      code: '+98',\n      iso: 'IR',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+924',\n      iso: 'IQ',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+353',\n      iso: 'IE',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+44',\n      iso: 'IM',\n      mask: '(0000) 000000',\n    },\n    {\n      code: '+972',\n      iso: 'IL',\n      mask: ['0-000-0000', '50-000-0000'],\n    },\n    {\n      code: '+39',\n      iso: 'IT',\n      mask: '(000) 0000-000',\n    },\n    {\n      code: '+225',\n      iso: 'CI',\n      mask: '00-000-000',\n    },\n    {\n      code: '+1',\n      iso: 'JM',\n      mask: '(876) 000-0000',\n    },\n    {\n      code: '+81',\n      iso: 'JP',\n      mask: ['(000) 000-000', '00-0000-0000'],\n    },\n    {\n      code: '+44',\n      iso: 'JE',\n      mask: '(0000) 0000-000000',\n    },\n    {\n      code: '+962',\n      iso: 'JO',\n      mask: '0-0000-0000',\n    },\n    {\n      code: '+77',\n      iso: 'KZ',\n      mask: ['(600) 000-00-00', '(700) 000-00-00'],\n    },\n    {\n      code: '+254',\n      iso: 'KE',\n      mask: '000-000000',\n    },\n    {\n      code: '+686',\n      iso: 'KI',\n      mask: '00-000',\n    },\n    {\n      code: '+850',\n      iso: 'KP',\n      mask: ['000-000', '0000-0000', '00-000-000', '000-0000-000', '191-000-0000', '0000-0000000000000'],\n    },\n    {\n      code: '+82',\n      iso: 'KR',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+383',\n      iso: 'XK',\n      mask: ['00-000-000', '000-000-000'],\n    },\n    {\n      code: '+965',\n      iso: 'KW',\n      mask: '0000-0000',\n    },\n    {\n      code: '+996',\n      iso: 'KG',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+856',\n      iso: 'LA',\n      mask: ['00-000-000', '(2000) 000-000'],\n    },\n    {\n      code: '+371',\n      iso: 'LV',\n      mask: '00-000-000',\n    },\n    {\n      code: '+961',\n      iso: 'LB',\n      mask: ['0-000-000', '00-000-000'],\n    },\n    {\n      code: '+266',\n      iso: 'LS',\n      mask: '0-000-0000',\n    },\n    {\n      code: '+231',\n      iso: 'LR',\n      mask: '00-000-000',\n    },\n    {\n      code: '+218',\n      iso: 'LY',\n      mask: ['00-000-000', '21-000-0000'],\n    },\n    {\n      code: '+423',\n      iso: 'LI',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+370',\n      iso: 'LT',\n      mask: '(000) 00-000',\n    },\n    {\n      code: '+352',\n      iso: 'LU',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+853',\n      iso: 'MO',\n      mask: '0000-0000',\n    },\n    {\n      code: '+261',\n      iso: 'MG',\n      mask: '00-00-00000',\n    },\n    {\n      code: '+265',\n      iso: 'MW',\n      mask: ['1-000-000', '0-0000-0000'],\n    },\n    {\n      code: '+60',\n      iso: 'MY',\n      mask: ['0-000-000', '00-000-000', '(000) 000-000', '00-000-0000'],\n    },\n    {\n      code: '+960',\n      iso: 'MV',\n      mask: '000-0000',\n    },\n    {\n      code: '+223',\n      iso: 'ML',\n      mask: '00-00-0000',\n    },\n    {\n      code: '+356',\n      iso: 'MT',\n      mask: '0000-0000',\n    },\n    {\n      code: '+692',\n      iso: 'MH',\n      mask: '000-0000',\n    },\n    {\n      code: '+596',\n      iso: 'MQ',\n      mask: '(000) 00-00-00',\n    },\n    {\n      code: '+222',\n      iso: 'MR',\n      mask: '00-00-0000',\n    },\n    {\n      code: '+230',\n      iso: 'MU',\n      mask: '000-0000',\n    },\n    {\n      code: '+262',\n      iso: 'YT',\n      mask: '00000-0000',\n    },\n    {\n      code: '+52',\n      iso: 'MX',\n      mask: ['(000) 000-0000', '00-00-0000'],\n    },\n    {\n      code: '+691',\n      iso: 'FM',\n      mask: '000-0000',\n    },\n    {\n      code: '+373',\n      iso: 'MD',\n      mask: '0000-0000',\n    },\n    {\n      code: '+377',\n      iso: 'MC',\n      mask: ['00-000-000', '(000) 000-000'],\n    },\n    {\n      code: '+976',\n      iso: 'MN',\n      mask: '00-00-0000',\n    },\n    {\n      code: '+382',\n      iso: 'ME',\n      mask: '00-000-000',\n    },\n    {\n      code: '+1',\n      iso: 'MS',\n      mask: '(664) 000-0000',\n    },\n    {\n      code: '+212',\n      iso: 'MA',\n      mask: '00-0000-000',\n    },\n    {\n      code: '+258',\n      iso: 'MZ',\n      mask: '00-000-000',\n    },\n    {\n      code: '+95',\n      iso: 'MM',\n      mask: ['000-000', '0-000-000', '00-000-000'],\n    },\n    {\n      code: '+224',\n      iso: 'NA',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+674',\n      iso: 'NR',\n      mask: '000-0000',\n    },\n    {\n      code: '+977',\n      iso: 'NP',\n      mask: '00-000-000',\n    },\n    {\n      code: '+31',\n      iso: 'NL',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+599',\n      iso: 'AN',\n      mask: ['000-0000', '9000-0000'],\n    },\n    {\n      code: '+687',\n      iso: 'NC',\n      mask: '00-0000',\n    },\n    {\n      code: '+24',\n      iso: 'NZ',\n      mask: ['0-000-000', '(000) 000-000', '(000) 000-0000'],\n    },\n    {\n      code: '+505',\n      iso: 'NI',\n      mask: '0000-0000',\n    },\n    {\n      code: '+227',\n      iso: 'NE',\n      mask: '00-00-0000',\n    },\n    {\n      code: '+234',\n      iso: 'NG',\n      mask: ['000-000-0000', '00-000-00', '00-000-000'],\n    },\n    {\n      code: '+683',\n      iso: 'NU',\n      mask: '0000',\n    },\n    {\n      code: '+672',\n      iso: 'NF',\n      mask: '300-000',\n    },\n    {\n      code: '+389',\n      iso: 'MK',\n      mask: '00-000-000',\n    },\n    {\n      code: '+1',\n      iso: 'MP',\n      mask: '(670) 000-0000',\n    },\n    {\n      code: '+47',\n      iso: 'NO',\n      mask: '(000) 00-000',\n    },\n    {\n      code: '+968',\n      iso: 'OM',\n      mask: '00-000-000',\n    },\n    {\n      code: '+92',\n      iso: 'PK',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+680',\n      iso: 'PW',\n      mask: '000-0000',\n    },\n    {\n      code: '+970',\n      iso: 'PS',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+507',\n      iso: 'PA',\n      mask: '000-0000',\n    },\n    {\n      code: '+675',\n      iso: 'PG',\n      mask: '(000) 00-000',\n    },\n    {\n      code: '+595',\n      iso: 'PY',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+51',\n      iso: 'PE',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+63',\n      iso: 'PH',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+870',\n      iso: 'PN',\n      mask: '000-000-000',\n    },\n    {\n      code: '+48',\n      iso: 'PL',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+351',\n      iso: 'PT',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+1',\n      iso: 'PR',\n      mask: ['(787) 000 0000', '(939) 000 0000'],\n    },\n    {\n      code: '+974',\n      iso: 'QA',\n      mask: '0000-0000',\n    },\n    {\n      code: '+262',\n      iso: 'RE',\n      mask: '00000-0000',\n    },\n    {\n      code: '+40',\n      iso: 'RO',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+7',\n      iso: 'RU',\n      mask: '(000) 000-00-00',\n    },\n    {\n      code: '+250',\n      iso: 'RW',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+590',\n      iso: 'BL',\n      mask: '000-00-00-00',\n    },\n    {\n      code: '+290',\n      iso: 'SH',\n      mask: '0000',\n    },\n    {\n      code: '+1',\n      iso: 'KN',\n      mask: '(869) 000-0000',\n    },\n    {\n      code: '+1',\n      iso: 'LC',\n      mask: '(758) 000-0000',\n    },\n    {\n      code: '+590',\n      iso: 'MF',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+508',\n      iso: 'PM',\n      mask: '00-0000',\n    },\n    {\n      code: '+1',\n      iso: 'VC',\n      mask: '(784) 000-0000',\n    },\n    {\n      code: '+685',\n      iso: 'WS',\n      mask: '00-0000',\n    },\n    {\n      code: '+378',\n      iso: 'SM',\n      mask: '0000-000000',\n    },\n    {\n      code: '+239',\n      iso: 'ST',\n      mask: '00-00000',\n    },\n    {\n      code: '+966',\n      iso: 'SA',\n      mask: ['0-000-0000', '50-0000-0000'],\n    },\n    {\n      code: '+221',\n      iso: 'SN',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+381',\n      iso: 'RS',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+248',\n      iso: 'SC',\n      mask: '0-000-000',\n    },\n    {\n      code: '+232',\n      iso: 'SL',\n      mask: '00-000000',\n    },\n    {\n      code: '+65',\n      iso: 'SG',\n      mask: '0000-0000',\n    },\n    {\n      code: '+1',\n      iso: 'SX',\n      mask: '(721) 000-0000',\n    },\n    {\n      code: '+421',\n      iso: 'SK',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+386',\n      iso: 'SI',\n      mask: '00-000-000',\n    },\n    {\n      code: '+677',\n      iso: 'SB',\n      mask: ['00000', '000-0000'],\n    },\n    {\n      code: '+252',\n      iso: 'SO',\n      mask: ['0-000-000', '00-000-000'],\n    },\n    {\n      code: '+27',\n      iso: 'ZA',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+500',\n      iso: 'GS',\n      mask: '00000',\n    },\n    {\n      code: '+211',\n      iso: 'SS',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+34',\n      iso: 'ES',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+94',\n      iso: 'LK',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+249',\n      iso: 'SD',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+597',\n      iso: 'SR',\n      mask: ['000-000', '000-0000'],\n    },\n    {\n      code: '+47',\n      iso: 'SJ',\n      mask: '(000) 00-000',\n    },\n    {\n      code: '+46',\n      iso: 'SE',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+41',\n      iso: 'CH',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+963',\n      iso: 'SY',\n      mask: '00-0000-000',\n    },\n    {\n      code: '+886',\n      iso: 'TW',\n      mask: ['0000-0000', '0-0000-0000'],\n    },\n    {\n      code: '+992',\n      iso: 'TJ',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+255',\n      iso: 'TZ',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+66',\n      iso: 'TH',\n      mask: ['00-000-000', '00-000-0000'],\n    },\n    {\n      code: '+670',\n      iso: 'TL',\n      mask: ['000-0000', '770-00000', '780-00000'],\n    },\n    {\n      code: '+228',\n      iso: 'TG',\n      mask: '00-000-000',\n    },\n    {\n      code: '+690',\n      iso: 'TK',\n      mask: '0000',\n    },\n    {\n      code: '+676',\n      iso: 'TO',\n      mask: '00000',\n    },\n    {\n      code: '+1',\n      iso: 'TT',\n      mask: '(868) 000-0000',\n    },\n    {\n      code: '+216',\n      iso: 'TN',\n      mask: '00-000-000',\n    },\n    {\n      code: '+90',\n      iso: 'TR',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+993',\n      iso: 'TM',\n      mask: '0-000-0000',\n    },\n    {\n      code: '+1',\n      iso: 'TC',\n      mask: '(249) 000-000',\n    },\n    {\n      code: '+688',\n      iso: 'TV',\n      mask: ['20000', '900000'],\n    },\n    {\n      code: '+256',\n      iso: 'UG',\n      mask: '(000) 000-000',\n    },\n    {\n      code: '+380',\n      iso: 'UA',\n      mask: '(00) 000-00-00',\n    },\n    {\n      code: '+971',\n      iso: 'AE',\n      mask: ['0-000-0000', '50-000-0000'],\n    },\n    {\n      code: '+44',\n      iso: 'GB',\n      mask: '00-0000-0000',\n    },\n    {\n      code: '+1',\n      iso: 'US',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+598',\n      iso: 'UY',\n      mask: '0-000-00-00',\n    },\n    {\n      code: '+998',\n      iso: 'UZ',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+678',\n      iso: 'VU',\n      mask: ['00000', '00-00000'],\n    },\n    {\n      code: '+58',\n      iso: 'VE',\n      mask: '(000) 000-0000',\n    },\n    {\n      code: '+84',\n      iso: 'VN',\n      mask: ['00-0000-000', '(000) 0000-000'],\n    },\n    {\n      code: '+1',\n      iso: 'VG',\n      mask: '(284) 000-0000',\n    },\n    {\n      code: '+1',\n      iso: 'VI',\n      mask: '(340) 000-0000',\n    },\n    {\n      code: '+681',\n      iso: 'WF',\n      mask: '00-0000',\n    },\n    {\n      code: '+967',\n      iso: 'YE',\n      mask: ['0-000-000', '00-000-000', '000-000-000'],\n    },\n    {\n      code: '+260',\n      iso: 'ZM',\n      mask: '00-000-0000',\n    },\n    {\n      code: '+263',\n      iso: 'ZW',\n      mask: '0-000000',\n    },\n  ];\n\n  getPhoneMask(iso: string): string | string[] {\n    const found = this.phoneMasks.find((i) => i.iso === (iso ?? '').toUpperCase());\n    return found?.mask ?? '';\n  }\n\n  getCountryCode(iso: string): string {\n    const found = this.phoneMasks.find((i) => i.iso === (iso ?? '').toUpperCase());\n    return found?.code ?? '';\n  }\n}\n","import { ElementRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { CountryCode, parsePhoneNumber } from 'libphonenumber-js';\n\n/*\n\"Property 'nativeElement' does not exist on type 'FormControl'\".\nThis happens because I've expanded control with nativeElement via\n'NativeElementInjectorDirective' to get access to the element.\nMore about this approach and reasons for this:\nhttps://github.com/angular/angular/issues/18025\nhttps://stackoverflow.com/a/54075119/1617590\n*/\nexport const phoneNumberValidator = (control: FormControl & ElementRef<HTMLElement>) => {\n  if (!control.value) {\n    return null;\n  }\n  // Find <input> inside injected nativeElement and get its \"id\".\n  const el: HTMLElement = control.nativeElement as HTMLElement;\n  const inputBox: HTMLInputElement | any = el ? el.querySelector('input[type=\"tel\"]') : undefined;\n  if (inputBox) {\n    const isCheckValidation = 'true';\n    if (isCheckValidation === 'true') {\n      const isRequired = control.errors?.['required'] === true;\n      const error = { invalidPhoneNumber: true };\n\n      inputBox.setCustomValidity('Invalid field.');\n\n      let isValid = false;\n\n      try {\n        const countryCode = control.value.countryCode as CountryCode;\n        const phoneNumber = control.value.number;\n        const parsed = parsePhoneNumber(phoneNumber, countryCode);\n        if (parsed) {\n          isValid = parsed.isValid();\n        }\n      } catch (e) {\n        if (isRequired) {\n          return error;\n        } else {\n          inputBox.setCustomValidity('');\n        }\n      }\n\n      if (control.value) {\n        if (!isValid) {\n          return error;\n        } else {\n          inputBox.setCustomValidity('');\n        }\n      }\n    } else if (isCheckValidation === 'false') {\n      inputBox.setCustomValidity('');\n\n      control.clearValidators();\n    }\n  }\n  return null;\n};\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  Self,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NgControl } from '@angular/forms';\nimport { CountryCode as LibCountryCode, parsePhoneNumber, PhoneNumber } from 'libphonenumber-js';\n\nimport { setTheme } from 'ngx-bootstrap/utils';\n\nimport { provideNgxMask } from 'ngx-mask';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { AppListbox, AppOption } from '../../directives/list-box-element/list-box';\nimport { CountryISO } from '../../enums/country-iso.enum';\nimport { PhoneNumberFormat as CustomPhoneNumberFormat } from '../../enums/phone-number-format.enum';\nimport { SearchCountryField } from '../../enums/search-country-field.enum';\nimport { IChangeData } from '../../model/change-data';\nimport { ICountry } from '../../model/country.model';\nimport { AuthIcons } from '../../types/auth-icons';\nimport { InputFieldComponent } from '../input-field/input-field.component';\nimport { CountryCode } from './data/country-code';\nimport { phoneNumberValidator } from './tel-input.validator';\n\n@Component({\n  selector: 'lib-tel-input',\n  templateUrl: './tel-input.component.html',\n  styleUrls: ['./tel-input.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    CountryCode,\n    {\n      provide: NG_VALIDATORS,\n      useValue: phoneNumberValidator,\n      multi: true,\n    },\n    provideNgxMask(),\n  ],\n  standalone: false,\n})\nexport class TelInputComponent implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {\n  // Initialize ViewChild properties with definite assignment assertion\n  @ViewChild('inputElement') inputElement!: ElementRef<HTMLInputElement>;\n  @ViewChild('dropDownElementRef') dropDownElementRef!: ElementRef<HTMLDivElement>;\n  @ViewChild('countryList') countryList!: ElementRef<HTMLUListElement>;\n  @ViewChild('inputField') focusableElRef!: InputFieldComponent;\n  @ViewChild(AppListbox) listbox!: AppListbox<ICountry>;\n  @ViewChildren(AppOption) optionsList!: QueryList<AppOption<ICountry>>;\n\n  @Input() value: string | undefined = '';\n  @Input() enablePlaceholder = true;\n  @Input() maskPhoneNumber = true;\n  @Input() eagerMask = true;\n  @Input() customPlaceholder: string = '';\n  @Input() numberFormat: CustomPhoneNumberFormat = CustomPhoneNumberFormat.International;\n  @Input() cssClass = 'form-control';\n  @Input() onlyCountries: Array<string> = [];\n  @Input() searchCountryFlag = false;\n  @Input() searchCountryField: SearchCountryField[] = [SearchCountryField.All];\n  @Input() searchCountryPlaceholder = '';\n  @Input() maxLength: number = 15;\n  @Input() selectFirstCountry = true;\n  @Input() selectedCountryISO: CountryISO = CountryISO.UnitedStates;\n  @Input() phoneValidation = true;\n  @Input() inputId = 'phone';\n  @Input() separateDialCode = false;\n  @Input() showDropDownArrow = false;\n  @Input() icons: AuthIcons | null = null;\n  @Input() autocomplete: string = 'tel';\n\n  @Output() readonly countryChange = new EventEmitter<ICountry>();\n  /** Emits when the raw digit count reaches the minimum for the selected country — use to force immediate async validation. */\n  @Output() readonly phoneComplete = new EventEmitter<void>();\n\n  public selectedCountry: ICountry = {\n    areaCodes: undefined,\n    dialCode: '',\n    htmlId: '',\n    flagClass: '',\n    iso2: '',\n    name: '',\n    placeHolder: '',\n    priority: 0,\n  };\n  public customPatterns = { A: { pattern: new RegExp(`[a-zA-Z ]`) } };\n  public phoneNumber: IChangeData | string | undefined = '';\n  public enableAutoCountrySelect = false;\n  public phoneMask: string = '';\n  public countryCode: string = '';\n  public allCountries: Array<ICountry> = [];\n  public filteredCountries: Array<ICountry> = [];\n  public disabled = false;\n  readonly countrySearchControl = new FormControl<string>('', { nonNullable: true });\n  readonly phoneNumberControl = new FormControl<string | IChangeData | undefined>(undefined);\n  public separateDialCodeClass: string = '';\n  public autoClose = false;\n  public clearTextOnSelect = true;\n  public freeInputMode = false;\n  private destroyRef$ = new Subject<void>();\n\n  onTouched = () => {};\n  onChange = (_: IChangeData | null) => {};\n\n  constructor(\n    private countryCodeData: CountryCode,\n    private cdr: ChangeDetectorRef,\n    @Self() public ngControl: NgControl,\n  ) {\n    ngControl.valueAccessor = this;\n    setTheme('bs4');\n\n    this.phoneNumberControl.valueChanges.pipe(distinctUntilChanged(), takeUntil(this.destroyRef$)).subscribe((val) => {\n      this.phoneNumber = val ?? undefined;\n      this.onPhoneNumberChange();\n      // If the raw digit count is at least the country's national significant digit count,\n      // the number is complete enough to validate — fire so async validators run immediately.\n      const rawDigits = (val as string | undefined)?.replace(/\\D/g, '') ?? '';\n      const country = this.selectedCountry;\n      // libphonenumber-js uses national significant digits to determine parseability.\n      // The minimum for any country is 2 (rare). Most landlines/mobiles need 7-10.\n      // Emit when we have enough digits for the selected country to be potentially valid.\n      const minDigits = this.getMinDigitsForCountry(country);\n      if (rawDigits.length >= minDigits) {\n        this.phoneComplete.emit();\n      }\n    });\n  }\n\n  get isValidNumber(): boolean {\n    const phoneNumber = this.extractPhoneValue();\n    const iso2 = this.selectedCountry.iso2.toUpperCase() as LibCountryCode;\n    try {\n      const parsed = parsePhoneNumber(phoneNumber, iso2);\n      return parsed ? parsed.isValid() : false;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  ngOnInit(): void {\n    this.init();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const selectedISO = changes['selectedCountryISO'];\n    if (this.allCountries && selectedISO && selectedISO.currentValue !== selectedISO.previousValue) {\n      this.updateSelectedCountry(false);\n    }\n    this.checkSeparateDialCodeStyle();\n  }\n\n  ngOnDestroy(): void {\n    this.destroyRef$.next();\n    this.destroyRef$.complete();\n  }\n\n  public init(): void {\n    this.fetchCountryData();\n    if (this.onlyCountries.length) {\n      this.allCountries = this.allCountries.filter((c) => this.onlyCountries.includes(c.iso2));\n    }\n    this.updateSelectedCountry(true);\n    this.checkSeparateDialCodeStyle();\n  }\n\n  public onDropDownShow(): void {\n    this.autoClose = false;\n    this.focusInputElement();\n\n    // Safe access with optional chaining\n    const parentWidth = this.focusableElRef?.inputRef?.parentElement?.parentElement?.getBoundingClientRect()?.width;\n    if (parentWidth) {\n      this.onResize(parentWidth);\n    }\n\n    setTimeout(() => {\n      for (const countryOption of this.optionsList) {\n        if (countryOption.value.iso2 === this.selectedCountry.iso2) {\n          this.autoClose = true;\n          countryOption.element.scrollIntoView();\n          countryOption.element.click();\n        }\n      }\n    }, 100);\n  }\n\n  public toggleFreeInputMode(): void {\n    this.freeInputMode = !this.freeInputMode;\n    this.cdr.detectChanges();\n\n    if (!this.freeInputMode) {\n      setTimeout(() => {\n        this.createPhoneMask();\n        this.ngControl.control?.markAsTouched();\n      }, 100);\n    }\n\n    this.phoneNumber = '';\n    this.phoneNumberControl.setValue('', { emitEvent: false });\n    this.onPhoneNumberChange();\n  }\n\n  private createPhoneMask(): void {\n    // Replaced Inputmask with simple formatting or ngx-mask if needed\n    // For now, we rely on AsYouType formatter in onPhoneNumberChange\n    // or we could use the ngx-mask if provided.\n    // Given the task is to remove Inputmask, we'll strip it.\n  }\n\n  public onListFocus(): void {\n    setTimeout(() => {\n      const activeCountry = this.optionsList.find((c) => c.isActive() || c.isSelected());\n\n      if (!activeCountry) {\n        this.autoClose = false;\n\n        setTimeout(() => {\n          this.listbox.focus();\n          const countryItem = this.optionsList.first;\n          if (countryItem) {\n            // FIX: Remove any type assertions and use proper typing\n            countryItem.select();\n            this.listbox.select(countryItem);\n            this.listbox._setActiveOption(countryItem);\n            countryItem.setActiveStyles();\n            countryItem.focus();\n            setTimeout(() => {\n              countryItem.element.scrollIntoView();\n              this.autoClose = true;\n            });\n          }\n        });\n      } else {\n        this.listbox.focus();\n      }\n    });\n  }\n\n  public setSelectedCountry(country: ICountry): void {\n    this.selectedCountry = country;\n    this.countryChange.emit(country);\n  }\n\n  public searchCountry(): void {\n    const q = this.countrySearchControl.value;\n    if (!q) {\n      this.filteredCountries = [...this.allCountries];\n      return;\n    }\n    const countrySearchTextLower = q.toLowerCase();\n    this.filteredCountries = this.allCountries.filter((country) => {\n      return country.name.toLowerCase().split(' ').join('').startsWith(countrySearchTextLower);\n    });\n\n    this.setActiveSelectedCountry();\n    this.checkSeparateDialCodeStyle();\n    this.cdr.detectChanges();\n  }\n\n  private setActiveSelectedCountry(): void {\n    setTimeout(() => {\n      const selectedItem = this.optionsList.find((item) => item.value?.iso2?.toLowerCase() === this.selectedCountry?.iso2?.toLowerCase());\n      if (selectedItem) {\n        selectedItem.select();\n        this.listbox.select(selectedItem);\n        this.listbox._setActiveOption(selectedItem);\n        selectedItem.setActiveStyles();\n        this.inputElement?.nativeElement?.focus();\n      } else {\n        this.countryList.nativeElement.scrollTop = 0;\n      }\n    });\n  }\n\n  public onPhoneNumberChange(changeFromModel: boolean = false): void {\n    let countryCode: string | undefined;\n\n    if (this.phoneNumber && typeof this.phoneNumber === 'object') {\n      const numberObj: IChangeData = this.phoneNumber;\n      this.phoneNumber = numberObj.number;\n      countryCode = numberObj.countryCode;\n\n      if (!!countryCode && countryCode !== this.selectedCountry?.iso2) {\n        const selectedCountry = this.allCountries.find((c) => c.iso2.toLowerCase() === countryCode?.toLowerCase());\n        if (selectedCountry) {\n          this.onCountrySelect(selectedCountry, this.inputElement?.nativeElement, changeFromModel);\n        }\n      } else {\n        this.freeInputMode = true;\n        this.phoneNumber = numberObj?.number ?? numberObj?.internationalNumber;\n      }\n    }\n\n    this.value = this.extractPhoneValue();\n    countryCode = countryCode || this.selectedCountry.iso2;\n\n    // START: libphonenumber-js refactor\n    let number: PhoneNumber | undefined;\n    try {\n      number = parsePhoneNumber(this.phoneNumber as string, countryCode.toUpperCase() as LibCountryCode);\n    } catch (e) {\n      // invalid number\n    }\n    // END: libphonenumber-js refactor\n\n    if (this.enableAutoCountrySelect) {\n      const countryCodeNumber = number?.countryCallingCode;\n      const matchedIso = countryCodeNumber ? this.getCountryIsoCode(Number(countryCodeNumber), number!) : this.selectedCountry.iso2;\n\n      if (matchedIso && matchedIso !== this.selectedCountry.iso2) {\n        const newCountry = this.allCountries.sort((a, b) => a.priority - b.priority).find((c) => c.iso2 === matchedIso);\n        if (newCountry) {\n          this.selectedCountry = newCountry;\n        }\n      }\n    }\n    countryCode = (countryCode ? countryCode : this.selectedCountry.iso2).toLowerCase();\n\n    this.checkSeparateDialCodeStyle();\n\n    if (!this.value) {\n      if (!changeFromModel) {\n        this.onChange(null);\n      }\n    } else if (this.freeInputMode && !changeFromModel) {\n      this.onChange({\n        internationalNumber: `+${this.phoneNumber}`,\n      } as IChangeData);\n    } else {\n      const intlNo = number ? number.format('INTERNATIONAL') : '';\n\n      if (this.separateDialCode && intlNo) {\n        this.value = this.removeDialCode(intlNo);\n      }\n\n      if (!changeFromModel) {\n        this.onChange({\n          number: this.value,\n          internationalNumber: intlNo,\n          nationalNumber: number ? number.format('NATIONAL') : '',\n          e164Number: number ? number.format('E.164') : '',\n          countryCode: countryCode.toUpperCase(),\n          dialCode: '+' + this.selectedCountry.dialCode,\n        });\n      }\n    }\n\n    if (!changeFromModel && this.phoneNumberControl.value !== this.phoneNumber) {\n      this.phoneNumberControl.setValue(this.phoneNumber, { emitEvent: false });\n    }\n  }\n\n  private extractPhoneValue(): string {\n    return this.isString(this.phoneNumber) ? this.phoneNumber : this.phoneNumber?.internationalNumber || '';\n  }\n\n  public onCountrySelect(country: ICountry, el: HTMLInputElement | null, changeFromModel: boolean = false, isClickUserGenerated = true): void {\n    this.setSelectedCountry(country);\n    this.checkSeparateDialCodeStyle();\n\n    if (this.phoneNumber && this.isString(this.phoneNumber) && this.phoneNumber.length > 0) {\n      this.value = this.extractPhoneValue();\n      let number: PhoneNumber | undefined;\n      try {\n        number = parsePhoneNumber(this.extractPhoneValue(), this.selectedCountry.iso2.toUpperCase() as LibCountryCode);\n      } catch (e) {}\n\n      const intlNo = number ? number.format('INTERNATIONAL') : '';\n\n      if (this.separateDialCode && intlNo) {\n        this.value = this.removeDialCode(intlNo);\n      }\n\n      if (!changeFromModel && isClickUserGenerated) {\n        this.onChange({\n          number: this.value,\n          internationalNumber: intlNo,\n          nationalNumber: number ? number.format('NATIONAL') : '',\n          e164Number: number ? number.format('E.164') : '',\n          countryCode: this.selectedCountry.iso2.toUpperCase(),\n          dialCode: '+' + this.selectedCountry.dialCode,\n        });\n      }\n    } else {\n      if (!changeFromModel && isClickUserGenerated) {\n        this.onChange(null);\n      }\n    }\n\n    const countryMasks = this.countryCodeData.getPhoneMask(`${this.selectedCountry.iso2}`);\n    this.countryCode = this.countryCodeData.getCountryCode(`${this.selectedCountry.iso2}`);\n    this.phoneMask = this.isArray(countryMasks) ? countryMasks[0] : countryMasks;\n\n    if (!this.phoneNumber) {\n      this.phoneNumber = this.extractMaskInitialValues(this.phoneMask);\n    }\n\n    this.phoneMask = this.generalizeRestrictedMask(this.phoneMask);\n    // this.phoneMask = this.phoneMask.replace(/0/g, '9'); // Removed for ngx-mask compatibility (0 is digit)\n    setTimeout(() => this.createPhoneMask());\n\n    if (!this.clearTextOnSelect) {\n      this.clearTextOnSelect = true;\n    } else {\n      this.countrySearchControl.setValue('');\n      this.searchCountry();\n    }\n\n    setTimeout(() => this.cdr.markForCheck());\n    el?.focus();\n  }\n\n  public onInputKeyPress(event: KeyboardEvent): void {\n    if (this.isValidInput(event)) {\n      event.preventDefault();\n    }\n  }\n\n  private isValidInput(event: KeyboardEvent): boolean {\n    const allowedChars = /[0-9]/;\n    const allowedCtrlChars = /[axcv]/;\n    const allowedOtherKeys = ['ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown', 'Home', 'End', 'Insert', 'Delete', 'Backspace'];\n\n    return !allowedChars.test(event.key) && !(event.ctrlKey && allowedCtrlChars.test(event.key)) && !allowedOtherKeys.includes(event.key);\n  }\n\n  public identify(index: number, item: ICountry): string {\n    return item.htmlId;\n  }\n\n  public registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    if (isDisabled) {\n      this.phoneNumberControl.disable({ emitEvent: false });\n      this.countrySearchControl.disable({ emitEvent: false });\n    } else {\n      this.phoneNumberControl.enable({ emitEvent: false });\n      this.countrySearchControl.enable({ emitEvent: false });\n    }\n  }\n\n  public isString(val: IChangeData | string | undefined): val is string {\n    return typeof val === 'string';\n  }\n\n  public isChangeDataObj(val: IChangeData | string | undefined): val is IChangeData {\n    return typeof val === 'object' && !!val?.internationalNumber;\n  }\n\n  public writeValue(obj: string | IChangeData | null): void {\n    if (obj === undefined || obj === null) {\n      this.phoneNumber = '';\n      this.phoneNumberControl.setValue('', { emitEvent: false });\n      this.cdr.markForCheck();\n      this.init();\n      return;\n    }\n\n    let changeDataObj: IChangeData | string = obj;\n\n    if (typeof obj === 'string') {\n      const converted = this.convertStringToPhoneNumber(obj);\n      if (converted) {\n        changeDataObj = converted;\n      } else {\n        this.phoneNumber = obj;\n        this.phoneNumberControl.setValue(obj, { emitEvent: false });\n        return;\n      }\n    }\n\n    this.phoneNumber = changeDataObj;\n    // ngx-mask only accepts string | number; pass the national-number string so the\n    // mask directive doesn't emit a \"current value: object\" warning. The full IChangeData\n    // object is kept in `this.phoneNumber` for onChange/getValue usage.\n    const numberStr =\n      typeof changeDataObj === 'object'\n        ? ((changeDataObj as IChangeData).nationalNumber ?? (changeDataObj as IChangeData).number ?? (changeDataObj as IChangeData).internationalNumber ?? '')\n        : changeDataObj;\n    this.phoneNumberControl.setValue(numberStr, { emitEvent: false });\n    setTimeout(() => {\n      this.onPhoneNumberChange(true);\n      this.cdr.markForCheck();\n    }, 1);\n  }\n\n  private convertStringToPhoneNumber(obj: string): IChangeData | null {\n    try {\n      const parsedPhone = parsePhoneNumber(obj);\n      if (parsedPhone && parsedPhone.isValid()) {\n        return {\n          number: parsedPhone.nationalNumber as string,\n          internationalNumber: parsedPhone.format('INTERNATIONAL'),\n          nationalNumber: parsedPhone.format('NATIONAL'),\n          e164Number: parsedPhone.format('E.164'),\n          countryCode: parsedPhone.country as string,\n          dialCode: '+' + parsedPhone.countryCallingCode,\n        };\n      }\n      return null;\n    } catch (e) {\n      if (this.isValidFreeInput(obj)) {\n        return {\n          internationalNumber: obj.replace('+', ''),\n        } as IChangeData;\n      }\n      return null;\n    }\n  }\n\n  public isValidFreeInput(inp: string): boolean {\n    return /(^[+][0-9]*)/.test(inp);\n  }\n\n  public resolvePlaceholder(): string {\n    let placeholder = '';\n    if (this.customPlaceholder) {\n      placeholder = this.customPlaceholder;\n    } else if (this.selectedCountry.placeHolder) {\n      placeholder = this.selectedCountry.placeHolder;\n      if (this.separateDialCode) {\n        placeholder = this.removeDialCode(placeholder);\n      }\n    }\n    return placeholder;\n  }\n\n  public focusInputElement(): void {\n    setTimeout(() => {\n      this.inputElement?.nativeElement?.focus();\n    }, 200);\n  }\n\n  public focusPhoneField(): void {\n    setTimeout(() => {\n      this.focusableElRef?.inputRef?.focus();\n    }, 100);\n  }\n\n  public onResize(event: number): void {\n    setTimeout(() => {\n      this.dropDownElementRef?.nativeElement?.style.setProperty('--container-width', `${event}px`);\n      if (this.dropDownElementRef?.nativeElement) {\n        this.dropDownElementRef.nativeElement.classList.add('force-show');\n      }\n    });\n  }\n\n  public focusSelectedCountry(): void {\n    setTimeout(() => {\n      const selectedCountry = this.countryList?.nativeElement?.querySelector('.iti__country.app-option-active');\n      selectedCountry?.scrollIntoView();\n    });\n  }\n\n  private generalizeRestrictedMask(mask: string): string {\n    return mask.replace(/[123456789]/g, '0');\n  }\n\n  private extractMaskInitialValues(mask: string): string {\n    return (mask.match(/[123456789]/g) ?? []).join('');\n  }\n\n  private checkSeparateDialCodeStyle() {\n    if (this.separateDialCode && this.selectedCountry) {\n      const cntryCd = this.selectedCountry.dialCode;\n      this.separateDialCodeClass = 'separate-dial-code iti-sdc-' + (cntryCd.length + 1);\n    } else {\n      this.separateDialCodeClass = '';\n    }\n  }\n\n  private removeDialCode(phoneNumber: string): string {\n    let number: PhoneNumber | undefined;\n    try {\n      number = parsePhoneNumber(phoneNumber, this.selectedCountry.iso2.toUpperCase() as LibCountryCode);\n    } catch (e) {}\n\n    if (!number) return phoneNumber;\n\n    // Use libphonenumber-js formatting which is better\n    // This logic mimics the original behavior of potentially removing dial code\n    let formatted = number.format(this.numberFormat === CustomPhoneNumberFormat.International ? 'INTERNATIONAL' : 'NATIONAL');\n\n    // Original logic: if starts with + and separateDialCode is true, strip it\n    if (formatted.startsWith('+') && this.separateDialCode) {\n      formatted = formatted.substring(formatted.indexOf(' ') + 1);\n    }\n    return formatted;\n  }\n\n  private getCountryIsoCode(countryCode: number, number: PhoneNumber): string | undefined {\n    // libphonenumber-js ParsedNumber has 'country' property which is the ISO code (e.g. 'US')\n    return number.country;\n  }\n\n  protected getPhoneNumberPlaceHolder(countryCode: string): string {\n    // For now, let's return a generic placeholder\n    return '123 456 7890';\n  }\n\n  protected fetchCountryData(): void {\n    this.allCountries = [];\n\n    this.countryCodeData.allCountries.forEach((c) => {\n      const country: ICountry = {\n        name: c[0].toString(),\n        iso2: c[1].toString(),\n        dialCode: c[2].toString(),\n        priority: +c[3] || 0,\n        areaCodes: (c[4] as string[]) || undefined,\n        htmlId: `iti-0__item-${c[1].toString()}`,\n        flagClass: `iti__${c[1].toString().toLocaleLowerCase()}`,\n        placeHolder: '',\n      };\n\n      if (this.enablePlaceholder) {\n        country.placeHolder = this.getPhoneNumberPlaceHolder(country.iso2.toUpperCase());\n      }\n\n      this.allCountries.push(country);\n    });\n    this.filteredCountries = JSON.parse(JSON.stringify(this.allCountries));\n  }\n\n  private updateSelectedCountry(changeFromModel: boolean): void {\n    if (this.selectedCountryISO) {\n      this.selectedCountry =\n        this.allCountries.find((c) => {\n          return c.iso2.toLowerCase() === this.selectedCountryISO.toLowerCase();\n        }) || this.selectedCountry;\n\n      if (this.selectedCountry) {\n        const countryMasks = this.countryCodeData.getPhoneMask(`${this.selectedCountry.iso2}`);\n        this.phoneMask = this.isArray(countryMasks) ? countryMasks[0] : countryMasks;\n        // this.phoneMask = this.phoneMask.replace(/0/g, '9'); // Removed for ngx-mask compatibility\n        setTimeout(() => this.createPhoneMask());\n        this.countryCode = this.countryCodeData.getCountryCode(`${this.selectedCountry.iso2}`);\n        if (this.phoneNumber) {\n          this.onPhoneNumberChange();\n        } else {\n          if (!changeFromModel) {\n            this.onChange(null);\n          }\n        }\n      }\n    }\n  }\n\n  private isArray(arg: string | string[]): arg is string[] {\n    return Array.isArray(arg);\n  }\n\n  /**\n   * Returns the minimum raw digit count needed for a potentially valid number in the\n   * given country. Derived from the country's phone mask — the count of digit\n   * placeholders (0s) represents how many digits the user must type before the\n   * number is complete enough to validate. E.g. US mask \"(999) 999-9999\" → 10 digits.\n   */\n  private getMinDigitsForCountry(country: ICountry): number {\n    const rawMask = this.countryCodeData.getPhoneMask(country.iso2);\n    const mask = Array.isArray(rawMask) ? rawMask[0] : rawMask;\n    // Count 0 placeholders — these are the actual digits the user must enter\n    const digitCount = (mask.match(/0/g) ?? []).length;\n    // Floor of 7 covers all countries (smallest: e.g. Luxembourg mobile, Belarus toll-free)\n    return Math.max(digitCount, 7);\n  }\n}\n","<input #hiddenTel type=\"tel\" autocomplete=\"tel\" style=\"position: absolute; opacity: 0; pointer-events: none; width: 0; height: 0\" />\n<ng-container *ngIf=\"!freeInputMode; else freeInputTmpl\">\n  <div class=\"iti iti--allow-dropdown phone-input\" [ngClass]=\"separateDialCodeClass\">\n    <div\n      class=\"iti__flag-container\"\n      #dropDownRef=\"bs-dropdown\"\n      dropdown\n      [autoClose]=\"autoClose\"\n      container=\"body\"\n      (onShown)=\"onDropDownShow()\"\n      [ngClass]=\"{ disabled }\"\n      [isDisabled]=\"disabled\"\n    >\n      <img class=\"iti__concave-image\" [src]=\"icons ? icons.telInputIcons.countrySelectorImage : null\" />\n      <div class=\"iti__selected-flag\" matRipple dropdownToggle>\n        <div class=\"iti__flag\" *ngIf=\"searchCountryFlag\" [ngClass]=\"selectedCountry.flagClass || ''\"></div>\n        <div *ngIf=\"separateDialCode || (!searchCountryFlag && !separateDialCode)\" class=\"selected-dial-code\">{{ countryCode }}</div>\n        <img src=\"assets/down-arrow.svg\" class=\"iti__arrow\" *ngIf=\"showDropDownArrow\" />\n      </div>\n      <div *dropdownMenu #dropDownElementRef [attr.width]=\"focusableElRef.inputRef.getBoundingClientRect().width || 0\" class=\"dropdown-menu country-dropdown\">\n        <div class=\"width-container\">\n          <div class=\"search-container\" *ngIf=\"searchCountryField\">\n            <input\n              #inputElement\n              id=\"country-search-box\"\n              [patterns]=\"customPatterns\"\n              mask=\"A{100}\"\n              autocomplete=\"off\"\n              [formControl]=\"countrySearchControl\"\n              (keyup)=\"searchCountry()\"\n              (click)=\"$event.stopPropagation()\"\n              (keydown.arrowDown)=\"onListFocus()\"\n              [placeholder]=\"searchCountryPlaceholder || ('TEL_INPUT.SEARCH_COUNTRY' | translate)\"\n              autofocus\n            />\n          </div>\n          <ul appListbox (keydown.enter)=\"dropDownRef.hide(); inputElement.nativeElement.focus()\" role=\"listbox\" class=\"iti__country-list\" #countryList>\n            <li\n              [appOption]=\"country\"\n              class=\"iti__country iti__standard\"\n              *ngFor=\"let country of filteredCountries; trackBy: identify; let i = index\"\n              (click)=\"onCountrySelect(country, inputElement.nativeElement, false, $event.isTrusted)\"\n              (keydown.enter)=\"onCountrySelect(country, inputElement.nativeElement)\"\n              [id]=\"country.htmlId\"\n            >\n              <div class=\"iti__flag-box\">\n                <div class=\"iti__flag\" [ngClass]=\"country.flagClass\"></div>\n              </div>\n              <span class=\"iti__country-name\">{{ country.name }}</span>\n              <span class=\"iti__dial-code\">+{{ country.dialCode }}</span>\n            </li>\n            <li *ngIf=\"!filteredCountries.length\" class=\"iti__country iti__standard disabled\">\n              <span class=\"iti__country-name\">{{ 'TEL_INPUT.NO_COUNTRIES_FOUND' | translate }}</span>\n            </li>\n          </ul>\n        </div>\n      </div>\n    </div>\n    <div class=\"input-toggle-container\">\n      <div\n        lib-input-field\n        (resized)=\"onResize($event.newRect.inlineSize)\"\n        type=\"tel\"\n        [id]=\"inputId\"\n        [attr.autocomplete]=\"autocomplete\"\n        [ngClass]=\"cssClass\"\n        (onBlur)=\"onTouched()\"\n        (keypress)=\"onInputKeyPress($event)\"\n        [formControl]=\"phoneNumberControl\"\n        [placeholder]=\"resolvePlaceholder()\"\n        [mask]=\"phoneMask\"\n        #inputField\n      ></div>\n    </div>\n  </div>\n  <div class=\"error-outline\"></div>\n</ng-container>\n\n<ng-template #freeInputTmpl>\n  <div class=\"iti iti--allow-dropdown phone-input\" [ngClass]=\"separateDialCodeClass\">\n    <div\n      lib-input-field\n      class=\"free-inp-mode\"\n      type=\"tel\"\n      [id]=\"inputId\"\n      [attr.autocomplete]=\"autocomplete\"\n      [ngClass]=\"cssClass\"\n      (onBlur)=\"onTouched()\"\n      (keypress)=\"onInputKeyPress($event)\"\n      [formControl]=\"phoneNumberControl\"\n      [mask]=\"'000000000000000'\"\n      [prefix]=\"'+'\"\n      [attr.maxLength]=\"maxLength\"\n      [attr.validation]=\"phoneValidation\"\n      #inputField\n    ></div>\n  </div>\n  <div class=\"error-outline\"></div>\n</ng-template>\n\n<!--Saved for future Ref-->\n<!--\nShow error and option to switch to free input field if number is incorrect\nShow option to switch back to masked field if freeMode is ON\n-->\n<!--<ng-container *ngIf=\"!freeInputMode && !!(ngControl?.control?.dirty || ngControl?.control?.touched)\">\n  <ng-container *ngIf=\"phoneNumber && !isValidNumber\">\n    <span class=\"tel-field-info error\">\n      {{ 'PHONE_NUM_ERROR.DOES_NOT_SEEM_RIGHT' | translate }}\n      <a [href]=\"'https://countrycode.org/' + selectedCountry?.iso2?.toLowerCase() + '#collapseNationalCodes'\" target=\"_blank\">{{ 'PHONE_NUM_ERROR.HERE' | translate }}</a>\n      <br />\n      <span>\n        {{ 'PHONE_NUM_ERROR.ADD_PHONE_MANUALLY' | translate }}\n        <a class=\"text-underline\" (click)=\"toggleFreeInputMode(); focusPhoneField()\">{{ 'PHONE_NUM_ERROR.HERE' | translate }}</a>\n      </span>\n    </span>\n  </ng-container>\n  <ng-container *ngIf=\"!phoneNumber\">\n    <span class=\"tel-field-info error required\">\n      {{ 'PHONE_NUM_ERROR.REQUIRED' | translate }}\n    </span>\n  </ng-container>\n  <ng-container *ngIf=\"ngControl?.control?.errors?.notUniquePhone\">\n    <span class=\"tel-field-info error required\">\n      <span>{{ 'PHONE_NUM_ERROR.PHONE_NUMBER_EXISTS' | translate }}</span>\n      <span class=\"login\" (click)=\"handleErrorAction.emit('DUPLICATE_PHONE')\">{{ 'PHONE_NUM_ERROR.LOGIN' | translate }}</span>\n    </span>\n  </ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"freeInputMode\">\n  <span class=\"tel-field-info free-inp-mode\">\n    {{ 'PHONE_NUM_ERROR.ADD_PHONE_USING_GUIDE' | translate }}\n    <a class=\"text-underline\" (click)=\"toggleFreeInputMode(); focusPhoneField()\">{{ 'PHONE_NUM_ERROR.HERE' | translate }}</a>\n  </span>\n</ng-container>-->\n","import { BsDropdownModule } from 'ngx-bootstrap/dropdown';\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { CdkListboxModule } from '@angular/cdk/listbox';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatRippleModule } from '@angular/material/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { InputFieldModule } from '../../components/input-field/input-field.module';\nimport { DirectiveModule } from '../../directives/directive.module';\nimport { NativeElementInjectorDirective } from '../../directives/native-element-injector/native-element-injector.directive';\nimport { ToggleModule } from '../toggle/toggle.module';\nimport { TelErrorsComponent } from './tel-errors/tel-errors.component';\nimport { TelInputComponent } from './tel-input.component';\n\n@NgModule({\n  declarations: [TelInputComponent, NativeElementInjectorDirective, TelErrorsComponent],\n  exports: [TelInputComponent, NativeElementInjectorDirective, TelErrorsComponent],\n  providers: [provideNgxMask()],\n  imports: [\n    CdkListboxModule,\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    BsDropdownModule.forRoot(),\n    InputFieldModule,\n    MatRippleModule,\n    DirectiveModule,\n    NgxMaskDirective,\n    NgxMaskPipe,\n    TranslateModule,\n    ToggleModule,\n    TextFieldModule,\n  ],\n})\nexport class TelInputModule {}\n","export enum LoginFormType {\n  Email = 'email',\n  Phone = 'phone',\n}\n","// OBSERVATION: When CVA writeValue receives an email string while the toggle is on phone mode, switch to email mode first or the DOM shows the tel input and prefill looks empty.\nimport { AutofillMonitor } from '@angular/cdk/text-field';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { Subject, filter, merge, takeUntil, tap } from 'rxjs';\nimport { LoginFormType } from '../../enums/login-input-form.enum';\nimport { IPhoneDetails } from '../../model/auth.models';\nimport { AuthIcons } from '../../types/auth-icons';\nimport { InputFieldComponent } from '../input-field/input-field.component';\nimport { ToggleVariants } from '../toggle/enums/toggle-variants.enum';\n\n@Component({\n  selector: 'lib-login-input',\n  templateUrl: './login-input.component.html',\n  styleUrl: './login-input.component.scss',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => LoginInputComponent),\n      multi: true,\n    },\n  ],\n  standalone: false,\n  animations: [\n    trigger('slideEmailIn', [\n      transition(':enter', [style({ transform: 'translateX(75px)', opacity: 0 }), animate('400ms ease-out', style({ transform: 'translateX(0)', opacity: 1 }))]),\n    ]),\n    trigger('slidePhoneIn', [\n      transition(':enter', [style({ transform: 'translateX(-75px)', opacity: 0 }), animate('400ms ease-out', style({ transform: 'translateX(0)', opacity: 1 }))]),\n      transition(':leave', [style({ position: 'absolute', left: '0', top: '0' }), animate('300ms ease-in', style({ transform: 'translateX(-75px)', opacity: 0 }))]),\n    ]),\n  ],\n})\nexport class LoginInputComponent implements OnDestroy, OnInit, AfterViewInit, ControlValueAccessor {\n  @Input() usernameLabel: string = '';\n  @Input() phoneNumberPlaceHolder: string = '';\n  @Input() icons!: AuthIcons;\n\n  @Output() loginFormTypeChange: EventEmitter<LoginFormType> = new EventEmitter<LoginFormType>();\n\n  public LoginFormType = LoginFormType;\n  public selectedLoginFormMode: LoginFormType = LoginFormType.Email;\n  public isFormValid: Record<LoginFormType, boolean> = { email: true, phone: true };\n  public firstChange: boolean = false;\n  public TOGGLE_VARIANTS: typeof ToggleVariants = ToggleVariants;\n  public hasToggled = false;\n\n  public phoneControl!: FormControl<IPhoneDetails>;\n  public emailControl!: FormControl<string>;\n\n  private onChange: (value: string | IPhoneDetails) => void = () => {};\n  private onTouched: () => void = () => {};\n  private destroy$ = new Subject<void>();\n\n  @ViewChild('loginInputField')\n  private loginInputFieldComponent!: InputFieldComponent;\n  private loginInputFieldRef!: ElementRef<HTMLInputElement>;\n  private didBrowserAutofillEmail: boolean = false;\n\n  constructor(private autofillMonitor: AutofillMonitor) {}\n\n  ngOnInit(): void {\n    this.buildForm();\n    this.setEmailFormType();\n\n    merge(\n      this.emailControl.valueChanges.pipe(\n        filter(() => this.firstChange),\n        tap(() => {\n          this.isFormValid.email = this.emailControl.valid;\n        }),\n      ),\n      this.phoneControl.valueChanges.pipe(\n        filter(() => this.firstChange),\n        tap(() => {\n          this.isFormValid.phone = this.phoneControl.valid;\n        }),\n      ),\n    )\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((value) => {\n        this.onChange(value);\n        this.onTouched();\n        this.firstChange = true;\n      });\n  }\n\n  public buildForm(): void {\n    // Use nonNullable: true to match the type declarations\n    this.phoneControl = new FormControl({ countryCode: '+1' } as IPhoneDetails, {\n      nonNullable: true,\n      validators: [Validators.required],\n    });\n    this.emailControl = new FormControl('', {\n      nonNullable: true,\n      validators: [Validators.required],\n    });\n  }\n\n  public emitAutofillEmailValue(): void {\n    if (!this.didBrowserAutofillEmail) return;\n    this.onChange(this.emailControl.value);\n    this.didBrowserAutofillEmail = false;\n  }\n\n  ngAfterViewInit(): void {\n    if (this.loginInputFieldComponent) {\n      this.loginInputFieldRef = this.loginInputFieldComponent.inputFieldRef;\n\n      if (this.loginInputFieldRef) {\n        this.autofillMonitor\n          .monitor(this.loginInputFieldRef)\n          .pipe(takeUntil(this.destroy$))\n          .subscribe((autofillEvent) => {\n            if (autofillEvent.isAutofilled && this.selectedLoginFormMode === LoginFormType.Email) {\n              this.didBrowserAutofillEmail = true;\n            }\n          });\n      }\n    }\n  }\n\n  public onFieldClick(): void {\n    this.firstChange = true;\n  }\n\n  public toggleInput(): void {\n    this.hasToggled = true;\n    switch (this.selectedLoginFormMode) {\n      case LoginFormType.Email:\n        this.setPhoneFormType();\n        break;\n      case LoginFormType.Phone:\n        this.setEmailFormType();\n        break;\n    }\n  }\n\n  public writeValue(value: string | IPhoneDetails): void {\n    // Handle writing values from parent form if needed\n    if (value && typeof value === 'object' && 'countryCode' in value) {\n      this.phoneControl.setValue(value as IPhoneDetails);\n    } else if (typeof value === 'string') {\n      if (value !== '' && this.selectedLoginFormMode !== LoginFormType.Email) {\n        this.setEmailFormType();\n      }\n      this.emailControl.setValue(value);\n    }\n  }\n\n  public registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  public setDisabledState?(isDisabled: boolean): void {\n    let loginControl: FormControl<string | IPhoneDetails>;\n    switch (this.selectedLoginFormMode) {\n      case LoginFormType.Email:\n        loginControl = this.emailControl;\n        break;\n      case LoginFormType.Phone:\n        loginControl = this.phoneControl;\n        break;\n      default:\n        loginControl = this.emailControl;\n        break;\n    }\n    if (isDisabled) {\n      loginControl.disable();\n    } else {\n      loginControl.enable();\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.loginInputFieldRef) this.autofillMonitor.stopMonitoring(this.loginInputFieldRef);\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  public checkFormValidation(): void {\n    switch (this.selectedLoginFormMode) {\n      case LoginFormType.Email:\n        this.isFormValid.email = this.emailControl.valid;\n        break;\n      case LoginFormType.Phone:\n        this.isFormValid.phone = this.phoneControl.valid;\n        break;\n    }\n  }\n\n  private setEmailFormType(): void {\n    this.selectedLoginFormMode = LoginFormType.Email;\n    this.loginFormTypeChange.emit(LoginFormType.Email);\n    this.onChange(this.emailControl.value);\n  }\n\n  private setPhoneFormType(): void {\n    this.selectedLoginFormMode = LoginFormType.Phone;\n    this.loginFormTypeChange.emit(LoginFormType.Phone);\n    this.onChange(this.phoneControl.value);\n    setTimeout(() => {\n      this.phoneControl.markAsPristine();\n      this.phoneControl.markAsUntouched();\n      this.isFormValid.phone = true;\n    });\n  }\n}\n","<div class=\"container-wrapper\" *ngIf=\"icons && selectedLoginFormMode\">\n  <div class=\"input-toggle-container\" (focusout)=\"checkFormValidation()\" [@.disabled]=\"!hasToggled\">\n    @switch (selectedLoginFormMode) {\n      @case (LoginFormType.Email) {\n        <lib-input-field\n          @slideEmailIn\n          #loginInputField\n          (click)=\"onFieldClick()\"\n          [label]=\"usernameLabel\"\n          (input)=\"emitAutofillEmailValue()\"\n          [formControl]=\"emailControl\"\n          [maxLength]=\"'500'\"\n          [type]=\"'text'\"\n          [name]=\"'username'\"\n          autocomplete=\"username\"\n        ></lib-input-field>\n      }\n\n      @case (LoginFormType.Phone) {\n        <lib-tel-input\n          @slidePhoneIn\n          [cssClass]=\"'custom'\"\n          [enablePlaceholder]=\"true\"\n          [searchCountryFlag]=\"false\"\n          [selectFirstCountry]=\"false\"\n          [showDropDownArrow]=\"true\"\n          [maxLength]=\"15\"\n          [phoneValidation]=\"true\"\n          [icons]=\"icons\"\n          name=\"phone\"\n          [formControl]=\"phoneControl\"\n          [customPlaceholder]=\"phoneNumberPlaceHolder\"\n          (click)=\"onFieldClick()\"\n        >\n        </lib-tel-input>\n      }\n    }\n\n    <lib-toggle\n      [left]=\"icons.toggleIcons.left || null\"\n      [right]=\"icons.toggleIcons.right || null\"\n      [variant]=\"TOGGLE_VARIANTS.Image\"\n      [thumbImg]=\"icons.toggleIcons.thumb || ''\"\n      [toggleState]=\"selectedLoginFormMode === LoginFormType.Phone\"\n      (toggleStateChange)=\"toggleInput()\"\n    ></lib-toggle>\n  </div>\n  @switch (selectedLoginFormMode) {\n    @case (LoginFormType.Email) {\n      <div class=\"error-outline\" [ngClass]=\"{ 'error-outline--valid': isFormValid.email, 'error-outline--invalid': !isFormValid.email }\"></div>\n    }\n\n    @case (LoginFormType.Phone) {\n      <div class=\"error-outline\" [ngClass]=\"{ 'error-outline--valid': isFormValid.phone, 'error-outline--invalid': !isFormValid.phone }\"></div>\n    }\n  }\n</div>\n<div class=\"error-message-container\">\n  @switch (selectedLoginFormMode) {\n    @case (LoginFormType.Email) {\n      <lib-error-message class=\"input-error\" [config]=\"{ control: emailControl }\"> </lib-error-message>\n    }\n\n    @case (LoginFormType.Phone) {\n      <lib-error-message class=\"input-error\" [config]=\"{ control: phoneControl }\"> </lib-error-message>\n    }\n  }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormValidatorModule } from '../../directives/form-validator/form-validator.module';\nimport { LibErrorMessageComponent } from '../form-validator/error-message/error-message.component';\nimport { InputFieldModule } from '../input-field/input-field.module';\nimport { TelInputModule } from '../tel-input/tel-input.module';\nimport { ToggleModule } from '../toggle/toggle.module';\nimport { LoginInputComponent } from './login-input.component';\n\n@NgModule({\n  declarations: [LoginInputComponent],\n  exports: [LoginInputComponent],\n  imports: [CommonModule, TelInputModule, ToggleModule, InputFieldModule, ReactiveFormsModule, FormValidatorModule, LibErrorMessageComponent],\n})\nexport class LoginInputModule {}\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { NgOtpInputComponent } from 'ng-otp-input';\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';\n\n@Component({\n  selector: 'lib-otp-input',\n  templateUrl: './otp-input.component.html',\n  styleUrls: ['./otp-input.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OtpInputComponent implements AfterViewInit, OnChanges, OnDestroy {\n  // Number of digits required for the OTP input\n  @Input() length: number = 6;\n  @Input() placeholder = '';\n  @Input() formCtrl: FormControl = new FormControl();\n  // Reference to the underlying NgOtpInputComponent\n  @ViewChild(NgOtpInputComponent) ngOtpInputComponent!: NgOtpInputComponent;\n  // Internal control used for managing input manually\n  public loading: boolean = true;\n\n  public internalCtrl: FormControl<string> = new FormControl();\n  // Emits the OTP string after debounce for syncing with external form\n  private formatted$ = new Subject<string>();\n\n  public componentDestroyed$: Subject<void> = new Subject<void>();\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    // When the `length` input changes, force a view refresh\n    if (changes['length']?.currentValue !== changes['length']?.previousValue) {\n      this.loading = false;\n      this.cdr.detectChanges(); // Trigger view update to reflect state\n      this.loading = true;\n      this.cdr.detectChanges(); // Finalize the refresh cycle\n    }\n  }\n\n  ngAfterViewInit(): void {\n    // Run the OTP initialization process after the view is ready\n    setTimeout(() => {\n      // 1. Normalize the form control value and pad it with spaces if needed\n      const raw = (this.formCtrl.value ?? '').padEnd(this.length, ' ');\n\n      // 2. Retrieve internal controls from the OTP input component in visual order\n      const boxes = Object.values(this.ngOtpInputComponent.otpForm.controls) as FormControl[];\n\n      // 3. Populate each box with the corresponding character from `raw`, preserving empty spaces\n      boxes.forEach((ctrl, idx) => {\n        const ch = raw[idx] ?? ' ';\n        ctrl.setValue(ch.trim() ? ch : '', { emitEvent: false }); // Do not trigger valueChanges yet\n      });\n\n      // 4. Set required validators for each box to ensure no empty values\n      boxes.forEach((control) => control.setValidators([Validators.required]));\n      this.ngOtpInputComponent.otpForm.updateValueAndValidity({ emitEvent: false });\n\n      // 5. Mark all boxes as touched to activate validation styles (e.g. red borders)\n      this.ngOtpInputComponent.otpForm.markAllAsTouched();\n\n      // 6. Initialize the debounced value emitter that listens to input changes\n      this.setupDebouncedEmitter();\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  // Resets all OTP input boxes to empty\n  public resetOtpInput(): void {\n    this.ngOtpInputComponent.setValue('');\n  }\n\n  // Sets up a debounced stream that emits the OTP string 250ms after the last change\n  private setupDebouncedEmitter(): void {\n    this.formatted$.pipe(debounceTime(250), distinctUntilChanged(), takeUntil(this.componentDestroyed$)).subscribe((str) => this.formCtrl.setValue(str)); // emitEvent:true\n  }\n\n  // Called when any of the OTP boxes changes its value\n  public handleOtpChange(): void {\n    // Retrieve the form controls representing each digit\n    const controls = Object.values(this.ngOtpInputComponent.otpForm.controls) as FormControl[];\n\n    // Concatenate values from each control into a full OTP string, replacing empty values with spaces\n    const str = controls.map((control) => (control.value && control.value.trim() ? control.value : ' ')).join('');\n\n    // Emit the full OTP string for debounced processing\n    this.formatted$.next(str);\n  }\n}\n","@if (placeholder) {\n  <strong>{{ placeholder }}</strong>\n}\n@if (loading) {\n  <ng-otp-input class=\"otp-override\" [config]=\"{ length: length, allowNumbersOnly: true }\" [formCtrl]=\"internalCtrl\" (onInputChange)=\"handleOtpChange()\"></ng-otp-input>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { NgOtpInputModule } from 'ng-otp-input';\nimport { DirectiveModule } from '../../../directives/directive.module';\nimport { OtpInputComponent } from './otp-input.component';\n\n@NgModule({\n  imports: [CommonModule, DirectiveModule, FormsModule, ReactiveFormsModule, IonicModule, MatInputModule, MatButtonModule, MatIconModule, TranslateModule, NgOtpInputModule],\n  declarations: [OtpInputComponent],\n  exports: [OtpInputComponent],\n})\nexport class OtpInputModule {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { OtpInputComponent } from '../authentication/otp-input/otp-input.component';\n\n@Component({\n  selector: 'lib-verification',\n  templateUrl: './shared-verification-code.component.html',\n  styleUrls: ['./shared-verification-code.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SharedVerificationComponent implements OnInit, OnDestroy {\n  @Input() hideVerificationTitle: boolean = false;\n  @Input() hideEdit: boolean = false;\n  @Input() confirmBtnTitle: string = '';\n  @Input() sourceOfCode: string = '';\n  @Input() otpInput: string = '';\n  @Input() loading$: Observable<boolean> = new Observable<boolean>();\n  @Input() secondsLeft$: Observable<number> = new Observable<number>();\n  @Input() customClass: string = '';\n  @Input() noOfBox: number = 5;\n  @Input() showConfirmBtn: boolean = true;\n\n  @Input() otpCode: FormControl<string | null> = new FormControl<string | null>('');\n\n  @Output() dataSubmit = new EventEmitter<string>();\n  @Output() resend = new EventEmitter<boolean>();\n  @Output() edit = new EventEmitter<boolean>();\n\n  @ViewChild(OtpInputComponent) otpInputComponent!: OtpInputComponent;\n\n  public secondsLeft = 30;\n\n  public downloadTimer: number | null = null;\n\n  public componentDestroyed$: Subject<void> = new Subject();\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  ngOnInit(): void {\n    if (!this.otpCode) {\n      this.otpCode = new FormControl<string | null>(this.otpInput, [Validators.required, Validators.minLength(this.noOfBox)]);\n    }\n\n    this.startCount();\n    if (this.secondsLeft$) {\n      this.secondsLeft$.pipe(takeUntil(this.componentDestroyed$)).subscribe((secondsLeft) => {\n        this.secondsLeft = secondsLeft;\n      });\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.downloadTimer) {\n      clearInterval(this.downloadTimer);\n    }\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  /**\n   * Resend button click event\n   */\n  public onResend(): void {\n    this.resend.emit(true);\n    this.secondsLeft = 30;\n    this.otpCode.setValue('');\n    this.otpInputComponent?.resetOtpInput();\n    this.startCount();\n  }\n\n  /**\n   * On confirm verification code\n   */\n  public confirm(): void {\n    if (this.otpCode?.valid) {\n      const otpValue = this.otpCode.value;\n      if (otpValue) {\n        this.dataSubmit.emit(otpValue);\n      }\n    } else {\n      this.otpCode.markAsTouched();\n    }\n  }\n\n  public onEdit(): void {\n    this.edit.emit(true);\n  }\n\n  /**\n   * Start counting resend timer\n   */\n  private startCount(): void {\n    if (this.downloadTimer) {\n      clearInterval(this.downloadTimer);\n      this.downloadTimer = null;\n    }\n\n    this.downloadTimer = window.setInterval(() => {\n      if (this.secondsLeft === 0) {\n        if (this.downloadTimer) {\n          clearInterval(this.downloadTimer);\n          this.downloadTimer = null;\n        }\n      } else {\n        this.secondsLeft -= 1;\n      }\n      this.cdr.detectChanges();\n    }, 1000);\n  }\n}\n","<form class=\"form\" [ngClass]=\"[customClass ? customClass : '']\">\n  <span class=\"message f-calistoga f-w-400 h-160 f-white\" *ngIf=\"!hideVerificationTitle\">{{ 'CLIENT_USER.MY_VERIFICATION_CODE_IS' | translate }}</span>\n  <div class=\"phone-edit\">\n    <span class=\"f-gilroy-medium f-w-400 f-light-gray h-150 f-md\">{{ sourceOfCode }}</span>\n    <lib-secondary-btn *ngIf=\"!hideEdit\" (click)=\"onEdit()\" class=\"edit-btn\">{{ 'CLIENT_USER.EDIT' | translate }} </lib-secondary-btn>\n  </div>\n\n  <div class=\"verification-code f-gilroy-regular f-w-400 f-2xl h-160 f-white\">\n    <lib-otp-input [formCtrl]=\"otpCode\" [length]=\"noOfBox\"></lib-otp-input>\n  </div>\n  <div class=\"resend-container\">\n    <lib-secondary-btn (click)=\"onResend()\" [disabled]=\"secondsLeft > 0\" [class]=\"'resend f-w-400 f-xl h-160'\" [ngClass]=\"{ disabled: secondsLeft > 0 }\">\n      {{ 'CLIENT_USER.RESEND' | translate }}</lib-secondary-btn\n    >\n    <div class=\"f-gilroy-medium f-w-400 f-sm h-150 f-light-gray count-container\">\n      <span>{{ 'CLIENT_USER.RESEND_IN' | translate }}</span>\n      <span class=\"number-slot\" [style.width.px]=\"14 + (secondsLeft.toString().length - 1) * 5\">\n        {{ secondsLeft }}\n      </span>\n      <span>{{ 'CLIENT_USER.SECONDS' | translate }}</span>\n    </div>\n  </div>\n\n  @if (showConfirmBtn) {\n    <lib-primary-btn (click)=\"confirm()\" [disabled]=\"!!otpCode.invalid\" class=\"f-w-400 f-xl h-160\" [loading$]=\"loading$\">\n      <span>{{ confirmBtnTitle || 'CLIENT_USER.CONTINUE' | translate }}</span>\n    </lib-primary-btn>\n  }\n</form>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { OtpInputModule } from '../authentication/otp-input/otp-input.module';\nimport { ButtonsModule } from '../buttons/buttons.module';\nimport { SharedVerificationComponent } from './shared-verification-code.component';\n\n@NgModule({\n  declarations: [SharedVerificationComponent],\n  imports: [CommonModule, IonicModule, OtpInputModule, ReactiveFormsModule, TranslateModule, ButtonsModule],\n  exports: [SharedVerificationComponent],\n})\nexport class SharedVerificationCodeModule {}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { IForgetPasswordForm } from '../../../model/auth.models';\nimport { AbstractAuthService } from '../abstract-auth.service';\nimport { AuthModuleViewComponent } from '../auth-module-view';\n\n@Component({\n  selector: 'lib-forgot-password',\n  templateUrl: './forgot-password.component.html',\n  styleUrls: ['./forgot-password.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ForgotPasswordScreenComponent extends AuthModuleViewComponent implements OnInit {\n  @Input() customClass: string = '';\n\n  declare public form: FormGroup<IForgetPasswordForm>;\n\n  public override loading$ = this.authService.loading$;\n\n  constructor(public override authService: AbstractAuthService) {\n    super(authService);\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.buildForm(); // TODO email\n  }\n\n  ionViewWillLeave(): void {\n    this.form = new FormGroup<IForgetPasswordForm>({\n      email: new FormControl('', [Validators.required, Validators.email]) as FormControl<string>,\n    });\n  }\n\n  /**\n   * submit forgot password form\n   */\n  public onSubmit(): void {\n    if (this.form.valid) {\n      this.authService.sendForgetPasswordRequest(this.form.getRawValue());\n    } else {\n      this.form.markAllAsTouched();\n    }\n  }\n\n  /**\n   * build login form group\n   */\n  private buildForm(): void {\n    this.form = new FormGroup<IForgetPasswordForm>({\n      email: new FormControl(this.username, [Validators.required, Validators.email]) as FormControl<string>,\n    });\n  }\n}\n","<ion-content>\n  <div class=\"auth-container\" [ngClass]=\"[customClass]\" submitOnEnter (enter)=\"onSubmit()\">\n    <form [formGroup]=\"form\" autocomplete=\"off\" libFocusInvalidInput *ngIf=\"form\">\n      <div class=\"center-contents-column\">\n        <img [src]=\"icons.logo\" width=\"170\" height=\"80\" alt=\"\" class=\"cyrano-logo\" />\n        <p class=\"form-title primary-text\">{{ 'AUTH.FORGOT_PASSWORD' | translate }}</p>\n        <div class=\"auth-circle\">\n          <img [src]=\"icons.password.lock\" alt=\"\" />\n        </div>\n        <p class=\"primary-text\">{{ 'AUTH.FORGOT_PASSWORD_ENTER_EMAIL' | translate }}</p>\n        <div class=\"custom-input\">\n          <lib-input-field type=\"text\" [readonly]=\"(loading$ | async) || false\" formControlName=\"email\" [label]=\"'FIELDS.EMAIL' | translate\" maxLength=\"500\"> </lib-input-field>\n        </div>\n        <lib-error-message class=\"input-error\" [config]=\"{ control: $any(form.controls['email']) }\"> </lib-error-message>\n      </div>\n    </form>\n  </div>\n</ion-content>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { IResetPasswordForm } from '../../../../model/auth.models';\nimport { AbstractAuthService } from '../../abstract-auth.service';\nimport { AuthModuleViewComponent } from '../../auth-module-view';\n\n@Component({\n  selector: 'lib-reset-password',\n  templateUrl: './reset-password.component.html',\n  styleUrls: ['./reset-password.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ResetPasswordScreenComponent extends AuthModuleViewComponent implements OnInit {\n  public hide: boolean = true;\n  public confirmPasswordHide: boolean = true;\n\n  public override loading$ = this.authService.loading$;\n\n  declare public form: FormGroup;\n\n  constructor(public override authService: AbstractAuthService) {\n    super(authService);\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.buildForm();\n  }\n\n  /**\n   * submit reset password\n   */\n  public onSubmit(): void {\n    if (this.form.valid) {\n      this.authService.sendResetPasswordRequest({ password: this.form.value.password, email: this.username });\n    } else {\n      this.form.markAllAsTouched();\n    }\n  }\n\n  /**\n   * build reset password form\n   */\n  private buildForm(): void {\n    this.form = new FormGroup<IResetPasswordForm>({\n      password: new FormControl('', [Validators.required]) as FormControl<string>,\n      confirmPassword: new FormControl('', [Validators.required]) as FormControl<string>,\n    });\n  }\n}\n","<ion-content>\n  <div class=\"auth-container\" submitOnEnter (enter)=\"onSubmit()\">\n    <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" autocomplete=\"off\" libFocusInvalidInput *ngIf=\"form\" id=\"reset-password-form\">\n      <div class=\"center-contents-column\">\n        <img [src]=\"icons.logo\" class=\"cyrano-logo\" width=\"170\" height=\"80\" alt=\"\" />\n        <p class=\"form-title primary-text\">{{ 'AUTH.CREATE_NEW_PASSWORD' | translate }}</p>\n        <div class=\"auth-circle\">\n          <img [src]=\"icons.password.unlock\" alt=\"\" />\n        </div>\n        <p class=\"primary-text\">\n          {{ 'AUTH.FORGOT_PASSWORD_ENTER_NEW_PASSWORD' | translate }}\n        </p>\n        <div class=\"custom-input\">\n          <lib-input-field\n            [readonly]=\"(loading$ | async) || false\"\n            [type]=\"hide ? 'password' : 'text'\"\n            formControlName=\"password\"\n            customPasswordValidator\n            [label]=\"'FIELDS.PASSWORD' | translate\"\n            name=\"password\"\n            autocomplete=\"new-password\"\n          ></lib-input-field>\n          <button mat-icon-button [disableRipple]=\"true\" type=\"button\" (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\n            <mat-icon>{{ hide ? 'visibility_off' : 'visibility' }}</mat-icon>\n          </button>\n        </div>\n        <lib-error-message\n          class=\"input-error bottom-space\"\n          [config]=\"{\n            customErrorMessage: $any(form.controls['password'].errors)?.['message'] || '',\n            control: $any(form.controls['password']),\n          }\"\n        >\n        </lib-error-message>\n\n        <div class=\"custom-input\">\n          <lib-input-field\n            [readonly]=\"(loading$ | async) || false\"\n            [type]=\"confirmPasswordHide ? 'password' : 'text'\"\n            formControlName=\"confirmPassword\"\n            [libConfirmPasswordValidator]=\"'password'\"\n            [label]=\"'FIELDS.CONFIRM_PASSWORD' | translate\"\n            name=\"confirmPassword\"\n            autocomplete=\"new-password\"\n          ></lib-input-field>\n          <button\n            mat-icon-button\n            type=\"button\"\n            [disableRipple]=\"true\"\n            (click)=\"confirmPasswordHide = !confirmPasswordHide\"\n            [attr.aria-label]=\"'Hide password'\"\n            [attr.aria-pressed]=\"confirmPasswordHide\"\n          >\n            <mat-icon>{{ confirmPasswordHide ? 'visibility_off' : 'visibility' }}</mat-icon>\n          </button>\n        </div>\n        <lib-error-message\n          class=\"input-error\"\n          [config]=\"{\n            customErrorMessage:\n              $any(form.controls['confirmPassword']).value &&\n              $any(form.controls['confirmPassword']).errors &&\n              ($any(form.controls['confirmPassword']).touched || $any(form.controls['confirmPassword']).dirty)\n                ? ('FIELDS.PASSWORD_MUST_MATCH' | translate)\n                : '',\n            control: $any(form.controls['confirmPassword']),\n          }\"\n        >\n        </lib-error-message>\n      </div>\n    </form>\n  </div>\n</ion-content>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { AbstractAuthService } from '../../abstract-auth.service';\nimport { AuthModuleViewComponent } from '../../auth-module-view';\n\n@Component({\n  selector: 'lib-verification-code',\n  templateUrl: './verification-code.component.html',\n  styleUrls: ['./verification-code.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class VerificationCodeScreenComponent extends AuthModuleViewComponent implements OnInit {\n  @Input() customClass: string = '';\n  @Input() noOfBox: number = 6;\n\n  @Output() handleEdit: EventEmitter<void> = new EventEmitter();\n\n  public resendInfo: { retriesMax: number; retries: number } = { retriesMax: 0, retries: 0 }; // Initialize with default values\n  public secondsLeft: number = 0;\n  public secondsLeft$!: Observable<number>;\n\n  declare form: FormControl<string>;\n\n  constructor(public override authService: AbstractAuthService) {\n    super(authService);\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.secondsLeft$ = this.authService.secondsLeft$;\n    this.buildForm();\n  }\n\n  public onSubmit(): void {\n    this.authService.verifyForgetPasswordRequest({ code: this.form.value, email: this.username });\n  }\n\n  public reSendVerificationCode(): void {\n    this.authService.verifyForgetPasswordRequestResend({ email: this.username });\n  }\n\n  public onEdit(): void {\n    this.handleEdit.emit();\n  }\n\n  private buildForm(): void {\n    this.form = new FormControl('', [Validators.required, Validators.minLength(6)]) as FormControl<string>;\n  }\n}\n","<ion-content>\n  <div class=\"auth-container\" [ngClass]=\"[customClass ? customClass : '']\">\n    <div class=\"center-contents-column\">\n      <img [src]=\"icons.logo\" class=\"cyrano-logo\" width=\"170\" height=\"80\" alt=\"\" />\n      <lib-verification\n        [otpCode]=\"form\"\n        [sourceOfCode]=\"username\"\n        [noOfBox]=\"noOfBox\"\n        [loading$]=\"loading$\"\n        [secondsLeft$]=\"secondsLeft$\"\n        [showConfirmBtn]=\"false\"\n        (dataSubmit)=\"onSubmit()\"\n        (resend)=\"reSendVerificationCode()\"\n        (edit)=\"onEdit()\"\n      ></lib-verification>\n    </div>\n  </div>\n</ion-content>\n","// OBSERVATION: Initial username for the reactive form must come from authService.username (not only the copied this.username) so parent can set AuthService before buildForm runs.\nimport { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { takeUntil } from 'rxjs';\nimport { LoginFormType } from '../../../enums/login-input-form.enum';\nimport { ILoginForm } from '../../../model/auth.models';\nimport { AbstractAuthService } from '../abstract-auth.service';\nimport { AuthModuleViewComponent } from '../auth-module-view';\n\n@Component({\n  selector: 'lib-login-screen',\n  templateUrl: './login.component.html',\n  styleUrls: ['./login.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class LoginScreenComponent extends AuthModuleViewComponent implements OnInit {\n  @Input() title: string = '';\n  @Input() entryTitle: string = '';\n  @Input() usernameLabel: string = '';\n  @Input() phoneNumberPlaceHolder: string = '';\n  @Input() enableRememberMe = true;\n  @Input() enableForgetPassword: boolean = false;\n  @Input() enableSocialLogin: boolean = false;\n  @Input() enableRegistration: boolean = false;\n  @Input() customClass: string = '';\n  @Input() logoUrl: string = '';\n\n  public hidePassword = true;\n  public loginFormGroup: FormGroup<ILoginForm> = new FormGroup<ILoginForm>({\n    username: new FormControl('', [Validators.required]) as FormControl<string>,\n    password: new FormControl('', [Validators.required]) as FormControl<string>,\n    remember: new FormControl(true) as FormControl<boolean>,\n  });\n\n  /***/\n  constructor(public override authService: AbstractAuthService) {\n    super(authService);\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.buildForm();\n\n    this.showBackButton = false;\n    this.showFooter = false;\n\n    if (!this.logoUrl) {\n      this.logoUrl = this.icons.logo;\n    }\n    const usernameControl: FormControl<string> = this.loginFormGroup.controls.username;\n    this.loginFormGroup.valueChanges\n      .pipe(takeUntil(this.componentDestroyed$))\n      .subscribe((values: Partial<{ username: string | null; password: string | null; remember: boolean | null }>) => {\n        const usernameInput: HTMLInputElement | null = document.querySelector('input[name=\"username\"]') as HTMLInputElement;\n        if (usernameInput && usernameInput.value && values.username === '') {\n          usernameControl.setValue(usernameInput.value);\n        }\n      });\n  }\n\n  /**\n   * on submit login\n   */\n  public onSubmit(): void {\n    if (this.loginFormGroup.valid) {\n      this.authService.login(this.loginFormGroup.getRawValue());\n    } else {\n      this.loginFormGroup.markAllAsTouched();\n    }\n  }\n\n  public navigateToRegister = (): void => this.authService.navigateToRegister();\n  public navigateToForgetPassword = (email: string): void => this.authService.navigateToForgetPassword(email || '');\n\n  /**\n   * build login form group\n   */\n  private buildForm(): void {\n    const initialUsername = (this.authService.username || this.username || '').trim();\n    this.loginFormGroup = new FormGroup<ILoginForm>({\n      username: new FormControl(initialUsername, [Validators.required]) as FormControl<string>,\n      password: new FormControl('', [Validators.required]) as FormControl<string>,\n      remember: new FormControl(true) as FormControl<boolean>,\n    });\n  }\n\n  public onLoginFormTypeChange(loginFormType: LoginFormType): void {\n    this.authService.onLoginFormTypeChange(loginFormType);\n  }\n}\n","<ion-content>\n  <ng-container *ngTemplateOutlet=\"loadingTemplate; context: { $implicit: loading$ | async }\"></ng-container>\n\n  <ng-template #loadingTemplate let-loading>\n    <div class=\"auth-container\" [ngClass]=\"[customClass]\" submitOnEnter (enter)=\"onSubmit()\">\n      @if (loginFormGroup) {\n        <form [formGroup]=\"loginFormGroup\" autocomplete=\"off\" libFocusInvalidInput>\n          <p class=\"form-title primary-text\">\n            {{ entryTitle }}\n          </p>\n          <img [src]=\"logoUrl\" class=\"cyrano-logo\" alt=\"\" />\n          <p class=\"form-title primary-text\">\n            {{ title }}\n          </p>\n          <div class=\"login-input\">\n            <lib-login-input\n              [icons]=\"icons\"\n              [usernameLabel]=\"usernameLabel\"\n              [phoneNumberPlaceHolder]=\"phoneNumberPlaceHolder\"\n              formControlName=\"username\"\n              (loginFormTypeChange)=\"onLoginFormTypeChange($event)\"\n            ></lib-login-input>\n          </div>\n          <div class=\"top-space custom-input\">\n            <lib-input-field\n              [readonly]=\"loading\"\n              formControlName=\"password\"\n              [type]=\"hidePassword ? 'password' : 'text'\"\n              [label]=\"'FIELDS.PASSWORD' | translate\"\n              class=\"lib-input-password\"\n            ></lib-input-field>\n            <mat-icon\n              class=\"password-toggle\"\n              (click)=\"hidePassword = !hidePassword\"\n              [ngClass]=\"{ invalid: loginFormGroup.controls['password'].touched && loginFormGroup.controls['password'].errors && loginFormGroup.controls['password'].invalid }\"\n            >\n              {{ hidePassword ? 'visibility_off' : 'visibility' }}\n            </mat-icon>\n          </div>\n          <lib-error-message class=\"input-error\" [config]=\"{ control: loginFormGroup.controls['password'] }\"> </lib-error-message>\n\n          <ion-row class=\"remember-me-container\">\n            @if (enableRememberMe) {\n              <ion-col class=\"remember-me\">\n                <ion-item class=\"checkbox-container\" mode=\"ios\">\n                  <label class=\"checkbox-label\">\n                    <lib-dashed-checkbox [ngClass]=\"{ accepted: loginFormGroup.controls['remember']?.value }\" formControlName=\"remember\"></lib-dashed-checkbox>\n                    <span class=\"checkbox-label__span\">{{ 'AUTH.REMEMBER_ME' | translate }}</span>\n                  </label>\n                </ion-item>\n              </ion-col>\n            }\n            @if (enableForgetPassword) {\n              <ion-col class=\"forgot-password\">\n                <button type=\"button\" (click)=\"navigateToForgetPassword(loginFormGroup.value.username || '')\" class=\"forgot-password-btn primary-link\">\n                  {{ 'AUTH.FORGOT_PASSWORD' | translate }}?\n                </button>\n              </ion-col>\n            }\n          </ion-row>\n\n          <lib-primary-btn (click)=\"onSubmit()\" class=\"normal-text login-btn\" aria-label=\"login-btn\" [type]=\"'submit'\" [loading$]=\"loading$\">\n            {{ 'AUTH.LOGIN' | translate }}\n          </lib-primary-btn>\n\n          @if (enableRegistration) {\n            <lib-secondary-btn (click)=\"navigateToRegister()\" class=\"normal-text login-btn\" aria-label=\"createBtn\">\n              {{ 'AUTH.CREATE' | translate }}\n            </lib-secondary-btn>\n          }\n          @if (enableSocialLogin) {\n            <p class=\"secondary-text\">{{ 'AUTH.OR_LOGIN' | translate }}</p>\n            <lib-auth-social [icons]=\"icons.socialIcons\"></lib-auth-social>\n          }\n        </form>\n      }\n    </div>\n  </ng-template>\n</ion-content>\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { IonicModule } from '@ionic/angular';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DirectiveModule } from '../../directives/directive.module';\nimport { FormValidatorModule } from '../../directives/form-validator/form-validator.module';\nimport { PasswordValidatorModule } from '../../directives/password/password-validator.module';\nimport { ButtonsModule } from '../buttons/buttons.module';\nimport { DashedCheckboxModule } from '../dashed-checkbox/dashed-checkbox.module';\nimport { LibErrorMessageComponent } from '../form-validator/error-message/error-message.component';\nimport { InputFieldModule } from '../input-field/input-field.module';\nimport { LoginInputModule } from '../login-input/login-input.module';\nimport { SharedVerificationCodeModule } from '../shared-verification-code/shared-verification-code.module';\nimport { TelInputModule } from '../tel-input/tel-input.module';\nimport { AuthHeaderComponent } from './auth-header/auth-header.component';\nimport { AuthSocialComponent } from './auth-social/auth-social.component';\nimport { ForgotPasswordScreenComponent } from './forgot-password/forgot-password.component';\nimport { ResetPasswordScreenComponent } from './forgot-password/reset-password/reset-password.component';\nimport { VerificationCodeScreenComponent } from './forgot-password/verification-code/verification-code.component';\nimport { LoginScreenComponent } from './login/login.component';\nimport { OtpInputModule } from './otp-input/otp-input.module';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    HttpClientModule,\n    DirectiveModule,\n    FormsModule,\n    ReactiveFormsModule,\n    IonicModule,\n    MatButtonModule,\n    MatIconModule,\n    MatMenuModule,\n    OtpInputModule,\n    InputFieldModule,\n    FormValidatorModule,\n    TranslateModule,\n    ButtonsModule,\n    DashedCheckboxModule,\n    TelInputModule,\n    LoginInputModule,\n    PasswordValidatorModule,\n    SharedVerificationCodeModule,\n    LibErrorMessageComponent,\n  ],\n  declarations: [LoginScreenComponent, AuthSocialComponent, ForgotPasswordScreenComponent, ResetPasswordScreenComponent, VerificationCodeScreenComponent, AuthHeaderComponent],\n  exports: [LoginScreenComponent, AuthSocialComponent, ForgotPasswordScreenComponent, ResetPasswordScreenComponent, VerificationCodeScreenComponent, AuthHeaderComponent],\n})\nexport class AuthenticationModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BaseCardComponent } from './base-card.component';\n\n@NgModule({\n  declarations: [BaseCardComponent],\n  exports: [BaseCardComponent],\n  imports: [CommonModule],\n})\nexport class BaseCardModule {}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnDestroy } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { Observable, Subject, of } from 'rxjs';\n\n@Component({\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, IonicModule],\n})\nexport class BaseComponent implements OnDestroy {\n  @Input() loading$: Observable<boolean> = of(false);\n\n  protected componentDestroyed$: Subject<void> = new Subject();\n  protected viewWillLeave$: Subject<void> = new Subject();\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  viewWillLeave(): void {\n    this.viewWillLeave$.next();\n    this.viewWillLeave$.complete();\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * Reusable skeleton card matching the ad-element pattern.\n * Use for itinerary, insights, and comment cards during loading.\n */\n@Component({\n  selector: 'lib-card-skeleton',\n  templateUrl: './card-skeleton.component.html',\n  styleUrls: ['./card-skeleton.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class CardSkeletonComponent {\n  @Input() count = 3;\n  get skeletonCount(): number[] {\n    return Array.from({ length: this.count }, (_, i) => i + 1);\n  }\n}\n","@for (i of skeletonCount; track i) {\n  <div class=\"lib-card-skeleton ad-element skeleton\">\n    <lib-base-card class=\"content-card-skeleton\">\n      <div class=\"skeleton ad-content surface-card\">\n        <div class=\"ad-icon\">\n          <p-skeleton shape=\"circle\" size=\"32px\" styleClass=\"mr-2\" />\n        </div>\n        <div class=\"ad-detail\">\n          <p-skeleton styleClass=\"ad-title\" width=\"100%\" />\n          <p-skeleton styleClass=\"ad-body\" width=\"90%\" height=\"3rem\" />\n        </div>\n        <div class=\"ad-media\">\n          <p-skeleton width=\"80px\" height=\"53px\" />\n        </div>\n      </div>\n    </lib-base-card>\n  </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { BaseCardModule } from '../base-card/base-card.module';\nimport { CardSkeletonComponent } from './card-skeleton.component';\n\n@NgModule({\n  declarations: [CardSkeletonComponent],\n  imports: [CommonModule, SkeletonModule, BaseCardModule],\n  exports: [CardSkeletonComponent],\n})\nexport class CardSkeletonModule {}\n","export enum TooltipDirectionPreference {\n  Top,\n  Bottom,\n  Left,\n  Right,\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\nexport enum Orders {\n  SIC = 'SIC', // SEARCH-BAR IN THE ORDER SEARCH-ICON => INPUT => CLEAR-ICON\n  ICS = 'ICS', // SEARCH-BAR IN THE ORDER INPUT => CLEAR-ICON => SEARCH-ICON\n  CIS = 'CIS', // SEARCH-BAR IN THE ORDER CLEAR-ICON => INPUT => SEARCH-ICON\n}\n@Component({\n  selector: 'lib-search-bar',\n  templateUrl: './search-bar.component.html',\n  styleUrls: ['./search-bar.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class SearchBarComponent implements OnChanges {\n  @Input() placeholderText: string = '';\n  @Input() inputText: string = '';\n  @Input() order: Orders = Orders.CIS;\n  @Input() clearIcon: string = '';\n  @Input() searchIcon: string = '';\n  @Output() searchStringChange = new EventEmitter();\n  @Output() cleared = new EventEmitter();\n  @Output() focused = new EventEmitter();\n  @Output() unfocused = new EventEmitter();\n  @ViewChild('searchInput', { static: true }) input!: ElementRef;\n\n  readonly searchInputControl = new FormControl<string>('', { nonNullable: true });\n\n  public orders = Orders;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['inputText'] && changes['inputText'].currentValue !== this.searchInputControl.value) {\n      this.searchInputControl.setValue(this.inputText ?? '', { emitEvent: false });\n    }\n  }\n\n  // ----- Methods called by template -----\n\n  /**\n   *\n   * A method to return user input to default\n   */\n  public clear() {\n    this.searchInputControl.setValue('');\n    this.searchStringChange.emit('');\n    this.cleared.emit();\n  }\n\n  /**\n   *\n   * A method to focus on the input element\n   */\n  public focus() {\n    this.input.nativeElement.focus();\n  }\n\n  public handleFocus() {\n    this.focused.emit();\n  }\n\n  public handleFocusOut() {\n    this.unfocused.emit();\n  }\n\n  /**\n   *\n   * A method to notify subscribers of user input\n   */\n  public emit() {\n    this.searchStringChange.emit(this.searchInputControl.value);\n  }\n}\n","<div class=\"container\">\n  <div class=\"container__search-bar\" [ngClass]=\"{ ics: order === orders.ICS, cis: order === orders.ICS }\">\n    <i\n      *ngIf=\"searchIcon\"\n      class=\"container__search-bar__icon container__search-bar__search-icon\"\n      [ngClass]=\"{ 'icon-gen3-search': !searchIcon }\"\n      id=\"#searchBarIcon\"\n      (click)=\"focus()\"\n      ><img [src]=\"searchIcon\"\n    /></i>\n    <input\n      #searchInput\n      id=\"searchInput\"\n      class=\"container__search-bar__input custom__input\"\n      [ngClass]=\"{ 'container__search-bar__input--no-icon': !searchIcon }\"\n      type=\"text\"\n      [placeholder]=\"placeholderText\"\n      [formControl]=\"searchInputControl\"\n      (keyup)=\"emit()\"\n      (keydown)=\"$event.stopPropagation()\"\n      (focus)=\"handleFocus()\"\n      (focusout)=\"handleFocusOut()\"\n      autocomplete=\"off\"\n    />\n    <i\n      *ngIf=\"clearIcon\"\n      class=\"container__search-bar__icon container__search-bar__clear-icon\"\n      [ngClass]=\"{ hidden: !searchInputControl.value, 'icon-gen3-cancel': !clearIcon }\"\n      (click)=\"clear()\"\n      ><img [src]=\"clearIcon\"\n    /></i>\n  </div>\n  <ng-content select=\"[right]\"></ng-content>\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { TooltipDirectionPreference } from '../../enums/tooltip-direction-preference';\n\n@Component({\n  selector: 'lib-tooltip',\n  templateUrl: './tooltip.component.html',\n  styleUrls: ['./tooltip.component.scss'],\n  animations: [\n    trigger('tooltip', [transition(':enter', [style({ opacity: 0 }), animate(300, style({ opacity: 1 }))]), transition(':leave', [animate(300, style({ opacity: 0 }))])]),\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class TooltipComponent {\n  @Input() message: SafeHtml = '';\n  @Input() title: SafeHtml = '';\n  @Input() hideIcon: boolean = false;\n  @Input() directionPreference: TooltipDirectionPreference = TooltipDirectionPreference.Bottom;\n  public readonly directionPreferences = TooltipDirectionPreference;\n}\n","<div *ngIf=\"!!title || !!message\" class=\"tooltip\" [ngClass]=\"{ 'tooltip--reversed': directionPreference === directionPreferences.Top }\">\n  <div class=\"lib-tooltip message-box\">\n    <div class=\"message-box-wrapper\">\n      <img class=\"message-box-icon\" [src]=\"'assets/icons/info.svg'\" alt=\"Icon\" [style.opacity]=\"0.5\" />\n      <div class=\"message-box-content\">\n        <h2 class=\"m-0 f-calistoga\" *ngIf=\"title\" [innerHTML]=\"title\"></h2>\n        <p class=\"m-0 f-gilroy-medium\" *ngIf=\"message\" [style.opacity]=\"title ? 0.5 : 1\" [innerHTML]=\"message\"></p>\n      </div>\n    </div>\n  </div>\n</div>\n","import { FlexibleConnectedPositionStrategy, Overlay, OverlayPositionBuilder, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Directive, ElementRef, HostListener, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { TooltipComponent } from '../../components/tooltip/tooltip.component';\nimport { TooltipDirectionPreference } from '../../enums/tooltip-direction-preference';\n\n@Directive({\n  selector: '[libTooltip]',\n  standalone: false,\n})\nexport class TooltipDirective implements OnDestroy, OnInit {\n  private overlayRef: OverlayRef | null = null;\n  private delayTimer: number = 0;\n\n  private readonly minimumVerticalSpaceNeeded = 75;\n\n  private readonly minimumHorizontalSpaceNeeded = 313;\n\n  private readonly tooltipOffsetAmount = 12;\n\n  @Input() libTooltip: string | SafeHtml = '';\n\n  @Input() title: SafeHtml = '';\n  @Input() hideIcon: boolean = false;\n  @Input() delayTime = 1000;\n  @Input() holdTimeForMobile: number = 1000;\n  @Input() directionPreference = TooltipDirectionPreference.Bottom;\n  private holdTimeout: number = 0;\n\n  @HostListener('mouseenter')\n  mouseEnter() {\n    this.delayTimer = setTimeout(() => {\n      if (this.libTooltip) {\n        this.show();\n      }\n    }, this.delayTime);\n  }\n\n  @HostListener('mouseleave')\n  mouseOut() {\n    this.hide();\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.hide();\n  }\n\n  private onTouchStart = (event: TouchEvent): void => {\n    this.holdTimeout = setTimeout(() => {\n      if (this.libTooltip) {\n        this.show();\n      }\n    }, this.holdTimeForMobile);\n  };\n\n  private onTouchEnd = (event: TouchEvent): void => {\n    this.hide();\n    clearTimeout(this.holdTimeout);\n  };\n\n  constructor(\n    private elementRef: ElementRef,\n    private overlay: Overlay,\n    private overlayPositionBuilder: OverlayPositionBuilder,\n    private renderer: Renderer2,\n  ) {}\n\n  ngOnInit() {\n    this.renderer.listen(this.elementRef.nativeElement, 'touchstart', this.onTouchStart, { passive: true });\n    this.renderer.listen(this.elementRef.nativeElement, 'touchend', this.onTouchEnd, { passive: true });\n  }\n\n  ngOnDestroy() {\n    clearTimeout(this.delayTimer);\n    clearTimeout(this.holdTimeout);\n    if (this.overlayRef) {\n      this.overlayRef.detach();\n    }\n  }\n\n  private show(): void {\n    switch (this.directionPreference) {\n      case TooltipDirectionPreference.Top:\n        this.handleTopShow();\n        break;\n      case TooltipDirectionPreference.Bottom:\n        this.handleBottomShow();\n        break;\n      case TooltipDirectionPreference.Left:\n        this.handleLeftShow();\n        break;\n      case TooltipDirectionPreference.Right:\n        this.handleRightShow();\n        break;\n    }\n  }\n\n  private handleBottomShow(): void {\n    const boundingRect: ClientRect = this.getBoundingRect();\n    const hasRoom = this.hasRoomToDisplay(boundingRect.bottom, this.minimumVerticalSpaceNeeded, window.innerHeight, true);\n    const posStrat: PositionStrategy = this.generateVerticalPosition(hasRoom ? false : true);\n    this.applyPositionStrategy(posStrat);\n    this.applyCarotClass(hasRoom ? 'bottom' : 'top');\n    this.setComponentVariables(this.createComponentRef(), this.directionPreference);\n  }\n\n  private applyPositionStrategy(positionStrategy: PositionStrategy): void {\n    if (this.overlayRef) {\n      this.overlayRef.detach();\n    }\n    this.overlayRef = this.overlay.create({ positionStrategy });\n  }\n\n  private applyCarotClass(tailClassName: string): void {\n    this.renderer.addClass(this.elementRef.nativeElement, `tooltip-element--${tailClassName}`);\n  }\n\n  private handleTopShow(): void {\n    const boundingRect: ClientRect = this.getBoundingRect();\n    const hasRoom = this.hasRoomToDisplay(boundingRect.top, this.minimumVerticalSpaceNeeded, 0, false);\n    const posStrat: PositionStrategy = this.generateVerticalPosition(hasRoom ? true : false);\n    this.applyPositionStrategy(posStrat);\n    this.applyCarotClass(hasRoom ? 'top' : 'bottom');\n    this.setComponentVariables(this.createComponentRef(), this.directionPreference);\n  }\n\n  private handleLeftShow(): void {\n    const boundingRect: ClientRect = this.getBoundingRect();\n    const hasRoom = this.hasRoomToDisplay(boundingRect.left, this.minimumHorizontalSpaceNeeded, 0, false);\n    const posStrat: PositionStrategy = this.generateHorizontalPosition(hasRoom ? false : true);\n    this.applyPositionStrategy(posStrat);\n    this.applyCarotClass(hasRoom ? 'left' : 'right');\n    this.setComponentVariables(this.createComponentRef(), this.directionPreference);\n  }\n\n  private handleRightShow(): void {\n    const boundingRect: ClientRect = this.getBoundingRect();\n    const hasRoom = this.hasRoomToDisplay(boundingRect.right, this.minimumHorizontalSpaceNeeded, window.innerWidth, true);\n    const posStrat: PositionStrategy = this.generateHorizontalPosition(hasRoom ? true : false);\n    this.applyPositionStrategy(posStrat);\n    this.applyCarotClass(hasRoom ? 'right' : 'left');\n    this.setComponentVariables(this.createComponentRef(), this.directionPreference);\n  }\n\n  private getBoundingRect(): ClientRect {\n    return this.elementRef.nativeElement.getBoundingClientRect();\n  }\n\n  private createComponentRef(): ComponentRef<TooltipComponent> {\n    const tooltipPortal = new ComponentPortal(TooltipComponent);\n    const tooltipRef: ComponentRef<TooltipComponent> = this.overlayRef!.attach(tooltipPortal);\n    return tooltipRef;\n  }\n\n  private setComponentVariables(compRef: ComponentRef<TooltipComponent>, directionPreference: TooltipDirectionPreference) {\n    compRef.instance.message = this.libTooltip;\n    compRef.instance.title = this.title;\n    compRef.instance.hideIcon = this.hideIcon;\n    compRef.instance.directionPreference;\n  }\n\n  private hide(): void {\n    clearTimeout(this.delayTimer);\n    if (this.overlayRef) {\n      this.overlayRef.detach();\n    }\n    this.renderer.removeClass(this.elementRef.nativeElement, 'tooltip-element--top');\n    this.renderer.removeClass(this.elementRef.nativeElement, 'tooltip-element--bottom');\n    this.renderer.removeClass(this.elementRef.nativeElement, 'tooltip-element--left');\n    this.renderer.removeClass(this.elementRef.nativeElement, 'tooltip-element--right');\n  }\n\n  private hasRoomToDisplay(position: number, minimumSpace: number, limit: number, isPositiveDirection: boolean) {\n    if (isPositiveDirection) {\n      return position + minimumSpace < limit;\n    } else {\n      return position - minimumSpace > limit;\n    }\n  }\n\n  private generateVerticalPosition(top: boolean): FlexibleConnectedPositionStrategy {\n    return this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([\n      {\n        originX: 'center',\n        originY: top ? 'top' : 'bottom',\n        overlayX: 'center',\n        overlayY: top ? 'bottom' : 'top',\n        offsetX: 0,\n        offsetY: top ? -this.tooltipOffsetAmount : this.tooltipOffsetAmount,\n      },\n    ]);\n  }\n\n  private generateHorizontalPosition(right: boolean): FlexibleConnectedPositionStrategy {\n    return this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([\n      {\n        originX: right ? 'end' : 'start',\n        originY: 'center',\n        overlayX: right ? 'start' : 'end',\n        overlayY: 'center',\n        offsetX: right ? this.tooltipOffsetAmount : -this.tooltipOffsetAmount,\n        offsetY: 0,\n      },\n    ]);\n  }\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { TooltipDirectionPreference } from '../../enums/tooltip-direction-preference';\r\nimport { IGridColumn } from '../../model/grid-column';\r\n\r\ninterface GridColumnGroup {\r\n  groupName: string;\r\n  columns: IGridColumn[];\r\n  groupOrder?: number;\r\n}\r\n\r\nexport type ColumnManagementData = {\r\n  columns: IGridColumn[];\r\n  filteredColumns: IGridColumn[];\r\n  groupByField?: IGridColumn;\r\n  maxPinnedColumns?: number;\r\n};\r\n\r\n@Component({\r\n  selector: 'lib-column-management-modal',\r\n  templateUrl: './column-management-modal.component.html',\r\n  styleUrls: ['./column-management-modal.component.scss'],\r\n  standalone: false,\r\n})\r\nexport class ColumnManagementModalComponent implements OnInit {\r\n  leftColumnGroups: GridColumnGroup[] = [];\r\n  originalLeftColumnGroups: GridColumnGroup[] = [];\r\n  rightColumns: IGridColumn[] = [];\r\n  originalRightColumns: IGridColumn[] = [];\r\n  groupByField: IGridColumn | null = null;\r\n  toggleMap: { [key: number]: boolean } = {};\r\n  queryString = '';\r\n  tooltipDirection = TooltipDirectionPreference.Top;\r\n\r\n  private maxPinnedColumns: number = 3;\r\n\r\n  constructor(\r\n    public dialogRef: MatDialogRef<ColumnManagementModalComponent>,\r\n    @Inject(MAT_DIALOG_DATA) public data: ColumnManagementData,\r\n  ) {\r\n    this.groupByField = data.columns?.find((column) => column.name === data.groupByField?.name) || null;\r\n    this.leftColumnGroups = this.createColumnGroups(data.columns);\r\n    this.originalRightColumns = data.columns;\r\n    this.maxPinnedColumns = data.maxPinnedColumns || 3;\r\n  }\r\n\r\n  private createColumnGroups(columns: IGridColumn[]): GridColumnGroup[] {\r\n    const mapped = [] as GridColumnGroup[];\r\n    columns.forEach((column) => {\r\n      const existing = mapped.find((mappedColumn) => mappedColumn.groupName === column.groupName);\r\n      if (existing) {\r\n        existing.columns.push(column);\r\n      } else {\r\n        mapped.push({ groupName: column.groupName, columns: [column], groupOrder: column.groupOrder } as GridColumnGroup);\r\n      }\r\n    });\r\n    return mapped.sort((a, b) => (a.groupOrder || 0) - (b.groupOrder || 0));\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.originalLeftColumnGroups = this.leftColumnGroups;\r\n    this.filterGridColumns();\r\n  }\r\n\r\n  public handleClickCancel(): void {\r\n    this.dialogRef.close();\r\n  }\r\n\r\n  public handleClickSave(): void {\r\n    this.dialogRef.close({ groupByField: this.groupByField, columns: this.originalRightColumns, filteredColumns: this.rightColumns });\r\n  }\r\n\r\n  public handleSearchStringChange(query: string) {\r\n    if (query.length > 0) {\r\n      this.leftColumnGroups = [];\r\n      this.originalLeftColumnGroups.forEach((columnGroup) => {\r\n        const filteredColumnGroup: GridColumnGroup = { groupName: columnGroup.groupName, columns: [] };\r\n        columnGroup.columns.forEach((column) => {\r\n          if (column.label?.toLowerCase().includes(query.toLowerCase())) {\r\n            filteredColumnGroup.columns.push(column);\r\n          }\r\n        });\r\n        if (filteredColumnGroup.columns.length) {\r\n          this.leftColumnGroups.push(filteredColumnGroup);\r\n        }\r\n      });\r\n    } else {\r\n      this.leftColumnGroups = this.originalLeftColumnGroups;\r\n    }\r\n  }\r\n\r\n  public handleCheck(column: IGridColumn) {\r\n    if (column.name === this.groupByField?.name) {\r\n      this.groupByField = null;\r\n    } else {\r\n      column.visible = !column.visible;\r\n    }\r\n    this.filterGridColumns();\r\n  }\r\n\r\n  public drop(event: CdkDragDrop<string[]>) {\r\n    moveItemInArray(this.rightColumns, event.previousIndex, event.currentIndex);\r\n    const firstUnpinnedColumnIndex = this.rightColumns.findIndex((column, i) => i !== event.currentIndex && !column.pinned);\r\n    if (event.currentIndex > firstUnpinnedColumnIndex && this.rightColumns[event.currentIndex].pinned) {\r\n      // If a pinned column was moved out of the pinned column area, mark it unpinned\r\n      this.rightColumns[event.currentIndex].pinned = false;\r\n    } else if (firstUnpinnedColumnIndex > 0 && event.currentIndex < firstUnpinnedColumnIndex - 1) {\r\n      if (!this.rightColumns[event.currentIndex].pinned && firstUnpinnedColumnIndex <= this.maxPinnedColumns) {\r\n        // If an unpinned column was moved into the pinned column area and there is room\r\n        // for another pinned column, pin it\r\n        this.rightColumns[event.currentIndex].pinned = true;\r\n        return;\r\n      } else if (!this.rightColumns[event.currentIndex].pinned) {\r\n        moveItemInArray(this.rightColumns, event.currentIndex, event.previousIndex);\r\n        return;\r\n      }\r\n    }\r\n\r\n    const reorderedColumnIndex = this.originalRightColumns.findIndex((column) => column.name === this.rightColumns[event.currentIndex].name);\r\n    if (event.currentIndex !== 0) {\r\n      let precedingColumnIndex = this.originalRightColumns.findIndex((column) => column === this.rightColumns[event.currentIndex - 1]);\r\n      if (precedingColumnIndex < reorderedColumnIndex) {\r\n        precedingColumnIndex += 1;\r\n      }\r\n      moveItemInArray(this.originalRightColumns, reorderedColumnIndex, precedingColumnIndex);\r\n    } else {\r\n      moveItemInArray(this.originalRightColumns, reorderedColumnIndex, 0);\r\n    }\r\n  }\r\n\r\n  public handleUnpin(column: IGridColumn) {\r\n    column.pinned = false;\r\n    this.filterGridColumns();\r\n  }\r\n\r\n  public handleUngroup(): void {\r\n    if (this.groupByField) {\r\n      this.groupByField.visible = true;\r\n      this.groupByField = null;\r\n      this.filterGridColumns();\r\n    }\r\n  }\r\n\r\n  private filterGridColumns(): void {\r\n    const columnsCopy: IGridColumn[] = [...this.rightColumns];\r\n    this.rightColumns = this.originalRightColumns\r\n      .filter((nextColumn) => nextColumn.visible)\r\n      .sort((a, b) => {\r\n        if (a.pinned && b.pinned) {\r\n          return columnsCopy.findIndex((k) => k.name === a.name) - columnsCopy.findIndex((k) => k.name === b.name);\r\n        }\r\n        return a.pinned ? -1 : 1;\r\n      });\r\n  }\r\n}\r\n","<div class=\"column-management-modal\">\r\n  <div class=\"column-management-modal__header\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" cdkDragHandle>\r\n    <div class=\"column-management-modal__header-text\">Manage Columns</div>\r\n    <div class=\"column-management-modal__header-action\">\r\n      <i class=\"icon icon-close\" (click)=\"handleClickCancel()\"></i>\r\n    </div>\r\n  </div>\r\n  <div class=\"column-management-modal__body\">\r\n    <div class=\"column-management-modal__body-left-side\">\r\n      <div class=\"column-management-modal__body-left-side-header\">\r\n        <div class=\"column-management-modal__body-left-side-header-text\">Select columns to display</div>\r\n        <div>\r\n          <lib-search-bar placeholderText=\"Search Columns\" (searchStringChange)=\"handleSearchStringChange($event)\"> </lib-search-bar>\r\n        </div>\r\n      </div>\r\n      <div class=\"body\">\r\n        <ng-container *ngIf=\"leftColumnGroups.length\">\r\n          <div *ngFor=\"let group of leftColumnGroups; index as i\">\r\n            <div (click)=\"toggleMap[i] = !toggleMap[i]\" class=\"group\">\r\n              <i [ngClass]=\"{ 'icon-gen3-angle-down': !toggleMap[i], 'icon-gen3-angle-right': toggleMap[i] }\"></i>\r\n              <div class=\"label\">{{ group.groupName }}</div>\r\n            </div>\r\n            <ng-container *ngIf=\"!toggleMap[i]\">\r\n              <div *ngFor=\"let item of group.columns\" class=\"item\">\r\n                <lib-dashed-checkbox [checked]=\"item.visible || groupByField?.name === item.name\" (toggle)=\"handleCheck(item)\"></lib-dashed-checkbox>\r\n                <div class=\"label\">\r\n                  {{ item.label }}\r\n                </div>\r\n              </div>\r\n            </ng-container>\r\n          </div>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"!leftColumnGroups.length\">\r\n          <div class=\"no-results\">\r\n            <div class=\"no-results__icon-container\">\r\n              <i class=\"icon-search\"></i>\r\n            </div>\r\n            <div class=\"no-results__text-container\">No results found</div>\r\n          </div>\r\n        </ng-container>\r\n      </div>\r\n    </div>\r\n    <div class=\"column-management-modal__body-divider\"></div>\r\n    <div class=\"column-management-modal__body-right-side\">\r\n      <div class=\"column-management-modal__body-right-side-header\">\r\n        <div class=\"column-management-modal__body-right-side-header-text\">Reorder columns</div>\r\n        <div>Drag and drop to change the column order.</div>\r\n      </div>\r\n      <div cdkDropList (cdkDropListDropped)=\"drop($event)\" class=\"body\">\r\n        <ng-container *ngIf=\"rightColumns.length\">\r\n          <div *ngIf=\"groupByField?.label\" class=\"field field--grouped\">\r\n            <div class=\"field__label\">\r\n              <i class=\"icon-gen3-ellipsis-vertical\"></i>\r\n              <i class=\"icon-gen3-ellipsis-vertical\"></i>\r\n              {{ groupByField?.label }}\r\n            </div>\r\n            <div (click)=\"handleUngroup()\" class=\"field__close\">\r\n              <i class=\"icon-group-by\"></i>\r\n            </div>\r\n          </div>\r\n          <div *ngFor=\"let column of rightColumns\" cdkDrag class=\"field\">\r\n            <div class=\"field__placeholder\" *cdkDragPlaceholder></div>\r\n            <div class=\"field__label\">\r\n              <i class=\"icon-gen3-ellipsis-vertical\"></i>\r\n              <i class=\"icon-gen3-ellipsis-vertical\"></i>\r\n              {{ column.label }}\r\n            </div>\r\n            <div *ngIf=\"column.pinned\" (click)=\"handleUnpin(column)\" class=\"field__pin\">\r\n              <i class=\"icon-pin\"></i>\r\n            </div>\r\n            <div (click)=\"handleCheck(column)\" class=\"field__close\">\r\n              <i class=\"icon-close\"></i>\r\n            </div>\r\n          </div>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"!rightColumns.length\">\r\n          <div class=\"no-columns\">\r\n            <div class=\"no-columns__icon-container\">\r\n              <i class=\"icon-gen3-columns\"></i>\r\n            </div>\r\n            <div class=\"no-columns__text-container\">\r\n              <div>No columns selected</div>\r\n              <div>Please select at least one column.</div>\r\n            </div>\r\n          </div>\r\n        </ng-container>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div class=\"column-management-modal__footer\">\r\n    <lib-secondary-btn (click)=\"handleClickCancel()\" class=\"normal-text column-management-modal__cancel-button\" aria-label=\"cancel-details\" [type]=\"'button'\">\r\n      {{ 'COMMON.CANCEL' | translate }}\r\n    </lib-secondary-btn>\r\n\r\n    <lib-primary-btn\r\n      (click)=\"rightColumns.length && handleClickSave()\"\r\n      class=\"normal-text column-management-modal__save-button\"\r\n      aria-label=\"save-details\"\r\n      [type]=\"'submit'\"\r\n      [disabled]=\"!rightColumns.length\"\r\n      [libTooltip]=\"!rightColumns.length ? 'Please select at least one column.' : ''\"\r\n      [directionPreference]=\"tooltipDirection\"\r\n    >\r\n      {{ 'COMMON.SAVE' | translate }}\r\n    </lib-primary-btn>\r\n  </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { SearchBarComponent } from './search-bar.component';\n\n@NgModule({\n  declarations: [SearchBarComponent],\n  exports: [SearchBarComponent],\n  imports: [CommonModule, ReactiveFormsModule],\n})\nexport class SearchBarModule {}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TooltipDirective } from '../../directives/tooltip/tooltip.directive';\nimport { TooltipComponent } from './tooltip.component';\n\n@NgModule({\n  declarations: [TooltipComponent, TooltipDirective],\n  exports: [TooltipDirective],\n  imports: [CommonModule, OverlayModule, MatTooltipModule, ScrollingModule],\n})\nexport class TooltipModule {}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ButtonsModule } from '../buttons/buttons.module';\r\nimport { DashedCheckboxModule } from '../dashed-checkbox/dashed-checkbox.module';\r\nimport { SearchBarModule } from '../search-bar/search-bar.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { ColumnManagementModalComponent } from './column-management-modal.component';\r\n\r\n@NgModule({\r\n  declarations: [ColumnManagementModalComponent],\r\n  imports: [CommonModule, SearchBarModule, DragDropModule, TooltipModule, ButtonsModule, TranslateModule, DashedCheckboxModule],\r\n})\r\nexport class ColumnManagementModalModule {}\r\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ItemActionHandler } from '../../model/item-action-handler';\n// TODO: replace with shared grid component\n@Component({\n  selector: 'lib-confirmation-modal',\n  templateUrl: './confirmation-modal.component.html',\n  styleUrls: ['./confirmation-modal.component.scss'],\n  standalone: false,\n})\nexport class ConfirmationModalComponent {\n  public title: string;\n  public headerIconTray: ItemActionHandler[] = [];\n  public dialogMessage: string;\n  public confirmText: string;\n  public warningModal: boolean;\n  public hideCancelAction: boolean;\n\n  public readonly searchModeThreshold = 50;\n\n  constructor(\n    public dialogRef: MatDialogRef<ConfirmationModalComponent>,\n    @Inject(MAT_DIALOG_DATA) public data: any,\n  ) {\n    this.title = data.title;\n    this.headerIconTray = data.headerIconTray;\n    this.dialogMessage = data.dialogMessage;\n    this.confirmText = data.confirmText;\n    this.warningModal = data.warningModal;\n    this.hideCancelAction = data.hideCancelAction;\n  }\n\n  // ----- Methods called by template -----\n\n  /**\n   * Closes the dialog\n   */\n  public handleClickCancel(): void {\n    this.dialogRef.close(false);\n  }\n\n  /**\n   * Closes the dialog and returns true to the dialog owner.\n   */\n  public handleClickSave(): void {\n    this.dialogRef.close(true);\n  }\n\n  public headerIconClicked(icon: ItemActionHandler) {\n    if (icon && icon.action) {\n      icon.action({});\n    }\n  }\n}\n","<div class=\"confirmation-dialog\">\n  <div class=\"confirmation-dialog__header\">\n    <div class=\"confirmation-dialog__header-left-group\">\n      <div class=\"confirmation-dialog__header-icons\" *ngIf=\"!warningModal\">\n        <div class=\"confirmation-dialog__header-icon\">\n          <div class=\"multiselect-dialog__header-icon\" *ngFor=\"let icon of headerIconTray\" (click)=\"headerIconClicked(icon)\" [innerHTML]=\"icon.displayHtml\"></div>\n        </div>\n      </div>\n      <div class=\"confirmation-dialog__header-text\">\n        {{ title }}\n      </div>\n    </div>\n    <i class=\"confirmation-dialog__header-close-button icon-close\" (click)=\"handleClickCancel()\"></i>\n  </div>\n\n  <div class=\"confirmation-dialog__checkbox-section\" [innerHTML]=\"dialogMessage\"></div>\n\n  <div class=\"confirmation-dialog__footer\">\n    <lib-secondary-btn *ngIf=\"!hideCancelAction\" (click)=\"handleClickCancel()\" class=\"normal-text confirmation-dialog__cancel-button\" aria-label=\"cancel-details\" [type]=\"'button'\">\n      {{ 'COMMON.CANCEL' | translate }}\n    </lib-secondary-btn>\n    <lib-primary-btn (click)=\"handleClickSave()\" class=\"normal-text confirmation-dialog__save-button\" aria-label=\"save-details\" [type]=\"'submit'\" [disabled]=\"warningModal\">\n      {{ confirmText }}\n    </lib-primary-btn>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonsModule } from '../buttons/buttons.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { ConfirmationModalComponent } from './confirmation-modal.component';\n\n@NgModule({\n  declarations: [ConfirmationModalComponent],\n  exports: [ConfirmationModalComponent],\n  imports: [CommonModule, TooltipModule, MatDialogModule, ButtonsModule, TranslateModule],\n})\nexport class ConfirmationModalModule {}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ContentViewCardService {\n  private cardExpansionState: boolean;\n  private cardExpanded: Subject<boolean>;\n\n  constructor() {\n    this.cardExpanded = new Subject<boolean>();\n    this.cardExpansionState = false;\n  }\n\n  public setCardExpansionState(expansionState: boolean): void {\n    this.cardExpansionState = expansionState;\n    this.cardExpanded.next(expansionState);\n  }\n\n  public onCardExpansion(): Observable<boolean> {\n    return this.cardExpanded.asObservable();\n  }\n\n  public getCardExpansionState(): boolean {\n    return this.cardExpansionState;\n  }\n}\n","import { Directive, ElementRef, OnInit } from '@angular/core';\n\n@Directive({\n  selector: '[heading]',\n  standalone: false,\n})\nexport class ContentCardHeadingDirective implements OnInit {\n  constructor(private el: ElementRef<HTMLDivElement>) {}\n\n  ngOnInit(): void {\n    if (!this.el.nativeElement.classList.contains('content-card__heading')) {\n      this.el.nativeElement.classList.add('content-card__heading');\n    }\n  }\n}\n","import { Directive, ElementRef, OnInit } from '@angular/core';\n\n@Directive({\n  selector: '[section]',\n  standalone: false,\n})\nexport class ContentCardSectionDirective implements OnInit {\n  constructor(private el: ElementRef<HTMLDivElement>) {}\n\n  ngOnInit(): void {\n    if (!this.el.nativeElement.classList.contains('content-card__section')) {\n      this.el.nativeElement.classList.add('content-card__section');\n    }\n  }\n}\n","import { Directive, ElementRef, OnInit } from '@angular/core';\n\n@Directive({\n  selector: '[subHeadings]',\n  standalone: false,\n})\nexport class ContentCardSubHeadingsDirective implements OnInit {\n  constructor(private el: ElementRef) {}\n\n  ngOnInit(): void {\n    if (!this.el.nativeElement.classList.contains('content-card__sub-headings')) {\n      this.el.nativeElement.classList.add('content-card__sub-headings');\n    }\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Input, OnChanges, OnInit, QueryList, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { ContentViewCardService } from './content-view-card.service';\nimport { ContentCardHeadingDirective } from './directives/content-card-heading.directive';\nimport { ContentCardSectionDirective } from './directives/content-card-section.directive';\nimport { ContentCardSubHeadingsDirective } from './directives/content-card-sub-headings.directive';\n\n@Component({\n  selector: 'lib-content-view-card',\n  templateUrl: './content-view-card.component.html',\n  styleUrls: ['./content-view-card.component.scss'],\n  providers: [ContentViewCardService],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ContentViewCardComponent implements OnInit, OnChanges {\n  @ContentChildren(ContentCardSectionDirective, { descendants: true }) sections!: QueryList<ContentCardSectionDirective>;\n  @ContentChildren(ContentCardHeadingDirective) headings!: QueryList<ContentCardHeadingDirective>;\n  @ContentChildren(ContentCardSubHeadingsDirective) subHeadings!: QueryList<ContentCardSubHeadingsDirective>;\n  @Input() cardExpanded: boolean = false;\n\n  constructor(\n    private contentViewCardService: ContentViewCardService,\n    private cdr: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit(): void {\n    this.cardExpanded = this.contentViewCardService.getCardExpansionState();\n    this.contentViewCardService.setCardExpansionState(this.cardExpanded);\n    this.cdr.detectChanges();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['cardExpanded']?.currentValue !== changes['cardExpanded']?.previousValue) {\n      this.contentViewCardService.setCardExpansionState(this.cardExpanded);\n      this.cdr.detectChanges();\n    }\n  }\n}\n","<lib-base-card class=\"content-card\">\n  <div class=\"content-card__wrapper\" [class.card-expanded]=\"cardExpanded\">\n    <ng-content></ng-content>\n  </div>\n</lib-base-card>\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n  selector: '[libContentCardFirstColumn]',\n  standalone: false,\n})\nexport class ContentCardFirstColumnDirective implements OnInit {\n  @Input() imgSrc: string = '';\n\n  constructor(\n    private el: ElementRef<HTMLElement>,\n    private renderer: Renderer2,\n  ) {}\n\n  ngOnInit() {\n    // Create a container div\n    const container = this.renderer.createElement('div');\n    this.renderer.addClass(container, 'content-card__profile-img__wrapper__container');\n\n    // Create an img element\n    const img = this.renderer.createElement('img');\n    this.renderer.setAttribute(img, 'src', this.imgSrc);\n\n    // Create a wrapper div for styling purposes\n    const wrapper = this.renderer.createElement('div');\n    this.renderer.addClass(wrapper, 'content-card__profile-img__wrapper');\n\n    // Append img to container and container to wrapper\n    this.renderer.appendChild(container, img);\n    this.renderer.appendChild(wrapper, container);\n\n    // Insert the wrapper into the host element\n    const hostElem = this.el.nativeElement;\n    if (!hostElem.classList.contains('content-card__first-column')) {\n      hostElem.classList.add('content-card__first-column');\n    }\n    this.renderer.insertBefore(hostElem, wrapper, hostElem.firstChild);\n  }\n}\n","import { Directive, ElementRef, OnInit } from '@angular/core';\n\n@Directive({\n  selector: '[libContentLastColumn]',\n  standalone: false,\n})\nexport class ContentCardLastColumnDirective implements OnInit {\n  constructor(private el: ElementRef<HTMLElement>) {}\n  ngOnInit(): void {\n    if (!this.el.nativeElement.classList.contains('content-card__last-column')) {\n      this.el.nativeElement.classList.add('content-card__last-column');\n    }\n  }\n}\n","import { Directive, ElementRef, OnInit } from '@angular/core';\n\n@Directive({\n  selector: '[xLSubHeadings]',\n  standalone: false,\n})\nexport class ContentCardXLargeSubHeadingsDirective implements OnInit {\n  constructor(private el: ElementRef) {}\n\n  ngOnInit(): void {\n    if (!this.el.nativeElement.classList.contains('content-card__xlarge-sub-headings')) {\n      this.el.nativeElement.classList.add('content-card__xlarge-sub-headings');\n    }\n  }\n}\n","import { Directive, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ContentViewCardService } from '../content-view-card.service';\n\n@Directive({\n  selector: '[libContentToggle]',\n  standalone: false,\n})\nexport class ContentToggleDirective implements OnInit, OnDestroy {\n  private destroy$: Subject<void> = new Subject<void>();\n  constructor(\n    private templateRef: TemplateRef<HTMLElement>,\n    private viewContainer: ViewContainerRef,\n    private contentViewCardService: ContentViewCardService,\n  ) {}\n\n  ngOnInit(): void {\n    this.setElementViewState(this.contentViewCardService.getCardExpansionState());\n    this.contentViewCardService\n      .onCardExpansion()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((cardExpansionState: boolean) => {\n        this.setElementViewState(cardExpansionState);\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  private setElementViewState(elementViewState: boolean): void {\n    if (elementViewState) {\n      const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\n      viewRef.rootNodes.forEach((node: Node) => {\n        if (node instanceof HTMLElement) {\n          node.classList.add('content-toggle-enter');\n        }\n      });\n    } else {\n      this.viewContainer.clear();\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BaseCardModule } from '../base-card/base-card.module';\nimport { ContentViewCardComponent } from './content-view-card.component';\nimport { ContentCardFirstColumnDirective } from './directives/content-card-first-column.directive';\nimport { ContentCardHeadingDirective } from './directives/content-card-heading.directive';\nimport { ContentCardLastColumnDirective } from './directives/content-card-last-column.directive';\nimport { ContentCardSectionDirective } from './directives/content-card-section.directive';\nimport { ContentCardSubHeadingsDirective } from './directives/content-card-sub-headings.directive';\nimport { ContentCardXLargeSubHeadingsDirective } from './directives/content-card-xlsubheadings.directive';\nimport { ContentToggleDirective } from './directives/content-toggle.directive';\n\n@NgModule({\n  declarations: [\n    ContentViewCardComponent,\n    ContentCardSectionDirective,\n    ContentCardHeadingDirective,\n    ContentCardSubHeadingsDirective,\n    ContentCardXLargeSubHeadingsDirective,\n    ContentCardFirstColumnDirective,\n    ContentCardLastColumnDirective,\n    ContentToggleDirective,\n  ],\n  imports: [CommonModule, FormsModule, TranslateModule, BaseCardModule],\n  exports: [\n    ContentViewCardComponent,\n    ContentCardSectionDirective,\n    ContentCardHeadingDirective,\n    ContentCardSubHeadingsDirective,\n    ContentCardXLargeSubHeadingsDirective,\n    ContentCardFirstColumnDirective,\n    ContentCardLastColumnDirective,\n    ContentToggleDirective,\n  ],\n})\nexport class ContentViewCardModule {}\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\n\n/**\n * DEV NOTES:\n * - jsdom (used by Jest) does NOT have a PointerEvent constructor. Tests must create\n *   MouseEvent objects and cast them as PointerEvent, or use a helper like\n *   `new MouseEvent('pointerdown', { clientY: 200 }) as unknown as PointerEvent`.\n * - ResizeObserver must be mocked globally in the test setup (jest setup file or\n *   beforeAll) because jsdom doesn't implement it.\n * - Drag math: `delta = startY - event.clientY`. Positive delta = dragging UP = expand.\n *   The snap thresholds depend on the container's `clientHeight` (mock to 400 in tests).\n */\n@Component({\n  selector: 'lib-drawer',\n  templateUrl: './drawer.component.html',\n  styleUrls: ['./drawer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class DrawerComponent implements OnInit, AfterViewInit, OnDestroy {\n  /** Minimum height as a fraction of the container (0–1). The handle always stays grabbable. */\n  @Input() minHeight = 0.08;\n\n  /** Maximum height as a fraction of the container (0–1). */\n  @Input() maxHeight = 1;\n\n  /** Initial height as a fraction of the container (0–1). */\n  @Input() initialHeight = 0.5;\n\n  /**\n   * When true the drawer snaps to `minHeight` or `maxHeight` on release.\n   * When false (default) the drawer stays wherever the user drops it.\n   */\n  @Input() sticky = false;\n\n  /** Whether the drag handle is visible. */\n  @Input() showHandle = true;\n\n  /** Custom CSS class applied to the drawer panel. */\n  @Input() customClass = '';\n\n  /**\n   * V2 plan A2 — Controls drawer visibility. When false the drawer collapses\n   * to height 0. The parent component binds this to `activityDrawerOpen`.\n   * Implemented as a setter to avoid ExpressionChangedAfterItHasBeenChecked errors.\n   */\n  @Input() set open(val: boolean) {\n    const changed = this._open !== val;\n    this._open = val;\n    if (changed && this.drawerPanel) {\n      this.applyOpenState();\n      this.cdr.markForCheck();\n    }\n  }\n\n  get open(): boolean {\n    return this._open;\n  }\n\n  /** Emits the current open state whenever it changes. */\n  @Output() openChange = new EventEmitter<boolean>();\n\n  /** Emits when the user explicitly dismisses the drawer (close button or drag down). */\n  @Output() dismissed = new EventEmitter<void>();\n\n  /** Emits the current height fraction whenever the drawer moves or snaps. */\n  @Output() heightChange = new EventEmitter<number>();\n\n  @ViewChild('drawerPanel', { static: true }) drawerPanel!: ElementRef<HTMLElement>;\n  @ViewChild('handleZone', { static: true }) handleZone!: ElementRef<HTMLElement>;\n\n  dragging = false;\n  private startY = 0;\n  private startHeightPx = 0;\n  private containerHeight = 0;\n  private currentFraction = 0;\n  private resizeObserver: ResizeObserver | null = null;\n  private _open = false;\n\n  private boundMove = this.onPointerMove.bind(this);\n  private boundUp = this.onPointerUp.bind(this);\n\n  constructor(\n    private el: ElementRef<HTMLElement>,\n    private cdr: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit(): void {\n    this._open = this.open;\n  }\n\n  ngAfterViewInit(): void {\n    this.containerHeight = this.resolveContainerHeight();\n    this.applyOpenState();\n\n    this.resizeObserver = new ResizeObserver(() => {\n      this.containerHeight = this.resolveContainerHeight();\n      this.setHeight(this.currentFraction);\n    });\n    this.resizeObserver.observe(this.el.nativeElement);\n    const parent = this.el.nativeElement.parentElement;\n    if (parent) this.resizeObserver.observe(parent);\n  }\n\n  ngOnDestroy(): void {\n    this.resizeObserver?.disconnect();\n    document.removeEventListener('pointermove', this.boundMove);\n    document.removeEventListener('pointerup', this.boundUp);\n  }\n\n  private applyOpenState(): void {\n    if (!this.drawerPanel) return;\n    if (this._open) {\n      this.containerHeight = this.resolveContainerHeight();\n      this.setHeight(this.initialHeight);\n    } else {\n      this.drawerPanel.nativeElement.style.height = '0px';\n      this.currentFraction = 0;\n    }\n  }\n\n  onPointerDown(e: PointerEvent): void {\n    e.preventDefault();\n    this.dragging = true;\n    this.startY = e.clientY;\n    this.startHeightPx = this.drawerPanel.nativeElement.offsetHeight;\n    this.containerHeight = this.resolveContainerHeight();\n\n    document.addEventListener('pointermove', this.boundMove);\n    document.addEventListener('pointerup', this.boundUp);\n  }\n\n  private onPointerMove(e: PointerEvent): void {\n    if (!this.dragging) return;\n    const delta = this.startY - e.clientY;\n    const newPx = Math.max(0, this.startHeightPx + delta);\n    const rawFraction = newPx / this.containerHeight;\n    const fraction = Math.min(this.maxHeight, Math.max(0, rawFraction));\n    this.setHeightRaw(fraction);\n  }\n\n  private onPointerUp(): void {\n    this.dragging = false;\n    document.removeEventListener('pointermove', this.boundMove);\n    document.removeEventListener('pointerup', this.boundUp);\n\n    if (this.currentFraction < this.minHeight) {\n      // Only fully dismiss if dragged at least 50% below minHeight (very intentional gesture).\n      // Otherwise snap back to minHeight so the handle always stays visible above the footer.\n      const dismissThreshold = this.minHeight * 0.5;\n      if (this.currentFraction < dismissThreshold) {\n        this.setHeightRaw(0);\n        this._open = false;\n        this.openChange.emit(false);\n        this.dismissed.emit();\n        this.cdr.markForCheck();\n      } else {\n        this.setHeight(this.minHeight);\n      }\n      return;\n    }\n\n    if (this.sticky) {\n      const midpoint = (this.minHeight + this.maxHeight) / 2;\n      const target = this.currentFraction >= midpoint ? this.maxHeight : this.minHeight;\n      this.setHeight(target);\n    }\n  }\n\n  private setHeight(fraction: number): void {\n    this.currentFraction = this.clampFraction(fraction);\n    const px = Math.round(this.currentFraction * this.containerHeight);\n    this.drawerPanel.nativeElement.style.height = `${px}px`;\n    this.heightChange.emit(this.currentFraction);\n    this.cdr.markForCheck();\n  }\n\n  private setHeightRaw(fraction: number): void {\n    this.currentFraction = Math.min(this.maxHeight, Math.max(0, fraction));\n    const px = Math.round(this.currentFraction * this.containerHeight);\n    this.drawerPanel.nativeElement.style.height = `${px}px`;\n    this.heightChange.emit(this.currentFraction);\n    this.cdr.markForCheck();\n  }\n\n  private resolveContainerHeight(): number {\n    const own = this.el.nativeElement.clientHeight;\n    if (own > 50) return own;\n    const parent = this.el.nativeElement.parentElement?.clientHeight ?? 0;\n    return parent > 50 ? parent : window.innerHeight;\n  }\n\n  private clampFraction(f: number): number {\n    return Math.min(this.maxHeight, Math.max(this.minHeight, f));\n  }\n}\n","<div #drawerPanel class=\"lib-drawer\" [ngClass]=\"[customClass, dragging ? 'lib-drawer--dragging' : '']\">\r\n  <div #handleZone class=\"lib-drawer__handle-zone\" (pointerdown)=\"onPointerDown($event)\">\r\n    <div *ngIf=\"showHandle\" class=\"lib-drawer__handle\"></div>\r\n  </div>\r\n  <div class=\"lib-drawer__content\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { DrawerComponent } from './drawer.component';\r\n\r\n@NgModule({\r\n  declarations: [DrawerComponent],\r\n  imports: [CommonModule],\r\n  exports: [DrawerComponent],\r\n})\r\nexport class DrawerModule {}\r\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { AbstractControl, FormControl, FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n  selector: 'app-error-message',\n  templateUrl: './error-message.component.html',\n  styleUrls: ['./error-message.component.scss'],\n  standalone: true,\n  imports: [CommonModule, FormsModule, TranslateModule],\n})\nexport class ErrorMessageComponent {\n  @Input() control: FormControl | AbstractControl | null = null;\n  @Input() minLength: number = 0;\n  @Input() maxlength: number = 0;\n  @Input() customErrorMessage: string = '';\n  @Input() requiredErrorMessage: string = '';\n  @Input() freeContent: boolean = false;\n}\n","<div class=\"error-messages\">\n  <ng-container [ngSwitch]=\"true\" *ngIf=\"control && control.errors && (control.dirty || control.touched)\">\n    <p class=\"error\" *ngSwitchCase=\"control.errors['required']\">\n      {{ requiredErrorMessage || 'VALIDATIONS.REQUIRED' | translate }}\n    </p>\n    <p class=\"error\" *ngSwitchCase=\"control.errors['email']\">\n      {{ 'VALIDATIONS.NOT_VALID_EMAIL' | translate }}\n    </p>\n    <p class=\"error\" *ngSwitchCase=\"control.errors['minlength'] && minLength > 0\">\n      {{ 'VALIDATIONS.NOT_VALID_MIN_LENGTH' | translate: { minLength } }}\n    </p>\n    <p class=\"error\" *ngSwitchCase=\"control.errors['maxlength'] && maxlength > 0\">\n      {{ 'VALIDATIONS.NOT_VALID_MAX_LENGTH' | translate: { maxlength } }}\n    </p>\n    <p class=\"error\" *ngSwitchCase=\"control.errors['notUniqueEmail']\">\n      {{ 'ERRORS.DUPLICATE_EMAIL' | translate }}\n    </p>\n    <p class=\"error\" *ngSwitchCase=\"control.errors['notUniqueUsername']\">\n      {{ 'ERRORS.USERNAME_EXISTS' | translate }}\n    </p>\n    <p class=\"error\" *ngSwitchCase=\"control.errors['notUniquePhone']\">\n      {{ 'ERRORS.PHONE_NUMBER_EXISTS' | translate }}\n    </p>\n  </ng-container>\n  <p class=\"error\" *ngIf=\"customErrorMessage\" [ngClass]=\"{ 'free-content': freeContent }\">\n    {{ customErrorMessage }}\n  </p>\n  <p class=\"error\" *ngIf=\"control && control.errors && control.errors['invalidDateRange']\">\n    {{ 'VALIDATIONS.INVALID_DATE_RANGE' | translate }}\n  </p>\n  <p class=\"error\" *ngIf=\"control && control.errors && control.errors['invalidTimeRange']\">\n    {{ 'VALIDATIONS.INVALID_TIME_RANGE' | translate }}\n  </p>\n  <p class=\"error\" *ngIf=\"control && control.errors && control.errors['pattern']\">\n    {{ 'VALIDATIONS.INVLID_INPUT_VALUE' | translate }}\n  </p>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TooltipDirectionPreference } from '../../enums/tooltip-direction-preference';\nimport { ItemActionHandler } from '../../model/item-action-handler';\n\n@Component({\n  selector: 'lib-expansion-panel',\n  templateUrl: './expansion-panel.component.html',\n  styleUrls: ['./expansion-panel.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ExpansionPanelComponent {\n  @Input() title: string = '';\n  @Input() hideDefaultHeader: boolean = false;\n  @Input() alwaysExpanded: boolean = false;\n  @Input() expanded: boolean = true;\n  @Input() showToggleText: boolean = false;\n  @Input() descriptionText: string = '';\n  @Input() collapsedHeaderIcon: string = '';\n  @Input() expandedHeaderIcon: string = '';\n  @Output() expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Input() count: number = 0;\n  @Input() useSlideToggle: boolean = false;\n  @Input() iconTray?: ItemActionHandler[];\n\n  public DirectionPreference = TooltipDirectionPreference;\n\n  public togglePanel(): void {\n    if (!this.alwaysExpanded) {\n      this.expanded = !this.expanded;\n    }\n  }\n\n  public handleHeaderClick($event: Event): void {\n    if (this.showToggleText) $event.stopPropagation();\n  }\n}\n","<!-- TODO: Create translations -->\n<mat-accordion class=\"lib-expansion-panel\" [hideToggle]=\"true\">\n  <mat-expansion-panel\n    [(expanded)]=\"expanded\"\n    [disabled]=\"alwaysExpanded\"\n    (afterCollapse)=\"expandedChange.emit(expanded)\"\n    (afterExpand)=\"expandedChange.emit(expanded)\"\n    (click)=\"handleHeaderClick($event)\"\n  >\n    <mat-expansion-panel-header>\n      <mat-panel-title (click)=\"handleHeaderClick($event)\">\n        <ng-container *ngTemplateOutlet=\"panelHeaderTemplate\"></ng-container>\n        <ng-template #panelHeaderTemplate>\n          <ng-content select=\"[panelHeaderTemplate]\"></ng-content>\n        </ng-template>\n        <ng-container *ngIf=\"!showToggleText && !hideDefaultHeader\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"8\" viewBox=\"0 0 10 3\" fill=\"none\" *ngIf=\"expanded && !expandedHeaderIcon\">\n            <path d=\"M8.11353 1.20117L1.47352 1.20117\" stroke=\"#FE3C72\" stroke-opacity=\"0.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n          </svg>\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 10 9\" fill=\"none\" *ngIf=\"!expanded && !collapsedHeaderIcon\">\n            <path\n              d=\"M4.79231 7.40039L4.79231 1.00039M8.11353 4.20117L1.47352 4.20117\"\n              stroke=\"#FE3C72\"\n              stroke-opacity=\"0.5\"\n              stroke-width=\"2\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            />\n          </svg>\n          <img [src]=\"expandedHeaderIcon\" alt=\"expanded Header Icon\" *ngIf=\"expandedHeaderIcon && expanded && !showToggleText\" class=\"header-icon\" />\n          <img [src]=\"collapsedHeaderIcon\" alt=\"collapsed Header Icon\" *ngIf=\"collapsedHeaderIcon && !expanded && !showToggleText\" class=\"header-icon\" />\n        </ng-container>\n        {{ title }}\n        <div *ngIf=\"descriptionText?.length\" class=\"lib-expansion-panel-tooltip\">\n          <i class=\"icon icon-gen3-info\" [libTooltip]=\"descriptionText\" [directionPreference]=\"DirectionPreference.Right\" [delayTime]=\"200\"></i>\n        </div>\n        <span class=\"spacer\"></span>\n        <ng-container *ngTemplateOutlet=\"!expanded ? collapsedPanelRightTemplate : null\"></ng-container>\n        <ng-template #collapsedPanelRightTemplate>\n          <ng-content select=\"[collapsedPanelRightContent]\"></ng-content>\n        </ng-template>\n        <ng-container *ngTemplateOutlet=\"panelHeaderRightTemplate\"></ng-container>\n        <ng-template #panelHeaderRightTemplate>\n          <ng-content select=\"[panelHeaderRightContent]\"></ng-content>\n        </ng-template>\n      </mat-panel-title>\n    </mat-expansion-panel-header>\n    <ng-content></ng-content>\n  </mat-expansion-panel>\n  <mat-action-row (click)=\"togglePanel()\" *ngIf=\"showToggleText\">\n    <div>{{ expanded ? 'Show Less' : 'Show More' }}</div>\n  </mat-action-row>\n</mat-accordion>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { ExpansionPanelComponent } from './expansion-panel.component';\n\n@NgModule({\n  declarations: [ExpansionPanelComponent],\n  imports: [CommonModule, MatExpansionModule, TooltipModule],\n  exports: [ExpansionPanelComponent],\n})\nexport class ExpansionPanelModule {}\n","export enum FeedbackModalVariant {\n  Screenshot = 'Screenshot',\n  Mini = 'Mini',\n}\n","/**\n * an enum for holding storage keys\n */\nexport enum FeedbackStorageKeys {\n  ShakeEnabled = 'shakeEnabled',\n  Screenshots = 'screenshots',\n}\n","import { inject, Injectable, NgZone } from '@angular/core';\nimport { Capacitor } from '@capacitor/core';\nimport { Screenshot } from 'capacitor-screenshot';\nimport { BehaviorSubject, from, Subject } from 'rxjs';\nimport { FeedbackStorageKeys } from '../enums/feedback-storage.enum';\nimport { IStroke } from '../feedback-screenshot/interfaces/stroke.interface';\nimport { IFeedbackData, IModalCloseResult } from '../interfaces';\n@Injectable({\n  providedIn: 'root',\n})\nexport class FeedbackService {\n  private _screenshotOriginal$: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n  public screenshotOriginal$ = this._screenshotOriginal$.asObservable();\n  private _screenshotEdit$: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n  public screenshotEdit$ = this._screenshotEdit$.asObservable();\n  private _markupScreenshot$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public markUpScreenshot$ = this._markupScreenshot$.asObservable();\n  public strokes: IStroke[] = [];\n\n  public readonly onScreenshotCanceled$: Subject<boolean> = new Subject<boolean>();\n  public readonly onFeedbackSubmit: Subject<IFeedbackData> = new Subject<IFeedbackData>();\n\n  public onModalClose: Subject<IModalCloseResult> = new Subject<IModalCloseResult>();\n\n  private zone = inject(NgZone);\n\n  /**\n   * Announce that the user wants to markup the last not-edited screenshot\n   */\n  public changeMarkUpStatus(status: boolean) {\n    this._markupScreenshot$.next(status);\n  }\n  /**\n   * Take a screenshot of a DOM element\n   */\n  public async takeOriginalScreenshot(): Promise<void> {\n    if (Capacitor.getPlatform() !== 'web') {\n      this.zone.runOutsideAngular(() => {\n        from(Screenshot.take()).subscribe({\n          next: (res: { base64: string }) => {\n            const dataURI = `data:image/png;base64,${res.base64}`;\n            this.strokes = [];\n            this._screenshotOriginal$.next(dataURI);\n          },\n        });\n      });\n    }\n\n    try {\n      // 1. Ask to share WINDOW (tell users to pick “This window”)\n      const stream = await navigator.mediaDevices.getDisplayMedia({\n        video: { displaySurface: 'window' },\n      });\n      const track = stream.getVideoTracks()[0];\n\n      // currently using (window as any) because we couldn't find a way to solve the typing issue on the window variable while using ImageCapture\n      // tried https://robkendal.co.uk/blog/how-to-fix-property-does-not-exist-on-window-type-in-typescript/\n      // and while the editor doesn't show the error anymore, the terminal still shows the issue.\n      // \"Property 'ImageCapture' does not exist on type 'Window & typeof globalThis'\"\n\n      const cap = new (window as any).ImageCapture(track);\n\n      // let picker fade waiting 300 ms\n      setTimeout(async () => {\n        const frame = await cap.grabFrame();\n\n        // 2. Prepare an on-screen or off-screen canvas that is always supported\n        const dpr = window.devicePixelRatio;\n        const vw = window.innerWidth * dpr;\n        const vh = window.innerHeight * dpr;\n\n        const canvas = document.createElement('canvas');\n        canvas.width = vw;\n        canvas.height = vh;\n        const ctx = canvas.getContext('2d')!;\n\n        // 3. Draw either the whole frame or cropped area\n        if (frame.width === vw && frame.height === vh) {\n          ctx.drawImage(frame, 0, 0); // perfect match – no crop\n        } else {\n          const offX = Math.max(0, frame.width - vw);\n          const offY = Math.max(0, frame.height - vh);\n          ctx.drawImage(frame, offX, offY, vw, vh, 0, 0, vw, vh);\n        }\n\n        // 4. Clean up\n        stream.getTracks().forEach((t) => t.stop());\n\n        // 5. Export as data-URL\n        const dataURI = canvas.toDataURL('image/png');\n\n        this.strokes = [];\n        this._screenshotOriginal$.next(dataURI);\n      }, 300);\n    } catch (err) {\n      console.warn('[Screenshot] cancelled or unsupported:', err);\n    }\n  }\n\n  /**\n   * Gets the screenshot edited by the user\n   * @param dataURI\n   */\n  public takeEditScreenshot(dataURI: string): void {\n    this._screenshotEdit$.next(dataURI);\n  }\n\n  public setShakeEnabled(enabled: boolean): void {\n    localStorage.setItem(FeedbackStorageKeys.ShakeEnabled, enabled ? '1' : '0');\n  }\n\n  public shakeEnabled(): boolean {\n    const value = localStorage.getItem(FeedbackStorageKeys.ShakeEnabled);\n    return value === '1';\n  }\n}\n","import { ChangeDetectionStrategy, Component, inject, OnInit } from '@angular/core';\nimport { LibModalComponent } from '../../modal/popup-modal/popup-modal.component';\nimport { FeedbackService } from '../services/feedback.service';\n\n@Component({\n  selector: 'lib-feedback-modal',\n  templateUrl: './feedback-modal.component.html',\n  styleUrls: ['./feedback-modal.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\n/**\n * a wrapper component for the modal component\n */\nexport class FeedbackModalComponent implements OnInit {\n  public shakeEnabled: boolean = true;\n  private modal = inject(LibModalComponent); // A reference to parent modal component, so we can close later\n  private feedbackService = inject(FeedbackService);\n\n  ngOnInit(): void {\n    // Set the value from local storage service\n    this.shakeEnabled = this.feedbackService.shakeEnabled();\n  }\n\n  /**\n   * close callback\n   */\n  public close(): void {\n    this.modal.hide();\n    this.feedbackService.onModalClose.next({\n      shakeEnabled: this.shakeEnabled,\n      confirm: false,\n    });\n  }\n\n  /**\n   * Confirm callback\n   */\n  public confirm(): void {\n    this.modal.hide();\n    this.feedbackService.onModalClose.next({\n      shakeEnabled: this.shakeEnabled,\n      confirm: true,\n    });\n  }\n\n  /**\n   * Updates the local storage when the form state changes\n   * @param value whether the shake is enabled\n   */\n  public shakeEnabledChange(value: any): void {\n    const booleanValue = !!value;\n    this.feedbackService.setShakeEnabled(booleanValue);\n  }\n}\n","<lib-base-card class=\"page-wrapper\">\n  <ion-grid>\n    <ion-row>\n      <ion-col>\n        <div class=\"text-center\">\n          <img src=\"./../../../../assets/icons/shake.svg\" alt=\"Shake\" class=\"shake-img\" />\n        </div>\n      </ion-col>\n    </ion-row>\n    <ion-row>\n      <ion-col>\n        <h2 class=\"page-title\">{{ 'FEEDBACK.MODAL.TITLE' | translate }}</h2>\n      </ion-col>\n    </ion-row>\n    <ion-row>\n      <ion-col>\n        <p class=\"text-center text-light modal-description\">{{ 'FEEDBACK.MODAL.DESCRIPTION' | translate }}</p>\n      </ion-col>\n    </ion-row>\n    <ion-row class=\"align-center toggle-container\">\n      <p class=\"text-light label toggle-label\">{{ 'FEEDBACK.MODAL.SHAKING_PHONE' | translate }}</p>\n      <lib-toggle [(toggleState)]=\"shakeEnabled\" (toggleStateChange)=\"shakeEnabledChange($event)\"></lib-toggle>\n    </ion-row>\n    <ion-row class=\"modal-buttons\">\n      <ion-col size-xs=\"4\">\n        <lib-secondary-btn (click)=\"close()\"> {{ 'FEEDBACK.MODAL.CANCEL' | translate }} </lib-secondary-btn>\n      </ion-col>\n      <ion-col size-xs=\"4\">\n        <lib-primary-btn (click)=\"confirm()\"> {{ 'FEEDBACK.MODAL.SEND_FEEDBACK' | translate }} </lib-primary-btn>\n      </ion-col>\n    </ion-row>\n  </ion-grid>\n</lib-base-card>\n","export enum DrawingMode {\n  Free = 'free',\n  Erase = 'erase',\n  Line = 'line',\n  None = 'none',\n}\n","export enum ModeStrokes {\n  DRAW = 'draw',\n  ERASE = 'erase',\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'lib-color-range',\n  standalone: true,\n  imports: [CommonModule, ReactiveFormsModule],\n  templateUrl: './color-range.component.html',\n  styleUrl: './color-range.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColorRangeComponent implements AfterViewInit, OnChanges {\n  @ViewChild('rangeColorInput') rangeColorInput!: ElementRef;\n  @Output() colorSelected: EventEmitter<{ current: string; value: number }> = new EventEmitter<{ current: string; value: number }>();\n  @Input() public sliderValue: number = 0;\n  @Input() public currentColor: string = 'hsl(0, 100%, 50%)';\n\n  readonly hueControl = new FormControl<number>(0, { nonNullable: true });\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['sliderValue'] && changes['sliderValue'].currentValue !== this.hueControl.value) {\n      this.hueControl.setValue(Number(this.sliderValue), { emitEvent: false });\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.rangeColorInput.nativeElement.style.setProperty('--thumb-color', this.currentColor);\n  }\n\n  public updateColor(e: Event): void {\n    const hue = Number((e.target as HTMLInputElement).value);\n    this.currentColor = `hsl(${hue}, 100%, 50%)`;\n    this.rangeColorInput.nativeElement.style.setProperty('--thumb-color', this.currentColor);\n    this.colorSelected.emit({ current: this.currentColor, value: hue });\n  }\n}\n","<input #rangeColorInput type=\"range\" orient=\"vertical\" min=\"0\" max=\"360\" [formControl]=\"hueControl\" class=\"custom-slider-range\" (input)=\"updateColor($event)\" />\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, inject, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { FeedbackService } from '../services/feedback.service';\nimport { DrawingMode } from './interfaces/drawing-mode.enum';\nimport { ModeStrokes } from './interfaces/stroke-mode.enum';\nimport { IStroke } from './interfaces/stroke.interface';\n@Component({\n  selector: 'lib-feedback-screenshot',\n  templateUrl: './feedback-screenshot.component.html',\n  styleUrls: ['./feedback-screenshot.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\n/**\n * a component for drawing\n */\nexport class FeedbackScreenshotComponent implements AfterViewInit, OnDestroy {\n  @ViewChild('canvasDraw') canvasDraw!: ElementRef<HTMLCanvasElement>;\n  @ViewChild('canvasBase') canvasBase!: ElementRef<HTMLCanvasElement>;\n  @Input() public screenshot: string = '';\n  @Input() public eraserSize = 25;\n\n  public drawingMode: DrawingMode = DrawingMode.Free;\n\n  private lineStart = { x: 0, y: 0 };\n\n  private feedbackService = inject(FeedbackService);\n\n  public readonly window: Window = window;\n  public readonly document: Document = document;\n  public hideToolbar: boolean = false;\n\n  public isDrawingLine: boolean = false;\n  public isDrawingFree: boolean = false;\n  public isErasing: boolean = false;\n  public defaultColor: string = 'hsl(360, 100%, 50%)';\n  public sliderColorValue: number = 0;\n\n  private ctxDraw!: CanvasRenderingContext2D;\n  private ctxBase!: CanvasRenderingContext2D;\n  private componentdestroyed$ = new Subject<void>();\n  private strokes: IStroke[] = [];\n\n  ngAfterViewInit(): void {\n    this.setupCanvasSizes();\n\n    this.feedbackService.screenshotOriginal$.pipe(takeUntil(this.componentdestroyed$)).subscribe((res) => {\n      if (res && !this.screenshot) {\n        this.screenshot = res;\n      }\n      if (this.screenshot) {\n        this.drawBaseImage();\n      }\n    });\n  }\n  ngOnDestroy(): void {\n    this.componentdestroyed$.next();\n    this.componentdestroyed$.complete();\n  }\n\n  private setupCanvasSizes(): void {\n    const dpr = window.devicePixelRatio || 1;\n\n    // 1) base Canvas\n    const baseEl = this.canvasBase.nativeElement;\n    baseEl.width = this.window.innerWidth * dpr;\n    baseEl.height = this.window.innerHeight * dpr;\n    baseEl.style.width = `${this.window.innerWidth}px`;\n    baseEl.style.height = `${this.window.innerHeight}px`;\n\n    this.ctxBase = baseEl.getContext('2d')!;\n    this.ctxBase.scale(dpr, dpr);\n\n    const drawEl = this.canvasDraw.nativeElement;\n    drawEl.width = this.window.innerWidth * dpr;\n    drawEl.height = this.window.innerHeight * dpr;\n    drawEl.style.width = `${this.window.innerWidth}px`;\n    drawEl.style.height = `${this.window.innerHeight}px`;\n\n    this.ctxDraw = drawEl.getContext('2d')!;\n    this.ctxDraw.scale(dpr, dpr);\n\n    this.ctxDraw.lineCap = 'round';\n    this.ctxDraw.lineJoin = 'round';\n  }\n\n  private drawBaseImage(): void {\n    const baseImage = new Image();\n    baseImage.src = this.screenshot;\n\n    baseImage.onload = () => {\n      this.ctxBase.drawImage(baseImage, 0, 0, this.window.innerWidth, this.window.innerHeight);\n\n      this.ctxDraw.strokeStyle = this.defaultColor;\n      this.ctxDraw.lineWidth = 10;\n\n      if (this.feedbackService.strokes.length > 0) {\n        this.strokes = this.feedbackService.strokes;\n        this.redrawCanvas();\n      }\n    };\n  }\n\n  // Drawing functions region\n  // #region\n  public enableFreeDraw(): void {\n    this.drawingMode = DrawingMode.Free;\n  }\n  public enableErasing(): void {\n    this.drawingMode = DrawingMode.Erase;\n  }\n\n  public enableLineMode(): void {\n    this.drawingMode = DrawingMode.Line;\n  }\n\n  public startLine(e: PointerEvent): void {\n    this.isDrawingFree = false;\n    this.isErasing = false;\n    this.isDrawingLine = true;\n    this.lineStart = this.getEventCoords(e);\n  }\n\n  public drawLine(e: PointerEvent): void {\n    if (!this.isDrawingLine) return;\n    const currentPos = this.getEventCoords(e);\n\n    this.ctxDraw.clearRect(0, 0, this.canvasDraw.nativeElement.width, this.canvasDraw.nativeElement.height);\n\n    this.redrawCanvas();\n\n    this.ctxDraw.beginPath();\n    this.ctxDraw.strokeStyle = this.defaultColor;\n    this.ctxDraw.lineWidth = 10;\n    this.ctxDraw.moveTo(this.lineStart.x, this.lineStart.y);\n    requestAnimationFrame(() => {\n      this.ctxDraw.lineTo(currentPos.x, currentPos.y);\n      this.ctxDraw.stroke();\n    });\n  }\n\n  public endLine(e: PointerEvent): void {\n    this.isDrawingLine = false;\n\n    const endPos = this.getEventCoords(e);\n\n    const newStroke: IStroke = {\n      mode: ModeStrokes.DRAW,\n      color: this.defaultColor,\n      lineWidth: 10,\n      points: [this.lineStart, endPos],\n    };\n\n    this.strokes.push(newStroke);\n    this.redrawCanvas();\n  }\n\n  public drawFree(e: PointerEvent): void {\n    if (!this.isDrawingFree) return;\n\n    const { x, y } = this.getEventCoords(e);\n\n    const currentStroke = this.strokes[this.strokes.length - 1];\n    currentStroke.points.push({ x, y });\n\n    currentStroke.points.push({ x, y });\n    requestAnimationFrame(() => {\n      this.ctxDraw.lineTo(x, y);\n      this.ctxDraw.stroke();\n    });\n  }\n\n  public stopDrawingFree(): void {\n    this.isDrawingFree = false;\n  }\n  public startDrawingFree(e: PointerEvent): void {\n    this.isErasing = false;\n    this.isDrawingLine = false;\n    this.isDrawingFree = true;\n\n    const { x, y } = this.getEventCoords(e);\n\n    const newStroke: IStroke = {\n      points: [{ x, y }],\n      color: this.defaultColor,\n      lineWidth: 10,\n      mode: ModeStrokes.DRAW,\n    };\n\n    this.strokes.push(newStroke);\n\n    this.ctxDraw.beginPath();\n    this.ctxDraw.lineCap = 'round';\n    this.ctxDraw.lineJoin = 'round';\n\n    this.ctxDraw.strokeStyle = this.defaultColor;\n    this.ctxDraw.lineWidth = 10;\n    this.ctxDraw.moveTo(x, y);\n\n    this.ctxDraw.lineTo(x + 0.001, y + 0.001);\n    this.ctxDraw.stroke();\n    this.ctxDraw.fillStyle = this.defaultColor;\n    this.ctxDraw.fill();\n  }\n\n  private performErase(x: number, y: number): void {\n    this.ctxDraw.globalCompositeOperation = 'destination-out';\n    this.ctxDraw.beginPath();\n    this.ctxDraw.arc(x, y, 25, 0, Math.PI * 2);\n    this.ctxDraw.fill();\n    this.ctxDraw.globalCompositeOperation = 'source-over';\n  }\n\n  public startErase(e: PointerEvent): void {\n    this.isDrawingFree = false;\n    this.isDrawingLine = false;\n    this.isErasing = true;\n\n    const { x, y } = this.getEventCoords(e);\n\n    const newStroke: IStroke = {\n      points: [{ x, y }],\n      color: '#000000',\n      lineWidth: 25,\n      mode: ModeStrokes.ERASE,\n    };\n    this.strokes.push(newStroke);\n\n    this.performErase(x, y);\n  }\n\n  public erase(e: PointerEvent): void {\n    if (!this.isErasing) return;\n\n    const { x, y } = this.getEventCoords(e);\n\n    const currentStroke = this.strokes[this.strokes.length - 1];\n    currentStroke.points.push({ x, y });\n\n    this.performErase(x, y);\n  }\n\n  public stopErase(): void {\n    this.isErasing = false;\n  }\n\n  private getEventCoords(event: PointerEvent): { x: number; y: number } {\n    const rect = this.canvasDraw.nativeElement.getBoundingClientRect();\n    return {\n      x: event.clientX - rect.left,\n      y: event.clientY - rect.top,\n    };\n  }\n\n  public handleColorSelected(res: { current: string; value: number }): void {\n    this.defaultColor = res.current;\n    this.sliderColorValue = res.value;\n  }\n\n  public undoLastStroke(): void {\n    this.strokes.pop();\n    this.redrawCanvas();\n  }\n  // #endregion\n\n  public done(): void {\n    this.hideToolbar = true;\n    const finalDataUrl = this.exportCombinedCanvas();\n    this.feedbackService.strokes = this.strokes;\n    this.feedbackService.takeEditScreenshot(finalDataUrl);\n  }\n\n  public cancel(): void {\n    this.feedbackService.onScreenshotCanceled$.next(true);\n  }\n\n  private exportCombinedCanvas(): string {\n    // 1. Create a \"virtual\" canvas (it's not in the DOM)\n    const finalCanvas = document.createElement('canvas');\n    finalCanvas.width = this.window.innerWidth;\n    finalCanvas.height = this.window.innerHeight;\n    const finalCtx = finalCanvas.getContext('2d')!;\n\n    // 2. Draw the canvasBase/background content in the virtual canvas\n    finalCtx.drawImage(this.canvasBase.nativeElement, 0, 0);\n\n    // 3. Draw above the canvasDraw content\n    finalCtx.drawImage(this.canvasDraw.nativeElement, 0, 0);\n\n    // 4. Obtain the dataURL with the final result\n    return finalCanvas.toDataURL('image/png');\n  }\n\n  private redrawCanvas(): void {\n    this.ctxDraw.clearRect(0, 0, this.canvasDraw.nativeElement.width, this.canvasDraw.nativeElement.height);\n\n    for (const stroke of this.strokes) {\n      if (stroke.mode === ModeStrokes.ERASE) {\n        this.ctxDraw.globalCompositeOperation = 'destination-out';\n\n        for (const point of stroke.points) {\n          this.ctxDraw.beginPath();\n          this.ctxDraw.arc(point.x, point.y, stroke.lineWidth, 0, Math.PI * 2);\n          this.ctxDraw.fill();\n        }\n\n        this.ctxDraw.globalCompositeOperation = 'source-over';\n      } else {\n        this.ctxDraw.globalCompositeOperation = 'source-over';\n        this.ctxDraw.strokeStyle = stroke.color;\n        this.ctxDraw.lineWidth = stroke.lineWidth;\n        this.ctxDraw.lineCap = 'round';\n        this.ctxDraw.lineJoin = 'round';\n\n        this.ctxDraw.beginPath();\n        for (let i = 0; i < stroke.points.length; i++) {\n          const point = stroke.points[i];\n          if (i === 0) {\n            this.ctxDraw.moveTo(point.x, point.y);\n          } else {\n            this.ctxDraw.lineTo(point.x, point.y);\n          }\n        }\n        this.ctxDraw.stroke();\n      }\n    }\n  }\n}\n","<canvas #canvasBase class=\"background-screenshot\"></canvas>\n<canvas\n  #canvasDraw\n  class=\"draw\"\n  (pointerdown)=\"drawingMode === 'free' ? startDrawingFree($event) : drawingMode === 'erase' ? startErase($event) : drawingMode === 'line' ? startLine($event) : null\"\n  (pointerup)=\"drawingMode === 'free' ? stopDrawingFree() : drawingMode === 'erase' ? stopErase() : drawingMode === 'line' ? endLine($event) : null\"\n  (pointermove)=\"drawingMode === 'free' ? drawFree($event) : drawingMode === 'erase' ? erase($event) : drawingMode === 'line' ? drawLine($event) : null\"\n></canvas>\n<div class=\"toolbar\" *ngIf=\"!hideToolbar && !isErasing && !isDrawingFree && !isDrawingLine\">\n  <ion-grid>\n    <ion-row class=\"ion-justify-content-end mb-5\">\n      <ion-col>\n        <lib-icon-btn (click)=\"cancel()\"\n          ><svg width=\"30\" height=\"30\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <line x1=\"5\" y1=\"5\" x2=\"10\" y2=\"10\" stroke=\"#fe3c72\" />\n            <line x1=\"10\" y1=\"5\" x2=\"5\" y2=\"10\" stroke=\"#fe3c72\" /></svg\n        ></lib-icon-btn>\n      </ion-col>\n    </ion-row>\n    <ion-row class=\"ion-justify-content-end\">\n      <ion-col>\n        <lib-icon-btn (click)=\"enableFreeDraw()\">\n          @if (drawingMode === 'free') {\n            <svg width=\"18\" height=\"19.63\" viewBox=\"0 0 22 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path\n                d=\"M19.2314 20.2189C17.6627 20.1613 18.1886 23.2695 16.5241 23.19C14.8596 23.1106 14.2354 20.7739 12.463 21.0467C11.0388 21.2659 10.8372 22.6793 9.53006 23.2858C6.98129 24.4685 2.3351 23.2858 2.3351 23.2858C1.40329 23.2858 1.40326 22.0432 2.3351 22.0432C2.3351 22.0432 6.55949 22.9994 8.96602 22.0432C10.3665 21.4868 10.6624 20.0276 12.1622 19.881C14.0093 19.7006 15.2759 22.6568 16.5352 22.713C17.7944 22.7692 17.6659 19.6881 19.2615 19.8159C20.4611 19.912 21.5516 21.5441 21.7612 22.6645C21.7612 22.6645 20.6046 20.2693 19.2314 20.2189Z\"\n                fill=\"white\"\n              />\n              <path\n                d=\"M14.5351 2.26305L13.6081 3.19005L5.08707 11.71C4.51007 12.288 4.22107 12.577 3.97307 12.895C3.68046 13.2705 3.42933 13.6766 3.22407 14.106C3.05107 14.47 2.92207 14.858 2.66407 15.632L1.57007 18.913L1.30207 19.715C1.23938 19.902 1.23008 20.1027 1.27521 20.2947C1.32034 20.4866 1.41811 20.6622 1.55754 20.8016C1.69696 20.941 1.87251 21.0388 2.06445 21.0839C2.25639 21.129 2.45712 21.1197 2.64407 21.057L3.44607 20.789L6.72707 19.695C7.50207 19.437 7.88907 19.308 8.25307 19.135C8.6844 18.9297 9.08807 18.68 9.46407 18.386C9.78207 18.138 10.0711 17.849 10.6481 17.272L19.1691 8.75105L20.0961 7.82405C20.8335 7.08661 21.2478 6.08644 21.2478 5.04355C21.2478 4.00066 20.8335 3.00048 20.0961 2.26305C19.3586 1.52561 18.3585 1.11133 17.3156 1.11133C16.2727 1.11133 15.2725 1.52561 14.5351 2.26305Z\"\n                stroke=\"white\"\n                stroke-width=\"1.5\"\n              />\n            </svg>\n          } @else {\n            <svg width=\"18\" height=\"19.63\" viewBox=\"0 0 22 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path\n                d=\"M19.2314 20.2189C17.6627 20.1613 18.1886 23.2695 16.5241 23.19C14.8596 23.1106 14.2354 20.7739 12.463 21.0467C11.0388 21.2659 10.8372 22.6793 9.53006 23.2858C6.98129 24.4685 2.3351 23.2858 2.3351 23.2858C1.40329 23.2858 1.40326 22.0432 2.3351 22.0432C2.3351 22.0432 6.55949 22.9994 8.96602 22.0432C10.3665 21.4868 10.6624 20.0276 12.1622 19.881C14.0093 19.7006 15.2759 22.6568 16.5352 22.713C17.7944 22.7692 17.6659 19.6881 19.2615 19.8159C20.4611 19.912 21.5516 21.5441 21.7612 22.6645C21.7612 22.6645 20.6046 20.2693 19.2314 20.2189Z\"\n                fill=\"#fe3c72\"\n              />\n              <path\n                d=\"M14.5351 2.26305L13.6081 3.19005L5.08707 11.71C4.51007 12.288 4.22107 12.577 3.97307 12.895C3.68046 13.2705 3.42933 13.6766 3.22407 14.106C3.05107 14.47 2.92207 14.858 2.66407 15.632L1.57007 18.913L1.30207 19.715C1.23938 19.902 1.23008 20.1027 1.27521 20.2947C1.32034 20.4866 1.41811 20.6622 1.55754 20.8016C1.69696 20.941 1.87251 21.0388 2.06445 21.0839C2.25639 21.129 2.45712 21.1197 2.64407 21.057L3.44607 20.789L6.72707 19.695C7.50207 19.437 7.88907 19.308 8.25307 19.135C8.6844 18.9297 9.08807 18.68 9.46407 18.386C9.78207 18.138 10.0711 17.849 10.6481 17.272L19.1691 8.75105L20.0961 7.82405C20.8335 7.08661 21.2478 6.08644 21.2478 5.04355C21.2478 4.00066 20.8335 3.00048 20.0961 2.26305C19.3586 1.52561 18.3585 1.11133 17.3156 1.11133C16.2727 1.11133 15.2725 1.52561 14.5351 2.26305Z\"\n                stroke=\"#fe3c72\"\n                stroke-width=\"1.5\"\n              />\n            </svg>\n          }\n        </lib-icon-btn>\n      </ion-col>\n    </ion-row>\n    <ion-row class=\"ion-justify-content-end\">\n      <ion-col>\n        <lib-icon-btn type=\"icon\" (click)=\"enableLineMode()\">\n          @if (drawingMode === 'line') {\n            <svg width=\"18\" height=\"20.45\" viewBox=\"0 0 22 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path\n                d=\"M18.7203 24.2184C18.3993 24.2184 18.1094 24.1303 17.8505 23.9543C17.5916 23.7783 17.4052 23.5556 17.2913 23.2864H2.31068C1.37888 23.2864 1.37884 22.0438 2.31068 22.0438L17.2913 22.0438C17.4052 21.7745 17.5916 21.5519 17.8505 21.3759C18.1094 21.1998 18.3993 21.1118 18.7203 21.1118C19.1552 21.1118 19.5228 21.262 19.8231 21.5623C20.1234 21.8626 20.2736 22.2302 20.2736 22.6651C20.2736 23.1 20.1234 23.4676 19.8231 23.7679C19.5228 24.0682 19.1552 24.2184 18.7203 24.2184Z\"\n                fill=\"white\"\n              />\n              <path\n                d=\"M14.0473 2.26305L13.1203 3.19005L4.59927 11.71C4.02227 12.288 3.73327 12.577 3.48527 12.895C3.19267 13.2705 2.94154 13.6766 2.73627 14.106C2.56327 14.47 2.43427 14.858 2.17627 15.632L1.08227 18.913L0.814273 19.715C0.751587 19.902 0.742286 20.1027 0.787417 20.2947C0.832547 20.4866 0.93032 20.6622 1.06974 20.8016C1.20917 20.941 1.38472 21.0388 1.57666 21.0839C1.7686 21.129 1.96933 21.1197 2.15627 21.057L2.95827 20.789L6.23927 19.695C7.01427 19.437 7.40127 19.308 7.76527 19.135C8.19661 18.9297 8.60027 18.68 8.97627 18.386C9.29427 18.138 9.58327 17.849 10.1603 17.272L18.6813 8.75105L19.6083 7.82405C20.3457 7.08661 20.76 6.08644 20.76 5.04355C20.76 4.00066 20.3457 3.00048 19.6083 2.26305C18.8708 1.52561 17.8707 1.11133 16.8278 1.11133C15.7849 1.11133 14.7847 1.52561 14.0473 2.26305Z\"\n                stroke=\"white\"\n                stroke-width=\"1.5\"\n              />\n            </svg>\n          } @else {\n            <svg width=\"18\" height=\"20.45\" viewBox=\"0 0 22 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path\n                d=\"M18.7203 24.2184C18.3993 24.2184 18.1094 24.1303 17.8505 23.9543C17.5916 23.7783 17.4052 23.5556 17.2913 23.2864H2.31068C1.37888 23.2864 1.37884 22.0438 2.31068 22.0438L17.2913 22.0438C17.4052 21.7745 17.5916 21.5519 17.8505 21.3759C18.1094 21.1998 18.3993 21.1118 18.7203 21.1118C19.1552 21.1118 19.5228 21.262 19.8231 21.5623C20.1234 21.8626 20.2736 22.2302 20.2736 22.6651C20.2736 23.1 20.1234 23.4676 19.8231 23.7679C19.5228 24.0682 19.1552 24.2184 18.7203 24.2184Z\"\n                fill=\"#fe3c72\"\n              />\n              <path\n                d=\"M14.0473 2.26305L13.1203 3.19005L4.59927 11.71C4.02227 12.288 3.73327 12.577 3.48527 12.895C3.19267 13.2705 2.94154 13.6766 2.73627 14.106C2.56327 14.47 2.43427 14.858 2.17627 15.632L1.08227 18.913L0.814273 19.715C0.751587 19.902 0.742286 20.1027 0.787417 20.2947C0.832547 20.4866 0.93032 20.6622 1.06974 20.8016C1.20917 20.941 1.38472 21.0388 1.57666 21.0839C1.7686 21.129 1.96933 21.1197 2.15627 21.057L2.95827 20.789L6.23927 19.695C7.01427 19.437 7.40127 19.308 7.76527 19.135C8.19661 18.9297 8.60027 18.68 8.97627 18.386C9.29427 18.138 9.58327 17.849 10.1603 17.272L18.6813 8.75105L19.6083 7.82405C20.3457 7.08661 20.76 6.08644 20.76 5.04355C20.76 4.00066 20.3457 3.00048 19.6083 2.26305C18.8708 1.52561 17.8707 1.11133 16.8278 1.11133C15.7849 1.11133 14.7847 1.52561 14.0473 2.26305Z\"\n                stroke=\"#fe3c72\"\n                stroke-width=\"1.5\"\n              />\n            </svg>\n          }\n        </lib-icon-btn>\n      </ion-col>\n    </ion-row>\n    <ion-row class=\"ion-justify-content-end\">\n      <ion-col>\n        <lib-icon-btn type=\"icon\" (click)=\"enableErasing()\">\n          @if (!(drawingMode === 'erase')) {\n            <svg fill=\"#fe3c72\" width=\"22\" height=\"22\" viewBox=\"0 0 32 32\" id=\"icon\" xmlns=\"http://www.w3.org/2000/svg\">\n              <defs>\n                <style>\n                  .cls-1 {\n                    fill: none;\n                  }\n                </style>\n              </defs>\n              <title>erase</title>\n              <rect x=\"7\" y=\"27\" width=\"23\" height=\"2\" />\n              <path\n                d=\"M27.38,10.51,19.45,2.59a2,2,0,0,0-2.83,0l-14,14a2,2,0,0,0,0,2.83L7.13,24h9.59L27.38,13.34A2,2,0,0,0,27.38,10.51ZM15.89,22H8L4,18l6.31-6.31,7.93,7.92Zm3.76-3.76-7.92-7.93L18,4,26,11.93Z\"\n                transform=\"translate(0 0)\"\n              />\n              <rect id=\"_Transparent_Rectangle_\" data-name=\"&lt;Transparent Rectangle&gt;\" class=\"cls-1\" width=\"32\" height=\"32\" />\n            </svg>\n          } @else {\n            <svg fill=\"white\" width=\"22\" height=\"22\" viewBox=\"0 0 32 32\" id=\"icon\" xmlns=\"http://www.w3.org/2000/svg\">\n              <defs>\n                <style>\n                  .cls-1 {\n                    fill: none;\n                  }\n                </style>\n              </defs>\n              <title>erase</title>\n              <rect x=\"7\" y=\"27\" width=\"23\" height=\"2\" />\n              <path\n                d=\"M27.38,10.51,19.45,2.59a2,2,0,0,0-2.83,0l-14,14a2,2,0,0,0,0,2.83L7.13,24h9.59L27.38,13.34A2,2,0,0,0,27.38,10.51ZM15.89,22H8L4,18l6.31-6.31,7.93,7.92Zm3.76-3.76-7.92-7.93L18,4,26,11.93Z\"\n                transform=\"translate(0 0)\"\n              />\n              <rect id=\"_Transparent_Rectangle_\" data-name=\"&lt;Transparent Rectangle&gt;\" class=\"cls-1\" width=\"32\" height=\"32\" />\n            </svg>\n          }\n        </lib-icon-btn>\n      </ion-col>\n    </ion-row>\n    <ion-row class=\"ion-justify-content-end\">\n      <ion-col>\n        <lib-icon-btn type=\"icon\" (click)=\"undoLastStroke()\">\n          <svg width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              d=\"M16.1641 15.5471C14.5231 13.0471 12.4951 12.2621 10.0001 12.0631V13.5001C10.0001 14.0341 9.79208 14.5361 9.41408 14.9141C8.65808 15.6701 7.33708 15.6651 6.59108 14.9191L0.298084 8.71208C0.203599 8.61903 0.128564 8.50812 0.077348 8.3858C0.0261315 8.26347 -0.000244141 8.13219 -0.000244141 7.99958C-0.000244141 7.86697 0.0261315 7.73568 0.077348 7.61336C0.128564 7.49104 0.203599 7.38013 0.298084 7.28708L6.58608 1.08408C7.34008 0.329078 8.65908 0.328078 9.41508 1.08508C9.79208 1.46308 10.0001 1.96508 10.0001 2.49908V4.20308C14.6191 5.13608 18.0001 9.20008 18.0001 13.9991V14.9991C18.0007 15.2146 17.9315 15.4245 17.8029 15.5975C17.6744 15.7706 17.4933 15.8973 17.2868 15.959C17.0803 16.0206 16.8593 16.0138 16.657 15.9396C16.4547 15.8653 16.2817 15.7277 16.1641 15.5471ZM9.02308 10.0111C11.2301 10.0671 13.6611 10.4051 15.7811 12.1321C15.3984 10.532 14.5309 9.08916 13.2971 8.00087C12.0633 6.91257 10.5234 6.23195 8.88808 6.05208C8.38408 5.99608 8.00008 6.00008 8.00008 6.00008V2.50308L2.42408 7.99908L8.00008 13.4991V10.0001L9.02308 10.0111Z\"\n              fill=\"#fe3c72\"\n            />\n          </svg>\n        </lib-icon-btn>\n      </ion-col>\n    </ion-row>\n    <ion-row class=\"ion-justify-content-end\">\n      <ion-col>\n        <div class=\"color-picker\">\n          <lib-color-range (colorSelected)=\"handleColorSelected($event)\" [sliderValue]=\"sliderColorValue\" [currentColor]=\"defaultColor\"></lib-color-range>\n        </div>\n      </ion-col>\n    </ion-row>\n  </ion-grid>\n</div>\n<div class=\"done\" *ngIf=\"!hideToolbar && !isErasing && !isDrawingFree\">\n  <lib-hover-btn (click)=\"done()\" class=\"button\"> {{ 'FEEDBACK.SCREENSHOT.DONE' | translate }} </lib-hover-btn>\n</div>\n","import { Injectable } from '@angular/core';\nimport { PluginListenerHandle } from '@capacitor/core';\nimport { AccelListenerEvent, Motion } from '@capacitor/motion';\nimport { Platform } from '@ionic/angular';\nimport { Observable, Subject, catchError, from, map, of, switchMap, tap, throwError } from 'rxjs';\nimport { IDeviceMotionType } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\n/**\n * Service that handles device motion events and shake detection.\n * Used by the feedback system to trigger screenshot capture on device shake.\n */\nexport class AccelerometerService {\n  private readonly SHAKE_THRESHOLD = 3;\n  private accelHandler: PluginListenerHandle | null = null;\n  private lastX: number = 0;\n  private lastY: number = 0;\n  private lastZ: number = 0;\n  private moveCounter: number = 0;\n  private isInitialized: boolean = false;\n\n  private _onShake$: Subject<boolean> = new Subject<boolean>();\n  public onShake$: Observable<boolean> = this._onShake$.asObservable();\n\n  constructor(private platform: Platform) {}\n\n  /**\n   * method to emit events from the subject\n   */\n  public emitShakeEvent(value: boolean): void {\n    this._onShake$.next(value);\n  }\n\n  /**\n   * method to complete the subject when it's not needed\n   */\n  public completeShake(): void {\n    this._onShake$.complete();\n  }\n\n  /**\n   * Requests permissions to detect device motion events\n   */\n  public requestPermissionAccelerometer(): Observable<void> {\n    if (!this.platform.is('ios')) {\n      return this.initAccelerometer();\n    }\n\n    return from((DeviceMotionEvent as unknown as IDeviceMotionType).requestPermission()).pipe(\n      switchMap((permission: any) => {\n        if (permission === 'granted') {\n          return this.initAccelerometer();\n        } else {\n          throw new Error(`DeviceMotion permission ${permission}.`);\n        }\n      }),\n      catchError((error) => {\n        if (error instanceof DOMException) {\n          return throwError(() => new Error('DeviceMotion API not supported'));\n        }\n        return throwError(() => new Error(`Permission request failed: ${error.message}`));\n      }),\n    );\n  }\n\n  /**\n   * Initializes the accelerometer plugin\n   */\n  public initAccelerometer(): Observable<void> {\n    if (this.isInitialized) {\n      return of(void 0);\n    }\n\n    // Initiate the accelerometer listener\n    return from(Motion.addListener('accel', (e: AccelListenerEvent) => this.detectShake(e))).pipe(\n      tap((accessHandler: PluginListenerHandle) => {\n        this.accelHandler = accessHandler;\n        this.isInitialized = true;\n      }),\n      map(() => void 0), // transform the value to void\n      catchError((error) => {\n        this.isInitialized = false;\n        this.accelHandler = null;\n        throw new Error(`Failed to initialize accelerometer: ${error.message}`);\n      }),\n    );\n  }\n\n  /**\n   * Stop the acceleration listener\n   */\n  public stopAcceleration(): Observable<void> {\n    if (this.accelHandler) {\n      return from(this.accelHandler.remove()).pipe(\n        tap(() => {\n          this.accelHandler = null;\n          this.isInitialized = false;\n          this.resetState();\n        }),\n        map(() => void 0), // Transform the emitted value to void\n        catchError((error) => {\n          return throwError(() => new Error(`Failed to remove accelerometer listener: ${error.message}`));\n        }),\n      );\n    } else {\n      return of(void 0); // Emits void and completes\n    }\n  }\n\n  private resetState(): void {\n    this.moveCounter = 0;\n    this.lastX = 0;\n    this.lastY = 0;\n    this.lastZ = 0;\n  }\n\n  /**\n   * Detects device shake and fires onShake event\n   * @param event\n   * @private\n   */\n  private detectShake(event: AccelListenerEvent): void {\n    const acc = event.acceleration;\n    if (!this.lastX) {\n      this.lastX = acc.x;\n      this.lastY = acc.y;\n      this.lastZ = acc.z;\n      return;\n    }\n\n    const deltaX = Math.abs(acc.x - this.lastX);\n    const deltaY = Math.abs(acc.y - this.lastY);\n    const deltaZ = Math.abs(acc.z - this.lastZ);\n\n    if (deltaX + deltaY + deltaZ > 3) {\n      this.moveCounter++;\n    } else {\n      this.moveCounter = Math.max(0, --this.moveCounter);\n    }\n    if (this.moveCounter > this.SHAKE_THRESHOLD) {\n      this._onShake$.next(true);\n      this.moveCounter = 0;\n    }\n\n    this.lastX = acc.x;\n    this.lastY = acc.y;\n    this.lastZ = acc.z;\n  }\n}\n","import { Location } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { NavController } from '@ionic/angular';\nimport { Subject, take, takeUntil } from 'rxjs';\nimport { ImageModel } from '../../../model/image-model';\nimport { IFeedbackData } from '../interfaces';\nimport { AccelerometerService } from '../services/accelerometer.service';\nimport { FeedbackService } from '../services/feedback.service';\nimport { ILibMenuItem } from './../../../model/lib-menu-item';\n\n@Component({\n  selector: 'lib-feedback-send',\n  templateUrl: './feedback-send.component.html',\n  styleUrls: ['./feedback-send.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class FeedbackSendComponent implements OnInit, OnDestroy {\n  @ViewChild('toggleTemplate', { static: true }) toggleTemplate!: TemplateRef<HTMLElement>;\n  @ViewChild('discardTemplate', { static: true }) discardTemplate!: TemplateRef<HTMLElement>;\n\n  public shakeEnabled: boolean = false;\n  public topics: string[] = [];\n\n  private feedbackService = inject(FeedbackService);\n  private accelerometerService = inject(AccelerometerService);\n  private cdr = inject(ChangeDetectorRef);\n  private location = inject(Location);\n  private navCtrl = inject(NavController);\n\n  public selectedTopic: string = '';\n  public singleImageUploadedUrl: string = '';\n  public imagesUrl: Record<string, string | null> = {\n    image_1: null,\n    image_2: null,\n    image_3: null,\n  };\n  public textareaContent: string = '';\n  public isFormValidState: boolean = false;\n  public nestedMenuItems: ILibMenuItem[] = [];\n\n  private pressTimer: number | undefined;\n\n  private readonly componentDestroyed$ = new Subject<void>();\n\n  ngOnInit(): void {\n    this.shakeEnabled = this.feedbackService.shakeEnabled();\n\n    this.updateFormValidState();\n\n    this.getScreenshotImage();\n    this.feedbackService.screenshotEdit$.pipe(takeUntil(this.componentDestroyed$)).subscribe((res) => {\n      this.getScreenshotImage();\n    });\n\n    this.nestedMenuItems = [\n      {\n        title: 'Shake to Report',\n        templateRef: this.toggleTemplate,\n        cssClass: 'feedback-menu-item',\n        disableClick: true,\n        command: (item) => {\n          if (item && item.active !== undefined) {\n            this.onReportChange(item.active);\n            this.shakeEnabled = item.active;\n          }\n        },\n      },\n      {\n        title: 'Discard',\n        cssClass: 'feedback-menu-item',\n        templateRef: this.discardTemplate,\n        command: () => {\n          this.onSubmitDiscard();\n        },\n      },\n    ];\n  }\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  public onToggleChange(event: any, item: ILibMenuItem): void {\n    const booleanValue = !!event;\n    item.active = booleanValue;\n    if (item.command) {\n      item.command(item);\n    }\n  }\n\n  public onMouseDown(): void {\n    this.startTimer();\n  }\n\n  public onMouseUp(): void {\n    this.clearPressTimer();\n  }\n\n  public onMouseLeave(): void {\n    this.clearPressTimer();\n  }\n\n  public onTouchStart(): void {\n    this.startTimer();\n  }\n\n  public onTouchEnd(): void {\n    this.clearPressTimer();\n  }\n\n  public onUploadSingleImage(images: ImageModel[], field: string): void {\n    this.imagesUrl = { ...this.imagesUrl, [field]: images?.length > 0 ? images[0].image : null };\n    this.updateFormValidState();\n    this.cdr.detectChanges();\n  }\n\n  public onRemoveSingleImage(field: string): void {\n    this.imagesUrl = { ...this.imagesUrl, [field]: null };\n  }\n\n  public getImageLabel(index: number): string {\n    return (index + 1).toString();\n  }\n\n  public selectTopic(topic: string): void {\n    this.selectedTopic = topic;\n  }\n\n  public submit(): void {\n    // TODO: handle errors\n    const data: IFeedbackData = {\n      comments: this.textareaContent,\n      screenshots: [],\n      topic: this.selectedTopic,\n    };\n    for (const key of Object.keys(this.imagesUrl)) {\n      const element = this.imagesUrl[key];\n      if (element) {\n        data.screenshots.push(element);\n      }\n    }\n    this.feedbackService.setShakeEnabled(this.shakeEnabled);\n\n    if (this.topics && this.selectedTopic) {\n      data.topic = this.selectedTopic;\n    }\n\n    this.onSubmit();\n    // TODO: handle submit http\n    this.feedbackService.onFeedbackSubmit.next(data);\n  }\n\n  public goBack(): void {\n    this.location.back();\n  }\n\n  public gotoScreenshot(): void {\n    this.feedbackService.changeMarkUpStatus(true);\n  }\n\n  public updateFormValidState(): void {\n    this.isFormValidState = !this.imagesUrl['image_1'];\n  }\n\n  public onSubmitDiscard(): void {\n    this.location.back();\n  }\n\n  private startTimer(): void {\n    this.pressTimer = setTimeout(() => {\n      this.onLongPress();\n    }, 1000);\n  }\n\n  private clearPressTimer(): void {\n    clearTimeout(this.pressTimer);\n  }\n\n  private onLongPress(): void {\n    alert('Long press detected!');\n  }\n\n  private getScreenshotImage(): void {\n    this.feedbackService.screenshotEdit$.pipe(take(1)).subscribe((image) => {\n      this.imagesUrl = { ...this.imagesUrl, ['image_1']: image };\n      this.updateFormValidState();\n      this.cdr.detectChanges();\n    });\n  }\n\n  private onReportChange(event: boolean): void {\n    if (event) {\n      this.accelerometerService.requestPermissionAccelerometer().subscribe();\n    } else {\n      this.accelerometerService.stopAcceleration().subscribe();\n    }\n  }\n\n  private onSubmit(): void {\n    this.navCtrl.navigateForward('feedback/success', { animated: true, animationDirection: 'forward' });\n  }\n}\n","<ng-template #toggleTemplate let-data>\n  <div class=\"menu-template\">\n    <lib-toggle [toggleState]=\"this.shakeEnabled\" (toggleStateChange)=\"onToggleChange($event, data.item)\"></lib-toggle>\n    <span>{{ 'FEEDBACK.SEND.MINI_MENU.SHAKE_TO_REPORT' | translate }}</span>\n  </div>\n</ng-template>\n<ng-template #discardTemplate>\n  <div class=\"menu-template\">\n    <mat-icon>exit_to_app</mat-icon>\n    <span> {{ 'FEEDBACK.SEND.MINI_MENU.DISCARD' | translate }} </span>\n  </div>\n</ng-template>\n<ion-content>\n  <div class=\"page-wrapper\">\n    <div class=\"header\">\n      <lib-icon-btn class=\"back-icon\" (click)=\"goBack()\"><img src=\"/assets/icons/back-v2.svg\" alt=\"Go back\" /></lib-icon-btn>\n      <h2 class=\"page-title\">{{ 'FEEDBACK.SEND.TITLE' | translate }}</h2>\n      <lib-menu-btn [menuItems]=\"nestedMenuItems\"><mat-icon>more_vert</mat-icon></lib-menu-btn>\n    </div>\n    <ion-grid class=\"page-content\">\n      <ion-row class=\"ion-justify-content-center main-grid\">\n        <ion-col size=\"12\" class=\"subtitle_container\">\n          <p class=\"subtitle\">{{ 'FEEDBACK.SEND.DESCRIPTION' | translate }}</p>\n        </ion-col>\n        <ion-col size=\"12\" class=\"comments-field\">\n          <div>{{ 'FEEDBACK.SEND.YOUR_COMMENTS' | translate }}</div>\n          <lib-input-field\n            [placeholder]=\"'FEEDBACK.SEND.BRIEFLY_DESCRIBE_YOUR_ISSUE' | translate\"\n            [textarea]=\"true\"\n            [maxLength]=\"'2000'\"\n            [ngModel]=\"textareaContent\"\n            [counter]=\"true\"\n          ></lib-input-field>\n        </ion-col>\n        <ion-col size=\"12\">\n          <p class=\"img-card-label\">{{ 'FEEDBACK.SEND.ATTACH_SCREENSHOT' | translate }} ({{ imagesUrl | countNonEmptyFields }}/3)</p>\n        </ion-col>\n        <ion-col size=\"12\">\n          <div class=\"d-flex\">\n            <ion-col *ngFor=\"let image of ['image_1', 'image_2', 'image_3']; let i = index\">\n              <div class=\"lib-image-card_container\">\n                <lib-image-card\n                  [imageUrl]=\"imagesUrl[image] ?? ''\"\n                  [enableCropper]=\"false\"\n                  [maxNumOfPhotos]=\"1\"\n                  [imageLabel]=\"getImageLabel(i)\"\n                  (photosUpload)=\"onUploadSingleImage($event, image)\"\n                  (removeImage)=\"onRemoveSingleImage(image)\"\n                />\n              </div>\n            </ion-col>\n          </div>\n        </ion-col>\n        <ion-col size=\"12\" class=\"markup-btn\">\n          <div class=\"lib-secondary-btn_container\">\n            <lib-secondary-btn (click)=\"gotoScreenshot()\">{{ 'FEEDBACK.SEND.MARKUP_LAST_SCREEN' | translate }}</lib-secondary-btn>\n          </div>\n        </ion-col>\n        <ion-col size=\"12\" *ngIf=\"topics.length\">\n          <ion-row class=\"ion-justify-content-center\">\n            <ion-col size=\"12\">\n              <p class=\"topics-label\">{{ 'FEEDBACK.SEND.SOUNDS_RELATED' | translate }}</p>\n            </ion-col>\n            <ion-col size=\"6\" *ngFor=\"let item of topics\">\n              <lib-chip-btn\n                [label]=\"item\"\n                (click)=\"selectTopic(item)\"\n                (mousedown)=\"onMouseDown()\"\n                (mouseup)=\"onMouseUp()\"\n                (mouseleave)=\"onMouseLeave()\"\n                (touchstart)=\"onTouchStart()\"\n                (touchend)=\"onTouchEnd()\"\n              />\n            </ion-col>\n          </ion-row>\n        </ion-col>\n        <ion-col size=\"12\">\n          <div class=\"submit-container\">\n            <lib-primary-btn class=\"submit-btn\" (click)=\"submit()\" [disabled]=\"isFormValidState\">{{ 'FEEDBACK.SEND.SUBMIT' | translate }} </lib-primary-btn>\n          </div>\n        </ion-col>\n      </ion-row>\n    </ion-grid>\n  </div>\n</ion-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n  selector: 'lib-feedback-success',\n  templateUrl: './feedback-success.component.html',\n  styleUrl: './feedback-success.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class FeedbackSuccessComponent {\n  constructor(private router: Router) {}\n\n  public goToHome(): void {\n    this.router.navigate(['/']);\n  }\n}\n","<ion-content>\n  <div class=\"page-wrapper\">\n    <div class=\"page-content\">\n      <ion-grid>\n        <ion-row>\n          <ion-col size=\"12\">\n            <div class=\"thumbs-up\">\n              <img src=\"./../../../../assets/icons/thumbs-up.svg\" alt=\"Thumbs up\" />\n            </div>\n          </ion-col>\n          <ion-col size=\"12\">\n            <h1 class=\"page-title\">{{ 'FEEDBACK.SUCCESS.TITLE' | translate }}</h1>\n          </ion-col>\n          <ion-col size=\"12\">\n            <p class=\"page-description\">{{ 'FEEDBACK.SUCCESS.DESCRIPTION' | translate }}</p>\n          </ion-col>\n          <ion-col size=\"8\" push=\"2\" size-xs=\"10\" push-xs=\"1\">\n            <div class=\"ok-btn\">\n              <lib-primary-btn (click)=\"goToHome()\" class=\"button\">{{ 'FEEDBACK.SUCCESS.OKAY' | translate }}</lib-primary-btn>\n            </div>\n          </ion-col>\n        </ion-row>\n      </ion-grid>\n    </div>\n  </div>\n</ion-content>\n","import { AfterViewInit, Directive, Input, Optional } from '@angular/core';\nimport { DatePicker } from 'primeng/datepicker';\n\n@Directive({\n  selector: 'p-datePicker[libDateMask]',\n  standalone: false,\n})\nexport class DateMaskDirective implements AfterViewInit {\n  @Input() view: string = 'date';\n  @Input() mask: string = '';\n  @Input() placeholder: string = '';\n\n  constructor(@Optional() private primeDatePicker: DatePicker) {}\n\n  ngAfterViewInit(): void {\n    if (!this.mask) {\n      this.setDateMask();\n    }\n  }\n\n  private setDateMask(): void {\n    if (this.primeDatePicker.timeOnly) {\n      this.mask = '99:99';\n      this.placeholder = this.placeholder || 'hh:mm';\n    } else if (this.primeDatePicker.showTime) {\n      this.mask = '99-99-9999 99:99';\n      this.placeholder = 'MM-DD-YYYY hh:mm';\n    } else {\n      if (this.view) {\n        switch (this.view) {\n          case 'date':\n            this.mask = '99-99-9999';\n            this.placeholder = 'MM-DD-YYYY';\n            break;\n          case 'month':\n            this.mask = '99';\n            this.placeholder = 'MM';\n            break;\n          case 'year':\n            this.mask = '9999';\n            this.placeholder = 'YYYY';\n            break;\n        }\n      }\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  inject,\n  Input,\n  Output,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getDate } from 'date-fns';\nimport { DatePicker } from 'primeng/datepicker';\n\ntype DatePickerTypeView = 'date' | 'month' | 'year';\n\n@Component({\n  selector: 'lib-input-date-field',\n  templateUrl: './input-date-field.component.html',\n  styleUrls: ['./input-date-field.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => InputDateFieldComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class InputDateFieldComponent implements ControlValueAccessor {\n  @Input() label: string = '';\n  @Input() defaultDate: Date | null = null;\n  @Input() maxDate: Date | null = null;\n  @Input() minDate: Date | null = null;\n  @Input() showTime: boolean = false;\n  @Input() hieActions: boolean = false;\n  @Input() readonly: boolean = false;\n  @Input() defaultDayHighlight: boolean = true;\n  @Input() showIcon: boolean = false;\n  @Input() timeOnly: boolean = false;\n  @Input() view: DatePickerTypeView = 'date';\n  @Input() public disabled: boolean = false;\n  @Input() dateFormat: string = 'mm-dd-yy';\n  @Input() placeholder: string = '';\n  @Input() appendTo: string | TemplateRef<undefined> | ElementRef | null = 'body';\n  @Input() stepMinute: number = 15;\n  @Input() mask: string = '';\n  @Input() styleClass: string = '';\n  @Input() timeFormat: string = 'hh:mm';\n  @Output() focusEvent: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @ViewChild('datePicker') datePicker!: DatePicker;\n\n  public value: string | Date | null = null;\n  public focused: boolean = false;\n  readonly datePickerControl = new FormControl<string | Date | null>(null);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly cdr = inject(ChangeDetectorRef);\n  private onTouched: (value: any) => void = () => {};\n  private onChange: (value: any) => void = () => {};\n  private suppressNextWrite = false;\n\n  constructor() {\n    this.datePickerControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((v) => this.onModelChange(v));\n  }\n\n  // OBSERVATION: PrimeNG DatePicker's inline mode sets its displayed month/year from\n  // defaultDate during init. When a value is set via writeValue (ControlValueAccessor),\n  // the internal currentMonth/currentYear are NOT updated, so the calendar shows the\n  // wrong month. Fix: override defaultDate with the actual value so PrimeNG inits to\n  // the correct month.\n  public writeValue(value: string | Date | null): void {\n    if (this.suppressNextWrite) {\n      this.suppressNextWrite = false;\n      return;\n    }\n    this.value = value;\n    if (value) {\n      const date = value instanceof Date ? value : new Date(value);\n      if (!isNaN(date.getTime())) {\n        this.defaultDate = date;\n      }\n    }\n    this.datePickerControl.setValue(value, { emitEvent: false });\n    this.cdr.markForCheck();\n  }\n\n  public registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    if (isDisabled) {\n      this.datePickerControl.disable({ emitEvent: false });\n    } else {\n      this.datePickerControl.enable({ emitEvent: false });\n    }\n  }\n\n  public change(event: Date): void {\n    this.onChange(event);\n  }\n\n  public onModelChange(value: string | Date | null): void {\n    this.value = value;\n    this.suppressNextWrite = true;\n    this.onChange(value);\n    this.cdr.markForCheck();\n  }\n\n  public onDateSelect(date: Date): void {\n    this.value = date;\n    this.onChange(date);\n  }\n\n  public onBlurDate(): void {\n    this.focused = false;\n    this.onChange(this.value);\n    this.onTouched(true);\n    this.focusEvent.emit(true);\n  }\n\n  public onFocusDate(): void {\n    this.focused = true;\n    this.focusEvent.emit(true);\n  }\n\n  public openDatePicker(): void {\n    this.datePicker?.toggle();\n    this.focusEvent.emit(true);\n    this.highlightDefaultDay();\n  }\n\n  public selectPicker(): void {\n    const internalVal = (this.datePicker as any)?.value;\n    if (internalVal instanceof Date && !isNaN(internalVal.getTime())) {\n      this.datePickerControl.setValue(internalVal);\n    } else if (!this.datePickerControl.value) {\n      this.datePickerControl.setValue(new Date());\n    }\n    this.datePicker?.hideOverlay();\n    this.datePicker?.cd.detectChanges();\n    this.focusEvent.emit(false);\n  }\n\n  public clearPicker(): void {\n    this.datePicker?.clear();\n    this.datePicker?.hideOverlay();\n    this.appendTo = 'body';\n    this.datePicker?.cd.detectChanges();\n    this.focusEvent.emit(false);\n  }\n\n  // ---------- workaround to highlight Default Day ------------\n  private highlightDefaultDay(): void {\n    if (this.defaultDate && !this.value && this.defaultDayHighlight) {\n      const day = getDate(this.defaultDate);\n      const daysElements = document.querySelectorAll('td:not(.p-datepicker-other-month) span');\n      for (let i = 0; i < daysElements.length; i++) {\n        const element = daysElements[i] as HTMLElement;\n        if (element.innerText && Number(element.innerText) === day) {\n          element.setAttribute('tabindex', '0');\n          element.focus();\n          element.classList.add('day-element');\n        } else {\n          element.classList.add('not-day-element');\n          element.removeAttribute('tabindex');\n          element.blur();\n        }\n      }\n    }\n  }\n}\n","<!-- OBSERVATION: PrimeNG v20's p-datePicker removed input [mask] support. The old [mask] binding caused\n     \"NaN\" rendering in the calendar because the value was treated as an overlay mask (HTMLDivElement),\n     not an input mask. Removing [mask] and libDateMask directive fixed the calendar display. -->\n<div class=\"content-wrapper lib-date-filter-field\" [ngClass]=\"{ isFocused: focused, isDisabled: disabled }\">\n  <span class=\"p-float-label\">\n    <p-datePicker\n      [formControl]=\"datePickerControl\"\n      #datePicker\n      [styleClass]=\"styleClass\"\n      [panelStyleClass]=\"'lib-date-picker-panel'\"\n      [name]=\"label\"\n      [readonlyInput]=\"readonly\"\n      (onFocus)=\"onFocusDate()\"\n      (onBlur)=\"onBlurDate()\"\n      [timeOnly]=\"timeOnly\"\n      [appendTo]=\"appendTo\"\n      [placeholder]=\"''\"\n      [dateFormat]=\"view === 'year' ? 'yy' : view === 'month' ? 'mm' : dateFormat\"\n      [icon]=\"timeOnly ? 'pi pi-calendar' : 'pi pi-calendar'\"\n      [minDate]=\"minDate\"\n      [maxDate]=\"maxDate\"\n      [showTime]=\"showTime\"\n      [showOnFocus]=\"!showIcon\"\n      [view]=\"view\"\n      [stepMinute]=\"stepMinute\"\n      [defaultDate]=\"defaultDate\"\n      inputId=\"libDatePicker\"\n    >\n      <ng-template pTemplate=\"footer\">\n        <div class=\"calender-picker-footer\" *ngIf=\"!hieActions\">\n          <button mat-icon-button (click)=\"selectPicker()\" type=\"button\"><mat-icon>done_all</mat-icon></button>\n          <span class=\"spacer\"></span>\n          <button mat-icon-button (click)=\"clearPicker()\" type=\"button\"><mat-icon>delete</mat-icon></button>\n        </div>\n      </ng-template>\n    </p-datePicker>\n    <label *ngIf=\"label\" class=\"input-field-label\" for=\"libDatePicker\">{{ label }}</label>\n  </span>\n  <button type=\"button\" class=\"calendar-icon-btn\" *ngIf=\"showIcon\" (click)=\"openDatePicker()\">\n    <mat-icon>{{ timeOnly ? 'alarm' : 'event' }}</mat-icon>\n  </button>\n  <div class=\"error-outline\"></div>\n</div>\n","import { ChangeDetectionStrategy, Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputDateFieldComponent } from '../input-date-field.component';\n\n@Component({\n  selector: 'lib-input-date-field-inline',\n  templateUrl: './input-date-field-inline.component.html',\n  styleUrls: ['./input-date-field-inline.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => InputDateFieldInlineComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class InputDateFieldInlineComponent extends InputDateFieldComponent {\n  @Input() showActions: boolean = false;\n}\n","<div class=\"lib-inline-date-picker\">\n  <p-datePicker\n    [formControl]=\"datePickerControl\"\n    [styleClass]=\"styleClass\"\n    [panelStyleClass]=\"'lib-inline-date-picker-panel'\"\n    [name]=\"label\"\n    [readonlyInput]=\"readonly\"\n    [timeOnly]=\"timeOnly\"\n    [appendTo]=\"appendTo\"\n    [dateFormat]=\"view === 'year' ? 'yy' : view === 'month' ? 'mm' : dateFormat\"\n    [minDate]=\"minDate\"\n    [maxDate]=\"maxDate\"\n    [showTime]=\"showTime\"\n    [showOnFocus]=\"!showIcon\"\n    [view]=\"view\"\n    [inline]=\"true\"\n    [stepMinute]=\"stepMinute\"\n    [defaultDate]=\"defaultDate\"\n    inputId=\"libDatePicker\"\n  >\n    <ng-template pTemplate=\"footer\">\n      <div class=\"calender-picker-footer\" *ngIf=\"showActions\">\n        <lib-icon-btn (click)=\"selectPicker()\"><mat-icon>done_all</mat-icon></lib-icon-btn>\n        <lib-icon-btn (click)=\"clearPicker()\"><mat-icon>delete</mat-icon></lib-icon-btn>\n      </div>\n    </ng-template>\n  </p-datePicker>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IonicModule } from '@ionic/angular';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { DateMaskDirective } from '../../directives/date-mask/date-mask.directive';\nimport { ButtonsModule } from '../buttons/buttons.module';\nimport { InputDateFieldInlineComponent } from './input-date-field-inline/input-date-field-inline.component';\nimport { InputDateFieldComponent } from './input-date-field.component';\n\n@NgModule({\n  declarations: [InputDateFieldComponent, InputDateFieldInlineComponent, DateMaskDirective],\n  imports: [CommonModule, ReactiveFormsModule, FormsModule, DatePickerModule, MatIconModule, MatButtonModule, MatRippleModule, ButtonsModule, IonicModule],\n  exports: [InputDateFieldComponent, InputDateFieldInlineComponent],\n})\nexport class InputDateFieldModule {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewEncapsulation,\n  forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\n\ninterface ProcessedOption {\n  original: unknown;\n  value: string;\n  label: string;\n}\n\n@Component({\n  selector: 'lib-input-field-select',\n  templateUrl: './input-field-select.component.html',\n  styleUrls: ['./input-field-select.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => InputFieldSelectComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class InputFieldSelectComponent implements ControlValueAccessor, OnChanges {\n  @Input() multiple: boolean = false;\n  @Input() label: string = '';\n  @Input() placeholder: string = '';\n  @Input() optionLabel: string = '';\n  @Input() optionValue: string = '';\n  @Input() options: unknown[] = [];\n  @Input() optionsTemplates: TemplateRef<unknown>[] = [];\n  @Input() filterBy: string = '';\n  @Input() enableFilter: boolean = false;\n  @Input() readonly: boolean = false;\n  @Input() disabled: boolean = false;\n  @Input() showClear: boolean = false;\n  @Input() editable: boolean = false;\n  @Input() withTemplate: boolean = false;\n  @Input() enableTranslation: boolean = false;\n\n  @Output() valueChange = new EventEmitter<string>();\n\n  public processedOptions: ProcessedOption[] = [];\n  public onChange: (value: string) => void = () => {};\n  public focused: boolean = false;\n  public value: string = '';\n  public control: FormControl = new FormControl();\n  public dropdownOpen: boolean = false;\n  public selectedOptionLabel: string = '';\n  public activeOptionIndex: number = -1;\n  public readonly triggerId: string;\n  public readonly panelId: string;\n  private readonly optionIdPrefix: string;\n\n  private onTouched: () => void = () => {};\n  constructor(private readonly hostRef: ElementRef<HTMLElement>) {\n    // Generate unique IDs using timestamp and random string to avoid collisions\n    // This ensures uniqueness even when multiple instances are created rapidly\n    const uniqueId = `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;\n    this.triggerId = `lib-input-select-${uniqueId}`;\n    this.panelId = `${this.triggerId}-panel`;\n    this.optionIdPrefix = `${this.triggerId}-option`;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['options'] || changes['optionLabel'] || changes['optionValue']) {\n      this.processOptions();\n    }\n  }\n\n  private processOptions(): void {\n    // Filter out null or undefined options to prevent processing errors\n    this.processedOptions = this.options\n      .filter((option) => option != null)\n      .map((option) => ({\n        original: option,\n        value: this.getOptionValue(option),\n        label: this.getOptionLabel(option),\n      }));\n    this.updateSelectedOptionLabel();\n    this.syncActiveOptionIndex();\n  }\n\n  private getOptionValue(option: unknown): string {\n    if (this.optionValue && typeof option === 'object' && option !== null) {\n      const value = (option as Record<string, unknown>)[this.optionValue];\n      return value !== undefined && value !== null ? String(value) : '';\n    }\n    if (option === undefined || option === null) {\n      return '';\n    }\n    return String(option);\n  }\n\n  private getOptionLabel(option: unknown): string {\n    if (this.optionLabel && typeof option === 'object' && option !== null) {\n      const labelValue = (option as Record<string, unknown>)[this.optionLabel];\n      return labelValue !== undefined && labelValue !== null ? String(labelValue) : '';\n    }\n    return String(option);\n  }\n\n  writeValue(value: string | null | undefined): void {\n    if (this.disabled || this.readonly) {\n      this.control.disable();\n    }\n\n    const normalizedValue = value ?? '';\n    this.value = normalizedValue;\n    this.control.setValue(normalizedValue, { emitEvent: false });\n    this.updateSelectedOptionLabel();\n    this.syncActiveOptionIndex();\n  }\n\n  registerOnChange(fn: (value: string) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    if (isDisabled) {\n      this.control.disable();\n    } else {\n      this.control.enable();\n    }\n  }\n\n  public onBlurField(): void {\n    this.focused = false;\n    this.onTouched();\n  }\n\n  public onFocusField(): void {\n    this.focused = true;\n  }\n\n  public toggleDropdown(): void {\n    if (this.disabled || this.readonly) {\n      return;\n    }\n\n    if (this.dropdownOpen) {\n      this.closeDropdown();\n    } else {\n      this.openDropdown();\n    }\n  }\n\n  /**\n   * Handles keyboard navigation for the select dropdown.\n   * Supports ArrowDown, ArrowUp, Enter, Space, and Escape keys.\n   * @param event - The keyboard event to handle\n   */\n  public handleKeydown(event: KeyboardEvent): void {\n    if (this.disabled || this.readonly) {\n      return;\n    }\n\n    switch (event.key) {\n      case 'ArrowDown': {\n        event.preventDefault();\n        this.openDropdown();\n        this.moveActiveOption(1);\n        break;\n      }\n      case 'ArrowUp': {\n        event.preventDefault();\n        this.openDropdown();\n        this.moveActiveOption(-1);\n        break;\n      }\n      case 'Enter':\n      case ' ': {\n        event.preventDefault();\n        if (this.dropdownOpen) {\n          this.selectActiveOption();\n        } else {\n          this.openDropdown();\n        }\n        break;\n      }\n      case 'Escape': {\n        if (this.dropdownOpen) {\n          event.preventDefault();\n          this.closeDropdown();\n        }\n        break;\n      }\n      default:\n        break;\n    }\n  }\n\n  /**\n   * Selects an option from the dropdown and updates the component value.\n   * @param option - The processed option to select\n   */\n  public selectOption(option: ProcessedOption): void {\n    if (this.disabled || this.readonly) {\n      return;\n    }\n    const value = option.value;\n    this.value = value;\n    this.control.setValue(value, { emitEvent: false });\n    this.onChange(value);\n    this.valueChange.emit(value);\n    this.selectedOptionLabel = option.label;\n    this.activeOptionIndex = this.processedOptions.findIndex((processedOption) => processedOption.value === value);\n    this.closeDropdown();\n  }\n\n  public onTriggerBlur(event: FocusEvent): void {\n    const relatedTarget = event.relatedTarget as HTMLElement | null;\n    if (relatedTarget && this.hostRef.nativeElement.contains(relatedTarget)) {\n      return;\n    }\n    this.closeDropdown(true);\n  }\n\n  @HostListener('document:click', ['$event'])\n  public handleDocumentClick(event: MouseEvent): void {\n    if (!this.dropdownOpen) {\n      return;\n    }\n\n    const target = event.target as Node | null;\n    if (target && this.hostRef.nativeElement.contains(target)) {\n      return;\n    }\n\n    this.closeDropdown(true);\n  }\n\n  private openDropdown(): void {\n    if (this.dropdownOpen || this.disabled || this.readonly) {\n      return;\n    }\n    this.dropdownOpen = true;\n    this.onFocusField();\n    this.syncActiveOptionIndex();\n  }\n\n  private closeDropdown(shouldBlur: boolean = false): void {\n    if (!this.dropdownOpen) {\n      if (shouldBlur) {\n        this.onBlurField();\n      }\n      return;\n    }\n    this.dropdownOpen = false;\n    if (shouldBlur) {\n      this.onBlurField();\n    }\n  }\n\n  private moveActiveOption(step: number): void {\n    if (!this.processedOptions.length) {\n      this.activeOptionIndex = -1;\n      return;\n    }\n\n    if (this.activeOptionIndex === -1) {\n      this.activeOptionIndex = this.getSelectedOptionIndex();\n    }\n\n    const optionCount = this.processedOptions.length;\n    this.activeOptionIndex = (this.activeOptionIndex + step + optionCount) % optionCount;\n  }\n\n  private selectActiveOption(): void {\n    if (this.activeOptionIndex < 0 || this.activeOptionIndex >= this.processedOptions.length) {\n      return;\n    }\n    const option = this.processedOptions[this.activeOptionIndex];\n    this.selectOption(option);\n  }\n\n  private updateSelectedOptionLabel(): void {\n    if (!this.value) {\n      this.selectedOptionLabel = '';\n      return;\n    }\n    const matchedOption = this.processedOptions.find((option) => option.value === this.value);\n    this.selectedOptionLabel = matchedOption ? matchedOption.label : '';\n  }\n\n  private syncActiveOptionIndex(): void {\n    const selectedIndex = this.getSelectedOptionIndex();\n    if (selectedIndex === -1 && this.processedOptions.length > 0) {\n      this.activeOptionIndex = 0;\n      return;\n    }\n    this.activeOptionIndex = selectedIndex;\n  }\n\n  private getSelectedOptionIndex(): number {\n    if (!this.value) {\n      return -1;\n    }\n    return this.processedOptions.findIndex((option) => option.value === this.value);\n  }\n\n  public getOptionDomId(index: number): string | null {\n    if (index < 0) {\n      return null;\n    }\n    return `${this.optionIdPrefix}-${index}`;\n  }\n}\n","<div class=\"content-wrapper lib-input-select-field\" [ngClass]=\"{ isFocused: focused, isDisabled: disabled }\" [class.has-value]=\"control.value\">\n  <span class=\"custom-float-label\">\n    <input type=\"hidden\" [formControl]=\"control\" />\n\n    <div class=\"custom-dropdown\" [class.is-open]=\"dropdownOpen\" [class.is-disabled]=\"disabled || readonly\">\n      <div\n        class=\"custom-dropdown__trigger\"\n        [attr.id]=\"triggerId\"\n        role=\"combobox\"\n        tabindex=\"0\"\n        [attr.aria-haspopup]=\"'listbox'\"\n        [attr.aria-controls]=\"panelId\"\n        [attr.aria-expanded]=\"dropdownOpen\"\n        [attr.aria-disabled]=\"disabled || readonly\"\n        [attr.aria-activedescendant]=\"activeOptionIndex >= 0 ? getOptionDomId(activeOptionIndex) : null\"\n        (click)=\"toggleDropdown()\"\n        (keydown)=\"handleKeydown($event)\"\n        (focus)=\"onFocusField()\"\n        (blur)=\"onTriggerBlur($event)\"\n      >\n        <span class=\"custom-dropdown__value\" *ngIf=\"selectedOptionLabel; else placeholderTemplate\">\n          {{ selectedOptionLabel }}\n        </span>\n        <ng-template #placeholderTemplate>\n          <span class=\"custom-dropdown__placeholder\">{{ placeholder }}</span>\n        </ng-template>\n        <span class=\"custom-dropdown__icon\" aria-hidden=\"true\"></span>\n      </div>\n\n      @if (dropdownOpen) {\n        <div class=\"custom-dropdown__panel\" [attr.id]=\"panelId\" role=\"listbox\">\n          @for (processedOption of processedOptions; track processedOption.value; let optionIndex = $index) {\n            <div\n              role=\"option\"\n              class=\"custom-dropdown__option\"\n              [attr.id]=\"getOptionDomId(optionIndex)\"\n              [class.is-active]=\"optionIndex === activeOptionIndex\"\n              [class.is-selected]=\"control.value === processedOption.value\"\n              [attr.aria-selected]=\"control.value === processedOption.value\"\n              (mousedown)=\"$event.preventDefault()\"\n              (click)=\"selectOption(processedOption)\"\n            >\n              {{ processedOption.label }}\n            </div>\n          }\n        </div>\n      }\n    </div>\n\n    @if (label) {\n      <label [attr.for]=\"triggerId\">{{ label }}</label>\n    }\n  </span>\n  <div class=\"error-outline\"></div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SelectModule } from 'primeng/select';\n\nimport { InputFieldSelectComponent } from './input-field-select.component';\n\n@NgModule({\n  declarations: [InputFieldSelectComponent],\n  imports: [CommonModule, ReactiveFormsModule, SelectModule, TranslateModule, TranslateModule],\n  exports: [InputFieldSelectComponent],\n})\nexport class InputFieldSelectModule {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IIonRangeChangeDetail } from './i-ion-range-change-detail.interface';\n\n@Component({\n  selector: 'lib-range-selector',\n  templateUrl: './range-selector.component.html',\n  styleUrls: ['./range-selector.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => RangeSelectorComponent),\n      multi: true,\n    },\n  ],\n  standalone: false,\n})\nexport class RangeSelectorComponent implements ControlValueAccessor {\n  @Input() minValue: number = 0;\n  @Input() maxValue: number = 100;\n  @Input() stepValue: number = 10;\n  @Input() min: number = 0;\n  @Input() max: number = 100;\n  @Input() step: number = 10;\n  @Input() value: number = 0;\n  @Input() dualKnobs: boolean = false;\n  @Input() pinValue: boolean = true;\n  @Input() reverseBarColor: boolean = false;\n  @Input() enablePinFormatter: boolean = false;\n  public selectedRange: { lower: number; upper: number } | number = 0;\n\n  private onChange: (value: { lower: number; upper: number } | number) => void = () => {};\n  private onTouched: () => void = () => {};\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  writeValue(value: { lower: number; upper: number } | number): void {\n    this.selectedRange = value;\n    this.cdr.detectChanges();\n  }\n\n  registerOnChange(fn: (value: { lower: number; upper: number } | number) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    // Implement this method if you want to handle disabling the component\n  }\n\n  rangeChanged(event: CustomEvent<IIonRangeChangeDetail>): void {\n    this.onChange(event.detail.value);\n  }\n\n  public pinFormatterFn(value: number): string {\n    return this.enablePinFormatter ? `${value}+` : `${value}`;\n  }\n}\n","<ion-range\n  [min]=\"min ?? minValue\"\n  [max]=\"max ?? maxValue\"\n  [step]=\"step ?? stepValue\"\n  [dualKnobs]=\"dualKnobs\"\n  [pin]=\"pinValue\"\n  [value]=\"selectedRange\"\n  [pinFormatter]=\"pinFormatterFn.bind(this)\"\n  (ionChange)=\"rangeChanged($event)\"\n  [ngClass]=\"{ 'reverse-bar-color': reverseBarColor }\"\n></ion-range>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\nimport { RangeSelectorComponent } from './range-selector.component';\n\n@NgModule({\n  declarations: [RangeSelectorComponent],\n  imports: [CommonModule, IonicModule, FormsModule, ReactiveFormsModule],\n  exports: [RangeSelectorComponent],\n})\nexport class RangeSelectorModule {}\n","export enum FormFieldType {\r\n  date = 'date',\r\n  text = 'text',\r\n  textarea = 'textarea',\r\n  typeahead = 'typeahead',\r\n  multiselect = 'multiselect',\r\n  select = 'select',\r\n  checkbox = 'checkbox',\r\n  toggle = 'toggle',\r\n  radio = 'radio',\r\n  textlist = 'textlist',\r\n  number = 'number',\r\n  message = 'message',\r\n  time = 'time',\r\n  multifield = 'multifield',\r\n  action = 'action',\r\n  currency = 'currency',\r\n  banner = 'banner',\r\n  percentage = 'percentage',\r\n  multiselectdropdown = 'multiselectdropdown',\r\n  hyperlink = 'hyperlink',\r\n  injectable = 'injectable',\r\n  datetime = 'datetime',\r\n  rating = 'rating',\r\n  incrementer = 'incrementer',\r\n  range = 'range',\r\n  password = 'password',\r\n  tel = 'tel',\r\n  cardNumber = 'cardNumber',\r\n  cardExpiry = 'cardExpiry',\r\n  selectEnhanced = 'selectEnhanced',\r\n  selectable = 'selectable',\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonOperations } from '../../../operations/operations';\n\n@Component({\n  selector: 'lib-radio-button',\n  templateUrl: './radio-button.component.html',\n  styleUrls: ['./radio-button.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class LibRadioButtonComponent {\n  public readonly UNIQUE_RADIO_COMPONENT_KEY = CommonOperations.randomString(20);\n\n  @Input() radioButtonState: boolean = true;\n}\n","<ng-container *ngTemplateOutlet=\"radioButtonState ? radioStateActive : radioStateInactive; context: { key: UNIQUE_RADIO_COMPONENT_KEY }\"></ng-container>\n\n<ng-template #radioStateActive let-key=\"key\">\n  <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g [attr.filter]=\"'url(#filter1_ii_152_1615' + key + ')'\">\n      <rect width=\"24\" height=\"24\" rx=\"12\" transform=\"matrix(1 0 0 -1 0.92627 24.6172)\" [attr.fill]=\"'url(#paint1_linear_152_1615' + key + ')'\" />\n      <g [attr.filter]=\"'url(#filter2_ii_152_1615' + key + ')'\"></g>\n      <g [attr.filter]=\"'url(#filter3_ii_152_1615' + key + ')'\"></g>\n      <rect x=\"1.96704\" y=\"1.72266\" width=\"21.75\" height=\"21.75\" rx=\"10.875\" stroke=\"#FE3C72\" stroke-width=\"2.25\" />\n    </g>\n    <g [attr.filter]=\"'url(#filter4_f_152_1615' + key + ')'\">\n      <circle cx=\"12.842\" cy=\"12.5977\" class=\"form-field__radio-states__active__circle\" [attr.fill]=\"'url(#paint2_linear_152_1615' + key + ')'\" />\n    </g>\n    <circle cx=\"12.842\" cy=\"12.5977\" class=\"form-field__radio-states__active__circle\" [attr.fill]=\"'url(#paint3_linear_152_1615' + key + ')'\" />\n\n    <defs>\n      <filter [attr.id]=\"'filter1_ii_152_1615' + key\" x=\"-0.304881\" y=\"-0.549266\" width=\"202.98\" height=\"37.7826\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n        <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n        <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n        <feOffset dx=\"-1.14692\" dy=\"-1.14692\" />\n        <feGaussianBlur stdDeviation=\"2.29384\" />\n        <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" />\n        <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.795 0 0 0 0 0.78 0 0 0 0 0.82 0 0 0 0.5 0\" />\n        <feBlend mode=\"normal\" in2=\"shape\" result=\"effect1_innerShadow_152_1615\" />\n        <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n        <feMorphology radius=\"1.43365\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_innerShadow_152_1615\" />\n        <feOffset dx=\"9.74884\" dy=\"12.6161\" />\n        <feGaussianBlur stdDeviation=\"5.73461\" />\n        <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" />\n        <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.06825 0 0 0 0 0.063 0 0 0 0 0.077 0 0 0 0.7 0\" />\n        <feBlend mode=\"normal\" in2=\"effect1_innerShadow_152_1615\" result=\"effect2_innerShadow_152_1615\" />\n      </filter>\n      <filter [attr.id]=\"'filter2_ii_152_1615' + key\" x=\"-4.65796\" y=\"-4.90234\" width=\"41.5\" height=\"40.5\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n        <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n        <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n        <feMorphology radius=\"4.4\" operator=\"dilate\" in=\"SourceAlpha\" result=\"effect1_innerShadow_152_1615\" />\n        <feOffset dx=\"-5.5\" dy=\"-5.5\" />\n        <feGaussianBlur stdDeviation=\"8.8\" />\n        <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" />\n        <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.795 0 0 0 0 0.78 0 0 0 0 0.82 0 0 0 0.25 0\" />\n        <feBlend mode=\"normal\" in2=\"shape\" result=\"effect1_innerShadow_152_1615\" />\n        <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n        <feMorphology radius=\"2.75\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_innerShadow_152_1615\" />\n        <feOffset dx=\"12\" dy=\"11\" />\n        <feGaussianBlur stdDeviation=\"14.85\" />\n        <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" />\n        <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.06825 0 0 0 0 0.063 0 0 0 0 0.077 0 0 0 0.65 0\" />\n        <feBlend mode=\"normal\" in2=\"effect1_innerShadow_152_1615\" result=\"effect2_innerShadow_152_1615\" />\n      </filter>\n      <filter [attr.id]=\"'filter3_ii_152_1615' + key\" x=\"-4.65796\" y=\"-4.90234\" width=\"41.5\" height=\"40.5\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n        <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n        <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n        <feMorphology radius=\"4.4\" operator=\"dilate\" in=\"SourceAlpha\" result=\"effect1_innerShadow_152_1615\" />\n        <feOffset dx=\"-5.5\" dy=\"-5.5\" />\n        <feGaussianBlur stdDeviation=\"8.8\" />\n        <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" />\n        <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.795 0 0 0 0 0.78 0 0 0 0 0.82 0 0 0 0.25 0\" />\n        <feBlend mode=\"normal\" in2=\"shape\" result=\"effect1_innerShadow_152_1615\" />\n        <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n        <feMorphology radius=\"2.75\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_innerShadow_152_1615\" />\n        <feOffset dx=\"12\" dy=\"11\" />\n        <feGaussianBlur stdDeviation=\"14.85\" />\n        <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" />\n        <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.06825 0 0 0 0 0.063 0 0 0 0 0.077 0 0 0 0.65 0\" />\n        <feBlend mode=\"normal\" in2=\"effect1_innerShadow_152_1615\" result=\"effect2_innerShadow_152_1615\" />\n      </filter>\n      <filter [attr.id]=\"'filter4_f_152_1615' + key\" x=\"3.84204\" y=\"3.59766\" width=\"18\" height=\"18\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n        <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n        <feGaussianBlur stdDeviation=\"1.875\" result=\"effect1_foregroundBlur_152_1615\" />\n      </filter>\n      <linearGradient [attr.id]=\"'paint1_linear_152_1615' + key\" x1=\"21.5692\" y1=\"1.109\" x2=\"16.326\" y2=\"27.6389\" gradientUnits=\"userSpaceOnUse\">\n        <stop offset=\"0.581821\" stop-color=\"#27242C\" />\n        <stop offset=\"1\" stop-color=\"#0C0B0E\" />\n      </linearGradient>\n      <linearGradient [attr.id]=\"'paint2_linear_152_1615' + key\" x1=\"7.78295\" y1=\"6.72478\" x2=\"18.8883\" y2=\"7.58654\" gradientUnits=\"userSpaceOnUse\">\n        <stop stop-color=\"#FE3C72\" />\n        <stop offset=\"1\" stop-color=\"#E15561\" />\n      </linearGradient>\n      <linearGradient [attr.id]=\"'paint3_linear_152_1615' + key\" x1=\"7.78295\" y1=\"6.72478\" x2=\"18.8883\" y2=\"7.58654\" gradientUnits=\"userSpaceOnUse\">\n        <stop stop-color=\"#FE3C72\" />\n        <stop offset=\"1\" stop-color=\"#E15561\" />\n      </linearGradient>\n    </defs>\n  </svg>\n</ng-template>\n\n<ng-template #radioStateInactive let-key=\"key\">\n  <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g [attr.filter]=\"'url(#filter1_ii_152_2082' + key + ')'\">\n      <rect width=\"24\" height=\"24\" rx=\"12\" transform=\"matrix(1 0 0 -1 0.42627 24.6172)\" [attr.fill]=\"'url(#paint1_linear_152_2082' + key + ')'\" />\n      <g [attr.filter]=\"'url(#filter2_ii_152_2082' + key + ')'\">\n        <rect x=\"0.342041\" y=\"0.597656\" width=\"24\" height=\"24\" rx=\"12\" fill=\"#27242C\" />\n      </g>\n      <rect x=\"0.904541\" y=\"1.16016\" width=\"22.875\" height=\"22.875\" rx=\"11.4375\" stroke=\"white\" stroke-opacity=\"0.25\" stroke-width=\"1.125\" />\n    </g>\n    <defs>\n      <filter [attr.id]=\"'filter1_ii_152_2082' + key\" x=\"-0.804881\" y=\"-0.549266\" width=\"202.98\" height=\"37.7826\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n        <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n        <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n        <feOffset dx=\"-1.14692\" dy=\"-1.14692\" />\n        <feGaussianBlur stdDeviation=\"2.29384\" />\n        <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" />\n        <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.795 0 0 0 0 0.78 0 0 0 0 0.82 0 0 0 0.5 0\" />\n        <feBlend mode=\"normal\" in2=\"shape\" result=\"effect1_innerShadow_152_2082\" />\n        <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n        <feMorphology radius=\"1.43365\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_innerShadow_152_2082\" />\n        <feOffset dx=\"9.74884\" dy=\"12.6161\" />\n        <feGaussianBlur stdDeviation=\"5.73461\" />\n        <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" />\n        <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.06825 0 0 0 0 0.063 0 0 0 0 0.077 0 0 0 0.7 0\" />\n        <feBlend mode=\"normal\" in2=\"effect1_innerShadow_152_2082\" result=\"effect2_innerShadow_152_2082\" />\n      </filter>\n      <filter [attr.id]=\"'filter2_ii_152_2082' + key\" x=\"-5.15796\" y=\"-4.90234\" width=\"41.5\" height=\"40.5\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n        <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n        <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n        <feMorphology radius=\"4.4\" operator=\"dilate\" in=\"SourceAlpha\" result=\"effect1_innerShadow_152_2082\" />\n        <feOffset dx=\"-5.5\" dy=\"-5.5\" />\n        <feGaussianBlur stdDeviation=\"8.8\" />\n        <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" />\n        <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.795 0 0 0 0 0.78 0 0 0 0 0.82 0 0 0 0.25 0\" />\n        <feBlend mode=\"normal\" in2=\"shape\" result=\"effect1_innerShadow_152_2082\" />\n        <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n        <feMorphology radius=\"2.75\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_innerShadow_152_2082\" />\n        <feOffset dx=\"12\" dy=\"11\" />\n        <feGaussianBlur stdDeviation=\"14.85\" />\n        <feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" />\n        <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.06825 0 0 0 0 0.063 0 0 0 0 0.077 0 0 0 0.65 0\" />\n        <feBlend mode=\"normal\" in2=\"effect1_innerShadow_152_2082\" result=\"effect2_innerShadow_152_2082\" />\n      </filter>\n      <linearGradient [attr.id]=\"'paint1_linear_152_2082' + key\" x1=\"21.5692\" y1=\"1.109\" x2=\"16.326\" y2=\"27.6389\" gradientUnits=\"userSpaceOnUse\">\n        <stop offset=\"0.581821\" stop-color=\"#27242C\" />\n        <stop offset=\"1\" stop-color=\"#0C0B0E\" />\n      </linearGradient>\n    </defs>\n  </svg>\n</ng-template>\n","import { DecimalPipe } from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  Optional,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { FormControl, UntypedFormControl } from '@angular/forms';\r\nimport { MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { SafeHtml } from '@angular/platform-browser';\r\nimport { isValid, parse, parseISO } from 'date-fns';\r\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { FormFieldType } from '../../enums/form-field-type';\r\nimport { TooltipDirectionPreference } from '../../enums/tooltip-direction-preference';\r\nimport { SelectOption } from '../../model/select-option';\r\nimport { CommonOperations } from '../../operations/operations';\r\n\r\n@Component({\r\n  selector: 'lib-form-field',\r\n  templateUrl: './form-field.component.html',\r\n  styleUrls: ['./form-field.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class FormFieldComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\r\n  @ViewChild('matSelect') matSelect!: MatSelect;\r\n  @ViewChild('textInput') textInput!: ElementRef;\r\n  public readonly UNIQUE_RADIOGROUP_FORM_KEY = CommonOperations.randomString(10);\r\n  public focused = false;\r\n  public passwordVisible: boolean = false;\r\n\r\n  public FormFieldType = FormFieldType;\r\n  private _dateFormat = 'MM/dd/yyyy';\r\n  public dateInputPlaceholder = '';\r\n  private componentDestroyed$: Subject<void> = new Subject();\r\n  public DirectionPreference = TooltipDirectionPreference;\r\n  public searchOptions$!: ReplaySubject<SelectOption<string | number | boolean>[]>;\r\n  public showEditor = false;\r\n  public selectOptions: SelectOption<string | number | boolean>[] = [];\r\n\r\n  public editorContentStyle = `\r\n    .mce-content-readonly {\r\n      background-color: #EFF2F3;\r\n    }\r\n  `;\r\n\r\n  // Fix TS2564 - Add definite assignment assertion or default values\r\n  @Input() fieldName!: string;\r\n  @Input() label: string = '';\r\n  @Input() placeholder: string = '';\r\n  @Input() message: string = '';\r\n  @Input() useTooltips = false;\r\n  @Input() descriptionText: string = '';\r\n  @Input() formFieldControl: UntypedFormControl = new FormControl();\r\n  @Input() submitted = false;\r\n  @Input() required = false;\r\n  @Input() type!: FormFieldType;\r\n  @Input() plusIconUrl: string = '';\r\n  @Input() minusIconUrl: string = '';\r\n  @Input() maxLength = 524288;\r\n  @Input() max: number = 524288;\r\n  @Input() min: number = 0;\r\n  @Input() pinValue: boolean = true;\r\n  @Input() dualKnobs: boolean = false;\r\n  @Input() reverseBarColor: boolean = false;\r\n  @Input() defaultValue: string | number | boolean = '';\r\n  @Input() noMargin: boolean = false;\r\n  public menuItemContent: any;\r\n  public item: any;\r\n\r\n  @Input()\r\n  set options(selectOptions: SelectOption<string | number | boolean>[] | undefined) {\r\n    this.selectOptions = selectOptions?.filter((option) => !option.isHidden) || [];\r\n  }\r\n\r\n  @Input() iconHtml: SafeHtml | undefined;\r\n  @Input() invalidPatternMessage: string = '';\r\n  @Input()\r\n  set dateFormat(format: string) {\r\n    this._dateFormat = format || 'MM/dd/yyyy';\r\n  }\r\n\r\n  @ViewChild('dateInput') dateInput!: ElementRef;\r\n  @Input() currencySymbol = '$';\r\n  @Input() hideCents = false;\r\n  @Input() isEditable = true;\r\n  @Input() rowEditConfirmationObsv: Observable<{ fieldName: string; fieldValue: any }> | undefined;\r\n  @Input() errorInlineMode = false;\r\n  @Input() showLabelInRequiredErrorMessage = true;\r\n  @Input() decimalPosition: number | undefined;\r\n  @Input() hyperlinkTarget: '_blank' | '_self' | '_parent' | '_top' = '_blank';\r\n  @Input() readOnly = false;\r\n  @Input() focus = false;\r\n  @Input() showRequiredIndicator = false;\r\n  @Input() maxDate: Date | undefined;\r\n  @Input() minDate: Date | undefined;\r\n  @Input() radioTranslateLabels: boolean = false;\r\n  @Input() radioDeselectable: boolean = false;\r\n  @Input() radioRippleEffect: boolean = false;\r\n\r\n  @Output() rowEdit: EventEmitter<{ fieldName: string; fieldValue: any }> = new EventEmitter();\r\n  @Output() focusOut: EventEmitter<void> = new EventEmitter();\r\n  @Output() valueChange = new EventEmitter<string | number | boolean>();\r\n\r\n  constructor(\r\n    @Optional() @Inject(MAT_DATE_FORMATS) private dateFormats: any,\r\n    private decimalPipe: DecimalPipe,\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n  ) {}\r\n  ngOnInit(): void {\r\n    if (this.defaultValue) {\r\n      this.formFieldControl.setValue(this.defaultValue, { emitEvent: false });\r\n    }\r\n\r\n    this.formFieldControl.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((value) => {\r\n      this.valueChange.emit(value);\r\n\r\n      switch (this.type) {\r\n        case FormFieldType.incrementer:\r\n          if (!value) {\r\n            this.formFieldControl.setValue(0, { emitEvent: false });\r\n          }\r\n          break;\r\n        case FormFieldType.checkbox:\r\n          if (this.selectOptions?.length) {\r\n            this.selectOptions.forEach((option) => {\r\n              if (value?.includes(option.value)) {\r\n                option.selected = true;\r\n              } else {\r\n                option.selected = false;\r\n              }\r\n            });\r\n            this.changeDetectorRef.detectChanges();\r\n          }\r\n          break;\r\n        case FormFieldType.date:\r\n          if (!(value instanceof Date)) {\r\n            this.processDate(value);\r\n          }\r\n          break;\r\n        case FormFieldType.datetime:\r\n          if (!(value instanceof Date)) {\r\n            this.processDate(value);\r\n          }\r\n          break;\r\n        case FormFieldType.radio:\r\n          if (this.radioDeselectable) {\r\n            // Since deselecting a radio option is not the standard behaviour.\r\n            // So the FormFieldControl is set to null to prevent any issues caused by deselecting a radio option\r\n            this.formFieldControl.setValue(null, { emitEvent: false });\r\n          }\r\n          break;\r\n      }\r\n    });\r\n\r\n    this.rowEditConfirmationObsv?.pipe(takeUntil(this.componentDestroyed$)).subscribe((response) => {\r\n      if (response?.fieldName === this.fieldName && response.fieldValue < 0) {\r\n        this.matSelect.close();\r\n        (document.querySelector(':focus') as HTMLElement)?.blur();\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['type']?.currentValue !== changes['type']?.previousValue) {\r\n      this.handleTypeUpdate();\r\n    }\r\n  }\r\n\r\n  public ngAfterViewInit() {\r\n    if (this.formFieldControl && this.focus) {\r\n      this.textInput.nativeElement.focus();\r\n    }\r\n  }\r\n\r\n  public searchMultiSelect(query: string) {\r\n    if (this.selectOptions) {\r\n      this.searchOptions$.next(query ? this.selectOptions.filter((option) => option.label.toLowerCase().indexOf(query.toLowerCase()) > -1) : this.selectOptions.slice());\r\n    }\r\n  }\r\n\r\n  private handleTypeUpdate(): void {\r\n    if (this.formFieldControl && (this.type === FormFieldType.date || this.type === FormFieldType.datetime)) {\r\n      if (this.dateFormats?.display) this.dateFormats.display.dateInput = this._dateFormat;\r\n      this.dateInputPlaceholder = this.placeholder || this._dateFormat;\r\n    } else if (this.formFieldControl && (this.type === FormFieldType.currency || this.type === FormFieldType.percentage || this.type === FormFieldType.number)) {\r\n      this.processNumber(this.formFieldControl.value);\r\n    } else if (this.formFieldControl && this.type === FormFieldType.multiselectdropdown) {\r\n      this.searchOptions$ = new ReplaySubject<SelectOption<string | number | boolean>[]>();\r\n      this.searchOptions$.next(this.selectOptions.slice());\r\n    } else if (this.formFieldControl && this.type === FormFieldType.incrementer) {\r\n      const val = this.formFieldControl.value;\r\n      if (typeof val === 'string' && !isNaN(Number(val))) {\r\n        this.formFieldControl.setValue(Number(val));\r\n      } else if (typeof val === 'number') {\r\n        this.formFieldControl.setValue(val);\r\n      } else {\r\n        this.formFieldControl.setValue(0);\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.componentDestroyed$.next();\r\n    this.componentDestroyed$.complete();\r\n  }\r\n\r\n  // ----- Methods called by template -----\r\n\r\n  /**\r\n   * A method to clear the value of the control name passed to it\r\n   *\r\n   * @param controlName - Name for control of cleared input\r\n   */\r\n  public clear(): void {\r\n    this.formFieldControl.setValue('');\r\n  }\r\n\r\n  /**\r\n   * @param $event - Object which contains date selected using mat-datepicker or entered manually by user\r\n   *\r\n   * Transform user entered date using provided dateFormat\r\n   */\r\n  /**\r\n   * @param $event - Object which contains date selected using mat-datepicker or entered manually by user\r\n   *\r\n   * Transform user entered date using provided dateFormat\r\n   */\r\n  public processDate(value: null | Date | FocusEvent | string): void {\r\n    // NOTE: is it somewhat confusing to be calling this from ngOnInit as well\r\n    // as from input focusout event.\r\n    this.focused = false;\r\n\r\n    if (value == null) {\r\n      return;\r\n    }\r\n    if (value instanceof FocusEvent) {\r\n      const el = value.target as HTMLInputElement;\r\n      value = el.value;\r\n    }\r\n\r\n    let parsedDate: Date | undefined;\r\n\r\n    if (value instanceof Date) {\r\n      parsedDate = value;\r\n    } else if (typeof value === 'string') {\r\n      const iso = parseISO(value);\r\n      if (isValid(iso)) {\r\n        parsedDate = iso;\r\n      } else {\r\n        // date-fns parse requires reference date\r\n        const parsed = parse(value, this._dateFormat, new Date());\r\n        if (isValid(parsed)) {\r\n          parsedDate = parsed;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (parsedDate && isValid(parsedDate)) {\r\n      this.formFieldControl.setValue(parsedDate);\r\n    } else {\r\n      this.formFieldControl.setValue(null);\r\n      if (this.required) {\r\n        this.formFieldControl.setErrors({ required: true }, { emitEvent: false });\r\n      }\r\n    }\r\n  }\r\n\r\n  public processNumber(value: number | string): void {\r\n    let cleanedValue: string;\r\n    if (typeof value === 'string' && value?.length > 0) {\r\n      cleanedValue = value.replace(/[^0-9]+?$/, '').replace(/(?:[.](?=.*[.])|[^\\d.-])+/g, '');\r\n    } else {\r\n      cleanedValue = value?.toString() || '';\r\n    }\r\n\r\n    if ((cleanedValue?.length > 0 && cleanedValue !== '.' && cleanedValue !== '-') || !isNaN(parseFloat(cleanedValue)) || cleanedValue === '') {\r\n      this.formFieldControl.setErrors(null, { emitEvent: false });\r\n      let transformedValue: string | null = '';\r\n\r\n      if (this.type === FormFieldType.currency && this.hideCents) {\r\n        transformedValue = this.decimalPipe.transform(cleanedValue, '1.0-0', 'en-US');\r\n      } else if (this.decimalPosition !== null && this.decimalPosition !== undefined) {\r\n        if (this.type === FormFieldType.currency) {\r\n          transformedValue = this.decimalPipe.transform(cleanedValue, `1.${this.decimalPosition}-${this.decimalPosition}`, 'en-US');\r\n        } else {\r\n          transformedValue = this.decimalPipe.transform(cleanedValue, `1.0-${this.decimalPosition}`, 'en-US');\r\n        }\r\n      } else if (this.type === FormFieldType.currency) {\r\n        transformedValue = this.decimalPipe.transform(cleanedValue, '1.2-2', 'en-US');\r\n      } else if (this.type === FormFieldType.percentage) {\r\n        transformedValue = this.decimalPipe.transform(cleanedValue, '1.0-2', 'en-US');\r\n      } else {\r\n        transformedValue = this.decimalPipe.transform(cleanedValue, '1.0-100', 'en-US');\r\n      }\r\n\r\n      const finalValue = transformedValue ? transformedValue.replace(/,/g, '') : cleanedValue;\r\n      this.formFieldControl.setValue(finalValue, { emitEvent: false });\r\n    } else {\r\n      if (this.required) {\r\n        this.formFieldControl.setErrors({ required: true }, { emitEvent: false });\r\n      }\r\n    }\r\n  }\r\n  public handleFocus(): void {\r\n    if (this.isEditable) {\r\n      this.focused = true;\r\n      setTimeout(() => {\r\n        if (this.type === FormFieldType.hyperlink) {\r\n          this.textInput.nativeElement.focus();\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  public handleFocusOut(event: FocusEvent): void {\r\n    this.focused = false;\r\n    if (this.type === FormFieldType.number || this.type === FormFieldType.currency || this.type === FormFieldType.percentage) {\r\n      if (event) {\r\n        const el = event.target as HTMLInputElement;\r\n        this.processNumber(el.value);\r\n      }\r\n    }\r\n    this.focusOut.emit();\r\n  }\r\n\r\n  public handleFieldClicked(event: any): void {\r\n    if (!this.isEditable && this.rowEdit && this.rowEditConfirmationObsv) {\r\n      this.rowEdit.emit({\r\n        fieldName: this.fieldName,\r\n        fieldValue: this.formFieldControl,\r\n      });\r\n      event.stopPropagation();\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  public handleClick(event: any): void {\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n\r\n    if (this.type === FormFieldType.hyperlink) {\r\n      const value = !this.formFieldControl.value.includes('http') ? `//${this.formFieldControl.value}` : this.formFieldControl.value;\r\n      window.open(value, this.hyperlinkTarget);\r\n    }\r\n  }\r\n\r\n  public handleCheckboxOptionChange(): void {\r\n    this.formFieldControl.setValue(\r\n      this.selectOptions.filter((nextOption) => nextOption.selected).map((nextOption) => nextOption.value),\r\n      { emitEvent: false },\r\n    );\r\n  }\r\n\r\n  public onMultiCheckboxToggle(option: SelectOption<string | number | boolean>, selected: boolean): void {\r\n    option.selected = selected;\r\n    this.handleCheckboxOptionChange();\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  public decrement(): void {\r\n    const val = this.formFieldControl.value - 1;\r\n\r\n    if (val < this.min || this.formFieldControl.disabled) return;\r\n\r\n    this.formFieldControl.setValue(val);\r\n  }\r\n\r\n  public increment(): void {\r\n    const val = this.formFieldControl.value + 1;\r\n\r\n    if (val > this.max || this.formFieldControl.disabled) return;\r\n\r\n    this.formFieldControl.setValue(val);\r\n  }\r\n\r\n  public formFieldRadioOptionClick(radioOption: SelectOption<string | number | boolean>): void {\r\n    this.formFieldControl.setValue(radioOption.value);\r\n    this.item = radioOption;\r\n  }\r\n\r\n  public togglePasswordVisibility(): void {\r\n    this.passwordVisible = !this.passwordVisible;\r\n  }\r\n}\r\n","<!-- OBSERVATION: ion-icon for built-in ionicons must use name=\"...\" not icon=\"...\".\n     The icon attribute expects an SVG path string or is for React's IonIcon component.\n     Using icon=\"remove-outline\" caused the shadow DOM to render empty (no SVG loaded).\n     Fixed by changing to name=\"remove-outline\" and name=\"add-outline\" in the incrementer. -->\n<div class=\"form-field__control\" [class.form-field__control--no-margin]=\"noMargin\">\n  <div\n    *ngIf=\"(label || (useTooltips && descriptionText)) && (type !== 'checkbox' || (type === 'checkbox' && selectOptions?.length)) && type !== 'toggle'\"\n    class=\"form-field__control-container\"\n  >\n    <div *ngIf=\"label && !errorInlineMode\" class=\"form-field__label\">\n      <div class=\"form-field__label-text\" [ngClass]=\"{ 'form-field__label-text-disabled': formFieldControl.disabled }\">\n        <span *ngIf=\"iconHtml\" class=\"form-field__label-icon\" [innerHTML]=\"iconHtml\"> </span>\n        {{ label }}\n      </div>\n      <div\n        *ngIf=\"showRequiredIndicator && !readOnly && (type === 'checkbox' || type === 'radio') && required\"\n        class=\"form-field__label-required\"\n        [ngClass]=\"{ 'form-field__required--submitted': submitted && formFieldControl.errors }\"\n      >\n        *\n      </div>\n    </div>\n    <div *ngIf=\"useTooltips && type !== FormFieldType.message && descriptionText\" class=\"form-field__label-icon-tooltip\">\n      <i class=\"icon icon-gen3-info\" [libTooltip]=\"descriptionText\" [directionPreference]=\"DirectionPreference.Right\" [delayTime]=\"200\"></i>\n    </div>\n  </div>\n  <div class=\"form-field__input-section\">\n    <div\n      *ngIf=\"\n        readOnly &&\n        (type === FormFieldType.text ||\n          type === FormFieldType.number ||\n          type === FormFieldType.currency ||\n          type === FormFieldType.percentage ||\n          type === FormFieldType.date ||\n          type === FormFieldType.datetime)\n      \"\n      class=\"form-field__readonly-section\"\n    >\n      {{ message }}\n    </div>\n    <div class=\"form-field__input-section\">\n      <div\n        *ngIf=\"\n          !readOnly &&\n          (type === FormFieldType.text ||\n            type === FormFieldType.number ||\n            type === FormFieldType.currency ||\n            type === FormFieldType.percentage ||\n            type === FormFieldType.hyperlink ||\n            type === FormFieldType.password)\n        \"\n        [ngClass]=\"{\n          'form-field__input-container-required': required,\n          'form-field__input-container--focus': focused,\n          'form-field__input-container--error': formFieldControl.touched && submitted && formFieldControl.errors,\n          'form-field__input-container--disabled': formFieldControl.disabled,\n        }\"\n        class=\"form-field__input-container\"\n      >\n        <div\n          *ngIf=\"showRequiredIndicator && required\"\n          class=\"form-field__required\"\n          [ngClass]=\"{ 'form-field__required--submitted': submitted && formFieldControl.errors }\"\n          [libTooltip]=\"'Required'\"\n        >\n          <div class=\"form-field__required-indicator\">*</div>\n        </div>\n        <input\n          *ngIf=\"type === FormFieldType.text || (type === FormFieldType.hyperlink && (focused || !formFieldControl.value))\"\n          type=\"text\"\n          class=\"form-field__input\"\n          [formControl]=\"formFieldControl\"\n          [maxlength]=\"maxLength\"\n          (focus)=\"handleFocus()\"\n          (focusout)=\"handleFocusOut($event)\"\n          placeholder=\"{{ placeholder }}\"\n          #textInput\n        />\n        <a *ngIf=\"type === FormFieldType.hyperlink && !focused\" class=\"form-field__input-hyperlink\" (click)=\"handleClick($event)\" [href]=\"formFieldControl.value\" target=\"_blank\">{{\n          formFieldControl.value\n        }}</a>\n        <input\n          *ngIf=\"type === FormFieldType.number\"\n          type=\"number\"\n          (focus)=\"handleFocus()\"\n          (focusout)=\"handleFocusOut($event)\"\n          class=\"form-field__input form-field__input-number\"\n          [formControl]=\"formFieldControl\"\n          placeholder=\"{{ placeholder }}\"\n        />\n        <input\n          *ngIf=\"type === FormFieldType.password\"\n          [type]=\"passwordVisible ? 'text' : 'password'\"\n          (focus)=\"handleFocus()\"\n          (focusout)=\"handleFocusOut($event)\"\n          class=\"form-field__input\"\n          [formControl]=\"formFieldControl\"\n          placeholder=\"{{ placeholder }}\"\n        />\n        <ng-container *ngIf=\"type === FormFieldType.currency\">\n          <span class=\"form-field__input-currency-symbol\" [ngClass]=\"{ 'form-field__input-currency-symbol--disabled': formFieldControl.disabled }\">\n            {{ currencySymbol }}\n          </span>\n          <input\n            type=\"number\"\n            class=\"form-field__input form-field__input-currency\"\n            [formControl]=\"formFieldControl\"\n            (focus)=\"handleFocus()\"\n            (focusout)=\"handleFocusOut($event)\"\n            placeholder=\"{{ placeholder }}\"\n          />\n        </ng-container>\n        <ng-container *ngIf=\"type === FormFieldType.percentage\">\n          <input\n            type=\"number\"\n            class=\"form-field__input form-field__input-percentage\"\n            [formControl]=\"formFieldControl\"\n            (focus)=\"handleFocus()\"\n            (focusout)=\"handleFocusOut($event)\"\n            placeholder=\"{{ placeholder }}\"\n          />\n          <div class=\"form-field__input-percentage-symbol\">%</div>\n        </ng-container>\n        <div\n          *ngIf=\"showRequiredIndicator && required && submitted && formFieldControl.errors && errorInlineMode\"\n          class=\"form-field__required-icon\"\n          [libTooltip]=\"(label ? label : 'Field') + ' is required and must be entered before you click away from this field.'\"\n        >\n          <i class=\"icon-gen3-error\"></i>\n        </div>\n        <i\n          *ngIf=\"type === FormFieldType.password\"\n          (click)=\"togglePasswordVisibility()\"\n          [ngClass]=\"{ 'pi-eye-slash': passwordVisible, 'pi-eye': !passwordVisible }\"\n          class=\"pi password-eye-icon\"\n        ></i>\n        <div class=\"error-outline\"></div>\n      </div>\n      <div\n        *ngIf=\"type === FormFieldType.textarea\"\n        class=\"form-field__textarea-container\"\n        [ngClass]=\"{\n          'form-field__textarea-container--focus': focused,\n          'form-field__textarea-container--error': formFieldControl.touched && submitted && formFieldControl.errors,\n          'form-field__textarea-container-required': required,\n        }\"\n      >\n        <div\n          *ngIf=\"showRequiredIndicator && required\"\n          class=\"form-field__required\"\n          [ngClass]=\"{ 'form-field__required--submitted': submitted && formFieldControl.errors }\"\n          [libTooltip]=\"'Required'\"\n        >\n          <div class=\"form-field__required-indicator\">*</div>\n        </div>\n        <textarea\n          class=\"form-field__textarea\"\n          placeholder=\"{{ placeholder }}\"\n          (focus)=\"handleFocus()\"\n          (focusout)=\"handleFocusOut($event)\"\n          [formControl]=\"formFieldControl\"\n          [maxlength]=\"maxLength\"\n        >\n        </textarea>\n        <div class=\"error-outline\"></div>\n      </div>\n      <div *ngIf=\"type === FormFieldType.incrementer\" class=\"form-field__incrementer-container\">\n        <lib-icon-btn (click)=\"decrement()\" class=\"lib-icon-btn-responsive\" [disabled]=\"formFieldControl.value <= min\">\n          @if (minusIconUrl) {\n            <img class=\"icon\" [src]=\"minusIconUrl || 'assets/icons/incrementer/minus.svg'\" alt=\"remove\" />\n          } @else {\n            <ion-icon class=\"ion-icon\" name=\"remove-outline\" />\n          }\n        </lib-icon-btn>\n        <input type=\"number\" [min]=\"min\" [max]=\"max\" [formControl]=\"formFieldControl\" [readonly]=\"true\" class=\"f-md f-md-responsive\" />\n        <lib-icon-btn class=\"lib-icon-btn-responsive\" (click)=\"increment()\" [disabled]=\"formFieldControl.value >= max\">\n          @if (plusIconUrl) {\n            <img class=\"icon\" [src]=\"plusIconUrl || 'assets/icons/incrementer/minus.svg'\" alt=\"remove\" />\n          } @else {\n            <ion-icon class=\"ion-icon\" name=\"add-outline\" />\n          }\n        </lib-icon-btn>\n      </div>\n      <div *ngIf=\"type === FormFieldType.message\">\n        <div class=\"form-field__message\">{{ message }}</div>\n      </div>\n      <div *ngIf=\"type === FormFieldType.radio\">\n        <ng-template #radioButtonGroup let-key=\"key\">\n          <mat-radio-group [formControl]=\"formFieldControl\" class=\"form-field__radio-input\">\n            <ion-button\n              *ngFor=\"let option of selectOptions\"\n              class=\"form-field__radio-input__ripple-wrapper\"\n              (mouseup)=\"formFieldRadioOptionClick(option)\"\n              [ngStyle]=\"{ '--ripple-color': radioRippleEffect ? 'var(--ripple-color)' : 'transparent' }\"\n            >\n              <div [class.add-on-active]=\"option.addOnTemplateRef\">\n                <mat-radio-button\n                  class=\"form-field__radio-button\"\n                  [ngClass]=\"{ 'form-field__radio-botton--readonly': readOnly }\"\n                  [disableRipple]=\"false\"\n                  [value]=\"option.value\"\n                  [disabled]=\"readOnly || option.disabled\"\n                  [libTooltip]=\"option.label\"\n                  #radioButtonRef\n                >\n                  <div [ngStyle]=\"{ display: radioDeselectable ? 'none' : '' }\" class=\"form-field__radio-states form-field__radio-states__active\" #radioActiveOption>\n                    <lib-radio-button [radioButtonState]=\"true\"></lib-radio-button>\n                  </div>\n                  <div [ngStyle]=\"{ display: radioDeselectable ? 'block' : '' }\" class=\"form-field__radio-states form-field__radio-states__inactive\" #radioInactiveOption>\n                    <lib-radio-button [radioButtonState]=\"false\"></lib-radio-button>\n                  </div>\n                  @if (radioTranslateLabels) {\n                    {{ option.label | translate }}\n                  } @else {\n                    {{ option.label }}\n                  }\n\n                  @if (option.loading) {\n                    <span class=\"form-field__radio-button--loading\">{{ 'FORM_FIELD.RADIO_LOADING' | translate }}</span>\n                  }\n                </mat-radio-button>\n                @if (option?.addOnTemplateRef) {\n                  <ng-container *ngTemplateOutlet=\"option.addOnTemplateRef || menuItemContent; context: { $implicit: { item } }\"></ng-container>\n                }\n              </div>\n            </ion-button>\n          </mat-radio-group>\n        </ng-template>\n        <ng-container *ngTemplateOutlet=\"radioButtonGroup; context: { key: UNIQUE_RADIOGROUP_FORM_KEY }\"></ng-container>\n      </div>\n      <div *ngIf=\"type === FormFieldType.toggle\" class=\"form-field__toggle\">\n        <div class=\"form-field__toggle-label\">\n          {{ label }}\n        </div>\n        <lib-toggle [formControl]=\"formFieldControl\"></lib-toggle>\n      </div>\n      <div *ngIf=\"type === FormFieldType.checkbox && !selectOptions?.length\" class=\"form-field__checkbox\">\n        <lib-dashed-checkbox [formControl]=\"formFieldControl\" [disableControl]=\"readOnly\"></lib-dashed-checkbox>\n        <div class=\"form-field__checkbox-label\" [innerHTML]=\"label\"></div>\n      </div>\n      <div *ngIf=\"type === FormFieldType.checkbox && selectOptions?.length\" class=\"form-field__checkbox-group\">\n        <div class=\"form-field__checkbox\" *ngFor=\"let option of selectOptions\">\n          <div class=\"form-field__checkbox-label\">{{ option.label }}</div>\n          <lib-dashed-checkbox [checked]=\"!!option.selected\" [disabled]=\"readOnly\" (toggle)=\"onMultiCheckboxToggle(option, $event)\"></lib-dashed-checkbox>\n        </div>\n      </div>\n      <div\n        *ngIf=\"type === FormFieldType.select\"\n        class=\"form-field__select-container\"\n        [ngClass]=\"{\n          'form-field__select-container-required': required,\n          'form-field__select-container--focus': focused,\n          'form-field__select-container--error': formFieldControl.touched && submitted && formFieldControl.errors,\n          'form-field__select-container--disabled': formFieldControl.disabled,\n        }\"\n      >\n        <div\n          *ngIf=\"showRequiredIndicator && required\"\n          class=\"form-field__required\"\n          [ngClass]=\"{ 'form-field__required--submitted': submitted && formFieldControl.errors }\"\n          [libTooltip]=\"'Required'\"\n        >\n          <div class=\"form-field__required-indicator\">*</div>\n        </div>\n        <div class=\"form-field__select-input\" (click)=\"handleFieldClicked($event)\">\n          <mat-form-field>\n            <mat-select\n              matNativeControl\n              [formControl]=\"formFieldControl\"\n              [placeholder]=\"placeholder\"\n              [disableOptionCentering]=\"true\"\n              [panelClass]=\"{ 'form-field-select-panel-class': !required, 'form-field-select-panel-class--required': required }\"\n              (focus)=\"handleFocus()\"\n              (focusout)=\"handleFocusOut($event)\"\n              #matSelect\n            >\n              <mat-option\n                *ngFor=\"let option of selectOptions\"\n                class=\"form-field__select-option mat-accent\"\n                [disabled]=\"option.disabled\"\n                [libTooltip]=\"option.label\"\n                [value]=\"option.value\"\n              >\n                {{ option.label }}\n              </mat-option>\n            </mat-select>\n          </mat-form-field>\n        </div>\n        <div class=\"error-outline\"></div>\n      </div>\n      <div *ngIf=\"type === FormFieldType.range\" class=\"form-field__range-container\">\n        <lib-range-selector\n          [formControl]=\"formFieldControl\"\n          [pinValue]=\"pinValue\"\n          [dualKnobs]=\"dualKnobs\"\n          [reverseBarColor]=\"reverseBarColor\"\n          [minValue]=\"min\"\n          [maxValue]=\"max\"\n        ></lib-range-selector>\n      </div>\n      <div\n        *ngIf=\"type === FormFieldType.multiselectdropdown\"\n        class=\"form-field__select-container\"\n        [ngClass]=\"{\n          'form-field__select-container-required': required,\n          'form-field__select-container--focus': focused,\n          'form-field__select-container--error': formFieldControl.touched && submitted && formFieldControl.errors,\n          'form-field__select-container--disabled': formFieldControl.disabled,\n        }\"\n      >\n        <div *ngIf=\"required\" class=\"form-field__required\" [ngClass]=\"{ 'form-field__required--submitted': submitted && formFieldControl.errors }\" [libTooltip]=\"'Required'\">\n          <div class=\"form-field__required-indicator\">*</div>\n        </div>\n        <div class=\"form-field__select-input\" (click)=\"handleFieldClicked($event)\">\n          <mat-form-field>\n            <mat-select\n              multiple\n              [disableOptionCentering]=\"true\"\n              [formControl]=\"formFieldControl\"\n              [placeholder]=\"placeholder\"\n              [panelClass]=\"{ 'form-field-select-panel-class': !required, 'form-field-select-panel-class--required': required }\"\n              (focus)=\"handleFocus()\"\n              (focusout)=\"handleFocusOut($event)\"\n            >\n              <mat-select-trigger>\n                {{ formFieldControl.value | getMultiSelectDisplayText: selectOptions }}\n              </mat-select-trigger>\n              <ng-container *ngIf=\"selectOptions.length > 9\">\n                <lib-search-bar [placeholderText]=\"'Search'\" (click)=\"handleClick($event)\" (searchStringChange)=\"searchMultiSelect($event)\"> </lib-search-bar>\n                <div class=\"separator\"></div>\n              </ng-container>\n              <mat-option\n                *ngFor=\"let option of searchOptions$ | async\"\n                class=\"form-field__select-option mat-accent\"\n                [disabled]=\"option.disabled\"\n                [libTooltip]=\"option.label\"\n                [value]=\"option.value\"\n                (click)=\"handleClick($event)\"\n              >\n                {{ option.label }}\n              </mat-option>\n            </mat-select>\n          </mat-form-field>\n        </div>\n        <div class=\"error-outline\"></div>\n      </div>\n      <div\n        *ngIf=\"!readOnly && (type === FormFieldType.date || type === FormFieldType.datetime)\"\n        class=\"form-field__date-container\"\n        [ngClass]=\"{\n          'form-field__date-container-required': required,\n          'form-field__date-container--focus': focused,\n          'form-field__date-container--error': formFieldControl.touched && submitted && formFieldControl.errors,\n          'form-field__date-container--disabled': formFieldControl.disabled,\n        }\"\n      >\n        <div\n          *ngIf=\"showRequiredIndicator && required\"\n          class=\"form-field__required\"\n          [ngClass]=\"{ 'form-field__required--submitted': formFieldControl.touched && submitted && formFieldControl.errors }\"\n          [libTooltip]=\"'Required'\"\n        >\n          <div class=\"form-field__required-indicator\">*</div>\n        </div>\n        <div class=\"form-field__date-input\">\n          <mat-form-field class=\"form-field__date-input-mat\">\n            <input\n              matInput\n              [min]=\"minDate\"\n              [max]=\"maxDate\"\n              [matDatepicker]=\"picker\"\n              [placeholder]=\"dateInputPlaceholder\"\n              [formControl]=\"formFieldControl\"\n              (focus)=\"handleFocus()\"\n              (focusout)=\"processDate($event)\"\n              #dateInput\n            />\n            <mat-datepicker #picker></mat-datepicker>\n          </mat-form-field>\n          <i class=\"icon-gen3-appointment form-field__date-input-icon\" (click)=\"picker.open()\"></i>\n        </div>\n        <div class=\"error-outline\"></div>\n      </div>\n      <div\n        *ngIf=\"!readOnly && type !== FormFieldType.datetime && formFieldControl.touched && submitted && formFieldControl.errors?.['required'] && !errorInlineMode\"\n        class=\"form-field__error-text\"\n      >\n        <span>{{ showLabelInRequiredErrorMessage ? (label ? label : 'Field') + ' is required.' : 'Required' }}</span>\n      </div>\n      <div\n        *ngIf=\"\n          !readOnly &&\n          type !== FormFieldType.datetime &&\n          formFieldControl.touched &&\n          submitted &&\n          (formFieldControl.errors?.['pattern'] || formFieldControl.errors?.['matDatepickerParse'])\n        \"\n        class=\"form-field__error-text\"\n      >\n        {{ invalidPatternMessage }}\n      </div>\n    </div>\n  </div>\n</div>\n","import { CommonModule, DecimalPipe } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDateFnsModule } from '@angular/material-date-fns-adapter';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { DirectiveModule } from '../../directives/directive.module';\r\nimport { PipeModule } from '../../pipes/pipe.module';\r\nimport { ButtonsModule } from '../buttons/buttons.module';\r\nimport { DashedCheckboxModule } from '../dashed-checkbox/dashed-checkbox.module';\r\nimport { InputDateFieldModule } from '../input-date-field/input-date-field.module';\r\nimport { InputFieldSelectModule } from '../input-field-select/input-field-select.module';\r\nimport { InputFieldModule } from '../input-field/input-field.module';\r\nimport { RangeSelectorModule } from '../range-selector/range-selector.module';\r\nimport { SearchBarModule } from '../search-bar/search-bar.module';\r\nimport { ToggleModule } from '../toggle/toggle.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { FormFieldComponent } from './form-field.component';\r\nimport { LibRadioButtonComponent } from './radio-button/radio-button.component';\r\n\r\n@NgModule({\r\n  declarations: [FormFieldComponent, LibRadioButtonComponent],\r\n  exports: [FormFieldComponent, LibRadioButtonComponent],\r\n  imports: [\r\n    CommonModule,\r\n    PipeModule,\r\n    MatDateFnsModule,\r\n    MatDatepickerModule,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    MatRadioModule,\r\n    MatSelectModule,\r\n    ReactiveFormsModule,\r\n    SearchBarModule,\r\n    TooltipModule,\r\n    ToggleModule,\r\n    DashedCheckboxModule,\r\n    InputFieldModule,\r\n    InputFieldSelectModule,\r\n    InputDateFieldModule,\r\n    DirectiveModule,\r\n    RangeSelectorModule,\r\n    TranslateModule,\r\n    IonicModule,\r\n    ButtonsModule,\r\n  ],\r\n  providers: [DecimalPipe],\r\n})\r\nexport class FormFieldModule {}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DashedCheckboxModule } from '../../components/dashed-checkbox/dashed-checkbox.module';\nimport { ProgressBarComponent } from './progress-bar.component';\n\n@NgModule({\n  declarations: [ProgressBarComponent],\n  imports: [CommonModule, IonicModule, TranslateModule, ReactiveFormsModule, DashedCheckboxModule],\n  exports: [ProgressBarComponent],\n})\nexport class ProgressBarModule {}\n","import { NgIfContext } from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChild,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  TemplateRef,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { IonModal } from '@ionic/angular';\r\nimport { ModalBreakpointChangeEventDetail } from '@ionic/core';\r\n\r\n@Component({\r\n  selector: 'lib-bottom-modal',\r\n  templateUrl: './bottom-modal.component.html',\r\n  styleUrls: ['./bottom-modal.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class BottomModalComponent implements OnDestroy, AfterViewInit {\r\n  @ViewChild('bottomModalRef', { read: IonModal }) bottomModalRef!: IonModal;\r\n  @ContentChild('headerLeftContent') headerLeftContent!: TemplateRef<ElementRef>;\r\n  @ContentChild('headerRightContent') headerRightContent!: TemplateRef<ElementRef>;\r\n  @Input() breakpoints: number[] = [0, 0.25, 0.5, 0.75];\r\n  @Input() initialBreakpoint: number = 0;\r\n\r\n  public titleTemplate!: TemplateRef<NgIfContext<boolean>>;\r\n  public checkboxText: string = '';\r\n  public confirmationControl: FormControl<boolean> = new FormControl();\r\n\r\n  @Input() set isOpen(open: boolean) {\r\n    this._isOpen = open;\r\n    this.handelOpenModal(open);\r\n  }\r\n  get isOpen(): boolean {\r\n    return this._isOpen;\r\n  }\r\n  @Input() backdropDismiss: boolean = true;\r\n  @Input() canDismiss: boolean = true;\r\n  @Input() showArrow: boolean = true;\r\n  @Input() showBackBtn: boolean = false;\r\n  @Input() showConfirm: boolean = false;\r\n  @Input() showCloseBtn: boolean = false;\r\n  @Input() loading: boolean = false;\r\n  @Input() showHeaderSeparator: boolean = true;\r\n  @Input() title: string = '';\r\n  @Input() confirmationTitle: string = '';\r\n  @Input() confirmationMsg: string = '';\r\n  @Input() confirmButton: string = '';\r\n  @Input() confirmCancelButton: string = '';\r\n  @Input() description: string = '';\r\n  @Input() secondaryButtonTitle: string = '';\r\n  @Input() submitButtonTitle: string = '';\r\n  @Input() cancelButtonTitle: string = '';\r\n  @Input() validModal: boolean = true;\r\n  @Input() adaptToContentHeight: boolean = true;\r\n  @Input() customClass: string = '';\r\n  @Output() isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n  @Output() breakpointChange: EventEmitter<number> = new EventEmitter<number>();\r\n  @Output() closeModal: EventEmitter<void> = new EventEmitter();\r\n  @Output() submitModal: EventEmitter<void> = new EventEmitter();\r\n  @Output() secondaryButtonClick: EventEmitter<void> = new EventEmitter();\r\n  @Output() backClick: EventEmitter<void> = new EventEmitter();\r\n  @Output() showConfirmChange: EventEmitter<boolean> = new EventEmitter();\r\n  @Output() confirmEvent: EventEmitter<void> = new EventEmitter();\r\n  private _isOpen: boolean = false;\r\n\r\n  constructor(public cdk: ChangeDetectorRef) {}\r\n\r\n  ngAfterViewInit() {\r\n    this.handelOpenModal(this._isOpen);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.canDismiss = true;\r\n    this.bottomModalRef.canDismiss = true;\r\n    this.bottomModalRef?.dismiss();\r\n  }\r\n\r\n  public onDidDismiss(): void {\r\n    this.isOpenChange.emit(!this.isOpenChange);\r\n    this.closeModal.emit();\r\n  }\r\n\r\n  public onBreakpointDidChange(event: CustomEvent<ModalBreakpointChangeEventDetail>): void {\r\n    this.breakpointChange.emit(event?.detail?.breakpoint);\r\n  }\r\n\r\n  public updateInitialBreakpoint(initialBreakpoint: number): void {\r\n    this.initialBreakpoint = initialBreakpoint;\r\n    this.bottomModalRef?.setCurrentBreakpoint(initialBreakpoint);\r\n  }\r\n\r\n  public onClickBack(): void {\r\n    if (this.showBackBtn && !this.loading) {\r\n      this.backClick.emit();\r\n    }\r\n  }\r\n\r\n  public closeLibBottomModal(): void {\r\n    this.bottomModalRef.canDismiss = true;\r\n    this.isOpen = false;\r\n    this.cdk.detectChanges();\r\n  }\r\n\r\n  public onConfirm(confirm?: boolean): void {\r\n    if (confirm) {\r\n      this.confirmEvent.emit();\r\n    }\r\n    this.showConfirm = !this.showConfirm;\r\n    this.showConfirmChange.emit(this.showConfirm);\r\n  }\r\n\r\n  private handelOpenModal(open: boolean): void {\r\n    if (open) {\r\n      this.bottomModalRef?.present();\r\n    } else {\r\n      this.canDismiss = true;\r\n      this.bottomModalRef?.dismiss();\r\n    }\r\n  }\r\n}\r\n","<ion-modal\n  #bottomModalRef\n  class=\"lib-bottom-modal\"\n  (didDismiss)=\"onDidDismiss()\"\n  (ionBreakpointDidChange)=\"onBreakpointDidChange($event)\"\n  [ngClass]=\"[customClass ? customClass : '']\"\n  [canDismiss]=\"canDismiss\"\n  [initialBreakpoint]=\"adaptToContentHeight ? 1 : initialBreakpoint\"\n  [breakpoints]=\"adaptToContentHeight ? [0, 1] : breakpoints\"\n  [class.adapt-to-content-height]=\"adaptToContentHeight\"\n>\n  <ng-template>\n    <lib-base-card class=\"content-base-card\" [class.no-title]=\"!title && !showBackBtn && !showCloseBtn && !headerLeftContent && !headerRightContent\">\n      <div class=\"lib-bottom-modal-header\" [class.with-close-button]=\"showCloseBtn\" *ngIf=\"title || showBackBtn || showCloseBtn || headerLeftContent || headerRightContent\">\n        <div *ngIf=\"headerLeftContent; else defaultHeaderLeftContent\">\n          <ng-container *ngTemplateOutlet=\"headerLeftContent\"></ng-container>\n        </div>\n        <ng-template #defaultHeaderLeftContent>\n          <lib-icon-btn [disabled]=\"loading\" (click)=\"onClickBack()\" *ngIf=\"showBackBtn\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"7\" height=\"11\" viewBox=\"0 0 7 11\" fill=\"none\" [class.lib-bottom-modal-header-back]=\"showBackBtn\">\n              <path d=\"M0.950928 9.66406L5.24176 5.37323L0.950928 1.08241\" stroke=\"#F7416E\" stroke-width=\"1.60906\" stroke-linecap=\"round\" />\n            </svg>\n          </lib-icon-btn>\n        </ng-template>\n        <div class=\"lib-bottom-modal-title ellipsis-text\">{{ title }}</div>\n        <span class=\"spacer\"></span>\n        <div *ngIf=\"headerRightContent; else defaultHeaderRightContent\">\n          <ng-container *ngTemplateOutlet=\"headerRightContent\"></ng-container>\n        </div>\n        <ng-template #defaultHeaderRightContent>\n          <lib-icon-btn [disabled]=\"loading\" (click)=\"closeLibBottomModal()\" *ngIf=\"showCloseBtn\" class=\"close-modal-btn\">\n            <svg width=\"30\" height=\"30\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <line x1=\"5\" y1=\"5\" x2=\"10\" y2=\"10\" stroke=\"#fe3c72\" />\n              <line x1=\"10\" y1=\"5\" x2=\"5\" y2=\"10\" stroke=\"#fe3c72\" />\n            </svg>\n          </lib-icon-btn>\n        </ng-template>\n      </div>\n      <lib-section-separator *ngIf=\"showHeaderSeparator && (title || showBackBtn || showCloseBtn || headerLeftContent || headerRightContent)\"></lib-section-separator>\n      <ion-spinner color=\"danger\" name=\"dots\" *ngIf=\"loading; else titleTemplate\"></ion-spinner>\n      <div class=\"modal-confirmation\" *ngIf=\"showConfirm\">\n        <div *ngIf=\"confirmationTitle\" class=\"m-title f-w-700 f-lg h-160 f-white\">{{ confirmationTitle }}</div>\n        <div *ngIf=\"confirmationMsg\" class=\"message f-w-400 f-md h-150 f-gray\">{{ confirmationMsg }}</div>\n        <div class=\"buttons\">\n          <lib-secondary-btn *ngIf=\"confirmCancelButton\" (click)=\"onConfirm()\">\n            {{ confirmCancelButton | translate }}\n          </lib-secondary-btn>\n          <lib-primary-btn *ngIf=\"confirmButton\" (click)=\"onConfirm(true)\" [disabled]=\"checkboxText ? !confirmationControl.value : false\">\n            {{ confirmButton | translate }}\n          </lib-primary-btn>\n        </div>\n      </div>\n      <div class=\"wrapper\" id=\"bottomModalContentRef\" [class.wrapper-loading]=\"loading || showConfirm\">\n        <p class=\"lib-bottom-modal-description\" *ngIf=\"description\">{{ description }}</p>\n        <div class=\"dynamic-content\">\n          <ng-content></ng-content>\n        </div>\n        <div [class.lib-bottom-modal-footer]=\"(cancelButtonTitle || secondaryButtonTitle) && submitButtonTitle\">\n          <lib-secondary-btn [class.lib-bottom-modal-cancel-btn]=\"!submitButtonTitle\" [disabled]=\"loading\" (click)=\"closeLibBottomModal()\" *ngIf=\"cancelButtonTitle\" type=\"button\">\n            {{ cancelButtonTitle }}\n          </lib-secondary-btn>\n          <lib-secondary-btn [class.lib-bottom-modal-cancel-btn]=\"!submitButtonTitle\" [disabled]=\"loading\" (click)=\"secondaryButtonClick.emit()\" *ngIf=\"secondaryButtonTitle\">\n            {{ secondaryButtonTitle }}\n          </lib-secondary-btn>\n          <lib-primary-btn\n            [class.lib-bottom-modal-submit-btn]=\"!cancelButtonTitle && !secondaryButtonTitle\"\n            [disabled]=\"!validModal || loading\"\n            (click)=\"submitModal.emit()\"\n            *ngIf=\"submitButtonTitle\"\n          >\n            {{ submitButtonTitle }}\n          </lib-primary-btn>\n        </div>\n      </div>\n    </lib-base-card>\n  </ng-template>\n</ion-modal>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatRippleModule } from '@angular/material/core';\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonsModule } from '../../components/buttons/buttons.module';\nimport { DashedCheckboxModule } from '../../components/dashed-checkbox/dashed-checkbox.module';\nimport { DynamicModalContainerDirective } from '../../directives/dynamic-modal-container/dynamic-modal-container.directive';\nimport { BaseCardModule } from '../base-card/base-card.module';\nimport { ProgressBarModule } from '../progress-bar/progress-bar.module';\nimport { SectionSeparatorComponent } from '../section-separator/section-separator.component';\nimport { BottomModalComponent } from './bottom-modal/bottom-modal.component';\nimport { LibModalComponent } from './popup-modal/popup-modal.component';\n\n@NgModule({\n  declarations: [LibModalComponent, BottomModalComponent, DynamicModalContainerDirective],\n  imports: [\n    BaseCardModule,\n    CommonModule,\n    IonicModule,\n    TranslateModule,\n    ReactiveFormsModule,\n    DashedCheckboxModule,\n    ProgressBarModule,\n    ButtonsModule,\n    SectionSeparatorComponent,\n    MatRippleModule,\n    MatButtonModule,\n  ],\n  exports: [LibModalComponent, BottomModalComponent],\n})\nexport class LibModalModule {}\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { ItemActionHandler } from '../../model/item-action-handler';\r\nimport { SelectOption } from '../../model/select-option';\r\n\r\n@Component({\r\n  selector: 'lib-multiselect-dialog',\r\n  templateUrl: './multiselect-dialog.component.html',\r\n  styleUrls: ['./multiselect-dialog.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class MultiselectDialogComponent {\r\n  public title: string;\r\n  public headerIconTray: ItemActionHandler[] = [];\r\n  // The options to display\r\n  public optionGroups: { groupName: string; options: SelectOption<any>[] }[] = [];\r\n  public selectedOptions: SelectOption<any>[] = [];\r\n  // All options, including non-displayed\r\n  public totalOptionGroups: { groupName: string; options: SelectOption<any>[] }[] = [];\r\n  public totalCount = 0;\r\n  public showDialogMessage: boolean;\r\n\r\n  public readonly searchModeThreshold = 50;\r\n\r\n  constructor(\r\n    public dialogRef: MatDialogRef<MultiselectDialogComponent>,\r\n    @Inject(MAT_DIALOG_DATA) public data: any,\r\n  ) {\r\n    this.title = data.title;\r\n    this.totalOptionGroups = data.options;\r\n    this.headerIconTray = data.headerIconTray;\r\n    this.showDialogMessage = data.showDialogMessage;\r\n    this.totalOptionGroups.forEach((optionGroup) => {\r\n      optionGroup.options.sort((a: SelectOption<any>, b: SelectOption<any>) => {\r\n        const label1: string = a.label || '';\r\n        const label2: string = b.label || '';\r\n        return label1.localeCompare(label2);\r\n      });\r\n      this.totalCount += optionGroup.options.length;\r\n    });\r\n    this.optionGroups = this.totalOptionGroups;\r\n  }\r\n\r\n  // ----- Methods called by template -----\r\n  public search(value: string): void {\r\n    this.optionGroups = [];\r\n    this.totalOptionGroups.forEach((optionGroup) => {\r\n      const filteredOptions = optionGroup.options.filter((option) => option.label.toLocaleUpperCase().includes(value.toLocaleUpperCase()));\r\n      if (filteredOptions.length) {\r\n        this.optionGroups.push({ groupName: optionGroup.groupName, options: filteredOptions });\r\n      }\r\n    });\r\n  }\r\n\r\n  public clearSearch(): void {\r\n    this.optionGroups = this.totalOptionGroups;\r\n  }\r\n\r\n  /**\r\n   * Indicates that an option has been checked or unchecked.\r\n   *\r\n   * @param event - A tuple containing the option in question and its current checked state.\r\n   */\r\n  public handleCheckedValueChange(event: [SelectOption<any>, boolean]): void {\r\n    if (event[1]) {\r\n      this.selectedOptions.push(event[0]);\r\n    } else {\r\n      this.selectedOptions.splice(this.selectedOptions.indexOf(event[0]), 1);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Closes the dialog\r\n   */\r\n  public handleClickCancel(): void {\r\n    this.dialogRef.close();\r\n  }\r\n\r\n  public getLeftOptions(options: SelectOption<any>[]): SelectOption<any>[] {\r\n    return options.slice(0, Math.ceil(options.length / 2));\r\n  }\r\n\r\n  public getRightOptions(options: SelectOption<any>[]): SelectOption<any>[] {\r\n    return options.slice(Math.ceil(options.length / 2), options.length);\r\n  }\r\n\r\n  public headerIconClicked(icon: ItemActionHandler) {\r\n    if (icon && icon.action) {\r\n      icon.action({});\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Closes the dialog and returns the selected options to the dialog owner.\r\n   */\r\n  public handleClickSave(): void {\r\n    this.dialogRef.close(this.selectedOptions);\r\n  }\r\n  public getTooltipString(tooltip: any): string {\r\n    return tooltip?.toString() || '';\r\n  }\r\n}\r\n","<div class=\"multiselect-dialog\">\r\n  <div class=\"multiselect-dialog__header\">\r\n    <div class=\"multiselect-dialog__header-left-group\">\r\n      <div class=\"multiselect-dialog__header-text\">\r\n        {{ title }}\r\n      </div>\r\n      <div class=\"multiselect-dialog__header-icons\">\r\n        <div\r\n          class=\"multiselect-dialog__header-icon\"\r\n          *ngFor=\"let icon of headerIconTray\"\r\n          (click)=\"headerIconClicked(icon)\"\r\n          [innerHTML]=\"icon.displayHtml\"\r\n          [libTooltip]=\"getTooltipString(icon.toolTip)\"\r\n        ></div>\r\n      </div>\r\n    </div>\r\n    <i class=\"multiselect-dialog__header-close-button icon-close\" (click)=\"handleClickCancel()\"></i>\r\n  </div>\r\n\r\n  <div class=\"multiselect-dialog__checkbox-section\">\r\n    <div *ngIf=\"showDialogMessage\" class=\"multiselect-dialog__checkbox-section-text\">Select one or more {{ title }} from the list below.</div>\r\n    <lib-search-bar\r\n      *ngIf=\"this.totalCount > this.searchModeThreshold\"\r\n      [placeholderText]=\"'Search'\"\r\n      (searchStringChange)=\"search($event)\"\r\n      (cleared)=\"clearSearch()\"\r\n      class=\"multiselect-dialog__search-bar\"\r\n    ></lib-search-bar>\r\n    <div class=\"multiselect-dialog__checkbox-group-container\">\r\n      <div class=\"multiselect-dialog__checkbox-group\" *ngFor=\"let group of optionGroups\">\r\n        <div class=\"multiselect-dialog__checkbox-group-title\" *ngIf=\"group.groupName\">\r\n          {{ group.groupName }}\r\n        </div>\r\n        <div class=\"multiselect-dialog__checkbox-container\">\r\n          <div class=\"multiselect-dialog__checkbox-container-list\">\r\n            <div *ngFor=\"let option of getLeftOptions(group.options)\" class=\"multiselect-dialog__checkbox-section-item\">\r\n              <lib-dashed-checkbox\r\n                class=\"multiselect-dialog__checkbox\"\r\n                [checked]=\"selectedOptions.indexOf(option) !== -1\"\r\n                (toggle)=\"handleCheckedValueChange([option, $event])\"\r\n              ></lib-dashed-checkbox>\r\n              <div class=\"multiselect-dialog__checkbox-section-item-text\" [libTooltip]=\"option.label\">\r\n                {{ option.label }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div class=\"multiselect-dialog__checkbox-container-list\">\r\n            <div *ngFor=\"let option of getRightOptions(group.options)\" class=\"multiselect-dialog__checkbox-section-item\">\r\n              <lib-dashed-checkbox\r\n                class=\"multiselect-dialog__checkbox\"\r\n                [checked]=\"selectedOptions.indexOf(option) !== -1\"\r\n                (toggle)=\"handleCheckedValueChange([option, $event])\"\r\n              ></lib-dashed-checkbox>\r\n              <div class=\"multiselect-dialog__checkbox-section-item-text\" [libTooltip]=\"option.label\">\r\n                {{ option.label }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <lib-section-separator></lib-section-separator>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"multiselect-dialog__footer\">\r\n    <lib-secondary-btn class=\"multiselect-dialog__footer-button\" (click)=\"handleClickCancel()\"> Cancel </lib-secondary-btn>\r\n    <lib-primary-btn class=\"multiselect-dialog__footer-button\" (click)=\"handleClickSave()\"> Save </lib-primary-btn>\r\n  </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ItemActionHandler } from '../../model/item-action-handler';\r\nimport { SelectOption } from '../../model/select-option';\r\nimport { MultiselectDialogComponent } from './multiselect-dialog.component';\r\n\r\n@Component({\r\n  selector: 'lib-multiselect',\r\n  templateUrl: './multiselect.component.html',\r\n  styleUrls: ['./multiselect.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class MultiselectComponent implements OnInit, OnDestroy {\r\n  @Input() optionGroups: { groupName: string; options: SelectOption<any>[] }[] = [];\r\n  @Input() selectedOptions: SelectOption<any>[] = [];\r\n  @Input() fieldName = '';\r\n  @Input() dialogTitle = '';\r\n  @Input() required = false;\r\n  @Input() showRequiredIndicator: boolean = false;\r\n  @Input() submitted = false;\r\n  @Input() optionDeleteConfirmationObsv!: Observable<{ fieldName: string; fieldValue: any }>; // Fix: Definite assignment assertion\r\n  @Input() headerIconTray: ItemActionHandler[] = [];\r\n  @Input() showDialogMessage = true;\r\n  @Input() disabled = false;\r\n\r\n  @Output() optionDelete: EventEmitter<{ fieldName: string; fieldValue: any }> = new EventEmitter();\r\n  @Output() selectedOptionsChange: EventEmitter<SelectOption<any>[]> = new EventEmitter();\r\n\r\n  private componentDestroyed$: Subject<void> = new Subject();\r\n\r\n  constructor(\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    public dialog: MatDialog,\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.optionDeleteConfirmationObsv?.pipe(takeUntil(this.componentDestroyed$)).subscribe((response) => {\r\n      if (response?.fieldName === this.fieldName && typeof response.fieldValue === 'object') {\r\n        this.handleOptionDeletedAction(response.fieldValue);\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.componentDestroyed$.next();\r\n    this.componentDestroyed$.complete();\r\n  }\r\n\r\n  // ----- Methods -----\r\n\r\n  /**\r\n   * Appends the options selected in the dialog to the selected options\r\n   * and emits an event containing the new list of selected options\r\n   *\r\n   * @param result - The options selected via the dialog\r\n   */\r\n  private handleDialogResult(options: SelectOption<any>[]): void {\r\n    if (options) {\r\n      this.selectedOptions.push(...options);\r\n      this.selectedOptions = [\r\n        ...this.selectedOptions.sort((a, b) => {\r\n          return a.label.localeCompare(b.label);\r\n        }),\r\n      ];\r\n      this.selectedOptionsChange.emit(this.selectedOptions);\r\n      this.changeDetectorRef.detectChanges();\r\n    }\r\n  }\r\n\r\n  // ----- Methods called by template -----\r\n\r\n  /**\r\n   * Removes an option from the selected options list.\r\n   *\r\n   * @param option - The option to remove.\r\n   */\r\n  public handleOptionRemove(option: SelectOption<any>, event: any): void {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    event?.stopPropagation();\r\n    if (this.optionDelete && this.optionDeleteConfirmationObsv) {\r\n      this.optionDelete.emit({ fieldName: this.fieldName, fieldValue: option });\r\n    } else {\r\n      this.handleOptionDeletedAction(option);\r\n    }\r\n  }\r\n\r\n  public handleOptionDeletedAction(option: SelectOption<any>): void {\r\n    this.selectedOptions.splice(this.selectedOptions.indexOf(option), 1);\r\n    this.selectedOptionsChange.emit(this.selectedOptions);\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  /**\r\n   * Opens a dialog allowing the user to add options.\r\n   */\r\n  public handleOptionAdd() {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    const availableOptions: { groupName: string; options: SelectOption<any>[] }[] = [];\r\n    this.optionGroups.forEach((optionGroup) => {\r\n      const filteredGroupOptions = optionGroup.options.filter((option) => {\r\n        return !this.selectedOptions.find((selectedOption) => {\r\n          return selectedOption.label === option.label;\r\n        });\r\n      });\r\n      if (filteredGroupOptions.length) {\r\n        availableOptions.push({ groupName: optionGroup.groupName, options: filteredGroupOptions });\r\n      }\r\n    });\r\n    const dialogRef = this.dialog.open(MultiselectDialogComponent, {\r\n      panelClass: 'resizable-dialog',\r\n      data: {\r\n        title: this.dialogTitle,\r\n        options: availableOptions,\r\n        headerIconTray: this.headerIconTray,\r\n        showDialogMessage: this.showDialogMessage,\r\n      },\r\n    });\r\n\r\n    dialogRef.afterClosed().subscribe((options: SelectOption<any>[]) => {\r\n      this.handleDialogResult(options);\r\n    });\r\n  }\r\n\r\n  public getTotalCount() {\r\n    let count = 0;\r\n    this.optionGroups.forEach((optionGroup) => {\r\n      optionGroup.options.sort((a: SelectOption<any>, b: SelectOption<any>) => {\r\n        const label1: string = a.label || '';\r\n        const label2: string = b.label || '';\r\n        return label1.localeCompare(label2);\r\n      });\r\n      count += optionGroup.options.length;\r\n    });\r\n    return count;\r\n  }\r\n}\r\n","<div\r\n  class=\"multiselect\"\r\n  [ngClass]=\"{ 'multiselect--required': showRequiredIndicator && required, 'multiselect--required-submitted': submitted && required && selectedOptions.length === 0 }\"\r\n>\r\n  <div\r\n    *ngIf=\"showRequiredIndicator && required\"\r\n    class=\"multiselect__required\"\r\n    [ngClass]=\"{ 'multiselect__required--submitted': submitted && selectedOptions.length === 0 }\"\r\n    [libTooltip]=\"'Required'\"\r\n  >\r\n    <div class=\"multiselect__required-indicator\">*</div>\r\n  </div>\r\n  <div class=\"multiselect__tile-container\">\r\n    <div *ngFor=\"let selectedOption of selectedOptions; let optionIndex = index\" class=\"multiselect__tile\">\r\n      <div class=\"multiselect__tile-label\" [libTooltip]=\"selectedOption.label\">\r\n        {{ selectedOption.label }}\r\n      </div>\r\n      <i *ngIf=\"!disabled\" class=\"multiselect__tile-icon multiselect__tile-icon-remove icon-close\" (click)=\"handleOptionRemove(selectedOption, $event)\"></i>\r\n    </div>\r\n    <div *ngIf=\"selectedOptions.length < getTotalCount() && !disabled\" class=\"multiselect__tile multiselect__tile-add\" (click)=\"handleOptionAdd()\">\r\n      <i class=\"multiselect__tile-icon multiselect__tile-icon-add icon-gen3-create\"></i>\r\n      <div class=\"multiselect__tile-label\">Add</div>\r\n    </div>\r\n  </div>\r\n</div>\r\n<div *ngIf=\"submitted && required && selectedOptions.length === 0\" class=\"multiselect__error-text\">\r\n  {{ (dialogTitle ? dialogTitle : 'Field') + ' is required.' }}\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { ButtonsModule } from '../buttons/buttons.module';\r\nimport { DashedCheckboxModule } from '../dashed-checkbox/dashed-checkbox.module';\r\nimport { SearchBarModule } from '../search-bar/search-bar.module';\r\nimport { SectionSeparatorComponent } from '../section-separator/section-separator.component';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { MultiselectDialogComponent } from './multiselect-dialog.component';\r\nimport { MultiselectComponent } from './multiselect.component';\r\n\r\n@NgModule({\r\n  declarations: [MultiselectComponent, MultiselectDialogComponent],\r\n  exports: [MultiselectComponent],\r\n  imports: [CommonModule, DashedCheckboxModule, MatDialogModule, SearchBarModule, TooltipModule, SectionSeparatorComponent, ButtonsModule],\r\n})\r\nexport class MultiselectModule {}\r\n","export enum StatusTypes {\r\n  Info = 'info',\r\n  Warning = 'warning',\r\n  Error = 'error',\r\n  Success = 'success',\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { StatusTypes } from '../../../enums/status-types';\r\nimport { IStatusMessage } from '../../../interfaces/notification.interface';\r\n\r\n@Injectable()\r\nexport class ToastService {\r\n  private eventSubject = new Subject<string>();\r\n  private displaySubject = new Subject<IStatusMessage>();\r\n\r\n  set setToast(data: IStatusMessage) {\r\n    if (data) {\r\n      data.showIcon = data.showIcon === undefined || null || '' ? true : data.showIcon;\r\n    }\r\n\r\n    this.displaySubject.next(data);\r\n  }\r\n\r\n  set toastEvent(event: string) {\r\n    this.eventSubject.next(event);\r\n  }\r\n\r\n  get observeToast() {\r\n    return this.displaySubject.asObservable();\r\n  }\r\n\r\n  get observeEvents(): Observable<string> {\r\n    return this.eventSubject.asObservable();\r\n  }\r\n\r\n  showErrorToast(header: string, message: string = 'Try refreshing the page a couple of times. If this issue persists, contact your System Administrator.') {\r\n    this.setToast = {\r\n      type: StatusTypes.Error,\r\n      message,\r\n      header,\r\n    };\r\n  }\r\n\r\n  showSuccessToast(header: string, message: string = '') {\r\n    this.setToast = {\r\n      type: StatusTypes.Success,\r\n      message,\r\n      header,\r\n    };\r\n  }\r\n}\r\n","import { animate, animateChild, query, style, transition, trigger } from '@angular/animations';\n\nexport function fadeInOut(timing = 0.5, name = 'fadeInOut') {\n  return trigger(name, [\n    transition(':enter', [style({ opacity: 0 }), animate(`${timing}s ease-in`, style({ opacity: 1 }))]),\n    transition(':leave', [style({ opacity: 1 }), animate(`${timing}s ease-out`, style({ opacity: 0 }))]),\n  ]);\n}\n\nexport function reveal(timing = 0.6, name = 'reveal') {\n  return trigger(name, [\n    transition(':enter', [style({ opacity: 0, height: 0 }), animate(`${timing}s ease-in`, style({ transform: 'translateY(0)', opacity: 1 }))]),\n    transition(':leave', [style({ height: '*', opacity: 1 }), animate(`${timing}s ease-out`, style({ opacity: 0, height: 0 }))]),\n  ]);\n}\n\nexport function slideTop(timing = 0.5, name = 'slideTop', translateY = 25) {\n  return trigger(name, [\n    transition(':enter', [style({ opacity: 0, transform: `translateY(-${translateY}%)` }), animate(`${timing}s ease-in`, style({ transform: 'translateY(0)', opacity: 1 }))]),\n    transition(':leave', [style({ transform: 'translateY(0)', opacity: 1 }), animate(`${timing}s ease-out`, style({ opacity: 0, transform: `translateY(-${translateY}%)` }))]),\n  ]);\n}\n\nexport const container = [trigger('container', [transition(':enter, :leave', [query('@*', animateChild())])])];\n\nexport const EnterExitLeft = [\n  trigger('enterExitLeft', [\n    transition(':enter', [style({ opacity: 0, transform: 'translateX(-200px)' }), animate('300ms ease-in', style({ opacity: 1, transform: 'translateX(0)' }))]),\n    transition(':leave', [animate('300ms ease-in', style({ opacity: 0, transform: 'translateX(-200px)' }))]),\n  ]),\n];\nexport const EnterExitRight = [\n  trigger('enterExitRight', [\n    transition(':enter', [style({ opacity: 0, transform: 'translateX(200px)' }), animate('300ms ease-in', style({ opacity: 1, transform: 'translateX(0)' }))]),\n    transition(':leave', [animate('300ms ease-in', style({ opacity: 0, transform: 'translateX(200px)' }))]),\n  ]),\n];\n","import { Component, Input } from '@angular/core';\r\nimport { StatusTypes } from '../../../enums/status-types';\r\n\r\n@Component({\r\n  selector: 'lib-status-icon',\r\n  templateUrl: './status-icon.component.html',\r\n  standalone: false,\r\n})\r\nexport class StatusIconComponent {\r\n  @Input({ required: true }) type!: StatusTypes;\r\n}\r\n","@switch (type) {\r\n  @case ('info') {\r\n    <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n      <path\r\n        fill-rule=\"evenodd\"\r\n        clip-rule=\"evenodd\"\r\n        d=\"M9.9987 19.1315C15.0613 19.1315 19.1654 15.0275 19.1654 9.96487C19.1654 4.90226 15.0613 0.798203 9.9987 0.798203C4.93609 0.798203 0.832031 4.90226 0.832031 9.96487C0.832031 15.0275 4.93609 19.1315 9.9987 19.1315ZM9.9987 5.15237C9.36587 5.15237 8.85287 5.66538 8.85287 6.2982C8.85287 6.93103 9.36587 7.44404 9.9987 7.44404C10.6315 7.44404 11.1445 6.93103 11.1445 6.2982C11.1445 5.66538 10.6315 5.15237 9.9987 5.15237ZM9.9987 9.7357C9.36797 9.7357 8.85287 10.2508 8.85287 10.8815V13.6315C8.85287 14.2623 9.36797 14.7774 9.9987 14.7774C10.6294 14.7774 11.1445 14.2623 11.1445 13.6315V10.8815C11.1445 10.2508 10.6294 9.7357 9.9987 9.7357Z\"\r\n        fill=\"#237FD5\"\r\n      />\r\n    </svg>\r\n  }\r\n\r\n  @case ('warning') {\r\n    <svg width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n      <path\r\n        d=\"M2.0975 15.795H15.9025C17.3142 15.795 18.1942 14.2642 17.4883 13.045L10.5858 1.11921C9.88 -0.0999577 8.12 -0.0999577 7.41417 1.11921L0.511666 13.045C-0.194167 14.2642 0.685832 15.795 2.0975 15.795ZM9 9.37838C8.49583 9.37838 8.08333 8.96588 8.08333 8.46171V6.62838C8.08333 6.12421 8.49583 5.71171 9 5.71171C9.50417 5.71171 9.91667 6.12421 9.91667 6.62838V8.46171C9.91667 8.96588 9.50417 9.37838 9 9.37838ZM9.91667 13.045H8.08333V11.2117H9.91667V13.045Z\"\r\n        fill=\"#F29C38\"\r\n      />\r\n    </svg>\r\n  }\r\n\r\n  @case ('error') {\r\n    <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n      <path\r\n        d=\"M10 0.833374C4.94001 0.833374 0.833344 4.94004 0.833344 10C0.833344 15.06 4.94001 19.1667 10 19.1667C15.06 19.1667 19.1667 15.06 19.1667 10C19.1667 4.94004 15.06 0.833374 10 0.833374ZM10 10.9167C9.49584 10.9167 9.08334 10.5042 9.08334 10V6.33337C9.08334 5.82921 9.49584 5.41671 10 5.41671C10.5042 5.41671 10.9167 5.82921 10.9167 6.33337V10C10.9167 10.5042 10.5042 10.9167 10 10.9167ZM10.9167 14.5834H9.08334V12.75H10.9167V14.5834Z\"\r\n        fill=\"#D32F2F\"\r\n      />\r\n    </svg>\r\n  }\r\n\r\n  @case ('success') {\r\n    <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n      <path\r\n        d=\"M10 0.833328C4.94001 0.833328 0.833344 4.93999 0.833344 10C0.833344 15.06 4.94001 19.1667 10 19.1667C15.06 19.1667 19.1667 15.06 19.1667 10C19.1667 4.93999 15.06 0.833328 10 0.833328ZM7.51584 13.9325L4.22501 10.6417C3.86751 10.2842 3.86751 9.70666 4.22501 9.34916C4.58251 8.99166 5.16001 8.99166 5.51751 9.34916L8.16668 11.9892L14.4733 5.6825C14.8308 5.325 15.4083 5.325 15.7658 5.6825C16.1233 6.04 16.1233 6.6175 15.7658 6.97499L8.80834 13.9325C8.46001 14.29 7.87334 14.29 7.51584 13.9325Z\"\r\n        fill=\"#2DB231\"\r\n      />\r\n    </svg>\r\n  }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { reveal } from '../../../animations/fade.animations';\r\nimport { StatusTypes } from '../../../enums/status-types';\r\n\r\n@Component({\r\n  selector: 'lib-status-banner',\r\n  templateUrl: './status-banner.component.html',\r\n  styleUrls: ['./status-banner.component.scss'],\r\n  animations: [reveal(0.5)],\r\n  standalone: false,\r\n})\r\nexport class StatusBannerComponent {\r\n  @Input() show = false;\r\n  @Input() showIcon = true;\r\n  @Input() type!: StatusTypes;\r\n  @Input() actionLink: string = '';\r\n  @Input() actionLinkText: string = '';\r\n  @Input() message: string = '';\r\n  @Input() title: string = '';\r\n  @Input() stayActive: boolean = false;\r\n  @Input() showClose = true;\r\n\r\n  onCloseBanner(): void {\r\n    this.show = false;\r\n  }\r\n}\r\n","@if (show) {\r\n  <div [@reveal] class=\"banner {{ type }}\">\r\n    <section class=\"banner-content\">\r\n      @if (showIcon) {\r\n        <section class=\"icon-container\">\r\n          <lib-status-icon [type]=\"type\"></lib-status-icon>\r\n        </section>\r\n      }\r\n      <div class=\"text-content\">\r\n        <section>\r\n          <h3>\r\n            {{ title || type }}\r\n          </h3>\r\n        </section>\r\n        <section class=\"message\">\r\n          {{ message }}\r\n        </section>\r\n        @if (actionLink.length > 0 && actionLinkText.length > 0) {\r\n          <section class=\"action-link\">\r\n            <a [href]=\"actionLink\">{{ actionLinkText }}</a>\r\n          </section>\r\n        }\r\n      </div>\r\n    </section>\r\n    @if (showClose) {\r\n      <section class=\"close-banner\">\r\n        <a (click)=\"onCloseBanner()\">\r\n          <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path\r\n              d=\"M12.7749 1.23417C12.4174 0.876671 11.8399 0.876671 11.4824 1.23417L6.99991 5.7075L2.51741 1.225C2.15991 0.867504 1.58241 0.867504 1.22491 1.225C0.867412 1.5825 0.867412 2.16 1.22491 2.5175L5.70741 7L1.22491 11.4825C0.867412 11.84 0.867412 12.4175 1.22491 12.775C1.58241 13.1325 2.15991 13.1325 2.51741 12.775L6.99991 8.2925L11.4824 12.775C11.8399 13.1325 12.4174 13.1325 12.7749 12.775C13.1324 12.4175 13.1324 11.84 12.7749 11.4825L8.29241 7L12.7749 2.5175C13.1232 2.16917 13.1232 1.5825 12.7749 1.23417Z\"\r\n              fill=\"#24282A\"\r\n            />\r\n          </svg>\r\n        </a>\r\n      </section>\r\n    }\r\n  </div>\r\n}\r\n","export enum StatusPosition {\r\n  topLeft = 'top-left',\r\n  topRight = 'top-right',\r\n  bottomLeft = 'bottom-left',\r\n  bottomRight = 'bottom-right',\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { fadeInOut } from '../../../animations/fade.animations';\r\nimport { StatusPosition } from '../../../enums/status-position';\r\nimport { StatusTypes } from '../../../enums/status-types';\r\nimport { IStatusMessage } from '../../../interfaces/notification.interface';\r\nimport { ToastService } from '../services/toast.service';\r\n\r\n@Component({\r\n  selector: 'lib-toast',\r\n  templateUrl: './toast.component.html',\r\n  styleUrls: ['./toast.component.scss'],\r\n  animations: [fadeInOut()],\r\n  standalone: false,\r\n})\r\nexport class ToastComponent implements OnInit, OnDestroy {\r\n  public message: IStatusMessage | null = null;\r\n\r\n  private toastHideSubject = new Subject<void>();\r\n  private defaultDelay = 4000;\r\n  private timeout: number | null = null;\r\n  private componentDestroyed$: Subject<void> = new Subject();\r\n\r\n  @Input() position = StatusPosition.topRight;\r\n\r\n  constructor(private toastService: ToastService) {}\r\n\r\n  getTemplateContent(): string {\r\n    if (!this.message?.notificationTemplate) {\r\n      return '';\r\n    }\r\n\r\n    return this.message.notificationTemplate.nativeElement?.innerHTML || '';\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.toastService.observeToast.pipe(takeUntil(this.componentDestroyed$)).subscribe((message: IStatusMessage) => {\r\n      this.message = message;\r\n      if (this.message?.message) {\r\n        this.toastService.toastEvent = 'open';\r\n        if (this.message.type === StatusTypes.Success || this.message.stayActive === false) {\r\n          this.toastHideSubject.next();\r\n        }\r\n      }\r\n    });\r\n\r\n    this.toastHideSubject.pipe(takeUntil(this.componentDestroyed$)).subscribe(() => {\r\n      if (this.timeout !== null) {\r\n        clearTimeout(this.timeout);\r\n      }\r\n\r\n      this.timeout = window.setTimeout(() => {\r\n        this.message = null;\r\n        this.toastService.toastEvent = 'close';\r\n        this.timeout = null;\r\n      }, this.defaultDelay);\r\n    });\r\n  }\r\n\r\n  onCloseToast(): void {\r\n    this.message = null;\r\n    this.toastService.toastEvent = 'close';\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.timeout !== null) {\r\n      clearTimeout(this.timeout);\r\n    }\r\n\r\n    this.componentDestroyed$.next();\r\n    this.componentDestroyed$.complete();\r\n  }\r\n}\r\n","<div class=\"toast-wrapper {{ position || 'top-right' }}\">\r\n  <div *ngIf=\"message\" @fadeInOut class=\"toast {{ message.type || 'info' }}\">\r\n    <section *ngIf=\"message.showIcon\" class=\"icon\">\r\n      <lib-status-icon [type]=\"message.type\"></lib-status-icon>\r\n    </section>\r\n\r\n    <ng-container *ngIf=\"message.notificationTemplate; else defaultTemplate\">\r\n      <section class=\"toast-header\">\r\n        <div class=\"toast-title\">\r\n          <h4>\r\n            <!-- This will render the ElementRef's native element content exactly as before -->\r\n            <div [innerHTML]=\"getTemplateContent()\"></div>\r\n          </h4>\r\n        </div>\r\n      </section>\r\n    </ng-container>\r\n\r\n    <ng-template #defaultTemplate>\r\n      <section class=\"toast-header\">\r\n        <div class=\"toast-title\">\r\n          <h4>\r\n            {{ message.header }}\r\n          </h4>\r\n        </div>\r\n\r\n        <div class=\"toast-content\">\r\n          <div class=\"message\">\r\n            {{ message.message }}\r\n          </div>\r\n          <div *ngIf=\"message.actionLink && message.actionLinkText\" class=\"action-link\">\r\n            <a [href]=\"message.actionLink\">{{ message.actionLinkText }}</a>\r\n          </div>\r\n        </div>\r\n      </section>\r\n    </ng-template>\r\n\r\n    <span class=\"close-toast-wrapper\">\r\n      <a class=\"close-toast\" (click)=\"onCloseToast()\">\r\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n          <path\r\n            d=\"M12.7749 1.23417C12.4174 0.876671 11.8399 0.876671 11.4824 1.23417L6.99991 5.7075L2.51741 1.225C2.15991 0.867504 1.58241 0.867504 1.22491 1.225C0.867412 1.5825 0.867412 2.16 1.22491 2.5175L5.70741 7L1.22491 11.4825C0.867412 11.84 0.867412 12.4175 1.22491 12.775C1.58241 13.1325 2.15991 13.1325 2.51741 12.775L6.99991 8.2925L11.4824 12.775C11.8399 13.1325 12.4174 13.1325 12.7749 12.775C13.1324 12.4175 13.1324 11.84 12.7749 11.4825L8.29241 7L12.7749 2.5175C13.1232 2.16917 13.1232 1.5825 12.7749 1.23417Z\"\r\n            fill=\"#656A6B\"\r\n          />\r\n        </svg>\r\n      </a>\r\n    </span>\r\n  </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ToastService } from './services/toast.service';\r\nimport { StatusBannerComponent } from './status-banner/status-banner.component';\r\nimport { StatusIconComponent } from './status-icon/status-icon.component';\r\nimport { ToastComponent } from './toast/toast.component';\r\n\r\n@NgModule({\r\n  declarations: [StatusBannerComponent, ToastComponent, StatusIconComponent],\r\n  imports: [CommonModule],\r\n  exports: [StatusBannerComponent, ToastComponent, StatusIconComponent],\r\n  providers: [ToastService],\r\n})\r\nexport class NotificationsModule {}\r\n","// OBSERVATION (NG0912 fix): Libraries must NEVER use IonicModule.forRoot() — only the host\n// app (cyrano AppModule) should call forRoot(). Using forRoot() here caused a second Ionic\n// root registration, which combined with the standalone entry point in user-menu, triggered\n// NG0912 \"Component ID generation collision\" warnings for every Ionic component.\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PipeModule } from '../../pipes/pipe.module';\nimport { BaseCardModule } from '../base-card/base-card.module';\nimport { ButtonsModule } from '../buttons/buttons.module';\nimport { FormFieldModule } from '../form-field/form-field.module';\nimport { InputFieldModule } from '../input-field/input-field.module';\nimport { LibModalModule } from '../modal/modal.module';\nimport { MultiselectModule } from '../multiselect/multiselect.module';\nimport { NotificationsModule } from '../notifications/notifications.module';\nimport { ImageCardModule } from '../photo-upload/image-card/image-card.module';\nimport { ToggleModule } from '../toggle/toggle.module';\nimport { FeedbackModalComponent } from './feedback-modal/feedback-modal.component';\nimport { ColorRangeComponent } from './feedback-screenshot/color-range/color-range.component';\nimport { FeedbackScreenshotComponent } from './feedback-screenshot/feedback-screenshot.component';\nimport { FeedbackSendComponent } from './feedback-send/feedback-send.component';\nimport { FeedbackSuccessComponent } from './feedback-success/feedback-success.component';\n@NgModule({\n  declarations: [FeedbackModalComponent, FeedbackScreenshotComponent, FeedbackSendComponent, FeedbackSuccessComponent],\n  exports: [FeedbackScreenshotComponent, FeedbackSendComponent, FeedbackSuccessComponent],\n  imports: [\n    CommonModule,\n    HttpClientModule,\n    IonicModule,\n    TranslateModule,\n    LibModalModule,\n    BaseCardModule,\n    ButtonsModule,\n    MultiselectModule,\n    MatIconModule,\n    FormsModule,\n    ToggleModule,\n    FormFieldModule,\n    InputFieldModule,\n    ImageCardModule,\n    NotificationsModule,\n    NgOptimizedImage,\n    ColorRangeComponent,\n    PipeModule,\n  ],\n})\nexport class FeedbackModule {}\n","export enum FooterTypes {\n  SHARED = 'shared',\n  TABS = 'tabs',\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { FooterTypes } from '../../enums/footer-type.enum';\n\n@Component({\n  selector: 'lib-footer-base',\n  standalone: true,\n  imports: [CommonModule, IonicModule],\n  templateUrl: './footer-base.component.html',\n  styleUrl: './footer-base.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FooterBaseComponent {\n  @Input() secondaryButtonText: boolean = false;\n  @Input() type: FooterTypes = FooterTypes.SHARED;\n  public FooterType = FooterTypes;\n}\n","<ion-footer\n  [ngClass]=\"{\n    'footer-shared': type === FooterType.SHARED,\n    'footer-tabs': type === FooterType.TABS,\n    'register-footer': !!secondaryButtonText,\n  }\"\n>\n  <div class=\"background\"></div>\n  <!-- content of every child -->\n  <ng-content></ng-content>\n</ion-footer>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable, of } from 'rxjs';\nimport { ButtonsModule } from '../../../buttons/buttons.module';\nimport { FooterTypes } from '../../enums/footer-type.enum';\nimport { FooterBaseComponent } from '../footer-base/footer-base.component';\n\n@Component({\n  selector: 'lib-footer-shared',\n  standalone: true,\n  imports: [CommonModule, IonicModule, ButtonsModule, TranslateModule, FooterBaseComponent],\n  templateUrl: './footer-shared.component.html',\n  styleUrl: './footer-shared.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FooterSharedComponent {\n  @Input() loading$: Observable<boolean> = of(false);\n  @Input() canContinue: boolean = false;\n  @Input() continueButtonText: string = '';\n  @Input() secondaryButtonText: string = '';\n  @Input() showBackButton: boolean = false;\n  @Input() continueButtonParameter$: Observable<string> = of('');\n\n  @Output() secondaryButtonClick: EventEmitter<void> = new EventEmitter<void>();\n  @Output() continueButtonClick: EventEmitter<void> = new EventEmitter();\n\n  public FooterType = FooterTypes;\n\n  public onContinueClick(): void {\n    this.continueButtonClick.emit();\n  }\n\n  public onSecondaryButtonClick(): void {\n    this.secondaryButtonClick.emit();\n  }\n}\n","<lib-footer-base [secondaryButtonText]=\"!!secondaryButtonText\" [type]=\"FooterType.SHARED\">\n  <lib-secondary-btn\n    *ngIf=\"secondaryButtonText\"\n    [class.lib-secondary-btn-footer]=\"secondaryButtonText\"\n    [loading$]=\"loading$\"\n    [disabled]=\"!canContinue\"\n    (click)=\"onSecondaryButtonClick()\"\n  >\n    {{ secondaryButtonText | translate }}\n  </lib-secondary-btn>\n  <lib-primary-btn\n    [class.lib-primary-btn-footer]=\"secondaryButtonText\"\n    [hoverOutline]=\"true\"\n    [loading$]=\"loading$\"\n    [disabled]=\"!canContinue\"\n    (click)=\"onContinueClick()\"\n    class=\"f-gilroy-regular f-w-400 f-xl h-160\"\n  >\n    @if (loading$ | async) {\n      <ion-spinner name=\"crescent\"></ion-spinner>\n    }\n\n    {{ continueButtonText || 'BUTTONS.SAVE' | translate }} {{ continueButtonParameter$ | async }}\n  </lib-primary-btn>\n</lib-footer-base>\n","import { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, OnDestroy, Output } from '@angular/core';\r\nimport { Gesture, GestureController, GestureDetail, IonicModule } from '@ionic/angular';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { IFooterTabModel } from '../../../../interfaces/footer-tab';\r\nimport { ButtonsModule } from '../../../buttons/buttons.module';\r\nimport { FooterTypes } from '../../enums/footer-type.enum';\r\nimport { FooterBaseComponent } from '../footer-base/footer-base.component';\r\n\r\n@Component({\r\n  selector: 'lib-footer-tabs',\r\n  standalone: true,\r\n  imports: [CommonModule, IonicModule, ButtonsModule, TranslateModule, FooterBaseComponent],\r\n  templateUrl: './footer-tabs.component.html',\r\n  styleUrls: ['./footer-tabs.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LibFooterTabsComponent implements AfterViewInit, OnDestroy {\r\n  @Input() watchBackdropUpdate$: Observable<boolean> = of(false);\r\n\r\n  @Input() footerTabs: IFooterTabModel[] = [];\r\n  @Input() activeTab: string = '';\r\n  @Input() enablePracticeMode: boolean = false;\r\n  @Input() icons: Record<string, string> = {};\r\n\r\n  @Output() handleTabClick: EventEmitter<IFooterTabModel> = new EventEmitter<IFooterTabModel>();\r\n\r\n  private gestureCtrl = inject(GestureController);\r\n  private el = inject(ElementRef);\r\n  private cdr = inject(ChangeDetectorRef);\r\n  private footerGesture!: Gesture;\r\n\r\n  public FooterType = FooterTypes;\r\n  public footerHeight = 70;\r\n  private maxFooterHeight = 70;\r\n  private minFooterHeight = 42;\r\n\r\n  ngAfterViewInit(): void {\r\n    this.listenToFooterDragging();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.footerGesture.destroy();\r\n  }\r\n\r\n  public onTabClick(tab: IFooterTabModel): void {\r\n    this.handleTabClick.emit(tab);\r\n  }\r\n\r\n  private listenToFooterDragging(): void {\r\n    this.footerGesture = this.gestureCtrl.create(\r\n      {\r\n        el: this.el.nativeElement,\r\n        gestureName: 'footer-gesture',\r\n        threshold: 0,\r\n        onMove: (event) => this.onDragMove(event),\r\n      },\r\n      true,\r\n    );\r\n    this.footerGesture.enable(true);\r\n  }\r\n\r\n  private onDragMove(event: GestureDetail): void {\r\n    const draggedValue = event.startY > event.currentY ? event.startY - event.currentY : event.currentY - event.startY;\r\n    const newHeight = event.startY > event.currentY ? this.footerHeight + draggedValue : this.footerHeight - draggedValue;\r\n    if (newHeight > this.maxFooterHeight) {\r\n      this.footerHeight = this.maxFooterHeight;\r\n    } else if (newHeight < this.minFooterHeight) {\r\n      this.footerHeight = this.minFooterHeight;\r\n    } else {\r\n      this.footerHeight = newHeight;\r\n    }\r\n    this.cdr.detectChanges();\r\n  }\r\n}\r\n","<lib-footer-base [style.height.px]=\"footerHeight\" [type]=\"FooterType.TABS\">\r\n  <div class=\"footer-dragger\"></div>\r\n\r\n  <div\r\n    class=\"custom-footer\"\r\n    [ngClass]=\"{\r\n      'footer-backdrop': (watchBackdropUpdate$ | async),\r\n    }\"\r\n  >\r\n    @for (tab of footerTabs; track tab) {\r\n      <button [ngClass]=\"{ active: activeTab === tab.name }\" mat-button disableRipple class=\"tab-item\" (click)=\"onTabClick(tab)\">\r\n        <div class=\"tab-item__sub\">\r\n          <img [src]=\"activeTab === tab.name ? icons[tab.activeIcon] : icons[tab.icon]\" alt=\"\" />\r\n          <ion-label>\r\n            <span>{{ tab.title | translate }}</span>\r\n          </ion-label>\r\n        </div>\r\n      </button>\r\n    }\r\n  </div>\r\n</lib-footer-base>\r\n","export enum FormGenStyle {\n  expander = 'expander',\n  flat = 'flat',\n}\n","export class FormGroupExpanderChange {\r\n  constructor(\r\n    public isOpened: boolean,\r\n    public groupTitle: string,\r\n  ) {}\r\n}\r\n","import { UntypedFormGroup } from '@angular/forms';\r\nimport { FormGenStyle } from '../../enums/form-gen-style';\r\nimport { FormSectionVariables } from './form-section-variables';\r\n\r\n/**\r\n * All the variables to display and validate a form.\r\n */\r\nexport class FormVariables {\r\n  public groups: FormSectionVariables[] = [];\r\n  public formGroup: UntypedFormGroup = new UntypedFormGroup({});\r\n  public formStyle: FormGenStyle = {} as FormGenStyle;\r\n\r\n  /**\r\n   *\r\n   * @param groupInfo - Variables needed to display child group.\r\n   * The new form group will be added to the current form group.\r\n   *\r\n   * Used to insert group into a form\r\n   */\r\n  public addGroupInfo(groupInfo: FormSectionVariables): void {\r\n    this.formGroup.addControl(groupInfo.id, groupInfo.formGroup);\r\n    this.groups.push(groupInfo);\r\n  }\r\n}\r\n","/**\n * Generates a unique ID using timestamp and random numbers\n * @returns A unique string ID\n */\nexport function generateUniqueId(): string {\n  const timestamp = Date.now().toString(36);\n  const randomStr = Math.random().toString(36).substring(2, 8);\n  return `${timestamp}-${randomStr}`;\n}\n","import { DatePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatAutocomplete, MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { MatOption } from '@angular/material/core';\r\nimport { addDays, differenceInMinutes, isAfter, isBefore, startOfDay } from 'date-fns';\r\nimport { ITimeSlot, ITimeSlotHours } from '../../model/input-time-field.models';\r\n\r\n@Component({\r\n  selector: 'lib-input-time-field',\r\n  templateUrl: './input-time-field.component.html',\r\n  styleUrls: ['./input-time-field.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => InputTimeFieldComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class InputTimeFieldComponent implements OnInit, ControlValueAccessor {\r\n  @ViewChild('auto') matAutocomplete!: MatAutocomplete;\r\n  @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) inputAutoComplete!: MatAutocompleteTrigger;\r\n  @Input() startDate: Date = addDays(new Date(), 2);\r\n  @Input() interval: number = 30;\r\n  @Input() displaySlotTime: boolean = false;\r\n  @Input()\r\n  set fromTime(fromTime: string | Date) {\r\n    this.fromTimeValue = fromTime ? new Date(fromTime) : null;\r\n    if (this.fromTimeValue && this.displaySlotTime) {\r\n      this.generateTimeSlots();\r\n      if (this.control.value && this.control.value['slotValue']) {\r\n        const slotTime = differenceInMinutes(new Date(this.control.value['slotValue']), this.fromTimeValue);\r\n        if (slotTime < 0) {\r\n          this.control.setValue(null as unknown as ITimeSlot);\r\n          this.onChange?.(null);\r\n        }\r\n      }\r\n    }\r\n  }\r\n  get fromTime(): string | Date {\r\n    return this.fromTimeValue as string | Date;\r\n  }\r\n  @Input() format: string = 'hh:mm aa';\r\n  @Input() label: string = '';\r\n  @Input() readonly: boolean = false;\r\n  @Input() showIcon: boolean = false;\r\n  @Input() public disabled: boolean = false;\r\n  @Output() focusEvent: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n  public timeSlots: ITimeSlot[] = [];\r\n  public filteredTimeSlots: ITimeSlot[] = [];\r\n  public control: FormControl<ITimeSlot | null> = new FormControl<ITimeSlot | null>(null);\r\n  public focused: boolean = false;\r\n  private onTouched: ((value: any) => void) | undefined;\r\n  private onChange: ((value: any) => void) | undefined;\r\n  private fromTimeValue: Date | null = null;\r\n  private readonly hourMinutes: number = 60;\r\n\r\n  constructor(\r\n    private cdr: ChangeDetectorRef,\r\n    private datePipe: DatePipe,\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.generateTimeSlots();\r\n  }\r\n\r\n  public writeValue(value: Date): void {\r\n    if (value) {\r\n      this.setTimeSlot(value);\r\n      this.activeSelectedValue();\r\n    }\r\n  }\r\n\r\n  public registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  public registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  public setDisabledState(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n    if (isDisabled) {\r\n      this.control.disable({ emitEvent: false });\r\n    } else {\r\n      this.control.enable({ emitEvent: false });\r\n    }\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  public onBlurPicker(): void {\r\n    this.focused = false;\r\n    this.onTouched?.(true);\r\n    this.focusEvent.emit(true);\r\n    this.onChange?.(this.control.value);\r\n  }\r\n\r\n  public onFocusPicker(): void {\r\n    this.focused = true;\r\n    this.focusEvent.emit(true);\r\n    this.inputAutoComplete.openPanel();\r\n    this.activeSelectedValue();\r\n  }\r\n\r\n  /**\r\n   * auto complete filter\r\n   * @param query\r\n   */\r\n  public filterTimeSlots(query?: string): void {\r\n    if (query) {\r\n      const timeParts: string[] = query.split(' ');\r\n      const charactersToRemove = /[HMPA]/gi;\r\n      let processedQuery = query.replace(charactersToRemove, '');\r\n      processedQuery = processedQuery.replace(/\\s/g, '');\r\n      this.filteredTimeSlots = this.timeSlots.filter(\r\n        (timeSlot) => timeSlot.slotLabel.indexOf(processedQuery.toUpperCase()) !== -1 && (!this.displaySlotTime || (this.displaySlotTime && (timeSlot.slotTime ?? 0) >= 0)),\r\n      );\r\n\r\n      // Use the original query for the timeParts reference, but processedQuery for the length check\r\n      const finalQuery = processedQuery + ' ' + (timeParts[1] || '');\r\n      if (finalQuery.length === 8) {\r\n        const selectedSlot =\r\n          this.filteredTimeSlots.find((timeSlot) => timeSlot.slotLabel === finalQuery.toUpperCase()) || this.buildTimeSlot(timeParts[0], finalQuery.toUpperCase());\r\n        if (selectedSlot) {\r\n          this.control.setValue(selectedSlot);\r\n        }\r\n      }\r\n    } else {\r\n      this.filteredTimeSlots = this.displaySlotTime ? this.timeSlots.filter((timeSlot) => (timeSlot.slotTime ?? 0) >= 0) : this.timeSlots;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * display slot label for the auto complete\r\n   * @param slot\r\n   */\r\n  public displayFn(slot: ITimeSlot): string {\r\n    return slot?.slotLabel ?? '';\r\n  }\r\n\r\n  /**\r\n   * on select slot\r\n   */\r\n  public onSelect(): void {\r\n    const selectedSlot = this.timeSlots.find((timeSlot) => timeSlot.slotLabel === this.control.value?.slotLabel);\r\n    this.onChange?.(selectedSlot?.slotValue);\r\n    if (selectedSlot) {\r\n      this.control.setValue(selectedSlot);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Build a Time Slot object based on the time entered by the user in case the fixed slots do not exist.\r\n   * @param time\r\n   * @param slotLabel\r\n   * @private\r\n   */\r\n  private buildTimeSlot(time: string, slotLabel: string): ITimeSlot | null {\r\n    const hmTimeParts = time.split(':');\r\n    const hours = Number(hmTimeParts[0]);\r\n    const minutes = Number(hmTimeParts[1]);\r\n    const slotValue: Date = startOfDay(this.startDate);\r\n    slotValue.setHours(hours === 0 ? 12 : hours);\r\n    slotValue.setMinutes(minutes);\r\n    if (this.timeSlots.length === 0 || isBefore(slotValue, this.timeSlots[0].slotValue) || isAfter(slotValue, this.timeSlots[this.timeSlots.length - 1].slotValue)) {\r\n      return null;\r\n    } else {\r\n      const selectedSlot: ITimeSlot = { slotLabel, slotValue };\r\n      if (this.timeSlots.indexOf(selectedSlot) === -1) {\r\n        this.timeSlots.push(selectedSlot);\r\n        this.filteredTimeSlots.push(selectedSlot);\r\n        this.cdr.detectChanges();\r\n      }\r\n      return selectedSlot;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * generate the time picker slots based on the given (interval) minutes between each date\r\n   * @private\r\n   */\r\n  private generateTimeSlots(): void {\r\n    this.timeSlots = [];\r\n    const minutesInDay = 24 * 60;\r\n    const intervalsInDay = minutesInDay / this.interval;\r\n    let currentDate = startOfDay(this.startDate);\r\n    for (let i = 0; i < intervalsInDay; i++) {\r\n      const slotLabel = this.datePipe.transform(currentDate, this.format);\r\n      if (slotLabel) {\r\n        const slotWitHours = this.buildSlotLabelWitHours(slotLabel, currentDate);\r\n        this.timeSlots.push({\r\n          slotLabel,\r\n          slotValue: currentDate,\r\n          ...slotWitHours,\r\n        });\r\n      }\r\n      currentDate = new Date(currentDate.getTime() + this.interval * 60000);\r\n    }\r\n    if (this.fromTimeValue && this.displaySlotTime) {\r\n      this.filterTimeSlots();\r\n    } else {\r\n      this.filteredTimeSlots = this.timeSlots;\r\n    }\r\n    this.cdr.detectChanges();\r\n    this.control.valueChanges.subscribe((value) => {\r\n      if (typeof value === 'string') {\r\n        this.filterTimeSlots(value);\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * build slot with hours label\r\n   * @param slotLabel\r\n   * @param slotValue\r\n   * @private\r\n   */\r\n  private buildSlotLabelWitHours(slotLabel: string, slotValue: Date): ITimeSlotHours | null {\r\n    if (this.fromTimeValue && this.displaySlotTime) {\r\n      const slotMinutes = differenceInMinutes(slotValue, this.fromTimeValue);\r\n      if (this.interval > 0 && slotMinutes > 0 && slotMinutes < this.interval) {\r\n        return null;\r\n      }\r\n      return slotMinutes > 0\r\n        ? {\r\n            slotLabelWitHours: this.formatTimeSlot(slotMinutes, slotLabel),\r\n            slotTime: slotMinutes,\r\n          }\r\n        : null;\r\n    } else {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  // Format the slot time to hh:mm and append the appropriate suffix (hrs/hr/mins).\r\n  private formatTimeSlot(slotMinutes: number, slotLabel: string): string {\r\n    let formattedSlot = '';\r\n    if (slotMinutes < this.hourMinutes) {\r\n      formattedSlot = `${slotMinutes}m`;\r\n    } else {\r\n      const hours = Math.floor(slotMinutes / this.hourMinutes);\r\n      const minutes = slotMinutes % this.hourMinutes;\r\n      formattedSlot = minutes === 0 ? `${hours}h` : `${hours}h ${minutes}m`;\r\n    }\r\n    return `${slotLabel} (${formattedSlot})`;\r\n  }\r\n\r\n  /**\r\n   * set the selected time slot value\r\n   * @param slotValue\r\n   * @private\r\n   */\r\n  private setTimeSlot(slotValue: Date): void {\r\n    if (this.timeSlots.length === 0 || isBefore(slotValue, this.timeSlots[0].slotValue)) {\r\n      this.control.setValue(null);\r\n      this.onChange?.(null);\r\n    } else {\r\n      const slotLabel: string | null = this.datePipe.transform(slotValue, this.format);\r\n      if (slotLabel) {\r\n        let selectedSlot = this.timeSlots.find((timeSlot) => timeSlot.slotLabel === slotLabel);\r\n        if (!selectedSlot) {\r\n          const slotWitHours = this.buildSlotLabelWitHours(slotLabel, slotValue);\r\n          if (slotWitHours) {\r\n            selectedSlot = { slotLabel, slotValue, ...slotWitHours };\r\n            this.timeSlots.push(selectedSlot);\r\n          }\r\n        }\r\n        if (selectedSlot) {\r\n          this.control.setValue(selectedSlot);\r\n          this.onChange?.(selectedSlot.slotValue);\r\n        }\r\n      }\r\n    }\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  private activeSelectedValue(): void {\r\n    if (this.control.value && this.matAutocomplete) {\r\n      const selectedOption: MatOption | undefined = this.matAutocomplete.options.find((option: MatOption) => option.value?.slotLabel === this.control.value?.slotLabel);\r\n      if (selectedOption) {\r\n        selectedOption.select();\r\n        (selectedOption as any)['_getHostElement']().scrollIntoView({ behavior: 'auto', block: 'start', inline: 'start' });\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div class=\"content-wrapper\">\r\n  <input\r\n    class=\"time-input\"\r\n    #inputAutoComplete\r\n    mask=\"00:00 SS\"\r\n    [dropSpecialCharacters]=\"false\"\r\n    [formControl]=\"control\"\r\n    [readonly]=\"readonly\"\r\n    [class]=\"readonly ? 'input-field-readonly' : 'input-field'\"\r\n    [name]=\"label\"\r\n    [matAutocomplete]=\"auto\"\r\n    (blur)=\"onBlurPicker()\"\r\n    (focus)=\"onFocusPicker()\"\r\n  />\r\n  <mat-icon class=\"time-input-icon\" matRipple *ngIf=\"showIcon\" (click)=\"inputAutoComplete.focus()\">alarm</mat-icon>\r\n  <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\" (optionSelected)=\"onSelect()\">\r\n    <mat-option *ngFor=\"let slot of filteredTimeSlots\" [value]=\"slot\" class=\"mat-accent\">\r\n      {{ displaySlotTime ? slot.slotLabelWitHours || slot.slotLabel : slot.slotLabel }}\r\n    </mat-option>\r\n  </mat-autocomplete>\r\n  <label *ngIf=\"label\" class=\"input-label\" [ngClass]=\"{ 'with-value': control.value }\">{{ label }}</label>\r\n  <div class=\"error-outline\"></div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class InputFieldCardService {\n  private maskCharacters = new Map([\n    ['d', true],\n    ['D', true],\n  ]);\n\n  /**\n   * validates using Luhrs algorithm\n   * @param cardNumber\n   * @param cardLength\n   */\n  public isValidCardNumber(cardNumber: string, cardLength: number): boolean {\n    const numbers = new Array(cardNumber.length);\n    let currNumber = 0;\n    for (let i = 0; i < numbers.length; i++) {\n      currNumber = Number(cardNumber[i]);\n      if (isNaN(currNumber)) {\n        return false;\n      }\n      if (i % 2 !== 0) {\n        numbers[i] = currNumber;\n      } else {\n        const n = currNumber * 2;\n        numbers[i] = n > 9 ? n % 9 : n;\n      }\n    }\n    return numbers.reduce((prevValue, currValue) => prevValue + currValue, 0) % 10 === 0 && cardNumber?.length === cardLength;\n  }\n\n  public mask(cardNumber: string, format: string): string {\n    const formatLength = format.length;\n    let b = 0;\n    let maskedOutput = '';\n    for (let a = 0; a < cardNumber.length; a++, b++) {\n      if (b >= formatLength) {\n        b = 1;\n      }\n      if (this.maskCharacters.get(format[b])) {\n        maskedOutput += cardNumber[a];\n      } else {\n        maskedOutput += `${format[b]} ${cardNumber[a]}`;\n        b++;\n      }\n    }\n    return maskedOutput;\n  }\n\n  public isMasterCard(cardNumber: string): boolean {\n    const mostRecent = Number(cardNumber.substring(0, 4));\n    return /^5[1-5]/.test(cardNumber) || (mostRecent >= 2221 && mostRecent <= 2721);\n  }\n\n  public isVisaCard(cardNumber: string): boolean {\n    return cardNumber.startsWith('4');\n  }\n\n  public isAmericanExpressCard(cardNumber: string): boolean {\n    return /^3[4|7]/.test(cardNumber);\n  }\n\n  /** China T-Union: 31*/\n  public isChinaTUnion(cardNumber: string): boolean {\n    return cardNumber.startsWith('31');\n  }\n\n  /** China Union Pay: 62*/\n  public isChinaUnionPay(cardNumber: string): boolean {\n    return cardNumber.startsWith('62');\n  }\n\n  /** Diners Club International: 36 */\n  public isDinersClubInternational(cardNumber: string): boolean {\n    return cardNumber.startsWith('36');\n  }\n\n  /** Diners Club United States & Canada: 54 */\n  public isDinersClubCAUS(cardNumber: string): boolean {\n    return cardNumber.startsWith('54');\n  }\n\n  /** Discover Card:  6011, 644-649, 65 */\n  public isDiscoverCard(cardNumber: string): boolean {\n    const range1 = Number(cardNumber.substring(0, 3));\n    return cardNumber.startsWith('6011') || cardNumber.startsWith('65') || (range1 >= 644 && range1 <= 649);\n  }\n\n  /** Discover Card Co UnionPay: 622126–622925 */\n  public isDiscoverCardCoUnionPay(cardNumber: string): boolean {\n    const range = Number(cardNumber.substring(0, 6));\n    return range >= 622126 && range <= 622925;\n  }\n\n  /** Rupay: 60, 65, 81, 82, 508 */\n  public isRuPay(cardNumber: string): boolean {\n    const prefixes = ['60', '65', '81', '82', '508'];\n    return prefixes.some((prefix) => cardNumber.startsWith(prefix));\n  }\n\n  /** RuPay Co JCB: 353, 356 */\n  public isRuPayCoJCB(cardNumber: string): boolean {\n    return /^35[3|6]/.test(cardNumber);\n  }\n\n  /** InterPayment: 636 */\n  public isInterPayment(cardNumber: string): boolean {\n    return cardNumber.startsWith('636');\n  }\n\n  /** JCB 3528–3589*/\n  public isJCB(cardNumber: string): boolean {\n    const range = Number(cardNumber.substring(0, 4));\n    return range >= 3528 && range <= 3589;\n  }\n\n  /** Maestro UK: 6759, 676770, 676774 */\n  public isMaestroUk(cardNumber: string): boolean {\n    const prefixes = ['6759', '676770', '5038', '676774'];\n    return prefixes.some((prefix) => cardNumber.startsWith(prefix));\n  }\n\n  /** Maestro: \t5018, 5020, 5038, 5893, 6304, 6759, 6761, 6762, 6763 */\n  public isMaestro(cardNumber: string): boolean {\n    const prefixes = ['5018', '5020', '5038', '5893', '6304', '6759', '6761', '6762', '6763'];\n    return prefixes.some((prefix) => cardNumber.startsWith(prefix));\n  }\n\n  /** Dankort: 5019 */\n  public isDankurt(cardNumber: string): boolean {\n    return cardNumber.startsWith('5019');\n  }\n\n  /** DankorkCoVisa: 4571 */\n  public isDankurtCoVisa(cardNumber: string): boolean {\n    return cardNumber.startsWith('4571');\n  }\n\n  /** Mir: 2200–2204 */\n  public isMir(cardNumber: string): boolean {\n    const range = Number(cardNumber.substring(0, 4));\n    return range >= 2200 && range <= 2204;\n  }\n\n  /** NPS Pridnestrovie: 6054740–6054744 */\n  public npsPridnestrovie(cardNumber: string): boolean {\n    const range = Number(cardNumber.substring(0, 4));\n    return range >= 6054740 && range <= 6054744;\n  }\n\n  /** Visa Electron: 4026, 417500, 4508, 4844, 4913, 4917 */\n  public isVisaElectron(cardNumber: string): boolean {\n    return false;\n  }\n\n  /** Troy: 65 9792 */\n  public isTroy(cardNumber: string): boolean {\n    return cardNumber.startsWith('65') || cardNumber.startsWith('9792');\n  }\n\n  /** Verve: 506099–506198, 650002–650027, 507865-507964 */\n  public isVerve(cardNumber: string, value: any): boolean {\n    const range1 = Number(cardNumber.substring(0, 6));\n    return (range1 >= 506099 && range1 <= 506198) || (range1 >= 650002 && range1 <= 650027) || (range1 >= 507865 && range1 <= 507964);\n  }\n\n  public onKeyDown(event: KeyboardEvent, value: string, maxLenth: number): boolean {\n    if (event.key === 'ArrowLeft' || event.key === 'ArrowRight' || (event.ctrlKey && event.key.toLowerCase() === 'v')) {\n      return false;\n    }\n    if (event.key === 'Backspace') {\n      return true;\n    }\n    if (value.length >= maxLenth || event.key === ' ' || !/\\d/.test(event.key)) {\n      event.preventDefault();\n      return false;\n    }\n    return false;\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, NgZone, Output, ViewChild } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\nimport { ICardBrand } from '../../../model/input-field-card.models';\nimport { InputFieldComponent } from '../../input-field/input-field.component';\nimport { MapService } from '../../map/map.service';\nimport { InputFieldCardService } from '../input-field-card.service';\n\n@Component({\n  selector: 'lib-input-field-card-number',\n  templateUrl: './input-field-card-number.component.html',\n  styleUrls: ['./input-field-card-number.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: InputFieldCardNumberComponent,\n    },\n    {\n      provide: NG_VALIDATORS,\n      multi: true,\n      useExisting: InputFieldCardNumberComponent,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class InputFieldCardNumberComponent extends InputFieldComponent implements Validator {\n  @ViewChild('inputElem') inputElem!: ElementRef;\n  @Input() cardBrands: ICardBrand[] = [];\n  @Input() amExpressMask: string = 'dddd dddddd ddddd';\n  @Input() mask4: string = 'dddd dddd dddd dddd';\n  @Output() updateCardType: EventEmitter<string> = new EventEmitter<string>();\n  public value: string = '';\n  public cardType: string = '';\n  public cardBrandLogo: string = '';\n  private cardLength: number = 16;\n  private isDelete: boolean = false;\n  private cardMask: string = this.mask4;\n  private caretPosition: number = 0;\n\n  constructor(\n    private zone: NgZone,\n    private inputFieldCardService: InputFieldCardService,\n    private cdrRef: ChangeDetectorRef,\n    private mapServiceRef: MapService,\n  ) {\n    super(zone, cdrRef, mapServiceRef);\n  }\n\n  public override writeValue(cardNumber: string): void {\n    cardNumber = cardNumber?.replace(/\\s/g, '') || '';\n    for (const digit of cardNumber) {\n      if (/\\d/.test(digit) !== true) {\n        this.value = '';\n        return;\n      }\n    }\n    this.value = cardNumber;\n    this.cdrRef.detectChanges();\n  }\n\n  public override onKeyDown(event: KeyboardEvent): void {\n    this.isDelete = this.inputFieldCardService.onKeyDown(event, this.value || '', this.cardLength);\n  }\n\n  public validate(control: AbstractControl): ValidationErrors | null {\n    if (!this.inputFieldCardService.isValidCardNumber(control.value || '', this.cardLength)) {\n      return { invalidCardNumber: true };\n    }\n    return null;\n  }\n\n  public onPaste(event: ClipboardEvent): void {\n    event.preventDefault();\n    const caretPos = (event.target as HTMLInputElement).selectionStart || 0;\n    const data = event.clipboardData?.getData('text') || '';\n    let value = '';\n    for (const ch of data) {\n      if (!/\\d/.test(ch)) {\n        continue;\n      }\n      value += ch;\n    }\n    this.value = (this.value || '').substring(0, caretPos) + value + (this.value || '').substring(caretPos);\n    this.updateValue();\n  }\n\n  public onInput(event: InputEvent | Event): void {\n    const inputElement = event.currentTarget as HTMLInputElement;\n    this.caretPosition = inputElement.selectionStart || 0;\n    this.value = inputElement.value.replace(/\\s/g, '');\n    this.updateValue();\n  }\n\n  public updateValue(): void {\n    const inputElement = this.inputElem.nativeElement;\n    this.cardLength = 16;\n    this.cardMask = this.mask4;\n    this.cardType = '';\n\n    const currentValue = this.value || '';\n\n    if (this.inputFieldCardService.isVisaCard(currentValue)) {\n      this.cardType = 'visa';\n    } else if (this.inputFieldCardService.isMasterCard(currentValue)) {\n      this.cardType = 'mastercard';\n    } else if (this.inputFieldCardService.isAmericanExpressCard(currentValue)) {\n      this.cardType = 'americanExpress';\n      this.cardMask = this.amExpressMask;\n      this.cardLength = 15;\n    }\n\n    if (this.cardType) {\n      this.cardBrandLogo = this.cardBrands.find((value1) => value1.type === this.cardType)?.icon || '';\n    } else {\n      this.cardBrandLogo = '';\n    }\n\n    this.updateCardType.emit(this.cardType);\n\n    if (currentValue.length > this.cardLength) {\n      this.value = currentValue.substring(0, this.cardLength);\n    }\n\n    inputElement.value = this.inputFieldCardService.mask(this.value || '', this.cardMask);\n\n    if ((this.value?.length || 0) > this.caretPosition || this.isDelete) {\n      inputElement.selectionStart = this.caretPosition;\n      inputElement.selectionEnd = this.caretPosition;\n    } else {\n      inputElement.selectionStart = this.caretPosition + 2;\n      inputElement.selectionEnd = this.caretPosition + 2;\n    }\n\n    if ((this.value?.length || 0) === this.cardLength) {\n      this.inputFieldCardService.isValidCardNumber(this.value || '', this.cardLength);\n    }\n\n    this.onChange(this.value);\n  }\n\n  public isValidCardNumber(cardNumber: string): boolean {\n    return this.inputFieldCardService.isValidCardNumber(cardNumber, this.cardLength);\n  }\n}\n","<div class=\"content-wrapper\">\n  <input\n    class=\"input-field-card\"\n    [name]=\"name || label\"\n    [attr.autocomplete]=\"autocomplete\"\n    [readonly]=\"readonly\"\n    [class]=\"readonly ? 'input-field-readonly' : 'input-field'\"\n    (keydown)=\"onKeyDown($event)\"\n    (input)=\"onInput($event)\"\n    (change)=\"isValidCardNumber(value)\"\n    (paste)=\"onPaste($event)\"\n    #inputElem\n    [disabled]=\"disabled\"\n    (blur)=\"touched(true)\"\n    inputmode=\"numeric\"\n  />\n  <img [src]=\"cardBrandLogo\" alt=\"\" class=\"card-type\" *ngIf=\"cardBrandLogo && (value?.length ?? 0) > 0\" />\n  <label *ngIf=\"label\" class=\"input-label card-input-label\" [ngClass]=\"{ 'with-value': value.length > 0 }\">{{ label }}</label>\n  <div class=\"error-outline\"></div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, NgZone, OnInit, ViewChild } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\nimport { ICardDetails } from '../../../model/input-field-card.models';\nimport { InputFieldComponent } from '../../input-field/input-field.component';\nimport { MapService } from '../../map/map.service';\n\n@Component({\n  selector: 'lib-input-field-card-expiry',\n  templateUrl: './input-field-card-expiry.component.html',\n  styleUrls: ['./input-field-card-expiry.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: InputFieldCardExpiryComponent,\n    },\n    {\n      provide: NG_VALIDATORS,\n      multi: true,\n      useExisting: InputFieldCardExpiryComponent,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class InputFieldCardExpiryComponent extends InputFieldComponent<ICardDetails> implements OnInit, Validator {\n  @ViewChild('inputElem') inputElem!: ElementRef;\n\n  declare public value: ICardDetails;\n  public override placeholder: string = 'MM/YY';\n\n  private currentMonth: number = 0;\n  private currentYear: number = 0;\n\n  constructor(\n    private zone: NgZone,\n    private cdrRef: ChangeDetectorRef,\n    private mapServiceRef: MapService,\n  ) {\n    super(zone, cdrRef, mapServiceRef);\n  }\n\n  ngOnInit(): void {\n    this.initValidationDate();\n  }\n\n  public override writeValue(expiry: ICardDetails): void {\n    this.value.month = expiry?.month;\n    this.value.year = expiry?.year?.slice(-2);\n    this.cdrRef.detectChanges();\n  }\n\n  public validate(control: AbstractControl): ValidationErrors | null {\n    const yearValue = Number(control.value.year);\n    const monthValue = Number(control.value.month);\n    if (monthValue > 12) {\n      return { invalid: true };\n    }\n\n    let valid = false;\n\n    if (yearValue > this.currentYear) {\n      valid = true;\n    } else if (yearValue === this.currentYear) {\n      valid = monthValue >= this.currentMonth;\n    }\n    return valid ? null : { expired: true };\n  }\n\n  public onInput(): void {\n    const inputValue = this.inputElem.nativeElement.value?.replace(/[MY]/g, '').split('/');\n    this.value = { month: inputValue[0], year: inputValue[1] };\n    this.onChange(this.value);\n  }\n\n  private initValidationDate(): void {\n    this.value = { month: '', year: '' };\n    const today = new Date();\n    this.currentMonth = today.getMonth() + 1;\n    this.currentYear = today.getFullYear() % 100;\n  }\n}\n","<div class=\"content-wrapper\">\n  <input\n    #inputElem\n    class=\"input-field-card\"\n    [name]=\"name || label\"\n    [attr.autocomplete]=\"autocomplete\"\n    [readonly]=\"readonly\"\n    [disabled]=\"disabled\"\n    [class]=\"readonly ? 'input-field-readonly' : 'input-field'\"\n    [placeholder]=\"focus && !(value.month.length > 0 || value.year.length > 0) ? placeholder : ''\"\n    [mask]=\"'00/00'\"\n    [placeHolderCharacter]=\"placeholder\"\n    [showMaskTyped]=\"focus\"\n    [shownMaskExpression]=\"focus && !(value.month.length > 0 || value.year.length > 0) ? placeholder : ''\"\n    (input)=\"onInput()\"\n    (focus)=\"focus = true\"\n    (blur)=\"touched(true); focus = false\"\n    inputmode=\"numeric\"\n  />\n  <label *ngIf=\"label\" class=\"input-label card-input-label\" [ngClass]=\"{ 'with-value': value.month.length > 0 || value.year.length > 0 }\">\n    {{ label }}\n  </label>\n  <div class=\"error-outline\"></div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { ItemInfoLine } from '../../model/item-info-line';\r\nimport { ItemSummary } from '../../model/item-summary';\r\n\r\n@Component({\r\n  selector: 'lib-info-card',\r\n  templateUrl: './info-card.component.html',\r\n  styleUrls: ['./info-card.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class InfoCardComponent {\r\n  @Input() item: ItemSummary<any> | null = null; // Fix: Add initializer\r\n  @Input() checkable = false;\r\n  @Input() checked = false;\r\n  @Input() selectable = false;\r\n  @Output() checkedChange: EventEmitter<{ item: ItemSummary<any>; checked: boolean }> = new EventEmitter();\r\n  @Output() selected: EventEmitter<ItemSummary<any>> = new EventEmitter();\r\n\r\n  // ----- Methods called by template -----\r\n\r\n  /**\r\n   * Emits an event indicating that the InfoCard was clicked.\r\n   */\r\n  public selectItem() {\r\n    if (this.item && this.selectable && !this.item.disabled) {\r\n      this.selected.emit(this.item);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Calls the the ItemSummary's header function\r\n   */\r\n  public selectHeader() {\r\n    if (this.item && !this.item.disabled && !this.selectable && this.item.header.action) {\r\n      this.item.header.action();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Calls the the ItemSummary's header function subheader function for the given subheader\r\n   */\r\n  public selectSubheader(subheader: ItemInfoLine) {\r\n    if (this.item && subheader.action && !this.item.disabled && !this.selectable) {\r\n      subheader.action();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Calls the the ItemSummary's header function detail function for the given detail\r\n   */\r\n  public selectDetail(detail: ItemInfoLine) {\r\n    if (this.item && detail.action && !this.item.disabled && !this.selectable) {\r\n      detail.action();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Calls the the ItemSummary's action handler function\r\n   */\r\n  public handleAction(action: ((arg: ItemSummary<any>) => any) | undefined) {\r\n    // Fix: Make parameter optional\r\n    if (this.item && action && !this.item.disabled && !this.selectable) {\r\n      action(this.item);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Emits an event indicating that the checkbox has been checked or unchecked\r\n   *\r\n   * @param event - The Angular Material event indicating the checked state of the checkbox\r\n   */\r\n  public handleCheckedValueChange(event: boolean) {\r\n    if (this.item && !this.item.disabled && !this.selectable) {\r\n      this.checkedChange.emit({\r\n        item: this.item,\r\n        checked: event,\r\n      });\r\n    }\r\n  }\r\n  public safeHtmlToString(value: any): string {\r\n    if (!value) return '';\r\n    if (typeof value === 'string') return value;\r\n    return value.toString();\r\n  }\r\n}\r\n","<div class=\"info-card\" [ngClass]=\"{ 'info-card--disabled': item?.disabled, 'info-card--selectable': selectable }\" (click)=\"selectItem()\">\r\n  <div *ngIf=\"checkable\" class=\"info-card__item-checkbox\">\r\n    <lib-dashed-checkbox [checked]=\"checked\" (toggle)=\"handleCheckedValueChange($event)\"></lib-dashed-checkbox>\r\n  </div>\r\n  <div class=\"info-card__item-visual-container\" *ngIf=\"item?.abbreviation || item?.icon || item?.image\">\r\n    <div\r\n      class=\"info-card__item-visual\"\r\n      [ngClass]=\"{ 'info-card__item-visual--disabled': item?.disabled }\"\r\n      [ngStyle]=\"{ 'background-color': item?.iconBackgroundColor || '#E3E8EA' }\"\r\n      [id]=\"item?.item?.ContactId ? '#contactImage' : '#personnelImage'\"\r\n    >\r\n      <div *ngIf=\"item?.abbreviation && !item?.icon && !item?.image\" [innerHTML]=\"item?.abbreviation\" class=\"info-card__item-abbrev\"></div>\r\n      <div\r\n        *ngIf=\"item?.icon && !item?.image\"\r\n        [innerHTML]=\"item?.icon\"\r\n        [ngStyle]=\"{ 'background-color': item?.iconBackgroundColor || '#E3E8EA' }\"\r\n        class=\"info-card__item-icon\"\r\n      ></div>\r\n      <img *ngIf=\"item?.image\" [src]=\"item?.image\" class=\"info-card__item-image\" />\r\n    </div>\r\n    <div *ngIf=\"item?.visualIcon\" class=\"info-card__item-visual-icon\" [innerHTML]=\"item?.visualIcon\"></div>\r\n  </div>\r\n  <div class=\"info-card__item-info\">\r\n    <div class=\"info-card__item-info-line\">\r\n      <div class=\"info-card__item-info-line-inner\" [libTooltip]=\"item?.header?.tooltipText || ''\">\r\n        <div\r\n          [ngClass]=\"{ 'info-card__item-link': item?.item && item?.header?.action && !item?.disabled && !selectable, 'info-card__item-header--disabled': item?.disabled }\"\r\n          [innerHTML]=\"item?.header?.label || ''\"\r\n          id=\"#infoCardHeader\"\r\n          (click)=\"selectHeader()\"\r\n          class=\"info-card__item-header\"\r\n        ></div>\r\n      </div>\r\n      <div\r\n        *ngFor=\"let icon of item?.header?.iconTray || []\"\r\n        class=\"info-card__item-icon-tray\"\r\n        [ngClass]=\"{ 'info-card__item-icon-tray--clickable': icon?.action && !item?.disabled && !selectable }\"\r\n        [innerHTML]=\"icon?.displayHtml\"\r\n        [libTooltip]=\"icon?.toolTip ? safeHtmlToString(icon.toolTip) : ''\"\r\n        (click)=\"handleAction(icon?.action)\"\r\n      ></div>\r\n    </div>\r\n    <div *ngFor=\"let subheader of item?.subheaders || []\" class=\"info-card__item-info-line\">\r\n      <div class=\"info-card__item-info-line-inner\" [libTooltip]=\"subheader?.tooltipText || ''\">\r\n        <div\r\n          [innerHTML]=\"subheader?.label || ''\"\r\n          [ngClass]=\"{ 'info-card__item-subheader--disabled': item?.disabled, 'info-card__item-link': subheader?.action && !item?.disabled && !selectable }\"\r\n          (click)=\"selectSubheader(subheader)\"\r\n          class=\"info-card__item-subheader\"\r\n        ></div>\r\n      </div>\r\n      <div\r\n        *ngFor=\"let icon of subheader?.iconTray || []\"\r\n        class=\"info-card__item-icon-tray\"\r\n        [ngClass]=\"{ 'info-card__item-icon-tray--clickable': icon?.action && !item?.disabled && !selectable }\"\r\n        [innerHTML]=\"icon?.displayHtml\"\r\n        [libTooltip]=\"icon?.toolTip ? safeHtmlToString(icon.toolTip) : ''\"\r\n        (click)=\"handleAction(icon?.action)\"\r\n      ></div>\r\n    </div>\r\n    <div *ngFor=\"let detail of item?.details || []\" class=\"info-card__item-info-line\">\r\n      <div class=\"info-card__item-info-line-inner\" [libTooltip]=\"detail?.tooltipText || ''\">\r\n        <div\r\n          [innerHTML]=\"detail?.label || ''\"\r\n          [ngClass]=\"{ 'info-card__item-link': detail?.action && !item?.disabled && !selectable }\"\r\n          (click)=\"selectDetail(detail)\"\r\n          class=\"info-card__item-detail\"\r\n        ></div>\r\n      </div>\r\n      <div\r\n        *ngFor=\"let icon of detail?.iconTray || []\"\r\n        class=\"info-card__item-icon-tray\"\r\n        [ngClass]=\"{ 'info-card__item-icon-tray--clickable': icon?.action && !item?.disabled && !selectable }\"\r\n        [innerHTML]=\"icon?.displayHtml\"\r\n        [libTooltip]=\"icon?.toolTip ? safeHtmlToString(icon.toolTip) : ''\"\r\n        (click)=\"handleAction(icon?.action)\"\r\n      ></div>\r\n    </div>\r\n  </div>\r\n  <div *ngIf=\"item?.actionHandler as actionHandler\" class=\"info-card__action-handler\">\r\n    <div\r\n      [innerHTML]=\"actionHandler.displayHtml || ''\"\r\n      class=\"info-card__action-handler-icon\"\r\n      [ngClass]=\"{ 'info-card__action-handler-icon--clickable': actionHandler.action !== undefined && !item?.disabled && !selectable }\"\r\n      id=\"#associateIcon\"\r\n      (click)=\"handleAction(actionHandler.action)\"\r\n      [libTooltip]=\"actionHandler.toolTip ? safeHtmlToString(actionHandler.toolTip) : ''\"\r\n    ></div>\r\n  </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { ItemSummary } from '../../model/item-summary';\r\n\r\n@Component({\r\n  selector: 'lib-info-card-list',\r\n  templateUrl: './info-card-list.component.html',\r\n  styleUrls: ['./info-card-list.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class InfoCardListComponent implements OnInit, OnDestroy {\r\n  @Input() checkable = false;\r\n  @Input() defaultCheckedValue = false;\r\n  @Input() scrollable = false;\r\n  @Input() filterable = true;\r\n  @Input() selectable = false;\r\n  @Input()\r\n  set maxCount(value: number) {\r\n    this._maxCount = value;\r\n    if (this.itemList) {\r\n      this.displayList = this.itemList.slice(0, this.maxCount);\r\n    }\r\n  }\r\n  get maxCount(): number {\r\n    return this._maxCount;\r\n  }\r\n  @Input()\r\n  set itemList(value: ItemSummary<any>[]) {\r\n    this._itemList = value;\r\n    this.displayList = value.slice(0, this.maxCount);\r\n  }\r\n  get itemList(): ItemSummary<any>[] {\r\n    return this._itemList;\r\n  }\r\n  @Input() itemType = '';\r\n  @Output() checkedChange: EventEmitter<{ item: ItemSummary<any>; checked: boolean }> = new EventEmitter();\r\n  @Output() itemSelected: EventEmitter<ItemSummary<any>> = new EventEmitter();\r\n\r\n  public filterStringSubject: Subject<string> = new Subject();\r\n  private componentDestroyed$: Subject<void> = new Subject();\r\n\r\n  private _maxCount = 10;\r\n  private _itemList: ItemSummary<any>[] = [];\r\n  public displayList: ItemSummary<any>[] = [];\r\n\r\n  constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n  // ----- Angular lifecycle methods -----\r\n\r\n  ngOnInit() {\r\n    this.filterStringSubject\r\n      .asObservable()\r\n      .pipe(debounceTime(100), takeUntil(this.componentDestroyed$))\r\n      .subscribe((filterValue: string) => {\r\n        this.displayList = this._itemList\r\n          .filter((item) => {\r\n            const filterValueCapitalized = filterValue.toLocaleUpperCase();\r\n            const searchStrings: string[] = [];\r\n            if (item.header.label) {\r\n              searchStrings.push(item.header.label.toLocaleUpperCase());\r\n            }\r\n            item.subheaders.forEach((subheader) => {\r\n              if (subheader.label) {\r\n                searchStrings.push(subheader.label.toLocaleUpperCase());\r\n              }\r\n            });\r\n            item.details.forEach((detail) => {\r\n              if (detail.label) {\r\n                searchStrings.push(detail.label.toLocaleUpperCase());\r\n              }\r\n            });\r\n            let retVal = false;\r\n            searchStrings.forEach((searchString) => {\r\n              if (searchString.includes(filterValueCapitalized)) {\r\n                retVal = true;\r\n              }\r\n            });\r\n            return retVal;\r\n          })\r\n          .slice(0, this.maxCount);\r\n        this.changeDetectorRef.detectChanges();\r\n      });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.componentDestroyed$.next();\r\n    this.componentDestroyed$.complete();\r\n  }\r\n\r\n  // ----- Methods called by template -----\r\n\r\n  /**\r\n   *\r\n   * Indicates that the user has changed the filter value\r\n   *\r\n   * @param filterValue - The new filter value\r\n   */\r\n  public filterChange(filterValue: string): void {\r\n    this.filterStringSubject.next(filterValue);\r\n  }\r\n\r\n  /**\r\n   *\r\n   * Emits an event indicating that the checkbox in one of the InfoCards in the\r\n   * list has been checked or unchecked\r\n   *\r\n   * @param event - Contains the ItemSummary corresponding to the checked/unchecked InfoCard,\r\n   * and a boolean indicating the current state of the checkbox\r\n   */\r\n  public handleCheckedValueChange(event: { item: ItemSummary<any>; checked: boolean }): void {\r\n    this.checkedChange.emit(event);\r\n  }\r\n\r\n  /**\r\n   *\r\n   * Emits an event indicating that on of the InfoCards has been selected\r\n   *\r\n   * @param item - The ItemSummary corresponding to the selected InfoCard\r\n   */\r\n  public handleItemSelected(item: ItemSummary<any>): void {\r\n    this.itemSelected.emit(item);\r\n  }\r\n}\r\n","<div class=\"info-list\">\r\n  <lib-search-bar *ngIf=\"filterable && itemList.length > maxCount\" [placeholderText]=\"'Search' + (itemType ? ' ' + itemType : '')\" (searchStringChange)=\"filterChange($event)\">\r\n  </lib-search-bar>\r\n  <div class=\"info-list__list\" [ngClass]=\"{ 'info-list__list--scrollable': scrollable, 'info-list__list--empty': displayList.length === 0 }\">\r\n    <div *ngFor=\"let item of displayList\" class=\"info-list__info-card\">\r\n      <lib-info-card\r\n        [checkable]=\"checkable\"\r\n        [checked]=\"defaultCheckedValue\"\r\n        [item]=\"item\"\r\n        [selectable]=\"selectable\"\r\n        (checkedChange)=\"handleCheckedValueChange($event)\"\r\n        (selected)=\"handleItemSelected($event)\"\r\n      ></lib-info-card>\r\n    </div>\r\n  </div>\r\n  <div *ngIf=\"filterable && itemList.length > maxCount && displayList.length > 0\" class=\"info-list__alert\">\r\n    {{ 'More than ' + maxCount + ' records were returned.\\nUse the search bar to filter your results.' }}\r\n  </div>\r\n  <div *ngIf=\"filterable && itemList.length > maxCount && displayList.length === 0\" class=\"info-list__alert\">No matching records found.</div>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { Observable, Subject, combineLatest, of } from 'rxjs';\nimport { debounceTime, first, switchMap, takeUntil } from 'rxjs/operators';\nimport { ItemSummary } from '../../model/item-summary';\nimport { TypeaheadResultsGroup } from '../../model/typeahead-results-group';\n\n@Component({\n  selector: 'lib-typeahead-result',\n  templateUrl: './typeahead-result.component.html',\n  styleUrls: ['./typeahead-result.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class TypeaheadResultComponent {\n  @Input() groups: TypeaheadResultsGroup[] = [];\n  @Input() selectionFunc: ((item: ItemSummary<any>) => void) | null = null;\n  @Input() alternateFunc: (() => any) | null = null;\n  @Input() alternateText: string = '';\n  @Input() loading: boolean = false;\n  @Output() alternateCalled: EventEmitter<void> = new EventEmitter();\n\n  /**\n   * Method to execute passed in function if it is defined\n   */\n  public handleAlternateFunction(): void {\n    this.alternateCalled.emit();\n  }\n\n  /**\n   *\n   * @param item - item that was selected\n   *\n   * A method to invoke passed in selection func with item if it is defined\n   */\n  public itemSelected(item: ItemSummary<any>): void {\n    if (this.selectionFunc) {\n      this.selectionFunc(item);\n    }\n  }\n}\n\n@Component({\n  selector: 'lib-typeahead-field',\n  templateUrl: './typeahead-field.component.html',\n  styleUrls: ['./typeahead-field.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class TypeaheadFieldComponent implements OnInit, OnDestroy {\n  @Input() entityFunctions: {\n    searchFunction: (value: string) => Observable<any[]>;\n    mappingFunction: (entity: any) => Observable<ItemSummary<any>>;\n    filterFunction: (entity: any) => boolean;\n    sortingFunction: (a: ItemSummary<any>, b: ItemSummary<any>) => number;\n    resultGroupFunction?: (results: ItemSummary<any>[]) => TypeaheadResultsGroup[];\n    entityMetadata?: { typeLabel: string; iconHtml: SafeHtml; placeholderText: string };\n  }[] = [];\n  @Input() selectedEntityIndex = 0;\n  @Input() selectionFunction: ((item: ItemSummary<any>) => void) | null = null;\n  @Input() fieldName: string = '';\n  @Input() placeholderText = '';\n  @Input() resultLimit = 0;\n  @Input() alternateText = '';\n  @Input() alternateFunction: ((value: string) => any) | null = null;\n  @Input() error = '';\n  @Input() set defaultText(value: string) {\n    this.inputText = value;\n  }\n  @Input() defaultSearchString = '';\n  @Input() suggestionText = '';\n  @Input() required = false;\n  @Input() isMultiselectMode = false;\n  @Input() rowEditConfirmationObsv: Observable<{ fieldName: string; fieldValue: any }> | null = null;\n  @Input() entitySelectMode = false;\n  @Input() showRequiredIndicator: boolean = false;\n\n  @ViewChild('typeahead', { static: true }) typeahead!: ElementRef;\n\n  public searchResults: TypeaheadResultsGroup[] = [];\n  public inputText = '';\n  public loading = false;\n  public displayResults = false;\n  public focused = false;\n\n  private searchStringSubject: Subject<string> = new Subject();\n  private inputStringSubject: Subject<string> = new Subject();\n  private clickOutSubject: Subject<void> = new Subject();\n  private componentDestroyed$: Subject<void> = new Subject();\n\n  @Output() inputStringChange: Observable<string> = this.inputStringSubject.asObservable();\n  @Output() selected: EventEmitter<ItemSummary<any>> = new EventEmitter<ItemSummary<any>>();\n  @Output() deselected = new EventEmitter();\n\n  constructor(\n    private changeDetectorRef: ChangeDetectorRef,\n    private renderer: Renderer2,\n  ) {\n    this.renderer.listen('window', 'click', (e: Event) => {\n      if (this.typeahead?.nativeElement.contains(e.target)) {\n        // Don't pass null, just call next() without parameters\n        this.clickOutSubject.next();\n      }\n    });\n  }\n\n  // ----- Angular lifecycle methods\n\n  ngOnInit() {\n    this.clickOutSubject\n      .asObservable()\n      .pipe(takeUntil(this.componentDestroyed$))\n      .subscribe(() => {\n        this.displayResults = false;\n        this.changeDetectorRef.detectChanges();\n      });\n    this.searchStringSubject\n      .asObservable()\n      .pipe(\n        // Debounce as to not overload backend with requests\n        debounceTime(500),\n        takeUntil(this.componentDestroyed$),\n\n        // Switch map to disregard old requests if newer requests returns first\n        switchMap((value: string) => {\n          // Wait til two letters for performance reasons\n          if (value.length && value.length > 1) {\n            this.searchResults = [];\n            this.loading = true;\n            this.displayResults = true;\n            this.changeDetectorRef.detectChanges();\n            return combineLatest([...this.getSearchFuncs(value)]);\n          } else {\n            if (!value.length) {\n              this.clear();\n            }\n            this.displayResults = false;\n            this.loading = false;\n            this.changeDetectorRef.detectChanges();\n            return of([[]]);\n          }\n        }),\n      )\n      .subscribe((resultsMatrix: any[][]) => {\n        if (resultsMatrix.length) {\n          const resultGroups: TypeaheadResultsGroup[] = [];\n          const allMappingObsvs: Observable<any>[] = [];\n          resultsMatrix.forEach((results, index) => {\n            if (this.entitySelectMode) {\n              index = this.selectedEntityIndex;\n            }\n            const entityMappingObsvs: Observable<ItemSummary<any>>[] = results.map((result) => this.entityFunctions[index].mappingFunction(result));\n            allMappingObsvs.push(...entityMappingObsvs);\n            if (entityMappingObsvs.length) {\n              combineLatest(entityMappingObsvs)\n                .pipe(first())\n                .subscribe((summaries) => {\n                  const groupFunction = this.entityFunctions[index].resultGroupFunction;\n                  const searchString = this.inputText ? this.inputText : this.defaultSearchString;\n                  if (groupFunction) {\n                    const groupResults = groupFunction(summaries);\n                    groupResults.forEach((result) => {\n                      result.summaries = this.getListSortedByMostAccurateMatch(result.summaries, searchString, this.entityFunctions[index].sortingFunction);\n                      if (result.summaries.length) {\n                        resultGroups.push(result);\n                      }\n                    });\n                  } else {\n                    resultGroups.push({\n                      summaries: this.getListSortedByMostAccurateMatch(summaries, searchString, this.entityFunctions[index].sortingFunction),\n                    });\n                  }\n                });\n            }\n          });\n          if (allMappingObsvs.length) {\n            combineLatest(allMappingObsvs)\n              .pipe(first())\n              .subscribe(() => {\n                this.loading = false;\n\n                if (resultGroups.some((resultGroup) => resultGroup.summaries?.length)) {\n                  this.searchResults = resultGroups.sort((group1, group2) => {\n                    // Fix: Add null checks for groupName\n                    const group1Name = group1.groupName?.toLocaleUpperCase() || '';\n                    const group2Name = group2.groupName?.toLocaleUpperCase() || '';\n\n                    return !group1.groupName && group2.groupName ? -1 : !group2.groupName ? 1 : group1Name > group2Name ? 1 : -1;\n                  });\n                } else {\n                  this.searchResults = [];\n                }\n                this.changeDetectorRef.detectChanges();\n              });\n          } else {\n            this.loading = false;\n            this.searchResults = [];\n            this.changeDetectorRef.detectChanges();\n          }\n        }\n      });\n    this.rowEditConfirmationObsv?.pipe(takeUntil(this.componentDestroyed$)).subscribe((response) => {\n      if (response?.fieldName === this.fieldName && response.fieldValue < 0) {\n        this.displayResults = false;\n        (document.querySelector(':focus') as HTMLElement)?.blur();\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  // ----- Methods -----\n\n  private getSearchFuncs(value: string): Observable<any[]>[] {\n    if (this.entitySelectMode) {\n      return [this.entityFunctions[this.selectedEntityIndex].searchFunction(value)];\n    } else {\n      return this.entityFunctions.map((entityFunction) => entityFunction.searchFunction(value));\n    }\n  }\n\n  // ----- Methods called by template -----\n\n  /**\n   *\n   * A method to update search subject with user input\n   *\n   * @param searchString - User entered search string\n   */\n  public search(searchString: string) {\n    this.inputText = searchString;\n    this.inputStringSubject.next(searchString);\n    this.searchStringSubject.next(searchString);\n  }\n\n  /**\n   *\n   * A method to add recipient or attendee\n   *\n   * @param item - The ItemSummary that was selected\n   */\n  public itemSelected(item: ItemSummary<any>): void {\n    if (!this.isMultiselectMode) {\n      this.inputText = item.header.label;\n      this.inputStringSubject.next(this.inputText);\n      this.displayResults = false;\n      this.changeDetectorRef.detectChanges();\n    } else {\n      const searchInput = this.typeahead.nativeElement.querySelector('#searchInput');\n      searchInput.value = '';\n      searchInput.focus();\n    }\n    if (this.selectionFunction) {\n      this.selectionFunction(item);\n    }\n    this.selected.emit(item);\n  }\n\n  /**\n   * Wraps the above method in a closure for consumption by the nested component\n   */\n  public resultSelectFunc: (item: ItemSummary<any>) => void = (item: ItemSummary<any>, group?: TypeaheadResultsGroup) => this.itemSelected(item);\n\n  /**\n   * A method to notify parent when search bar clear is clicked\n   */\n  public clear(): void {\n    this.displayResults = false;\n    this.changeDetectorRef.detectChanges();\n    this.deselected.emit();\n  }\n\n  /**\n   * Runs a search using the defaultSearchString when suggestion text is clicked\n   */\n  public handleSuggestionClicked(): void {\n    if (this.defaultSearchString && !this.inputText) {\n      this.searchStringSubject.next(this.defaultSearchString);\n    }\n  }\n\n  /**\n   *\n   * @param list - An Item Summary Array\n   * @param searchString - String\n   *\n   * @return - A list of results\n   *\n   * This method sorts search results by most accurate according to the current search string. Begins after two characters typed.\n   */\n  private getListSortedByMostAccurateMatch(\n    list: ItemSummary<any>[],\n    searchString: string,\n    sortingFunction: (a: ItemSummary<any>, b: ItemSummary<any>) => number,\n  ): ItemSummary<any>[] {\n    const sort = sortingFunction || this.sortByHeader;\n    const separatedLists: ItemSummary<any>[][] = this.breakListIntoSortSections(list, searchString);\n    const resultList: ItemSummary<any>[] = [];\n    for (let i = 0; i < 3; i++) {\n      separatedLists[i] = separatedLists[i].sort(sort);\n      resultList.push(...separatedLists[i]);\n    }\n    return resultList;\n  }\n\n  /**\n   *\n   * @param list - An Item Summary Array\n   * @param searchString - String\n   *\n   * @return - An Array of lists, that each contain ItemSummaries that match different conditions to the search.\n   *\n   * This method is used by getListSortedByMostAccurateMatch to filter search results by placing them into sorted lists according to specific conditions measured against the search string value.\n   */\n  private breakListIntoSortSections(list: ItemSummary<any>[], searchString: string): ItemSummary<any>[][] {\n    const searchCapitalized: string = searchString.toLocaleUpperCase();\n    const exactMatchList: ItemSummary<any>[] = [];\n    const startsWithList: ItemSummary<any>[] = [];\n    const includesList: ItemSummary<any>[] = [];\n    list.forEach((nextSummary) => {\n      const infoLines: string[] = [];\n      nextSummary.header.label ? infoLines.push(nextSummary.header.label.toLocaleUpperCase()) : null;\n      nextSummary.subheaders.forEach((nextSubheader) => (nextSubheader.label ? infoLines.push(nextSubheader.label.toLocaleUpperCase()) : null));\n      nextSummary.details.forEach((nextDetail) => (nextDetail.label ? infoLines.push(nextDetail.label.toLocaleUpperCase()) : null));\n      if (infoLines.find((nextLine) => nextLine === searchCapitalized)) {\n        exactMatchList.push(nextSummary);\n      } else if (infoLines.find((nextLine) => nextLine.startsWith(searchCapitalized))) {\n        startsWithList.push(nextSummary);\n      } else if (infoLines.find((nextLine) => nextLine.includes(searchCapitalized))) {\n        includesList.push(nextSummary);\n      }\n    });\n    return [exactMatchList, startsWithList, includesList];\n  }\n\n  /**\n   *\n   * @param a - An Item Summary\n   * @param b - An Item Summary\n   *\n   * @return - A number. -1 if b.header is > a.header, 0 if the same, and 1 if a.header > b.header\n   */\n  private sortByHeader(a: ItemSummary<any>, b: ItemSummary<any>): number {\n    return a.header.label.toLocaleUpperCase().localeCompare(b.header.label.toLocaleUpperCase());\n  }\n\n  public handleAlternateCalled(): void {\n    if (this.alternateFunction) {\n      this.alternateFunction(this.inputText);\n    }\n  }\n\n  public handleFocus(): void {\n    this.focused = true;\n  }\n\n  public handleFocusOut(): void {\n    this.focused = false;\n  }\n}\n","<div class=\"typeahead-result\">\n  <div *ngIf=\"!groups.length && loading\" class=\"typeahead-result__loading-section\">\n    <mat-progress-spinner [diameter]=\"50\" [strokeWidth]=\"5\" [mode]=\"'indeterminate'\" class=\"typeahead-result__progress\"></mat-progress-spinner>\n  </div>\n  <div class=\"typeahead-result__results\">\n    <div class=\"typeahead-result__group-section\" *ngFor=\"let group of groups\">\n      <div *ngIf=\"group.groupName\" class=\"typeahead-result__group-name\">{{ group.groupName }}</div>\n      <lib-info-card-list\n        *ngIf=\"group.summaries.length\"\n        [itemList]=\"group.summaries\"\n        [filterable]=\"false\"\n        [selectable]=\"true\"\n        [maxCount]=\"50\"\n        (itemSelected)=\"itemSelected($event)\"\n      ></lib-info-card-list>\n    </div>\n    <div *ngIf=\"!groups.length && !loading\" class=\"typeahead-result__no-results\">{{ 'TYPEAHEAD.NO_RESULTS' | translate }}</div>\n  </div>\n  <div *ngIf=\"alternateText\" class=\"typeahead-result__alternate-function\" (click)=\"handleAlternateFunction()\">\n    {{ alternateText }}\n  </div>\n</div>\n","<div\n  class=\"typeahead-field\"\n  [ngClass]=\"{ 'typeahead-field--required': showRequiredIndicator && required, 'typeahead-field--focused': focused, 'typeahead-field--error': error }\"\n  #typeahead\n>\n  <div *ngIf=\"entitySelectMode\" class=\"typeahead-field__entity-selector\">\n    <mat-label [matMenuTriggerFor]=\"entitySelectMenu\" class=\"typeahead-field__entity-selector-label\">\n      <div class=\"typeahead-field__entity-selector-label-icon\" [innerHtml]=\"entityFunctions[selectedEntityIndex].entityMetadata?.iconHtml\"></div>\n      <i class=\"icon icon-gen3-caret-down typeahead-field__entity-selector-label-dropdown-icon\"></i>\n    </mat-label>\n    <mat-menu #entitySelectMenu=\"matMenu\" class=\"typeahead-field__entity-selector-menu\">\n      <button *ngFor=\"let entityFunction of entityFunctions; index as i\" (click)=\"this.selectedEntityIndex = i\" class=\"typeahead-field__entity-selector-menu-item\" mat-menu-item>\n        <div class=\"typeahead-field__entity-selector-menu-item-icon\" [innerHtml]=\"entityFunctions[i].entityMetadata?.iconHtml\"></div>\n        <div class=\"typeahead-field__entity-selector-menu-item-label\">\n          {{ entityFunction.entityMetadata?.typeLabel }}\n        </div>\n      </button>\n    </mat-menu>\n  </div>\n  <div *ngIf=\"showRequiredIndicator && required\" class=\"typeahead-field__required\" [ngClass]=\"{ 'typeahead-field__required--error': error }\" [libTooltip]=\"'Required'\">\n    <div class=\"typeahead-field__required-indicator\">*</div>\n  </div>\n  <lib-search-bar\n    [placeholderText]=\"entitySelectMode ? entityFunctions[selectedEntityIndex]?.entityMetadata?.placeholderText || placeholderText : placeholderText\"\n    [inputText]=\"inputText\"\n    (focused)=\"handleFocus()\"\n    (unfocused)=\"handleFocusOut()\"\n    (searchStringChange)=\"search($event)\"\n    (cleared)=\"clear()\"\n  ></lib-search-bar>\n</div>\n<lib-typeahead-result\n  *ngIf=\"displayResults\"\n  [groups]=\"searchResults\"\n  [selectionFunc]=\"resultSelectFunc\"\n  [alternateText]=\"alternateText\"\n  [loading]=\"loading\"\n  (alternateCalled)=\"handleAlternateCalled()\"\n>\n</lib-typeahead-result>\n<div *ngIf=\"suggestionText && !displayResults\" (click)=\"handleSuggestionClicked()\" class=\"typeahead-field__suggestion-text\">\n  {{ suggestionText }}\n</div>\n<div *ngIf=\"error\" class=\"typeahead-field__error-text\">\n  {{ error }}\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { UntypedFormControl, Validators } from '@angular/forms';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TooltipDirectionPreference } from '../../enums/tooltip-direction-preference';\r\nimport { FormSectionVariables } from '../../model/form-generator/form-section-variables';\r\nimport { FormFieldType } from './../../enums/form-field-type';\r\nimport { FormFieldVariables } from './../../model/form-generator/form-field-variables';\r\nimport { ItemSummary } from './../../model/item-summary';\r\n\r\n@Component({\r\n  selector: 'lib-multi-field',\r\n  templateUrl: './multi-field.component.html',\r\n  styleUrls: ['./multi-field.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class MultiFieldComponent implements OnInit, OnDestroy {\r\n  public FormFieldType = FormFieldType;\r\n  public tempFieldControls: UntypedFormControl[][] = [];\r\n  public DirectionPreference = TooltipDirectionPreference;\r\n\r\n  @Input() fieldName = '';\r\n  @Input() config!: FormSectionVariables;\r\n  @Input() formFieldControl!: UntypedFormControl;\r\n  @Input() newRowText = 'Add';\r\n  @Input() useTooltips = false;\r\n  @Input() disabled = false;\r\n  @Input() rowDeleteConfirmationObsv!: Observable<{ fieldName: string; fieldValue: any }>;\r\n  @Input() maxLength = 0;\r\n  @Input() currencySymbol: string = '';\r\n  @Input() errorMessage: string = '';\r\n  @Input() editDisabled: boolean = false;\r\n\r\n  public editIndex = -1;\r\n  public addDisabled = true;\r\n  public addingNewRow = false;\r\n\r\n  @Output() rowDelete: EventEmitter<{ fieldName: string; fieldValue: any }> = new EventEmitter();\r\n  @Output() rowEdit: EventEmitter<{ rowFormControls: UntypedFormControl[][]; config: FormSectionVariables }> = new EventEmitter();\r\n  @Output() valueChanges: EventEmitter<{ formControl: UntypedFormControl; config: FormSectionVariables }> = new EventEmitter();\r\n\r\n  private componentDestroyed$: Subject<void> = new Subject();\r\n\r\n  constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n  ngOnInit() {\r\n    this.formFieldControl.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe(() => {\r\n      this.changeDetectorRef.detectChanges();\r\n    });\r\n    this.rowDeleteConfirmationObsv?.pipe(takeUntil(this.componentDestroyed$)).subscribe((response) => {\r\n      if (response.fieldName === this.fieldName) {\r\n        if (response.fieldValue > -1 && this.editIndex < 0) {\r\n          this.handleRowDeletedAction(response.fieldValue);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.componentDestroyed$.next();\r\n    this.componentDestroyed$.complete();\r\n  }\r\n\r\n  public getDisplayValue(fieldInfo: FormFieldVariables, value: any): any {\r\n    switch (fieldInfo.type) {\r\n      case FormFieldType.typeahead:\r\n        if (value.header && value.header.label) {\r\n          return value.header.label;\r\n        } else {\r\n          return value;\r\n        }\r\n      case FormFieldType.select: {\r\n        const selectOption = fieldInfo.selectOptions.find((nextOption) => nextOption.value === value);\r\n        return selectOption ? selectOption.label : '';\r\n      }\r\n      case FormFieldType.currency:\r\n        return this.currencySymbol + value;\r\n      default:\r\n        return value;\r\n    }\r\n  }\r\n\r\n  public handleRowDeleted(rowIndex: number, event: any): void {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    event?.stopPropagation();\r\n    if (this.rowDelete && this.rowDeleteConfirmationObsv) {\r\n      this.rowDelete.emit({\r\n        fieldName: this.fieldName,\r\n        fieldValue: rowIndex,\r\n      });\r\n    } else {\r\n      this.handleRowDeletedAction(rowIndex);\r\n    }\r\n  }\r\n\r\n  public handleRowDeletedAction(rowIndex: number): void {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    this.editIndex = -1;\r\n    this.formFieldControl.value.splice(rowIndex, 1);\r\n    this.valueChanges.emit({ formControl: this.formFieldControl, config: this.config });\r\n    if (this.formFieldControl.value.length === 0) {\r\n      this.handleAddClicked();\r\n    }\r\n  }\r\n\r\n  public handleFieldClicked(fieldInfo: FormFieldVariables): void {\r\n    if (!fieldInfo.isEditable && this.editIndex > -1 && this.rowDelete && this.rowDeleteConfirmationObsv) {\r\n      this.rowDelete.emit({\r\n        fieldName: fieldInfo.controlName,\r\n        fieldValue: this.editIndex,\r\n      });\r\n    }\r\n  }\r\n\r\n  public handleRowClicked(rowIndex: number): void {\r\n    if (this.disabled || this.editDisabled) {\r\n      return;\r\n    }\r\n    if (!this.addingNewRow) {\r\n      this.tempFieldControls = [];\r\n      let index = 0;\r\n      for (let i = 0; i < this.config.fields.length; i++) {\r\n        this.tempFieldControls[i] = [];\r\n        for (let j = 0; j < this.config.fields[i].length; j++) {\r\n          this.tempFieldControls[i].push(new UntypedFormControl(this.formFieldControl.value[rowIndex][index++], this.config.fields[i][j].required ? Validators.required : null));\r\n          if (this.config.fields[i][j].type === FormFieldType.typeahead) {\r\n            const curTypeaheadValue = this.tempFieldControls[i][j].value;\r\n            if (curTypeaheadValue.header && curTypeaheadValue.header.label) {\r\n              this.config.fields[i][j].typeaheadConfig!.defaultText = curTypeaheadValue.header.label;\r\n            } else {\r\n              this.config.fields[i][j].typeaheadConfig!.defaultText = curTypeaheadValue;\r\n            }\r\n          }\r\n        }\r\n      }\r\n      this.addValidityListeners();\r\n      this.addDisabled = true;\r\n      this.editIndex = rowIndex;\r\n      this.updateValidity();\r\n    }\r\n  }\r\n\r\n  public handleAddClicked(): void {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    this.tempFieldControls = [];\r\n    for (let i = 0; i < this.config.fields.length; i++) {\r\n      this.tempFieldControls[i] = [];\r\n      for (let j = 0; j < this.config.fields[i].length; j++) {\r\n        this.tempFieldControls[i].push(new UntypedFormControl(null, this.config.fields[i][j].required ? Validators.required : null));\r\n        if (this.config.fields[i][j].type === FormFieldType.typeahead) {\r\n          this.config.fields[i][j].typeaheadConfig!.defaultText = undefined;\r\n        }\r\n      }\r\n    }\r\n    this.addValidityListeners();\r\n    this.addDisabled = true;\r\n    this.addingNewRow = true;\r\n  }\r\n\r\n  public addValidityListeners(): void {\r\n    this.tempFieldControls.forEach((controlRow) => {\r\n      controlRow.forEach((control) => {\r\n        control.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe(() => {\r\n          this.updateValidity();\r\n        });\r\n      });\r\n    });\r\n  }\r\n\r\n  public updateValidity(): void {\r\n    this.rowEdit.emit({ rowFormControls: this.tempFieldControls, config: this.config });\r\n\r\n    // When a row is edited, the consumer may want to make changes to the input\r\n    // config. An example usage might be that if a certain value is provided\r\n    // for one of the controls in the row, a different control in the row may be\r\n    // required, hidden, or otherwise altered depending on that value.\r\n    //\r\n    // Using setTimeout here allows the consumer to listen for the rowEdit event\r\n    // and do the necessary processing before we continue.\r\n    setTimeout(() => {\r\n      this.addDisabled = false;\r\n      this.tempFieldControls.forEach((controlRow) => {\r\n        controlRow.forEach((control) => {\r\n          this.addDisabled = this.addDisabled || !control.valid;\r\n        });\r\n      });\r\n      this.changeDetectorRef.detectChanges();\r\n    }, 250);\r\n  }\r\n\r\n  public handleCancelClicked(): void {\r\n    this.addingNewRow = false;\r\n    this.editIndex = -1;\r\n    this.tempFieldControls = [];\r\n    this.valueChanges.emit({ formControl: this.formFieldControl, config: this.config });\r\n  }\r\n\r\n  /**\r\n   * This method takes the values from the input fields and either updates the\r\n   * corresponding row of the formFieldControl value, or adds a new row to the end\r\n   */\r\n  public handleSaveClicked(): void {\r\n    if (!this.addDisabled) {\r\n      if (!this.formFieldControl.value) {\r\n        this.formFieldControl.setValue([]);\r\n      }\r\n      let formFieldControlValueIndex = this.editIndex;\r\n      if (this.addingNewRow) {\r\n        this.formFieldControl.value.push([]);\r\n        formFieldControlValueIndex = this.formFieldControl.value.length - 1;\r\n      }\r\n      let index = 0;\r\n      for (let i = 0; i < this.tempFieldControls.length; i++) {\r\n        for (let j = 0; j < this.tempFieldControls[i].length; j++) {\r\n          this.formFieldControl.value[formFieldControlValueIndex][index++] = this.tempFieldControls[i][j].value;\r\n        }\r\n      }\r\n      this.addingNewRow = false;\r\n      this.editIndex = -1;\r\n      this.tempFieldControls = [];\r\n      this.valueChanges.emit({ formControl: this.formFieldControl, config: this.config });\r\n    }\r\n  }\r\n\r\n  public handleTypeaheadSelected(row: number, col: number, value: ItemSummary<any>): void {\r\n    this.tempFieldControls[row][col].setValue(value);\r\n  }\r\n\r\n  public handleTypeaheadDeselected(row: number, col: number): void {\r\n    this.tempFieldControls[row][col].setValue(null);\r\n  }\r\n  public getEntityFunctions(fieldInfo: FormFieldVariables): any {\r\n    return fieldInfo.typeaheadConfig?.entity;\r\n  }\r\n}\r\n","<div class=\"multifield\">\r\n  <div class=\"multifield__headers\">\r\n    <ng-container *ngFor=\"let fieldInfo of config.fields[0]\">\r\n      <div\r\n        *ngIf=\"fieldInfo.label || (useTooltips && fieldInfo.descriptionText)\"\r\n        [ngStyle]=\"{ 'flex-grow': fieldInfo.flexGrow, 'flex-shrink': 1, 'flex-basis': fieldInfo.flexBasisPct + '%', display: fieldInfo.isHidden ? 'none' : 'flex' }\"\r\n        class=\"multifield__headers-container\"\r\n      >\r\n        <div *ngIf=\"fieldInfo.label\" class=\"multifield__header\">\r\n          {{ fieldInfo.label }}\r\n        </div>\r\n        <div\r\n          *ngIf=\"useTooltips && fieldInfo.descriptionText\"\r\n          class=\"multifield__header-icon-tooltip\"\r\n          [libTooltip]=\"fieldInfo.descriptionText\"\r\n          [directionPreference]=\"DirectionPreference.Right\"\r\n          [delayTime]=\"200\"\r\n        >\r\n          <i class=\"icon icon-gen3-info\"></i>\r\n        </div>\r\n      </div>\r\n    </ng-container>\r\n    <div class=\"multifield__header-delete-placeholder\"></div>\r\n  </div>\r\n  <div *ngFor=\"let values of formFieldControl.value; let rowIndex = index\">\r\n    <div\r\n      class=\"multifield__display-row\"\r\n      [ngClass]=\"{ 'multifield__display-row--disabled': disabled || editDisabled }\"\r\n      *ngIf=\"rowIndex !== editIndex\"\r\n      (click)=\"handleRowClicked(rowIndex)\"\r\n    >\r\n      <div\r\n        *ngFor=\"let fieldInfo of config.fields[0]; let valueIndex = index\"\r\n        class=\"multifield__display-value\"\r\n        [ngStyle]=\"{ 'flex-grow': fieldInfo.flexGrow, 'flex-shrink': 1, 'flex-basis': fieldInfo.flexBasisPct + '%', display: fieldInfo.isHidden ? 'none' : 'flex' }\"\r\n      >\r\n        {{ getDisplayValue(fieldInfo, values[valueIndex]) }}\r\n      </div>\r\n      <div class=\"multifield__delete-row\" [hidden]=\"disabled\" (click)=\"handleRowDeleted(rowIndex, $event)\">\r\n        <i class=\"multifield__icon-delete icon-trash\" libTooltip=\"Delete\"></i>\r\n      </div>\r\n    </div>\r\n    <div class=\"multifield__edit\" *ngIf=\"rowIndex === editIndex\">\r\n      <div class=\"multifield__edit-fields\">\r\n        <div *ngFor=\"let row of config.fields; let i = index\" class=\"multifield__row\">\r\n          <div\r\n            *ngFor=\"let fieldInfo of row; let j = index\"\r\n            class=\"multifield__field-container\"\r\n            [ngStyle]=\"{ 'flex-grow': fieldInfo.flexGrow, 'flex-shrink': 1, 'flex-basis': fieldInfo.flexBasisPct + '%', display: fieldInfo.isHidden ? 'none' : 'flex' }\"\r\n            (click)=\"handleFieldClicked(fieldInfo)\"\r\n          >\r\n            <lib-form-field\r\n              *ngIf=\"\r\n                !fieldInfo.isHidden &&\r\n                (fieldInfo.type === FormFieldType.currency ||\r\n                  fieldInfo.type === FormFieldType.select ||\r\n                  fieldInfo.type === FormFieldType.text ||\r\n                  fieldInfo.type === FormFieldType.date ||\r\n                  fieldInfo.type === FormFieldType.radio ||\r\n                  fieldInfo.type === FormFieldType.checkbox ||\r\n                  fieldInfo.type === FormFieldType.textarea ||\r\n                  fieldInfo.type === FormFieldType.number ||\r\n                  fieldInfo.type === FormFieldType.message)\r\n              \"\r\n              [fieldName]=\"fieldInfo.controlName\"\r\n              [iconHtml]=\"fieldInfo.labelIcon!\"\r\n              [formFieldControl]=\"tempFieldControls[i][j]\"\r\n              [maxLength]=\"fieldInfo.maxLength ? fieldInfo.maxLength : 524288\"\r\n              [type]=\"fieldInfo.type\"\r\n              [options]=\"fieldInfo.selectOptions\"\r\n              [required]=\"fieldInfo.required ?? false\"\r\n              [placeholder]=\"fieldInfo.placeholder ?? ''\"\r\n              [invalidPatternMessage]=\"fieldInfo.patternErrorMessage ?? ''\"\r\n              [message]=\"fieldInfo.message || tempFieldControls[i][j].value\"\r\n              [currencySymbol]=\"currencySymbol\"\r\n              [rowEditConfirmationObsv]=\"rowDeleteConfirmationObsv\"\r\n              class=\"multifield__field-section\"\r\n            >\r\n            </lib-form-field>\r\n            <div\r\n              class=\"multifield__typeahead-section\"\r\n              [ngClass]=\"{ 'multifield__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n              *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.typeahead\"\r\n            >\r\n              <lib-typeahead-field\r\n                class=\"multifield__typeahead\"\r\n                [fieldName]=\"fieldInfo.controlName\"\r\n                [entityFunctions]=\"getEntityFunctions(fieldInfo)\"\r\n                [selectionFunction]=\"fieldInfo.typeaheadConfig?.selectionFunction ?? null\"\r\n                [placeholderText]=\"fieldInfo.placeholder ?? ''\"\r\n                [alternateText]=\"fieldInfo.typeaheadConfig?.alternateText ?? ''\"\r\n                [alternateFunction]=\"fieldInfo.typeaheadConfig?.alternateFunction ?? null\"\r\n                [defaultSearchString]=\"fieldInfo.typeaheadConfig?.defaultSearchString ?? ''\"\r\n                [defaultText]=\"fieldInfo.typeaheadConfig?.defaultText ?? ''\"\r\n                [suggestionText]=\"fieldInfo.typeaheadConfig?.suggestionText ?? ''\"\r\n                [required]=\"fieldInfo.required ?? false\"\r\n                [rowEditConfirmationObsv]=\"rowDeleteConfirmationObsv\"\r\n                (selected)=\"handleTypeaheadSelected(i, j, $event)\"\r\n                (deselected)=\"handleTypeaheadDeselected(i, j)\"\r\n              >\r\n              </lib-typeahead-field>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"multifield__edit-buttons\">\r\n        <div class=\"multifield__edit-add\" [ngClass]=\"{ 'multifield__edit-add--disabled': addDisabled }\" (click)=\"handleSaveClicked()\">Update</div>\r\n        <div class=\"multifield__edit-cancel\" (click)=\"handleCancelClicked()\">Cancel</div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div class=\"multifield__edit\" *ngIf=\"addingNewRow\">\r\n    <div class=\"multifield__edit-fields\">\r\n      <div *ngFor=\"let row of config.fields; let i = index\" class=\"multifield__row\">\r\n        <div\r\n          *ngFor=\"let fieldInfo of row; let j = index\"\r\n          class=\"multifield__field-container\"\r\n          [ngStyle]=\"{ 'flex-grow': fieldInfo.flexGrow, 'flex-shrink': 1, 'flex-basis': fieldInfo.flexBasisPct + '%', display: fieldInfo.isHidden ? 'none' : 'flex' }\"\r\n        >\r\n          <lib-form-field\r\n            *ngIf=\"\r\n              !fieldInfo.isHidden &&\r\n              (fieldInfo.type === FormFieldType.currency ||\r\n                fieldInfo.type === FormFieldType.select ||\r\n                fieldInfo.type === FormFieldType.text ||\r\n                fieldInfo.type === FormFieldType.date ||\r\n                fieldInfo.type === FormFieldType.radio ||\r\n                fieldInfo.type === FormFieldType.checkbox ||\r\n                fieldInfo.type === FormFieldType.textarea ||\r\n                fieldInfo.type === FormFieldType.number ||\r\n                fieldInfo.type === FormFieldType.message)\r\n            \"\r\n            [iconHtml]=\"fieldInfo.labelIcon!\"\r\n            [formFieldControl]=\"tempFieldControls[i][j]\"\r\n            [maxLength]=\"fieldInfo.maxLength ? fieldInfo.maxLength : 524288\"\r\n            [type]=\"fieldInfo.type\"\r\n            [options]=\"fieldInfo.selectOptions\"\r\n            [required]=\"fieldInfo.required ?? false\"\r\n            [placeholder]=\"fieldInfo.placeholder ?? ''\"\r\n            [invalidPatternMessage]=\"fieldInfo.patternErrorMessage ?? ''\"\r\n            [message]=\"fieldInfo.message || tempFieldControls[i][j].value\"\r\n            [currencySymbol]=\"currencySymbol\"\r\n            class=\"multifield__field-section\"\r\n          >\r\n          </lib-form-field>\r\n          <div\r\n            class=\"multifield__typeahead-section\"\r\n            [ngClass]=\"{ 'multifield__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n            *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.typeahead\"\r\n          >\r\n            <lib-typeahead-field\r\n              class=\"multifield__typeahead\"\r\n              [entityFunctions]=\"getEntityFunctions(fieldInfo)\"\r\n              [selectionFunction]=\"fieldInfo.typeaheadConfig?.selectionFunction ?? null\"\r\n              [placeholderText]=\"fieldInfo.placeholder ?? ''\"\r\n              [alternateText]=\"fieldInfo.typeaheadConfig?.alternateText ?? ''\"\r\n              [alternateFunction]=\"fieldInfo.typeaheadConfig?.alternateFunction ?? null\"\r\n              [defaultSearchString]=\"fieldInfo.typeaheadConfig?.defaultSearchString ?? ''\"\r\n              [defaultText]=\"fieldInfo.typeaheadConfig?.defaultText ?? ''\"\r\n              [error]=\"tempFieldControls[i][j].touched && tempFieldControls[i][j].errors ? (fieldInfo.typeaheadConfig?.errorMessage ?? '') : ''\"\r\n              [suggestionText]=\"fieldInfo.typeaheadConfig?.suggestionText ?? ''\"\r\n              [required]=\"fieldInfo.required ?? false\"\r\n              (selected)=\"handleTypeaheadSelected(i, j, $event)\"\r\n              (deselected)=\"handleTypeaheadDeselected(i, j)\"\r\n            >\r\n            </lib-typeahead-field>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"multifield__edit-buttons\">\r\n      <lib-primary-btn (click)=\"handleSaveClicked()\" [disabled]=\"addDisabled\" type=\"submit\"> Add </lib-primary-btn>\r\n      <lib-secondary-btn (click)=\"handleCancelClicked()\"> Cancel </lib-secondary-btn>\r\n    </div>\r\n  </div>\r\n  <lib-primary-btn\r\n    *ngIf=\"!addingNewRow && editIndex === -1 && (maxLength === 0 || !formFieldControl.value || (formFieldControl.value && formFieldControl.value.length < maxLength))\"\r\n    (click)=\"handleAddClicked()\"\r\n    [disabled]=\"disabled\"\r\n    class=\"multifield__row-add\"\r\n  >\r\n    {{ newRowText }}\r\n  </lib-primary-btn>\r\n\r\n  <div *ngIf=\"errorMessage\" class=\"multifield__error\">\r\n    {{ errorMessage }}\r\n  </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SelectOption } from '../../model/select-option';\n\n@Component({\n  selector: 'lib-selectable',\n  templateUrl: './selectable.component.html',\n  styleUrls: ['./selectable.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SelectableComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SelectableComponent implements ControlValueAccessor, OnChanges, OnInit {\n  // Initialize Input properties with default values\n  @Input() options: SelectOption<string>[] = [];\n  @Input() singleSelectionOnly: boolean = false;\n  @Input() maxSelectionPossible: number = 0;\n  @Output() maxSelectionsReached: EventEmitter<boolean> = new EventEmitter();\n\n  public disableSelection: boolean = false;\n\n  private onChange: (value: string | string[] | null) => void = () => {};\n  private onTouched: () => void = () => {};\n  private lastWrittenValue: string | string[] | null = null;\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  ngOnInit(): void {\n    // Ensure component renders when options are initially set\n    this.cdr.detectChanges();\n  }\n\n  // OBSERVATION (ngOnChanges was clearing all selections on every options change):\n  // The old condition `!changes['singleSelectionOnly']?.isFirstChange()` evaluates\n  // to true when singleSelectionOnly is NOT in the changes object at all (undefined),\n  // so every time [options] changed, all selections were wiped. This caused the \"All\"\n  // chip and other preference chips to lose their selected state when the parent\n  // component rebuilt the options array. Fix: only reset when singleSelectionOnly\n  // actually changes (and not on its first binding).\n  // OBSERVATION (ngOnChanges — re-sync selected state when options are replaced):\n  // When the parent rebuilds the options array (e.g. after search results arrive),\n  // Angular delivers the new @Input before the FormControl can call writeValue on\n  // the new objects. The new SelectOption instances may have selected=true from the\n  // parent, but if the FormControl's writeValue ran earlier (on the OLD options),\n  // the new options' selected state can drift. Fix: store the last value written by\n  // the FormControl and re-apply it whenever [options] changes so the DOM always\n  // reflects the FormControl state.\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['singleSelectionOnly'] && !changes['singleSelectionOnly'].isFirstChange()) {\n      this.disableSelection = false;\n      this.options.forEach((option) => (option.selected = false));\n      this.onChange(this.singleSelectionOnly ? '' : []);\n    }\n    if (changes['options'] && this.lastWrittenValue !== null) {\n      this.writeValue(this.lastWrittenValue);\n    } else if (changes['options']) {\n      this.cdr.detectChanges();\n    }\n  }\n\n  // OBSERVATION (writeValue must SET state, not toggle):\n  // The old implementation called onSelection→onToggle which TOGGLES the selected\n  // property. If an option was already selected=true and writeValue was called with\n  // that value, it would flip to false. This caused: (a) the \"All\" chip appearing\n  // deactivated on first load despite being in the FormControl value, and (b) needing\n  // 4 clicks instead of 3 to cycle a preference (activate→deactivate→reactivate)\n  // because writeValue left selected out of sync with the FormControl.\n  writeValue(values: string | string[] | null): void {\n    this.lastWrittenValue = values;\n    if (typeof values === 'string') {\n      this.options.forEach((option) => (option.selected = option.value === values));\n    } else if (values && Array.isArray(values)) {\n      const valueSet = new Set(values);\n      this.options.forEach((option) => (option.selected = valueSet.has(option.value)));\n    } else {\n      this.options.forEach((option) => (option.selected = false));\n    }\n    this.cdr.detectChanges();\n  }\n\n  registerOnChange(fn: (value: string | string[] | null) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    // Implement this method if you want to handle disabling the component\n  }\n\n  public onSelection(value: string): void {\n    const selectedValue = this.options.find((option) => option.value == value);\n    if (selectedValue) this.onToggle(selectedValue);\n  }\n\n  public onToggle(selectedOption: SelectOption<string>): void {\n    if (this.disableSelection && !selectedOption.selected) return;\n\n    if (this.singleSelectionOnly) {\n      this.options.forEach((option) => (option.selected = false));\n    }\n\n    selectedOption.selected = !selectedOption.selected;\n    this.onTouched();\n\n    if (this.singleSelectionOnly) {\n      this.onChange(selectedOption.selected ? selectedOption.value : '');\n    } else {\n      const arr = this.options.filter((option) => option.selected);\n      if (this.maxSelectionPossible && arr.length >= this.maxSelectionPossible) {\n        this.disableSelection = true;\n        this.maxSelectionsReached.emit(true);\n      } else {\n        this.disableSelection = false;\n        this.maxSelectionsReached.emit(false);\n      }\n      this.onChange(arr.map((option) => option.value));\n    }\n    this.cdr.detectChanges();\n  }\n}\n","<div class=\"selectable-container\">\n  <ion-button\n    class=\"btn-selectable\"\n    *ngFor=\"let option of options\"\n    [ngClass]=\"{ selected: option.selected, disbaled: !option.selected && disableSelection }\"\n    (click)=\"onToggle(option)\"\n  >\n    <div class=\"selectable-content\">\n      @if (option.image) {\n        <div class=\"rounded\">\n          <img class=\"selectable-image\" [src]=\"option.image\" alt=\"image\" loading=\"lazy\" />\n        </div>\n      }\n      <span [ngClass]=\"{ 'label-with-image': !!option.image }\">{{ option.label }}</span>\n    </div>\n  </ion-button>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'lib-text-list',\r\n  templateUrl: './text-list.component.html',\r\n  styleUrls: ['./text-list.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class TextListComponent {\r\n  @Input() textListStrings: string[] = [];\r\n  @Input() placeholderText: string = '';\r\n  @Input() isUrlList: boolean = false;\r\n  @Input() disabled: boolean = false;\r\n\r\n  public buttonsHidden: boolean = false;\r\n  public showIndex: number = -1;\r\n  readonly textInputControl = new FormControl<string>('', { nonNullable: true });\r\n\r\n  @Output() listChange: EventEmitter<string[]> = new EventEmitter();\r\n\r\n  constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n  /**\r\n   * Adds new item in list, and clears the 'add' input value\r\n   */\r\n  public addTextItem(): void {\r\n    const text = this.textInputControl.value.trim();\r\n    if (text !== '') {\r\n      this.textListStrings.push(text);\r\n      this.listChange.emit(this.textListStrings);\r\n    } else {\r\n      return;\r\n    }\r\n    this.textInputControl.setValue('');\r\n  }\r\n\r\n  /**\r\n   * Splices the deleted item from the list\r\n   */\r\n  public deleteTextItem(text: string): void {\r\n    this.textListStrings.splice(this.textListStrings.indexOf(text), 1);\r\n    this.listChange.emit(this.textListStrings);\r\n  }\r\n\r\n  /**\r\n   * Called when clicking in or out of the input\r\n   */\r\n  public handleButtonToggle(): void {\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  public hideButtons(): void {\r\n    this.buttonsHidden = true;\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  /**\r\n   * Adds the input's string as part of the list on Enter key press\r\n   */\r\n  public onKeyUp(event: KeyboardEvent): void {\r\n    if (event.key === 'Enter') {\r\n      this.addTextItem();\r\n    }\r\n  }\r\n\r\n  public openUrl(item: string): void {\r\n    try {\r\n      new URL(item);\r\n      window.open(item, '_blank');\r\n    } catch {\r\n      if (item) {\r\n        window.open(encodeURI(`https://google.com/search?q=${item}`), '_blank');\r\n      }\r\n    }\r\n  }\r\n\r\n  public cancel(): void {\r\n    this.textInputControl.setValue('');\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n}\r\n","<!-- TODO: Create translations -->\r\n<div class=\"text-list\">\r\n  <div class=\"text-list__div\">\r\n    <div class=\"text-list__row text-list__item\" (mouseenter)=\"showIndex = i\" (mouseleave)=\"showIndex = -1\" *ngFor=\"let item of textListStrings; let i = index\">\r\n      <div *ngIf=\"isUrlList\" class=\"text-list__item-url\" (click)=\"openUrl(item)\">{{ item }}</div>\r\n      <div *ngIf=\"!isUrlList\" class=\"text-list__item-text\" #textItem>{{ i + 1 }}. {{ item }}</div>\r\n      <div class=\"text-list__trash-icon-div\">\r\n        <i [hidden]=\"disabled || showIndex !== i\" (click)=\"deleteTextItem(item)\" class=\"icon-trash text-list__trash-icon\"></i>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div [ngClass]=\"{ 'text-list__form-container--hidden': disabled }\" class=\"text-list__form-container text-list__row\">\r\n    <input\r\n      (keyup)=\"onKeyUp($event)\"\r\n      #textInput\r\n      [formControl]=\"textInputControl\"\r\n      class=\"text-list__input\"\r\n      (focus)=\"handleButtonToggle()\"\r\n      type=\"text\"\r\n      [placeholder]=\"placeholderText ? placeholderText : ''\"\r\n    />\r\n    <div class=\"text-list__button-container\" *ngIf=\"!buttonsHidden\">\r\n      <lib-primary-btn (click)=\"addTextItem()\"> Add </lib-primary-btn>\r\n      <lib-secondary-btn (click)=\"cancel()\"> Cancel </lib-secondary-btn>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { SelectOption } from '../../model/select-option';\r\n\r\n@Component({\r\n  selector: 'lib-rating-field',\r\n  templateUrl: './rating-field.component.html',\r\n  styleUrls: ['./rating-field.component.scss'],\r\n  standalone: false,\r\n})\r\nexport class RatingFieldComponent implements OnInit, OnDestroy {\r\n  @Input() formFieldControl!: FormControl<string | null>;\r\n\r\n  @Input()\r\n  public required = false;\r\n  @Input()\r\n  public label = '';\r\n  @Input()\r\n  public submitted = false;\r\n  @Input()\r\n  public showLabelInRequiredErrorMessage = true;\r\n  @Input()\r\n  public readOnly = false;\r\n  @Input()\r\n  public showRequiredIndicator = false;\r\n  @Input()\r\n  public options: SelectOption<string>[] = [];\r\n\r\n  private componentDestroyed$: Subject<void> = new Subject();\r\n\r\n  ngOnInit(): void {\r\n    if (this.required && !this.formFieldControl.value) {\r\n      this.formFieldControl.setErrors({ required: true });\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.componentDestroyed$.next();\r\n    this.componentDestroyed$.complete();\r\n  }\r\n\r\n  public handleClick(value: string): void {\r\n    this.formFieldControl.markAsDirty();\r\n    this.formFieldControl.markAsTouched();\r\n\r\n    if (!this.readOnly) {\r\n      if (value === this.formFieldControl.value) {\r\n        this.formFieldControl.setValue(null);\r\n        if (this.required) {\r\n          this.formFieldControl.setErrors({ required: true });\r\n        }\r\n      } else {\r\n        this.formFieldControl.setValue(value);\r\n        this.formFieldControl.setErrors(null);\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div class=\"rating-field\">\r\n  <div class=\"rating-field__container\">\r\n    <div class=\"rating-field__label\">{{ label }}</div>\r\n    <div\r\n      *ngIf=\"showRequiredIndicator && !readOnly && required\"\r\n      class=\"rating-field__required\"\r\n      [ngClass]=\"{ 'rating-field__required--submitted': submitted && formFieldControl.errors }\"\r\n      [libTooltip]=\"'Required'\"\r\n    >\r\n      <div class=\"rating-field__required-indicator\">*</div>\r\n    </div>\r\n  </div>\r\n  <div class=\"rating-field__input\" [ngClass]=\"{ 'rating-field__input--readonly': readOnly }\">\r\n    <ng-container *ngFor=\"let option of options\">\r\n      <i\r\n        [ngClass]=\"{ 'rating-field__input--rating-star--selected': formFieldControl.value === option.value }\"\r\n        class=\"icon icon-star-o rating-field__input--rating-star\"\r\n        (click)=\"handleClick(option.value)\"\r\n      ></i>\r\n    </ng-container>\r\n  </div>\r\n</div>\r\n<div *ngIf=\"!readOnly && submitted && formFieldControl.errors?.['required']\" class=\"rating-field__error-text\">\r\n  <span>{{ showLabelInRequiredErrorMessage ? (label ? label : 'Field') + ' is required.' : 'Required' }}</span>\r\n</div>\r\n","import { ChangeDetectorRef, Component, ComponentRef, Input, OnInit, Type, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport { InjectableFormField } from '../../interfaces/injectable-form-field';\r\n\r\n@Component({\r\n  selector: 'lib-injectable-form-field-wrapper',\r\n  templateUrl: './injectable-form-field-wrapper.component.html',\r\n  styleUrls: ['./injectable-form-field-wrapper.component.scss'],\r\n  standalone: false,\r\n})\r\nexport class InjectableFormFieldWrapperComponent implements OnInit {\r\n  @Input() formFieldControl!: UntypedFormControl;\r\n  @Input() componentType!: Type<InjectableFormField>;\r\n  @Input() componentConfig: any;\r\n\r\n  @ViewChild('componentContainer', { read: ViewContainerRef, static: true }) componentContainer!: ViewContainerRef;\r\n\r\n  private componentRef!: ComponentRef<InjectableFormField>;\r\n\r\n  constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n  ngOnInit() {\r\n    this.componentRef = this.componentContainer.createComponent(this.componentType);\r\n    this.componentRef.instance.setFormControl(this.formFieldControl);\r\n    this.componentRef.instance.setConfig(this.componentConfig);\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n}\r\n","<div class=\"component-container\" #componentContainer></div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CountryISO } from '../../enums/country-iso.enum';\r\nimport { FormFieldType } from '../../enums/form-field-type';\r\nimport { FormGenStyle } from '../../enums/form-gen-style';\r\nimport { PhoneNumberFormat } from '../../enums/phone-number-format.enum';\r\nimport { StatusTypes } from '../../enums/status-types';\r\nimport { TooltipDirectionPreference } from '../../enums/tooltip-direction-preference';\r\nimport { ImageUploadData } from '../../interfaces/image-upload.interface';\r\nimport { FormFieldVariables } from '../../model/form-generator/form-field-variables';\r\nimport { FormMultifieldConfig } from '../../model/form-generator/form-multifield-config';\r\nimport { FormSectionVariables } from '../../model/form-generator/form-section-variables';\r\nimport { ItemSummary } from '../../model/item-summary';\r\nimport { SelectOption } from '../../model/select-option';\r\n@Component({\r\n  selector: 'lib-form-group',\r\n  templateUrl: './form-group.component.html',\r\n  styleUrls: ['./form-group.component.scss'],\r\n  standalone: false,\r\n})\r\nexport class FormGroupComponent {\r\n  public StatusTypes = StatusTypes;\r\n  public FormFieldType = FormFieldType;\r\n  public FormGenStyle = FormGenStyle;\r\n  public DirectionPreference = TooltipDirectionPreference;\r\n  public PhoneNumberFormat = PhoneNumberFormat;\r\n  public CountryISO = CountryISO;\r\n\r\n  @Input() groupInfo!: FormSectionVariables;\r\n  @Input() dateFormat!: string;\r\n  @Input() currencySymbol = '$';\r\n  @Input() hideCents = false;\r\n  @Input() useTooltips = false;\r\n  @Input() formStyle!: FormGenStyle;\r\n\r\n  // ----- Methods called by template -----\r\n\r\n  public handleTypeaheadSelected(fieldInfo: FormFieldVariables, selected: ItemSummary<any>) {\r\n    fieldInfo.control.setValue(selected.item);\r\n    if (selected.header && selected.header.label) {\r\n      fieldInfo.typeaheadConfig!.defaultText = selected.header.label;\r\n    }\r\n  }\r\n\r\n  public handleTypeaheadDeselected(fieldInfo: FormFieldVariables) {\r\n    fieldInfo.control.setValue(null);\r\n    fieldInfo.typeaheadConfig!.defaultText = undefined;\r\n  }\r\n\r\n  public handleTypeaheadInputChange(fieldInfo: FormFieldVariables, value: string) {\r\n    fieldInfo.control.markAsDirty();\r\n    fieldInfo.control.markAsTouched();\r\n    if (!value || !value.length) {\r\n      this.handleTypeaheadDeselected(fieldInfo);\r\n    }\r\n    if (fieldInfo.typeaheadConfig!.inputChangeFunction) {\r\n      fieldInfo.typeaheadConfig!.inputChangeFunction(value);\r\n    }\r\n  }\r\n\r\n  public handleImageUploaded(fieldInfo: FormFieldVariables, data: ImageUploadData) {\r\n    fieldInfo.control.setValue(data);\r\n  }\r\n\r\n  public handleImageDeselected(fieldInfo: FormFieldVariables) {\r\n    fieldInfo.control.setValue(null);\r\n  }\r\n\r\n  public handleMultiselectChange(fieldInfo: FormFieldVariables, data: SelectOption<any>[]) {\r\n    fieldInfo.control.setValue(data.map((entry) => entry.value));\r\n    fieldInfo.multiselectDefaultOptions = data;\r\n  }\r\n\r\n  public handleFooterClicked(): void {\r\n    if (this.groupInfo.footerAction?.action) {\r\n      this.groupInfo.footerAction.action(this.groupInfo);\r\n    }\r\n  }\r\n\r\n  public handleListChange(fieldInfo: FormFieldVariables, list: string[]) {\r\n    fieldInfo.control.setValue(list);\r\n    fieldInfo.textlist = list;\r\n    fieldInfo.control.markAsDirty();\r\n    fieldInfo.control.markAsTouched();\r\n  }\r\n\r\n  public trackField(index: number, field: FormFieldVariables) {\r\n    return field.trackId;\r\n  }\r\n\r\n  public multifieldDescriptionTextList(mainDescriptionText: string | undefined, multifieldConfig: FormMultifieldConfig | undefined) {\r\n    const fieldDescriptions: string[] = [];\r\n\r\n    if (mainDescriptionText) {\r\n      fieldDescriptions.push(mainDescriptionText);\r\n    }\r\n    if (multifieldConfig?.config?.fields?.length) {\r\n      multifieldConfig.config.fields?.flat()?.forEach((field) => {\r\n        let currentDescription = '';\r\n        if (!!field.label && !!field.descriptionText) {\r\n          currentDescription = field.label + ': ' + field.descriptionText;\r\n        } else if (field.descriptionText) {\r\n          currentDescription = field.descriptionText;\r\n        }\r\n        if (currentDescription.length) {\r\n          fieldDescriptions.push(currentDescription);\r\n        }\r\n      });\r\n    }\r\n\r\n    return fieldDescriptions;\r\n  }\r\n  public getMappedEntityFunctions(entityFunctions: any): any {\r\n    if (!entityFunctions) {\r\n      return null;\r\n    }\r\n\r\n    if (entityFunctions.sortFunction && !entityFunctions.sortingFunction) {\r\n      return {\r\n        ...entityFunctions,\r\n        sortingFunction: entityFunctions.sortFunction,\r\n      };\r\n    }\r\n\r\n    return entityFunctions;\r\n  }\r\n\r\n  public handleSelectEnhancedChange(fieldInfo: FormFieldVariables, value: string): void {\r\n    fieldInfo.control.setValue(value);\r\n    fieldInfo.control.markAsDirty();\r\n    fieldInfo.control.markAsTouched();\r\n  }\r\n\r\n  public handleSelectableMaxSelectionsReached(fieldInfo: FormFieldVariables, reached: boolean): void {\r\n    // Handler for when max selections are reached in selectable component\r\n    // Can be used to show messages or disable other fields if needed\r\n  }\r\n}\r\n","<div class=\"form-group__group-section\">\r\n  <div class=\"form-group__row\" *ngFor=\"let row of groupInfo.fields\" [ngClass]=\"{ 'form-group__row--flat': formStyle === FormGenStyle.flat }\">\r\n    <div\r\n      class=\"form-group__form-section\"\r\n      *ngFor=\"let fieldInfo of row; trackBy: trackField\"\r\n      [ngStyle]=\"{ 'flex-grow': fieldInfo.flexGrow, 'flex-shrink': 1, 'flex-basis': fieldInfo.flexBasisPct + '%' }\"\r\n    >\r\n      <div\r\n        class=\"form-group__field-desc-section\"\r\n        [ngClass]=\"{\r\n          'form-group__field-desc-section--no-desc':\r\n            !fieldInfo.fullLength &&\r\n            row.length === 1 &&\r\n            !fieldInfo.descriptionText &&\r\n            !(\r\n              fieldInfo.type === FormFieldType.textarea ||\r\n              fieldInfo.type === FormFieldType.multifield ||\r\n              fieldInfo.type === FormFieldType.checkbox ||\r\n              fieldInfo.type === FormFieldType.radio ||\r\n              fieldInfo.type === FormFieldType.rating\r\n            ),\r\n          'form-group__field-desc-section--column': fieldInfo.type === FormFieldType.textarea || fieldInfo.type === FormFieldType.multifield,\r\n        }\"\r\n      >\r\n        <lib-form-field\r\n          *ngIf=\"\r\n            !fieldInfo.isHidden &&\r\n            (fieldInfo.type === FormFieldType.select ||\r\n              fieldInfo.type === FormFieldType.text ||\r\n              fieldInfo.type === FormFieldType.date ||\r\n              fieldInfo.type === FormFieldType.datetime ||\r\n              fieldInfo.type === FormFieldType.radio ||\r\n              fieldInfo.type === FormFieldType.toggle ||\r\n              fieldInfo.type === FormFieldType.checkbox ||\r\n              fieldInfo.type === FormFieldType.textarea ||\r\n              fieldInfo.type === FormFieldType.number ||\r\n              fieldInfo.type === FormFieldType.message ||\r\n              fieldInfo.type === FormFieldType.currency ||\r\n              fieldInfo.type === FormFieldType.percentage ||\r\n              fieldInfo.type === FormFieldType.range ||\r\n              fieldInfo.type === FormFieldType.incrementer ||\r\n              fieldInfo.type === FormFieldType.hyperlink ||\r\n              fieldInfo.type === FormFieldType.password ||\r\n              fieldInfo.type === FormFieldType.multiselectdropdown)\r\n          \"\r\n          [fieldName]=\"fieldInfo.controlName\"\r\n          [label]=\"fieldInfo.label || ''\"\r\n          [iconHtml]=\"fieldInfo.labelIcon\"\r\n          [formFieldControl]=\"fieldInfo.control\"\r\n          [submitted]=\"fieldInfo.control.touched\"\r\n          [maxLength]=\"fieldInfo.maxLength ? fieldInfo.maxLength : 524288\"\r\n          [type]=\"fieldInfo.type\"\r\n          [options]=\"fieldInfo.selectOptions\"\r\n          [required]=\"!!fieldInfo.required\"\r\n          [placeholder]=\"fieldInfo.placeholder || ''\"\r\n          [attr.id]=\"groupInfo.title + fieldInfo.controlName\"\r\n          [invalidPatternMessage]=\"fieldInfo.patternErrorMessage || ''\"\r\n          [message]=\"fieldInfo.message || ''\"\r\n          [dateFormat]=\"dateFormat\"\r\n          [decimalPosition]=\"fieldInfo.numberConfig?.decimalPosition\"\r\n          [currencySymbol]=\"currencySymbol\"\r\n          [hideCents]=\"hideCents\"\r\n          [useTooltips]=\"useTooltips\"\r\n          [descriptionText]=\"fieldInfo.descriptionText || ''\"\r\n          [isEditable]=\"!!fieldInfo.isEditable\"\r\n          [showLabelInRequiredErrorMessage]=\"!!fieldInfo.showLabelInRequiredErrorMessage\"\r\n          [readOnly]=\"!!fieldInfo.readOnly\"\r\n          [rowEditConfirmationObsv]=\"fieldInfo.confirmationObsv\"\r\n          (rowEdit)=\"fieldInfo.handleConfirmation?.($event)\"\r\n          class=\"form-group__field-section\"\r\n          [ngClass]=\"{\r\n            'form-group__field-section--column': fieldInfo.type === FormFieldType.textarea,\r\n            'form-group__single-item-desc': row.length === 1 && fieldInfo.descriptionText,\r\n          }\"\r\n        >\r\n        </lib-form-field>\r\n        <div\r\n          class=\"form-group__typeahead-section\"\r\n          [ngClass]=\"{ 'form-group__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n          *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.typeahead\"\r\n          [attr.id]=\"groupInfo.title + fieldInfo.controlName\"\r\n        >\r\n          <div *ngIf=\"fieldInfo.label || (useTooltips && fieldInfo.descriptionText)\">\r\n            <div *ngIf=\"fieldInfo.label\" class=\"form-group__label\">\r\n              {{ fieldInfo.label }}\r\n            </div>\r\n            <div\r\n              *ngIf=\"useTooltips && fieldInfo.descriptionText\"\r\n              class=\"form-group__label-icon-tooltip\"\r\n              [libTooltip]=\"fieldInfo.descriptionText\"\r\n              [directionPreference]=\"DirectionPreference.Right\"\r\n              [delayTime]=\"200\"\r\n            >\r\n              <i class=\"icon icon-gen3-info\"></i>\r\n            </div>\r\n          </div>\r\n          <lib-typeahead-field\r\n            class=\"form-group__typeahead\"\r\n            [entityFunctions]=\"getMappedEntityFunctions(fieldInfo.typeaheadConfig?.entity)\"\r\n            [selectionFunction]=\"fieldInfo.typeaheadConfig?.selectionFunction || null\"\r\n            [placeholderText]=\"fieldInfo.placeholder || ''\"\r\n            [alternateText]=\"fieldInfo.typeaheadConfig?.alternateText || ''\"\r\n            [alternateFunction]=\"fieldInfo.typeaheadConfig?.alternateFunction || null\"\r\n            [defaultSearchString]=\"fieldInfo.typeaheadConfig?.defaultSearchString || ''\"\r\n            [defaultText]=\"fieldInfo.typeaheadConfig?.defaultText || ''\"\r\n            [error]=\"\r\n              fieldInfo.control.touched && fieldInfo.control.errors\r\n                ? fieldInfo.control.errors['required']\r\n                  ? (fieldInfo.label ? fieldInfo.label : 'Field') + ' is required.'\r\n                  : fieldInfo.typeaheadConfig?.errorMessage || ''\r\n                : ''\r\n            \"\r\n            [suggestionText]=\"fieldInfo.typeaheadConfig?.suggestionText || ''\"\r\n            [required]=\"!!fieldInfo.required\"\r\n            (inputStringChange)=\"handleTypeaheadInputChange(fieldInfo, $event)\"\r\n            (selected)=\"handleTypeaheadSelected(fieldInfo, $event)\"\r\n            (deselected)=\"handleTypeaheadDeselected(fieldInfo)\"\r\n          >\r\n          </lib-typeahead-field>\r\n        </div>\r\n        <!-- TODO: USE our image upload -->\r\n        <!-- <div\r\n          class=\"form-group__photo-section\"\r\n          [ngClass]=\"{ 'form-group__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n          *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.photo\"\r\n          [attr.id]=\"groupInfo.title + fieldInfo.controlName\"\r\n        >\r\n          <div *ngIf=\"fieldInfo.label || (useTooltips && fieldInfo.descriptionText)\" class=\"form-group__photo-section-container\">\r\n            <div *ngIf=\"fieldInfo.label\" class=\"form-group__label\">\r\n              {{ fieldInfo.label }}\r\n            </div>\r\n            <div\r\n              *ngIf=\"useTooltips && fieldInfo.descriptionText\"\r\n              class=\"form-group__label-icon-tooltip\"\r\n              [libTooltip]=\"fieldInfo.descriptionText\"\r\n              [directionPreference]=\"DirectionPreference.Right\"\r\n              [delayTime]=\"200\"\r\n            >\r\n              <i class=\"icon icon-gen3-info\"></i>\r\n            </div>\r\n          </div>\r\n          <div class=\"form-group__photo\">\r\n            <lib-image-uploader\r\n              (imageDataUploaded)=\"handleImageUploaded(fieldInfo, $event)\"\r\n              (deselected)=\"handleImageDeselected(fieldInfo)\"\r\n              [acceptableFileTypes]=\"['image/gif', 'image/jpeg', 'image/png', 'image/tiff']\"\r\n              [imageUrl]=\"fieldInfo.imageUrl\"\r\n              [placeholderIconClass]=\"fieldInfo.placeholder\"\r\n            >\r\n            </lib-image-uploader>\r\n          </div>\r\n        </div> -->\r\n        <div\r\n          class=\"form-group__multiselect-section\"\r\n          [ngClass]=\"{ 'form-group__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n          *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.multiselect\"\r\n          [attr.id]=\"groupInfo.title + fieldInfo.controlName\"\r\n        >\r\n          <div *ngIf=\"fieldInfo.label || (useTooltips && fieldInfo.descriptionText)\" class=\"form-group__multiselect-section-container\">\r\n            <div *ngIf=\"fieldInfo.label\" class=\"form-group__label\">\r\n              {{ fieldInfo.label }}\r\n            </div>\r\n            <div\r\n              *ngIf=\"useTooltips && fieldInfo.descriptionText\"\r\n              class=\"form-group__label-icon-tooltip\"\r\n              [libTooltip]=\"fieldInfo.descriptionText\"\r\n              [directionPreference]=\"DirectionPreference.Right\"\r\n              [delayTime]=\"200\"\r\n            >\r\n              <i class=\"icon icon-gen3-info\"></i>\r\n            </div>\r\n          </div>\r\n          <lib-multiselect\r\n            class=\"form-group__multiselect\"\r\n            [fieldName]=\"fieldInfo.controlName\"\r\n            [dialogTitle]=\"fieldInfo.label || ''\"\r\n            [optionGroups]=\"fieldInfo.multiselectConfig?.options || []\"\r\n            [selectedOptions]=\"fieldInfo.multiselectConfig?.defaultOptions || []\"\r\n            [submitted]=\"fieldInfo.control.touched\"\r\n            [required]=\"!!fieldInfo.required\"\r\n            [disabled]=\"fieldInfo.disabled\"\r\n            [optionDeleteConfirmationObsv]=\"fieldInfo.confirmationObsv!\"\r\n            (optionDelete)=\"fieldInfo.handleConfirmation?.($event)\"\r\n            (selectedOptionsChange)=\"handleMultiselectChange(fieldInfo, $event)\"\r\n          ></lib-multiselect>\r\n        </div>\r\n        <div\r\n          *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.textlist\"\r\n          [ngClass]=\"{ 'form-group__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n          [attr.id]=\"groupInfo.title + fieldInfo.controlName\"\r\n          class=\"form-group__textlist-section\"\r\n        >\r\n          <div *ngIf=\"fieldInfo.label || (useTooltips && fieldInfo.descriptionText)\">\r\n            <div *ngIf=\"fieldInfo.label\" class=\"form-group__label\">\r\n              {{ fieldInfo.label }}\r\n            </div>\r\n            <div\r\n              *ngIf=\"useTooltips && fieldInfo.descriptionText\"\r\n              class=\"form-group__label-icon-tooltip\"\r\n              [libTooltip]=\"fieldInfo.descriptionText\"\r\n              [directionPreference]=\"DirectionPreference.Right\"\r\n              [delayTime]=\"200\"\r\n            >\r\n              <i class=\"icon icon-gen3-info\"></i>\r\n            </div>\r\n          </div>\r\n          <lib-text-list\r\n            [textListStrings]=\"fieldInfo.textlist || []\"\r\n            [placeholderText]=\"fieldInfo.placeholder || ''\"\r\n            [disabled]=\"fieldInfo.disabled\"\r\n            [isUrlList]=\"!!fieldInfo.textlistConfig?.isUrlList\"\r\n            (listChange)=\"handleListChange(fieldInfo, $event)\"\r\n          ></lib-text-list>\r\n        </div>\r\n        <div\r\n          *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.time\"\r\n          [ngClass]=\"{ 'form-group__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n          [attr.id]=\"groupInfo.title + fieldInfo.controlName\"\r\n          class=\"form-group__timepicker-section\"\r\n        >\r\n          <div *ngIf=\"fieldInfo.label || (useTooltips && fieldInfo.descriptionText)\" class=\"form-group__timepicker-section-label\">\r\n            <div *ngIf=\"fieldInfo.label\" class=\"form-group__label\">\r\n              {{ fieldInfo.label }}\r\n            </div>\r\n            <div\r\n              *ngIf=\"useTooltips && fieldInfo.descriptionText\"\r\n              class=\"form-group__label-icon-tooltip\"\r\n              [libTooltip]=\"fieldInfo.descriptionText\"\r\n              [directionPreference]=\"DirectionPreference.Right\"\r\n              [delayTime]=\"200\"\r\n            >\r\n              <i class=\"icon icon-gen3-info\"></i>\r\n            </div>\r\n          </div>\r\n          <lib-input-time-field\r\n            [formControl]=\"fieldInfo.control\"\r\n            [label]=\"fieldInfo.label || ''\"\r\n            [readonly]=\"!!fieldInfo.readOnly\"\r\n            [disabled]=\"fieldInfo.disabled\"\r\n            [showIcon]=\"true\"\r\n          ></lib-input-time-field>\r\n        </div>\r\n        <div *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.multifield\" [attr.id]=\"groupInfo.title + fieldInfo.controlName\" class=\"form-group__multifield-section\">\r\n          <lib-multi-field\r\n            class=\"form-group__multifield\"\r\n            [fieldName]=\"fieldInfo.controlName\"\r\n            [config]=\"fieldInfo.multifieldConfig!.config\"\r\n            [formFieldControl]=\"fieldInfo.control\"\r\n            [newRowText]=\"fieldInfo.multifieldConfig?.newRowText || ''\"\r\n            [useTooltips]=\"useTooltips\"\r\n            [maxLength]=\"fieldInfo.multifieldConfig?.maxLength || 524288\"\r\n            [errorMessage]=\"fieldInfo.multifieldConfig?.errorMessage || ''\"\r\n            [currencySymbol]=\"currencySymbol\"\r\n            [rowDeleteConfirmationObsv]=\"fieldInfo.confirmationObsv!\"\r\n            [disabled]=\"fieldInfo.disabled\"\r\n            (rowEdit)=\"fieldInfo.multifieldConfig?.handleRowEdit?.($event)\"\r\n            (rowDelete)=\"fieldInfo.handleConfirmation?.($event)\"\r\n            (valueChanges)=\"fieldInfo.multifieldConfig?.handleValueChanged?.($event)\"\r\n          >\r\n          </lib-multi-field>\r\n        </div>\r\n        <div *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.action\" [attr.id]=\"groupInfo.title + fieldInfo.controlName\" class=\"form-group__action-section\">\r\n          <div class=\"form-group__action-text\" (click)=\"fieldInfo.actionConfig?.action?.()\">\r\n            {{ fieldInfo.descriptionText }}\r\n          </div>\r\n        </div>\r\n        <div\r\n          *ngIf=\"\r\n            !fieldInfo.isHidden &&\r\n            !useTooltips &&\r\n            fieldInfo.type !== FormFieldType.action &&\r\n            fieldInfo.type !== FormFieldType.tel &&\r\n            fieldInfo.type !== FormFieldType.cardNumber &&\r\n            fieldInfo.type !== FormFieldType.cardExpiry &&\r\n            fieldInfo.type !== FormFieldType.selectEnhanced &&\r\n            fieldInfo.type !== FormFieldType.selectable &&\r\n            (fieldInfo.descriptionText || (fieldInfo.type === FormFieldType.multifield && multifieldDescriptionTextList(fieldInfo.descriptionText, fieldInfo.multifieldConfig)))\r\n          \"\r\n          class=\"form-group__description-text\"\r\n          [ngClass]=\"{\r\n            'form-group__description-text-no-label': !fieldInfo.label && !useTooltips && fieldInfo.descriptionText,\r\n            'form-group__description-text-multiselect': !useTooltips && fieldInfo.type === FormFieldType.multiselect,\r\n          }\"\r\n        >\r\n          <i\r\n            *ngIf=\"fieldInfo.type !== FormFieldType.multifield || multifieldDescriptionTextList(fieldInfo.descriptionText, fieldInfo.multifieldConfig).length > 0\"\r\n            class=\"form-group__description-text-icon icon icon-gen3-info\"\r\n            [ngClass]=\"{\r\n              'form-group__description-text-icon-top':\r\n                fieldInfo.type === FormFieldType.multifield && multifieldDescriptionTextList(fieldInfo.descriptionText, fieldInfo.multifieldConfig),\r\n            }\"\r\n          ></i>\r\n          <ng-container *ngIf=\"fieldInfo.type === FormFieldType.multifield\">\r\n            <ul class=\"form-group__description-text-list\">\r\n              <li *ngFor=\"let description of multifieldDescriptionTextList(fieldInfo.descriptionText, fieldInfo.multifieldConfig)\">{{ description }}</li>\r\n            </ul>\r\n          </ng-container>\r\n          <span class=\"form-group__description-text-wrapper\" *ngIf=\"fieldInfo.type !== FormFieldType.multifield\" [innerHTML]=\"fieldInfo.descriptionText\"> </span>\r\n        </div>\r\n        <div *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.banner\" [attr.id]=\"groupInfo.title + fieldInfo.controlName\" class=\"form-group__form-banner\">\r\n          <lib-status-banner\r\n            [show]=\"true\"\r\n            [type]=\"fieldInfo.bannerConfig?.statusType || StatusTypes.Info\"\r\n            [title]=\"fieldInfo.label || ''\"\r\n            [message]=\"fieldInfo.descriptionText || ''\"\r\n            [showClose]=\"false\"\r\n          ></lib-status-banner>\r\n        </div>\r\n        <div *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.injectable\" [attr.id]=\"groupInfo.title + fieldInfo.controlName\" class=\"form-group__injectable-section\">\r\n          <lib-injectable-form-field-wrapper\r\n            [formFieldControl]=\"fieldInfo.control\"\r\n            [componentType]=\"fieldInfo.injectableConfig!.componentType\"\r\n            [componentConfig]=\"fieldInfo.injectableConfig?.componentConfig\"\r\n          ></lib-injectable-form-field-wrapper>\r\n        </div>\r\n        <div *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.rating\" [attr.id]=\"groupInfo.title + fieldInfo.controlName\" class=\"form-group__rating-field-section\">\r\n          <lib-rating-field\r\n            [formFieldControl]=\"fieldInfo.control\"\r\n            [submitted]=\"fieldInfo.control.touched\"\r\n            [required]=\"!!fieldInfo.required\"\r\n            [label]=\"fieldInfo.label || ''\"\r\n            [showLabelInRequiredErrorMessage]=\"!!fieldInfo.showLabelInRequiredErrorMessage\"\r\n            [readOnly]=\"!!fieldInfo.readOnly\"\r\n            [options]=\"fieldInfo.ratingConfig?.options || []\"\r\n          >\r\n          </lib-rating-field>\r\n        </div>\r\n        <div\r\n          *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.tel\"\r\n          [ngClass]=\"{ 'form-group__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n          [attr.id]=\"groupInfo.title + fieldInfo.controlName\"\r\n          class=\"form-group__tel-input-section\"\r\n        >\r\n          <div *ngIf=\"fieldInfo.label || (useTooltips && fieldInfo.descriptionText)\">\r\n            <div *ngIf=\"fieldInfo.label\" class=\"form-group__label\">\r\n              {{ fieldInfo.label }}\r\n            </div>\r\n            <div\r\n              *ngIf=\"useTooltips && fieldInfo.descriptionText\"\r\n              class=\"form-group__label-icon-tooltip\"\r\n              [libTooltip]=\"fieldInfo.descriptionText\"\r\n              [directionPreference]=\"DirectionPreference.Right\"\r\n              [delayTime]=\"200\"\r\n            >\r\n              <i class=\"icon icon-gen3-info\"></i>\r\n            </div>\r\n          </div>\r\n          <lib-tel-input\r\n            [formControl]=\"fieldInfo.control\"\r\n            [enablePlaceholder]=\"fieldInfo.telInputConfig?.enablePlaceholder ?? true\"\r\n            [maskPhoneNumber]=\"fieldInfo.telInputConfig?.maskPhoneNumber ?? true\"\r\n            [eagerMask]=\"fieldInfo.telInputConfig?.eagerMask ?? true\"\r\n            [customPlaceholder]=\"fieldInfo.telInputConfig?.customPlaceholder || fieldInfo.placeholder || ''\"\r\n            [numberFormat]=\"fieldInfo.telInputConfig?.numberFormat ?? PhoneNumberFormat.International\"\r\n            [cssClass]=\"fieldInfo.telInputConfig?.cssClass || 'form-control'\"\r\n            [onlyCountries]=\"fieldInfo.telInputConfig?.onlyCountries || []\"\r\n            [searchCountryFlag]=\"fieldInfo.telInputConfig?.searchCountryFlag ?? false\"\r\n            [searchCountryField]=\"fieldInfo.telInputConfig?.searchCountryField || []\"\r\n            [searchCountryPlaceholder]=\"fieldInfo.telInputConfig?.searchCountryPlaceholder || 'Search ICountry'\"\r\n            [maxLength]=\"fieldInfo.telInputConfig?.maxLength || 15\"\r\n            [selectFirstCountry]=\"fieldInfo.telInputConfig?.selectFirstCountry ?? true\"\r\n            [selectedCountryISO]=\"fieldInfo.telInputConfig?.selectedCountryISO ?? CountryISO.UnitedStates\"\r\n            [phoneValidation]=\"fieldInfo.telInputConfig?.phoneValidation ?? true\"\r\n            [inputId]=\"fieldInfo.telInputConfig?.inputId || 'phone'\"\r\n            [separateDialCode]=\"fieldInfo.telInputConfig?.separateDialCode ?? false\"\r\n            [showDropDownArrow]=\"fieldInfo.telInputConfig?.showDropDownArrow ?? false\"\r\n            [icons]=\"fieldInfo.telInputConfig?.icons || null\"\r\n            [autocomplete]=\"fieldInfo.telInputConfig?.autocomplete || 'tel'\"\r\n          ></lib-tel-input>\r\n        </div>\r\n        <div\r\n          *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.cardNumber\"\r\n          [ngClass]=\"{ 'form-group__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n          [attr.id]=\"groupInfo.title + fieldInfo.controlName\"\r\n          class=\"form-group__card-number-section\"\r\n        >\r\n          <div *ngIf=\"fieldInfo.label || (useTooltips && fieldInfo.descriptionText)\">\r\n            <div *ngIf=\"fieldInfo.label\" class=\"form-group__label\">\r\n              {{ fieldInfo.label }}\r\n            </div>\r\n            <div\r\n              *ngIf=\"useTooltips && fieldInfo.descriptionText\"\r\n              class=\"form-group__label-icon-tooltip\"\r\n              [libTooltip]=\"fieldInfo.descriptionText\"\r\n              [directionPreference]=\"DirectionPreference.Right\"\r\n              [delayTime]=\"200\"\r\n            >\r\n              <i class=\"icon icon-gen3-info\"></i>\r\n            </div>\r\n          </div>\r\n          <lib-input-field-card-number\r\n            [formControl]=\"fieldInfo.control\"\r\n            [label]=\"fieldInfo.label || ''\"\r\n            [cardBrands]=\"fieldInfo.cardNumberConfig?.cardBrands || []\"\r\n            [amExpressMask]=\"fieldInfo.cardNumberConfig?.amExpressMask || 'dddd dddddd ddddd'\"\r\n            [mask4]=\"fieldInfo.cardNumberConfig?.mask4 || 'dddd dddd dddd dddd'\"\r\n            [disabled]=\"fieldInfo.disabled\"\r\n            [readonly]=\"!!fieldInfo.readOnly\"\r\n          ></lib-input-field-card-number>\r\n        </div>\r\n        <div\r\n          *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.cardExpiry\"\r\n          [ngClass]=\"{ 'form-group__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n          [attr.id]=\"groupInfo.title + fieldInfo.controlName\"\r\n          class=\"form-group__card-expiry-section\"\r\n        >\r\n          <div *ngIf=\"fieldInfo.label || (useTooltips && fieldInfo.descriptionText)\">\r\n            <div *ngIf=\"fieldInfo.label\" class=\"form-group__label\">\r\n              {{ fieldInfo.label }}\r\n            </div>\r\n            <div\r\n              *ngIf=\"useTooltips && fieldInfo.descriptionText\"\r\n              class=\"form-group__label-icon-tooltip\"\r\n              [libTooltip]=\"fieldInfo.descriptionText\"\r\n              [directionPreference]=\"DirectionPreference.Right\"\r\n              [delayTime]=\"200\"\r\n            >\r\n              <i class=\"icon icon-gen3-info\"></i>\r\n            </div>\r\n          </div>\r\n          <lib-input-field-card-expiry\r\n            [formControl]=\"fieldInfo.control\"\r\n            [label]=\"fieldInfo.label || ''\"\r\n            [disabled]=\"fieldInfo.disabled\"\r\n            [readonly]=\"!!fieldInfo.readOnly\"\r\n          ></lib-input-field-card-expiry>\r\n        </div>\r\n        <div\r\n          *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.selectEnhanced\"\r\n          [ngClass]=\"{ 'form-group__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n          [attr.id]=\"groupInfo.title + fieldInfo.controlName\"\r\n          class=\"form-group__select-enhanced-section\"\r\n        >\r\n          <div *ngIf=\"fieldInfo.label || (useTooltips && fieldInfo.descriptionText)\">\r\n            <div *ngIf=\"fieldInfo.label\" class=\"form-group__label\">\r\n              {{ fieldInfo.label }}\r\n            </div>\r\n            <div\r\n              *ngIf=\"useTooltips && fieldInfo.descriptionText\"\r\n              class=\"form-group__label-icon-tooltip\"\r\n              [libTooltip]=\"fieldInfo.descriptionText\"\r\n              [directionPreference]=\"DirectionPreference.Right\"\r\n              [delayTime]=\"200\"\r\n            >\r\n              <i class=\"icon icon-gen3-info\"></i>\r\n            </div>\r\n          </div>\r\n          <lib-input-field-select\r\n            [formControl]=\"fieldInfo.control\"\r\n            [label]=\"fieldInfo.label || ''\"\r\n            [placeholder]=\"fieldInfo.placeholder || ''\"\r\n            [multiple]=\"fieldInfo.selectEnhancedConfig?.multiple ?? false\"\r\n            [optionLabel]=\"fieldInfo.selectEnhancedConfig?.optionLabel || ''\"\r\n            [optionValue]=\"fieldInfo.selectEnhancedConfig?.optionValue || ''\"\r\n            [options]=\"fieldInfo.selectEnhancedConfig?.options || []\"\r\n            [optionsTemplates]=\"fieldInfo.selectEnhancedConfig?.optionsTemplates || []\"\r\n            [filterBy]=\"fieldInfo.selectEnhancedConfig?.filterBy || ''\"\r\n            [enableFilter]=\"fieldInfo.selectEnhancedConfig?.enableFilter ?? false\"\r\n            [showClear]=\"fieldInfo.selectEnhancedConfig?.showClear ?? false\"\r\n            [editable]=\"fieldInfo.selectEnhancedConfig?.editable ?? false\"\r\n            [withTemplate]=\"fieldInfo.selectEnhancedConfig?.withTemplate ?? false\"\r\n            [enableTranslation]=\"fieldInfo.selectEnhancedConfig?.enableTranslation ?? false\"\r\n            [readonly]=\"!!fieldInfo.readOnly\"\r\n            [disabled]=\"fieldInfo.disabled\"\r\n            (valueChange)=\"handleSelectEnhancedChange(fieldInfo, $event)\"\r\n          ></lib-input-field-select>\r\n        </div>\r\n        <div\r\n          *ngIf=\"!fieldInfo.isHidden && fieldInfo.type === FormFieldType.selectable\"\r\n          [ngClass]=\"{ 'form-group__single-item-desc': row.length === 1 && fieldInfo.descriptionText }\"\r\n          [attr.id]=\"groupInfo.title + fieldInfo.controlName\"\r\n          class=\"form-group__selectable-section\"\r\n        >\r\n          <div *ngIf=\"fieldInfo.label || (useTooltips && fieldInfo.descriptionText)\">\r\n            <div *ngIf=\"fieldInfo.label\" class=\"form-group__label\">\r\n              {{ fieldInfo.label }}\r\n            </div>\r\n            <div\r\n              *ngIf=\"useTooltips && fieldInfo.descriptionText\"\r\n              class=\"form-group__label-icon-tooltip\"\r\n              [libTooltip]=\"fieldInfo.descriptionText\"\r\n              [directionPreference]=\"DirectionPreference.Right\"\r\n              [delayTime]=\"200\"\r\n            >\r\n              <i class=\"icon icon-gen3-info\"></i>\r\n            </div>\r\n          </div>\r\n          <lib-selectable\r\n            [formControl]=\"fieldInfo.control\"\r\n            [options]=\"fieldInfo.selectableConfig?.options || []\"\r\n            [singleSelectionOnly]=\"fieldInfo.selectableConfig?.singleSelectionOnly ?? false\"\r\n            [maxSelectionPossible]=\"fieldInfo.selectableConfig?.maxSelectionPossible || 0\"\r\n            (maxSelectionsReached)=\"handleSelectableMaxSelectionsReached(fieldInfo, $event)\"\r\n          ></lib-selectable>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div class=\"form-group__footer\" *ngIf=\"groupInfo.footerAction\" (click)=\"handleFooterClicked()\">\r\n    <span class=\"form-group__footer-text\" [innerHTML]=\"groupInfo.footerAction.displayHtml\"></span>\r\n  </div>\r\n</div>\r\n","import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup, ValidatorFn, Validators } from '@angular/forms';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { FormFieldType } from '../../enums/form-field-type';\r\nimport { FormGenStyle } from '../../enums/form-gen-style';\r\nimport { FormFieldStructure } from '../../model/form-generator/form-field-structure';\r\nimport { FormGroupExpanderChange } from '../../model/form-generator/form-group-expander-change';\r\nimport { FormSectionStructure } from '../../model/form-generator/form-section-structure';\r\nimport { FormSectionVariables } from '../../model/form-generator/form-section-variables';\r\nimport { FormStructure } from '../../model/form-generator/form-stucture';\r\nimport { FormVariables } from '../../model/form-generator/form-variables';\r\nimport { generateUniqueId } from '../../utils/id-generator';\r\n\r\n@Component({\r\n  selector: 'lib-form-generator',\r\n  templateUrl: './form-generator.component.html',\r\n  styleUrls: ['./form-generator.component.scss'],\r\n  standalone: false,\r\n})\r\nexport class FormGeneratorComponent implements OnDestroy, AfterViewInit {\r\n  // This gives template access to enum\r\n  public FormFieldType = FormFieldType;\r\n  public FormGenStyle = FormGenStyle;\r\n  public formLoaded = false;\r\n  public formInfo: FormVariables = new FormVariables();\r\n  @Input() set formStructure(structure: FormStructure) {\r\n    this.loadStructureInfo(structure);\r\n  }\r\n  @Input() set fieldChanges(obsv: Observable<{ groupName: string; structure: FormFieldStructure }[]>) {\r\n    this.fieldChangeObsvSwitched.next();\r\n    obsv.pipe(takeUntil(this.fieldChangeObsvSwitched)).subscribe((values) => {\r\n      values.forEach((value) => {\r\n        this.updateFieldInfo(value.groupName, value.structure);\r\n      });\r\n      this.changeDetectorRef.detectChanges();\r\n    });\r\n  }\r\n  @Input() set groupChanges(obsv: Observable<FormSectionStructure[]>) {\r\n    this.groupChangeObsvSwitched.next();\r\n    obsv.pipe(takeUntil(this.groupChangeObsvSwitched)).subscribe((groups) => {\r\n      groups.forEach((group) => {\r\n        this.updateGroupInfo(group);\r\n      });\r\n      this.changeDetectorRef.detectChanges();\r\n    });\r\n  }\r\n  @Input() set formStyle(style: FormGenStyle) {\r\n    this.formInfo.formStyle = style;\r\n  }\r\n  @Input() dateFormat!: string;\r\n  @Input() currencySymbol = '$';\r\n  @Input() hideCents = false;\r\n  @Input() useTooltips = false;\r\n\r\n  private fieldChangeObsvSwitched: Subject<void> = new Subject();\r\n  private groupChangeObsvSwitched: Subject<void> = new Subject();\r\n  private componentDestroyed$: Subject<void> = new Subject();\r\n\r\n  @Output() formGroupUpdate: EventEmitter<UntypedFormGroup> = new EventEmitter();\r\n  @Output() formGroupExpanderChanged: EventEmitter<FormGroupExpanderChange> = new EventEmitter();\r\n\r\n  constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n  // ----- Angular lifecycle methods -----\r\n\r\n  ngOnDestroy(): void {\r\n    this.componentDestroyed$.next();\r\n    this.fieldChangeObsvSwitched.next();\r\n    this.groupChangeObsvSwitched.next();\r\n    this.fieldChangeObsvSwitched.complete();\r\n    this.componentDestroyed$.complete();\r\n    this.groupChangeObsvSwitched.complete();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (this.formInfo.formGroup) {\r\n      this.formGroupUpdate.emit(this.formInfo.formGroup);\r\n    }\r\n  }\r\n\r\n  // ----- Methods -----\r\n\r\n  /**\r\n   *\r\n   * @param structure - Form structure to construct form from\r\n   *\r\n   * A method to take a structure and convert it to the appropriate variables for the UI.\r\n   */\r\n  private loadStructureInfo(structure: FormStructure): void {\r\n    const formInfo = new FormVariables();\r\n    formInfo.formStyle = structure?.formStyle;\r\n    structure?.groupStructures?.forEach((groupStructure) => {\r\n      formInfo.addGroupInfo(groupStructure.convertStructureToVariables());\r\n    });\r\n    this.formInfo.formStyle = formInfo.formStyle;\r\n    this.formInfo.formGroup = formInfo.formGroup;\r\n    this.formLoaded = true;\r\n\r\n    // Hide empty form sections\r\n    this.formInfo.groups = formInfo.groups.filter((group) => group.fields.length > 0);\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param groupName - name of group with field - NOTE: unless it was specifically\r\n   * set, groupId will be the same as groupName\r\n   * @param structure - new strucutre to implement\r\n   *\r\n   *\r\n   */\r\n  private updateFieldInfo(groupId: string, structure: FormFieldStructure) {\r\n    const groupIndex = this.formInfo.groups.findIndex((group) => group.id === groupId);\r\n    if (groupIndex > -1) {\r\n      const info = structure.convertStructureToVariables();\r\n      const control = <UntypedFormControl>this.formInfo.formGroup.get([groupId, structure.fieldName]);\r\n      if (control) {\r\n        const validators: ValidatorFn[] = [];\r\n        if (structure.required) {\r\n          validators.push(Validators.required);\r\n        }\r\n        if (structure.validationPattern && structure.inputType !== FormFieldType.date) {\r\n          validators.push(Validators.pattern(structure.validationPattern));\r\n        }\r\n        const controlOptions = structure.controlOptions ? structure.controlOptions : {};\r\n        controlOptions.validators = validators;\r\n        control.setValidators(validators);\r\n        // For the Typeahead fields which are showing errors = null after adding the required validator\r\n        if (structure.required && control.value == null && control.errors == null) {\r\n          control.updateValueAndValidity();\r\n        }\r\n        info.control = control;\r\n      }\r\n      this.formInfo.groups[groupIndex].trackId = generateUniqueId();\r\n      this.formInfo.groups[groupIndex].addFieldInfo(true, info);\r\n    }\r\n  }\r\n\r\n  private updateGroupInfo(structure: FormSectionStructure): void {\r\n    const group = this.formInfo.groups.find((nextGroup) => nextGroup.id === structure.id);\r\n    if (group) {\r\n      group.expanded = structure.expanded;\r\n      group.footerAction = structure.footerAction;\r\n      group.title = structure.groupName;\r\n    }\r\n  }\r\n\r\n  public handleGroupClosed(groupInfo: FormSectionVariables): void {\r\n    // We need to track when the user manually closes the\r\n    // panel so that next time we programatically expand it,\r\n    // the panel doesn't \"think it's already expanded\" even\r\n    // though it's not\r\n    groupInfo.expanded = false;\r\n    if (this.formInfo.formStyle === FormGenStyle.expander) {\r\n      this.formGroupExpanderChanged.emit(new FormGroupExpanderChange(false, groupInfo.title));\r\n    }\r\n  }\r\n\r\n  public handleGroupOpened(groupInfo: FormSectionVariables): void {\r\n    // Similar rationale to above handleGroupClosed method\r\n    groupInfo.expanded = true;\r\n    if (this.formInfo.formStyle === FormGenStyle.expander) {\r\n      this.formGroupExpanderChanged.emit(new FormGroupExpanderChange(true, groupInfo.title));\r\n    }\r\n  }\r\n\r\n  public trackGroup(index: number, group: FormSectionVariables) {\r\n    return group.trackId;\r\n  }\r\n}\r\n","<form class=\"form-generator\" [formGroup]=\"formInfo.formGroup\">\r\n  <div *ngIf=\"formInfo.formStyle === FormGenStyle.expander\">\r\n    <div *ngFor=\"let groupInfo of formInfo.groups; trackBy: trackGroup\">\r\n      <div *ngIf=\"!groupInfo.isHidden\" [attr.id]=\"groupInfo.title\">\r\n        <lib-expansion-panel\r\n          *ngIf=\"groupInfo.fields.length\"\r\n          [title]=\"groupInfo.title\"\r\n          [count]=\"-1\"\r\n          [expanded]=\"groupInfo.expanded\"\r\n          [useSlideToggle]=\"groupInfo.useSlideToggle\"\r\n          [iconTray]=\"groupInfo.headerActions\"\r\n          (closed)=\"handleGroupClosed(groupInfo)\"\r\n          (opened)=\"handleGroupOpened(groupInfo)\"\r\n        >\r\n          <lib-form-group\r\n            [groupInfo]=\"groupInfo\"\r\n            [useTooltips]=\"useTooltips\"\r\n            [dateFormat]=\"dateFormat\"\r\n            [currencySymbol]=\"currencySymbol\"\r\n            [hideCents]=\"hideCents\"\r\n            [formStyle]=\"formInfo.formStyle\"\r\n          >\r\n          </lib-form-group>\r\n        </lib-expansion-panel>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div *ngIf=\"formInfo.formStyle === FormGenStyle.flat\">\r\n    <div *ngFor=\"let groupInfo of formInfo.groups; trackBy: trackGroup\">\r\n      <div *ngIf=\"!groupInfo.isHidden\">\r\n        <div class=\"form-generator__group-title\" *ngIf=\"groupInfo.title\">{{ groupInfo.title }}</div>\r\n        <lib-form-group\r\n          [groupInfo]=\"groupInfo\"\r\n          [useTooltips]=\"useTooltips\"\r\n          [dateFormat]=\"dateFormat\"\r\n          [currencySymbol]=\"currencySymbol\"\r\n          [hideCents]=\"hideCents\"\r\n          [formStyle]=\"formInfo.formStyle\"\r\n        >\r\n        </lib-form-group>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</form>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { InputFieldModule } from '../input-field/input-field.module';\nimport { InputFieldCardNumberComponent } from './input-field-card-number/input-field-card-number.component';\nimport { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { InputFieldCardExpiryComponent } from './input-field-card-expiry/input-field-card-expiry.component';\n\n@NgModule({\n  declarations: [InputFieldCardNumberComponent, InputFieldCardExpiryComponent],\n  imports: [CommonModule, FormsModule, ReactiveFormsModule, InputFieldModule, NgxMaskDirective, NgxMaskPipe],\n  exports: [InputFieldCardNumberComponent, InputFieldCardExpiryComponent],\n  providers: [provideNgxMask()],\n})\nexport class InputFieldCardModule {}\n","import { CommonModule, DatePipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgxMaskDirective } from 'ngx-mask';\nimport { InputTimeFieldComponent } from './input-time-field.component';\n\n@NgModule({\n  declarations: [InputTimeFieldComponent],\n  imports: [CommonModule, ReactiveFormsModule, FormsModule, MatIconModule, MatRippleModule, MatAutocompleteModule, NgxMaskDirective],\n  exports: [InputTimeFieldComponent],\n  providers: [DatePipe],\n})\nexport class InputTimeFieldModule {}\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { DashedCheckboxModule } from '../dashed-checkbox/dashed-checkbox.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { InfoCardComponent } from './info-card.component';\r\n\r\n@NgModule({\r\n  declarations: [InfoCardComponent],\r\n  exports: [InfoCardComponent],\r\n  imports: [CommonModule, TooltipModule, DashedCheckboxModule],\r\n})\r\nexport class InfoCardModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { InfoCardListComponent } from './info-card-list.component';\r\nimport { InfoCardModule } from '../info-card/info-card.module';\r\nimport { SearchBarModule } from '../search-bar/search-bar.module';\r\n\r\n@NgModule({\r\n  declarations: [InfoCardListComponent],\r\n  exports: [InfoCardListComponent],\r\n  imports: [CommonModule, InfoCardModule, SearchBarModule],\r\n})\r\nexport class InfoCardListModule {}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { InfoCardListModule } from '../info-card-list/info-card-list.module';\nimport { SearchBarModule } from '../search-bar/search-bar.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { TypeaheadFieldComponent, TypeaheadResultComponent } from './typeahead-field.component';\n\n@NgModule({\n  declarations: [TypeaheadFieldComponent, TypeaheadResultComponent],\n  exports: [TypeaheadFieldComponent],\n  imports: [CommonModule, MatProgressSpinnerModule, SearchBarModule, TooltipModule, MatMenuModule, InfoCardListModule, TranslateModule],\n})\nexport class TypeaheadFieldModule {}\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ButtonsModule } from '../buttons/buttons.module';\r\nimport { FormFieldModule } from '../form-field/form-field.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { TypeaheadFieldModule } from '../typeahead-field/typeahead-field.module';\r\nimport { MultiFieldComponent } from './multi-field.component';\r\n\r\n@NgModule({\r\n  declarations: [MultiFieldComponent],\r\n  exports: [MultiFieldComponent],\r\n  imports: [CommonModule, FormFieldModule, TypeaheadFieldModule, TooltipModule, ButtonsModule],\r\n})\r\nexport class MultiFieldModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormFieldModule } from '../form-field/form-field.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { RatingFieldComponent } from './rating-field.component';\r\n\r\n@NgModule({\r\n  declarations: [RatingFieldComponent],\r\n  imports: [CommonModule, FormFieldModule, TooltipModule],\r\n  exports: [RatingFieldComponent],\r\n})\r\nexport class RatingFieldModule {}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SelectableComponent } from './selectable.component';\n\n@NgModule({\n  declarations: [SelectableComponent],\n  imports: [CommonModule, IonicModule, TranslateModule],\n  exports: [SelectableComponent],\n})\nexport class SelectableModule {}\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { ButtonsModule } from '../buttons/buttons.module';\r\nimport { TextListComponent } from './text-list.component';\r\n\r\n@NgModule({\r\n  declarations: [TextListComponent],\r\n  exports: [TextListComponent],\r\n  imports: [CommonModule, ButtonsModule, ReactiveFormsModule],\r\n})\r\nexport class TextListModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { ExpansionPanelModule } from '../expansion-panel/expansion-panel.module';\r\nimport { FormFieldModule } from '../form-field/form-field.module';\r\nimport { InputFieldCardModule } from '../input-field-card/input-field-card.module';\r\nimport { InputFieldSelectModule } from '../input-field-select/input-field-select.module';\r\nimport { InputTimeFieldModule } from '../input-time-field/input-time-field.module';\r\nimport { MultiFieldModule } from '../multi-field/multi-field.module';\r\nimport { MultiselectModule } from '../multiselect/multiselect.module';\r\nimport { NotificationsModule } from '../notifications/notifications.module';\r\nimport { RatingFieldModule } from '../rating-field/rating-field.module';\r\nimport { SelectableModule } from '../selectable/selectable.module';\r\nimport { TelInputModule } from '../tel-input/tel-input.module';\r\nimport { TextListModule } from '../text-list/text-list.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { TypeaheadFieldModule } from '../typeahead-field/typeahead-field.module';\r\nimport { FormGeneratorComponent } from './form-generator.component';\r\nimport { FormGroupComponent } from './form-group.component';\r\nimport { InjectableFormFieldWrapperComponent } from './injectable-form-field-wrapper.component';\r\n\r\n@NgModule({\r\n  declarations: [FormGeneratorComponent, FormGroupComponent, InjectableFormFieldWrapperComponent],\r\n  exports: [FormGeneratorComponent],\r\n  imports: [\r\n    CommonModule,\r\n    ExpansionPanelModule,\r\n    FormFieldModule,\r\n    InputTimeFieldModule,\r\n    InputFieldCardModule,\r\n    InputFieldSelectModule,\r\n    MultiFieldModule,\r\n    MultiselectModule,\r\n    NotificationsModule,\r\n    ReactiveFormsModule,\r\n    SelectableModule,\r\n    TelInputModule,\r\n    TextListModule,\r\n    TypeaheadFieldModule,\r\n    TooltipModule,\r\n    RatingFieldModule,\r\n  ],\r\n})\r\nexport class FormGeneratorModule {}\r\n","import { Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { MAT_DATE_FORMATS } from '@angular/material/core';\nimport { isValid, parse, parseISO } from 'date-fns';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IDateFormats } from '../../../interfaces/date-formats';\n\n@Component({\n  selector: 'lib-date-filter',\n  templateUrl: './date-filter.component.html',\n  styleUrls: ['./date-filter.component.scss'],\n  standalone: false,\n})\nexport class DateFilterComponent implements OnInit, OnDestroy {\n  @Input() submitted = false;\n  @Input() placeholder = 'select an option';\n  @Input() disabled = false;\n  @Input() rangeSelect = false;\n  @Input() formFieldControl = new UntypedFormControl();\n  @Input() dateFormat = 'MM/dd/yyyy';\n\n  public rangeGroup = new UntypedFormGroup({\n    start: new UntypedFormControl(),\n    end: new UntypedFormControl(),\n  });\n  public dateInputPlaceholder = '';\n  public focused = false;\n  private componentDestroyed$: Subject<void> = new Subject();\n\n  constructor(@Optional() @Inject(MAT_DATE_FORMATS) private dateFormats: IDateFormats) {}\n\n  ngOnInit(): void {\n    if (this.dateFormats?.display) this.dateFormats.display.dateInput = this.dateFormat;\n    this.dateInputPlaceholder = this.placeholder || this.dateFormat;\n    if (this.rangeSelect && this.formFieldControl.value?.length) {\n      this.processDate(this.formFieldControl.value[0], 'start');\n      this.processDate(this.formFieldControl.value[1], 'end');\n    } else {\n      this.processDate(this.formFieldControl.value);\n    }\n    this.rangeGroup.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((value) => {\n      this.formFieldControl.setValue(value);\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  /**\n   * @param $event - Object which contains date selected using mat-datepicker or entered manually by user\n   *\n   * Transform user entered date using provided dateFormat\n   */\n\n  public processDate(value: string | Date | null | FocusEvent, formControlName?: string): void {\n    this.focused = false;\n    let actualValue: string | Date | null;\n    if (value instanceof FocusEvent) {\n      const target = value.target as HTMLInputElement;\n      actualValue = target?.value || null;\n    } else {\n      actualValue = value;\n    }\n\n    let parsedDate: Date | undefined;\n\n    if (actualValue instanceof Date) {\n      parsedDate = actualValue;\n    } else if (typeof actualValue === 'string') {\n      const iso = parseISO(actualValue);\n      if (isValid(iso)) {\n        parsedDate = iso;\n      } else {\n        const parsed = parse(actualValue, this.dateFormat, new Date());\n        if (isValid(parsed)) {\n          parsedDate = parsed;\n        }\n      }\n    }\n\n    if (parsedDate && isValid(parsedDate)) {\n      if (formControlName) {\n        this.rangeGroup.get(formControlName)?.setValue(parsedDate);\n      } else {\n        this.formFieldControl.setValue(parsedDate);\n      }\n    }\n  }\n\n  public handleFocus(): void {\n    this.focused = true;\n  }\n}\n","<div\n  class=\"form-field__date-container\"\n  [ngClass]=\"{\n    'form-field__date-container--focus': focused,\n    'form-field__date-container--error': formFieldControl.touched && submitted && formFieldControl.errors,\n    'form-field__date-container--disabled': disabled,\n  }\"\n>\n  <div class=\"form-field__date-input\">\n    <mat-form-field class=\"form-field__date-input-field\" *ngIf=\"rangeSelect; else singleSelect\">\n      <ng-container>\n        <mat-date-range-input [formGroup]=\"rangeGroup\" [rangePicker]=\"picker\">\n          <input matStartDate class=\"custom__input\" formControlName=\"start\" (focus)=\"handleFocus()\" (focusout)=\"processDate($event, 'start')\" placeholder=\"Start date\" />\n          <input matEndDate class=\"custom__input\" formControlName=\"end\" (focus)=\"handleFocus()\" (focusout)=\"processDate($event, 'end')\" placeholder=\"End date\" />\n        </mat-date-range-input>\n        <mat-date-range-picker #picker panelClass=\"lib-date-filter\"> </mat-date-range-picker>\n        <i class=\"icon icon-gen3-appointment form-field__date-input-icon\" (click)=\"picker.open()\"></i>\n      </ng-container>\n    </mat-form-field>\n    <ng-template #singleSelect>\n      <mat-form-field class=\"form-field__date-input-field\">\n        <input\n          matInput\n          class=\"custom__input\"\n          [matDatepicker]=\"picker\"\n          [placeholder]=\"dateInputPlaceholder\"\n          [formControl]=\"formFieldControl\"\n          (focus)=\"handleFocus()\"\n          (focusout)=\"processDate($event)\"\n          #dateInput\n        />\n        <mat-datepicker #picker panelClass=\"lib-date-filter\"> </mat-datepicker>\n        <i class=\"icon icon-gen3-appointment form-field__date-input-icon\" (click)=\"picker.open()\"></i>\n      </mat-form-field>\n    </ng-template>\n  </div>\n</div>\n<div *ngIf=\"formFieldControl.touched && (formFieldControl.errors?.['pattern'] || formFieldControl.errors?.['matDatepickerParse'])\" class=\"form-field__error-text\">\n  Please enter a valid date.\n</div>\n<div *ngIf=\"rangeGroup.controls['start'].hasError('matDatepickerParse')\" class=\"form-field__error-text\">Please enter a valid start date.</div>\n<div *ngIf=\"rangeGroup.controls['end'].hasError('matDatepickerParse')\" class=\"form-field__error-text\">Please enter a valid end date.</div>\n","export enum FilterType {\n  SingleSelect = 'SingleSelect',\n  MultiSelect = 'MultiSelect',\n  DateFilter = 'Date',\n  AutoCompleteMulti = 'AutoCompleteMulti',\n  Currency = 'Currency',\n  Text = 'Text',\n  Number = 'Number',\n}\n","export class FilterOperator<T> {\n  label: string;\n  value: T;\n  identifier?: any;\n  identifier2?: any;\n  backendQueryUrl?: string;\n\n  constructor(label: string, value: T, identifier?: any, identifier2?: any, backendQueryUrl?: string) {\n    this.label = label;\n    this.value = value;\n    this.identifier = identifier;\n    this.identifier2 = identifier2;\n    this.backendQueryUrl = backendQueryUrl;\n  }\n}\n","/**\n * This model class contains a label, value and disabled boolean\n */\nexport class SelectOption<T> {\n  public label: string;\n  public value: T;\n  public disabled? = false;\n  public isHidden? = false;\n  public selected? = false;\n  public image?: string;\n  public loading? = false;\n  public separator? = false;\n  addOnTemplateRef?: any;\n\n  constructor(label: string, value: T, disabled = false, isHidden = false, selected = false, image?: string, loading = false) {\n    this.label = label;\n    this.value = value;\n    this.disabled = disabled;\n    this.isHidden = isHidden;\n    this.selected = selected;\n    this.image = image;\n    this.loading = loading;\n  }\n}\n","export enum GridModal {\n  ManageFiltersModal = 'manage-filters-modal',\n  GridFiltersModal = 'grid-filters-modal',\n}\n","import { SafeHtml } from '@angular/platform-browser';\n\n/**\n * This model class can be used in conjunction with an ItemSummary to provide\n * an icon representing some action that can be executed on the ItemSummary\n * and a function to define said action.\n *\n * Typical usage is for the calling ItemSummary to pass itself as an argument to the\n * action so that it can be updated pending completion of the action. For example,\n * the ActionHandler might initially be defined with a '+' icon and an action which\n * adds the ItemSummary to a list. Then, once the addition is completed, since the\n * consumer has a handle on the ItemSummary, they can update the ActionHandler to\n * contain a '-' icon and change the action to remove the ItemSummary from the list.\n */\nexport class ItemActionHandler {\n  public displayHtml: SafeHtml;\n  public action: (arg: any) => any;\n  public toolTip: SafeHtml;\n\n  constructor(displayHtml: SafeHtml, action: (arg: any) => any, toolTip?: SafeHtml) {\n    this.displayHtml = displayHtml;\n    this.action = action;\n    this.toolTip = toolTip ? toolTip : '';\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { delay, map, tap } from 'rxjs/operators';\nimport { IFilterDataRequest } from '../../../model/filter-data-request';\nimport { IFilterDefinition } from '../../../model/filter-definition';\nimport { FilterOperator } from '../../../model/filter-operator';\nimport { IGridFilterConfig } from '../../../model/grid-filter-config';\nimport { CommonOperations } from '../../../operations/operations';\n\n// Define proper interfaces for the options data structure\ninterface FilterOption {\n  key: string;\n  value: string | number;\n}\n\n// Define types for FilterOperator based on its generic usage\ntype StringFilterOperator = FilterOperator<string>;\ntype NumberFilterOperator = FilterOperator<number>;\ntype MixedFilterOperator = FilterOperator<string | number>;\ntype GenericFilterOperator = FilterOperator<unknown>;\n\n@Injectable({ providedIn: 'root' })\nexport class GridFilterService {\n  public gridFilterConfig: IGridFilterConfig | null = null;\n  public userFiltersList: IFilterDataRequest[] = [];\n  public savedFiltersList: IFilterDataRequest[] = [];\n  public dateFormat: string = 'MM/dd/yyyy';\n  public filterDefinitions: IFilterDefinition[] = [];\n  public standardFilters: IFilterDataRequest[] = [];\n  public options: GenericFilterOperator[] = [];\n  public operators: GenericFilterOperator[][] = [];\n  public values: GenericFilterOperator[][][][] = [];\n\n  private _activeFilterIndex: number = -1;\n  private gridFiltersSubject: BehaviorSubject<IFilterDataRequest[] | null> = new BehaviorSubject<IFilterDataRequest[] | null>(null);\n  private gridFilterDefinitionsSubject: BehaviorSubject<IFilterDefinition[] | null> = new BehaviorSubject<IFilterDefinition[] | null>(null);\n  private activeFilterChanged: BehaviorSubject<IFilterDataRequest | null> = new BehaviorSubject<IFilterDataRequest | null>(null);\n  private currencyDisplaySymbolSubject: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n  get gridFilters(): Observable<IFilterDataRequest[] | null> {\n    return this.gridFiltersSubject.asObservable();\n  }\n\n  get gridFilterDefinitions(): Observable<IFilterDefinition[] | null> {\n    return this.gridFilterDefinitionsSubject.asObservable();\n  }\n\n  get activeFilter(): Observable<IFilterDataRequest | null> {\n    return this.activeFilterChanged.asObservable();\n  }\n\n  get currencyDisplaySymbol(): Observable<string | null> {\n    return this.currencyDisplaySymbolSubject.asObservable();\n  }\n\n  applyUserFilter(activeFilter: IFilterDataRequest | string, standardFilter?: boolean): void {\n    if (standardFilter) {\n      this.activeFilterChanged.next(this.standardFilters.find((filter) => filter.projectGridFilterId === activeFilter) || null);\n    } else {\n      this.activeFilterChanged.next(activeFilter as IFilterDataRequest);\n    }\n  }\n\n  getUserFilters(): void {\n    if (this.gridFilterConfig) {\n      this.gridFilterConfig?.handleGetFilters().subscribe((filters) => {\n        this.userFiltersList = filters || [];\n        this.savedFiltersList = filters || [];\n        this.gridFiltersSubject.next(filters || []);\n      });\n    } else {\n      this.gridFiltersSubject.next(this.userFiltersList);\n    }\n  }\n\n  public updateAllFilters(userFiltersList: Array<IFilterDataRequest>): void {\n    if (this.gridFilterConfig && this.gridFilterConfig?.handleUpdateAllFilters) {\n      this.gridFilterConfig?.handleUpdateAllFilters(userFiltersList).subscribe(() => this.getUserFilters());\n    } else {\n      this.userFiltersList = userFiltersList.sort(({ order: a = 0 }, { order: b = 0 }) => (b || 0) - (a || 0));\n      this.gridFiltersSubject.next(this.userFiltersList);\n    }\n  }\n\n  getGridFilterDefinations(): void {\n    if (this.gridFilterConfig) {\n      this.gridFilterConfig?.handleGetFilterDefinitions().subscribe((filterDefinitions) => {\n        this.filterDefinitions = filterDefinitions || [];\n        this.processFilterDefinitions();\n        this.gridFilterDefinitionsSubject.next(filterDefinitions || []);\n      });\n    } else {\n      this.processFilterDefinitions();\n      this.gridFilterDefinitionsSubject.next(this.filterDefinitions);\n    }\n  }\n\n  createUpdateUserFilter(userFilter: IFilterDataRequest | null, applyOnly: boolean = false): Observable<unknown> {\n    if (userFilter) {\n      if (this.gridFilterConfig && !applyOnly) {\n        if (userFilter.projectGridFilterId) {\n          return this.gridFilterConfig?.handleUpdateFilters(userFilter).pipe(tap((response) => this.getUserFilters())) || of(null);\n        } else {\n          return this.gridFilterConfig?.handleCreateFilters(userFilter).pipe(tap((response) => this.getUserFilters())) || of(null);\n        }\n      } else {\n        return of({}).pipe(\n          tap(() => {\n            if (userFilter.projectGridFilterId) {\n              this._activeFilterIndex = this.userFiltersList.findIndex((userFilterCriteria) => userFilterCriteria.projectGridFilterId === userFilter.projectGridFilterId);\n            }\n            if (this.userFiltersList[this._activeFilterIndex]) {\n              this.userFiltersList[this._activeFilterIndex] = userFilter;\n            } else {\n              userFilter.projectGridFilterId = CommonOperations.randomString(); // Random 'id' string\n              userFilter.order = this.userFiltersList.length; // 'order' number of the new filter\n              this.userFiltersList.push(userFilter);\n            }\n            this.gridFiltersSubject.next(this.userFiltersList);\n          }),\n        );\n      }\n    }\n    return of(null);\n  }\n\n  deleteUserFilter(filterIndex: number): void {\n    const projectGridFilterId = this.userFiltersList[filterIndex]?.projectGridFilterId;\n    if (this.gridFilterConfig && projectGridFilterId) {\n      this.gridFilterConfig?.handleDeleteFilters(projectGridFilterId).subscribe((response) => {\n        this.getUserFilters();\n      });\n    } else {\n      this.userFiltersList.splice(filterIndex, 1);\n      this.getUserFilters();\n    }\n  }\n\n  setCurrencyDisplaySymbol(currencyDisplaySymbol: string): void {\n    this.currencyDisplaySymbolSubject.next(currencyDisplaySymbol);\n  }\n\n  private getListSortedByMostAccurateMatch(source: FilterOption[], query: string): FilterOption[] {\n    const sort = (a: FilterOption, b: FilterOption) => {\n      const aFirstName = a.key.split(' ')[0] || '';\n      const aLastName = a.key.split(' ')[1] || '';\n      const bFirstName = b.key.split(' ')[0] || '';\n      const bLastName = b.key.split(' ')[1] || '';\n      const result = aFirstName?.localeCompare(bFirstName);\n      return result !== 0 ? result : aLastName?.localeCompare(bLastName);\n    };\n\n    const breakListIntoSortSections = (list: FilterOption[], searchString: string): FilterOption[][] => {\n      const searchLowercased: string = searchString.toLowerCase();\n      const exactMatchList: FilterOption[] = [];\n      const startsWithList: FilterOption[] = [];\n      const includesList: FilterOption[] = [];\n      list.forEach((nextSummary) => {\n        const infoLines: string[] = [];\n        infoLines.push(nextSummary.key.toLowerCase());\n        if (infoLines.find((nextLine) => nextLine === searchLowercased)) {\n          exactMatchList.push(nextSummary);\n        } else if (infoLines.find((nextLine) => nextLine.startsWith(searchLowercased))) {\n          startsWithList.push(nextSummary);\n        } else if (infoLines.find((nextLine) => nextLine.includes(searchLowercased))) {\n          includesList.push(nextSummary);\n        }\n      });\n      return [exactMatchList, startsWithList, includesList];\n    };\n\n    const separatedLists = breakListIntoSortSections(source, query);\n    const resultList: FilterOption[] = [];\n\n    for (let i = 0; i < 3; i++) {\n      separatedLists[i] = separatedLists[i].sort(sort);\n      resultList.push(...separatedLists[i]);\n    }\n\n    return resultList;\n  }\n\n  getFiltersOptions(backendQueryUrl: string, searchString: string): Observable<FilterOption[]> {\n    if (this.gridFilterConfig) {\n      return (\n        this.gridFilterConfig?.handleGetFilterOptions(backendQueryUrl, searchString).pipe(map((list) => this.getListSortedByMostAccurateMatch(list || [], searchString))) || of([])\n      );\n    } else {\n      return of([\n        {\n          key: 'Testing Value - 1',\n          value: 123,\n        },\n        {\n          key: 'Test Venti - 2',\n          value: 124,\n        },\n        {\n          key: 'Test Value - 2',\n          value: 125,\n        },\n        {\n          key: 'First Value - 3',\n          value: 126,\n        },\n      ]).pipe(map((list) => this.getListSortedByMostAccurateMatch(list, searchString)));\n    }\n  }\n\n  getFilterOptionData(backendQueryUrl: string, value: string): Observable<FilterOption | null> {\n    if (this.gridFilterConfig) {\n      return this.gridFilterConfig?.handleGetFilterOptionData(backendQueryUrl, value) || of(null);\n    } else {\n      return of({\n        key: 'Test Value - ' + value,\n        value: value,\n      }).pipe(delay(500));\n    }\n  }\n\n  processFilterDefinitions(): void {\n    let filterDefinitionIndex = 0;\n    this.options = [];\n    this.operators = [];\n    this.values = [];\n    this.filterDefinitions?.forEach((filterDefinition) => {\n      if (filterDefinition.displayedToUser) {\n        const operators: GenericFilterOperator[] = [];\n        const values: GenericFilterOperator[][][] = [];\n\n        filterDefinition.filterCriterias.forEach((userFilter, userFilterIndex) => {\n          const userFiltersValues: GenericFilterOperator[][] = [];\n\n          userFilter.filterParameters.some((filterParameter, filterParameterIndex) => {\n            const filterParametersValues: GenericFilterOperator[] = [];\n\n            const paramValues = filterParameter.values || [];\n            if (paramValues.length === 0) {\n              filterParametersValues.push(\n                new FilterOperator('', '', filterParameter.controlType, filterParameter.separator, filterParameter.apiQueryUrl || filterDefinition.publicFieldName),\n              );\n            } else {\n              paramValues.forEach((filterValue) => {\n                filterParametersValues.push(\n                  new FilterOperator(\n                    filterValue.value,\n                    filterValue.key,\n                    filterParameter.controlType,\n                    filterParameter.separator,\n                    filterParameter.apiQueryUrl || filterDefinition.publicFieldName,\n                  ),\n                );\n              });\n            }\n            userFiltersValues.push(filterParametersValues);\n          });\n\n          if (userFiltersValues.length || userFilter.filterParameters.length === 0) {\n            values.push(userFiltersValues);\n            operators.push(new FilterOperator(userFilter.operator.label, userFilter.operator.value, userFilterIndex, userFilter.filterParameters[0]?.controlType));\n          }\n        });\n\n        if (operators.length) {\n          this.options.push(new FilterOperator(filterDefinition.label, filterDefinition.publicFieldName, filterDefinitionIndex));\n          this.operators.push(operators);\n          this.values.push(values);\n          filterDefinitionIndex += 1;\n        }\n      }\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { IGridMiscellaneousData } from './interfaces/grid-miscellaneous-data.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class GridService {\n  public gridMiscellaneousData: IGridMiscellaneousData | null = null;\n\n  public setGridMiscellaneousData(gridMiscellaneousData: IGridMiscellaneousData): void {\n    this.gridMiscellaneousData = gridMiscellaneousData;\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, takeUntil } from 'rxjs/operators';\nimport { FilterOperator } from '../../../model/filter-operator';\nimport { SelectOption } from '../../../model/select-option';\nimport { GridService } from '../../grid/grid.service';\nimport { ISelectFilterGridMiscellaneousData } from './select-filter.interface';\n\n@Component({\n  selector: 'lib-select-filter',\n  templateUrl: './select-filter.component.html',\n  styleUrls: ['./select-filter.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class SelectFilterComponent implements OnInit, OnChanges {\n  @ViewChild('select', { static: false }) select: any;\n\n  @Input() submitted = false;\n  @Input() placeholder = 'select an option';\n  @Input() multiple = false;\n  @Input() operator = '';\n  @Input() disabled = false;\n  @Input() showSelectMessage = false;\n  @Input() formFieldControl = new UntypedFormControl();\n  @Input() options: FilterOperator<any>[] = [];\n  @Input() backendQueryUrl: string = '';\n  @Input() getFiltersOptions?: (backendQueryUrl: string, value: string, options: any) => Observable<any[]>;\n\n  public required = true;\n  public focused = false;\n  public filteredOptions: SelectOption<any>[] = [];\n  public readonly thresholdOptionValue = 10;\n  public selectFilterGridMiscellaneousData: ISelectFilterGridMiscellaneousData = {} as ISelectFilterGridMiscellaneousData;\n\n  private searchString: string = '';\n  private debouncer$: Subject<string> = new Subject<string>();\n  private componentDestroyed$: Subject<void> = new Subject();\n\n  constructor(\n    private changeDetectorRef: ChangeDetectorRef,\n    private gridService: GridService,\n  ) {}\n\n  ngOnInit(): void {\n    this.selectFilterGridMiscellaneousData = this.gridService.gridMiscellaneousData?.gridFiltersModal?.selectFilter || ({} as ISelectFilterGridMiscellaneousData);\n    this.filteredOptions = this.options;\n    this.debouncer$\n      .pipe(\n        debounceTime(300),\n        filter((searchString) => searchString.length > 1),\n        takeUntil(this.componentDestroyed$),\n      )\n      .subscribe((searchString) => {\n        if (this.getFiltersOptions) {\n          this.getFiltersOptions(this.backendQueryUrl, searchString, this.options)?.subscribe(() => {\n            this.filterChange(this.searchString, false);\n            this.changeDetectorRef.detectChanges();\n          });\n        }\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.disabled) {\n      this.formFieldControl.disable({ emitEvent: false });\n    } else {\n      this.formFieldControl.enable({ emitEvent: false });\n    }\n    if (changes['options']) {\n      if (!changes['options'].firstChange) {\n        this.formFieldControl.setValue(null, { emitEvent: false });\n      }\n      this.filteredOptions = this.options;\n      if (this.getFiltersOptions && this.backendQueryUrl) {\n        this.filterChange(this.searchString, false);\n      }\n    }\n  }\n\n  private transformValue(optionValue: string): void {\n    if (this.filteredOptions.findIndex((option) => option?.value === optionValue) < 0) {\n      const foundOption = this.options.find((option) => option?.value === optionValue);\n      if (foundOption) {\n        this.filteredOptions.push(foundOption);\n      }\n    }\n  }\n\n  // ----- Methods called by template -----\n\n  public filterChange(searchString: string, emitFilterChange: boolean = true): void {\n    if (this.getFiltersOptions && this.backendQueryUrl && emitFilterChange) {\n      this.debouncer$.next(searchString);\n      if (searchString?.length < 1) {\n        this.filteredOptions = [];\n      }\n    } else {\n      this.filteredOptions = this.options.filter((x) => x.label?.toLowerCase().indexOf(searchString) >= 0);\n    }\n    this.searchString = searchString;\n    if (this.multiple && this.formFieldControl.value?.length > 0) {\n      this.formFieldControl.value?.forEach((option: SelectOption<any>) => {\n        this.transformValue(option.value);\n      });\n    } else if (this.formFieldControl.value) {\n      this.transformValue(this.formFieldControl.value?.value);\n    }\n  }\n\n  public handleFocus(): void {\n    this.focused = true;\n  }\n\n  public handleFocusOut(): void {\n    this.focused = false;\n  }\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n}\n","<div\n  class=\"form-field__select-container\"\n  [ngClass]=\"{\n    'form-field__select-container--focus': focused,\n    'form-field__select-container--error': submitted && formFieldControl.errors,\n    'form-field__select-container--disabled': formFieldControl.disabled,\n  }\"\n>\n  <div class=\"form-field__select-input\">\n    <mat-form-field>\n      <mat-select\n        *ngIf=\"multiple\"\n        matNativeControl\n        [formControl]=\"formFieldControl\"\n        [placeholder]=\"placeholder\"\n        [disableOptionCentering]=\"true\"\n        [panelClass]=\"{ 'form-field-select-panel-class': !required, 'form-field-select-panel-class--required': required }\"\n        [multiple]=\"true\"\n        (focus)=\"handleFocus()\"\n        (focusout)=\"handleFocusOut()\"\n        #select=\"matSelect\"\n      >\n        <mat-select-trigger>\n          <span *ngIf=\"multiple; else singleSingleSelectTrigger\">\n            <span *ngFor=\"let option of formFieldControl.value; let i = index\">\n              {{ option?.label }}\n              <span *ngIf=\"i !== (formFieldControl.value?.length ?? 0) - 1\">\n                {{ operator }}\n              </span>\n            </span>\n          </span>\n          <ng-template #singleSingleSelectTrigger>\n            {{ formFieldControl.value?.label }}\n          </ng-template>\n        </mat-select-trigger>\n        <ng-container *ngIf=\"(options?.length ?? 0) > thresholdOptionValue || backendQueryUrl\">\n          <lib-search-bar [placeholderText]=\"'Search'\" (searchStringChange)=\"filterChange($event)\"> </lib-search-bar>\n          <div class=\"separator\"></div>\n        </ng-container>\n        <mat-option *ngIf=\"(options?.length ?? 0) <= thresholdOptionValue && !multiple && showSelectMessage\" disabled=\"true\" class=\"form-field__select-option\">\n          Select One\n        </mat-option>\n        <ng-container *ngFor=\"let option of filteredOptions\">\n          <mat-option *ngIf=\"option?.value\" class=\"form-field__select-option mat-accent\" [disabled]=\"option?.disabled\" [libTooltip]=\"option?.label || ''\" [value]=\"option\">\n            {{ option?.label }}\n          </mat-option>\n          <div *ngIf=\"option?.separator\" class=\"separator\"></div>\n        </ng-container>\n        <ng-container *ngIf=\"!filteredOptions || filteredOptions.length < 1 || (filteredOptions.length === 1 && !filteredOptions[0]?.value)\">\n          <mat-option class=\"form-field__select-option--hidden mat-accent\"></mat-option>\n        </ng-container>\n      </mat-select>\n      <mat-select\n        *ngIf=\"!multiple\"\n        matNativeControl\n        [formControl]=\"formFieldControl\"\n        [placeholder]=\"placeholder\"\n        [disableOptionCentering]=\"true\"\n        [panelClass]=\"{ 'form-field-select-panel-class': !required, 'form-field-select-panel-class--required': required }\"\n        [multiple]=\"false\"\n        (focus)=\"handleFocus()\"\n        (focusout)=\"handleFocusOut()\"\n        #select=\"matSelect\"\n      >\n        <mat-select-trigger>\n          <span *ngIf=\"multiple; else singleSingleSelectTrigger\">\n            <span *ngFor=\"let option of formFieldControl.value; let i = index\">\n              {{ option?.label }}\n              <span *ngIf=\"i !== (formFieldControl.value?.length ?? 0) - 1\">\n                {{ operator }}\n              </span>\n            </span>\n          </span>\n          <ng-template #singleSingleSelectTrigger>\n            {{ formFieldControl.value?.label }}\n          </ng-template>\n        </mat-select-trigger>\n        <ng-container *ngIf=\"(options?.length ?? 0) > thresholdOptionValue || backendQueryUrl\">\n          <lib-search-bar [placeholderText]=\"'Search'\" (searchStringChange)=\"filterChange($event)\"> </lib-search-bar>\n          <div class=\"separator\"></div>\n        </ng-container>\n        <mat-option *ngIf=\"(options?.length ?? 0) <= thresholdOptionValue && !multiple && showSelectMessage\" disabled=\"true\" class=\"form-field__select-option\">\n          Select One\n        </mat-option>\n        <ng-container *ngFor=\"let option of filteredOptions\">\n          <mat-option *ngIf=\"option?.value\" class=\"form-field__select-option mat-accent\" [disabled]=\"option?.disabled\" [libTooltip]=\"option?.label || ''\" [value]=\"option\">\n            {{ option?.label }}\n          </mat-option>\n          <div *ngIf=\"option?.separator\" class=\"separator\"></div>\n        </ng-container>\n        <ng-container *ngIf=\"!filteredOptions || filteredOptions.length < 1 || (filteredOptions.length === 1 && !filteredOptions[0]?.value)\">\n          <mat-option class=\"form-field__select-option--hidden mat-accent\"></mat-option>\n        </ng-container>\n      </mat-select>\n    </mat-form-field>\n  </div>\n\n  <div class=\"form-field__down-chevron-container\">\n    <ng-container *ngTemplateOutlet=\"downChevron\"></ng-container>\n  </div>\n</div>\n\n<ng-template #downChevron>\n  <img [src]=\"selectFilterGridMiscellaneousData.downChevron?.icon || 'assets/icons/grid/down-chevron.svg'\" alt=\"btn\" />\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Inject, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, FormControl, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { format } from 'date-fns';\nimport { Observable, Subject, forkJoin, merge } from 'rxjs';\nimport { map, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { FilterType } from '../../../enums/filter-type';\nimport { FormFieldType } from '../../../enums/form-field-type';\nimport { IFilterDataRequest } from '../../../model/filter-data-request';\nimport { FilterOperator } from '../../../model/filter-operator';\nimport { ItemActionHandler } from '../../../model/item-action-handler';\nimport { SelectOption } from '../../../model/select-option';\nimport { IUserFilter } from '../../../model/user-filter';\nimport { ConfirmationModalComponent } from '../../confirmation-modal/confirmation-modal.component';\nimport { FormFieldComponent } from '../../form-field/form-field.component';\nimport { GridFilterService } from '../services/grid-filter.service';\n\n// Type definitions\ntype FilterOptionType = FilterOperator<any>;\ntype FilterOperatorType = FilterOperator<any>[];\ntype FilterValueType = FilterOperator<any>[][][][];\ntype FilterControlFieldType = FilterOperator<any>[];\n\n@Component({\n  selector: 'lib-grid-filters-modal',\n  templateUrl: './grid-filters-modal.component.html',\n  styleUrls: ['./grid-filters-modal.component.scss', '../styles/common-grid-modal.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class GridFiltersModalComponent implements OnInit, OnDestroy {\n  @ViewChild('saveFilterRadioButton') saveFilterRadioButtonRef!: ElementRef<FormFieldComponent>;\n  public mode: 'edit' | 'create' = 'edit';\n  public formGroup: UntypedFormGroup = new UntypedFormGroup({});\n  public submitted = false;\n  public dateFormat = 'mm/dd/yyyy';\n  public applyFilterText: 'Apply' | 'Save' | 'Apply & Save' = 'Apply';\n  public options: FilterOptionType[] = [];\n  public operators: FilterOperatorType[] = [];\n  public values: FilterValueType = [];\n  public readonly FilterTypeEnum = FilterType;\n  public headerIconTray: ItemActionHandler[] = [];\n  public enableClearAll: boolean = false;\n  public formGroupValueChanged = false;\n  public existingFilterProjectID: string = '';\n  public invalidPatternMessage = '';\n  public userFiltersList: IFilterDataRequest[] = [];\n  public activeUserFilter!: IFilterDataRequest;\n  public filterDialogComponentRect: { width: number; height: number } = { width: NaN, height: NaN };\n  public currencyDisplaySymbol: string = '$';\n  public FormFieldType = FormFieldType;\n\n  public getFiltersOptions: (backendQueryUrl: string, searchString: string, options: FilterOptionType[]) => Observable<FilterOptionType[]> = () => new Observable();\n\n  // Using Radio Button as Checkbox button\n  private valueForRadio: string = 'value';\n  public deselectableRadioButtonFormControl = new UntypedFormControl('', null);\n  public radioCheckbox = new SelectOption('', this.valueForRadio);\n\n  private formArrayValueChanged$: Subject<null> = new Subject();\n  private componentDestroyed$: Subject<void> = new Subject();\n\n  private retryAddingUserFilter = false;\n\n  get userFiltersFormControl() {\n    return this.formGroup.controls['UserFilters'] as UntypedFormArray;\n  }\n\n  get nameFormControl() {\n    return this.formGroup.controls['Name'] as FormControl;\n  }\n\n  @HostListener('window:resize', ['$event'])\n  public onResize(event: Event): void {\n    this.changeDetectorRef.detectChanges();\n    this.updateComponentRect();\n  }\n\n  constructor(\n    private _formBuilder: UntypedFormBuilder,\n    private dialogRef: MatDialogRef<GridFiltersModalComponent>,\n    private dialog: MatDialog,\n    private domSanitizer: DomSanitizer,\n    private gridFilterService: GridFilterService,\n    private changeDetectorRef: ChangeDetectorRef,\n    @Inject(MAT_DIALOG_DATA) public modalData: IFilterDataRequest,\n  ) {\n    this.dateFormat = this.gridFilterService.dateFormat;\n    this.headerIconTray.push(\n      new ItemActionHandler(\n        this.domSanitizer.bypassSecurityTrustHtml('<i class=\"icon-gen3-warning\"></i>'),\n        () => {}, // Empty function instead of null\n        this.domSanitizer.bypassSecurityTrustHtml('test'),\n      ),\n    );\n    this.activeUserFilter = modalData;\n  }\n\n  private updateComponentRect(): void {\n    Object.assign(this.filterDialogComponentRect, { width: window.innerWidth, height: window.innerHeight });\n  }\n\n  ngOnInit(): void {\n    this.createFormGroup();\n    this.initListeners();\n    this.getFiltersOptions = (backendQueryUrl: string, searchString: string, options: FilterOptionType[]): Observable<FilterOptionType[]> => {\n      return this.gridFilterService.getFiltersOptions(backendQueryUrl, searchString).pipe(\n        map((filteredOptions: any[]) => {\n          const result: FilterOptionType[] = [];\n          filteredOptions.forEach((filteredOption: any) => {\n            if (options.findIndex((option: FilterOptionType) => option.value === filteredOption.value) < 0) {\n              result.push(new FilterOperator(filteredOption.key, filteredOption.value, options[0].identifier, options[0].identifier2, options[0].backendQueryUrl));\n            }\n          });\n          return result;\n        }),\n        tap((filteredOptions: FilterOptionType[]) => {\n          filteredOptions.forEach((filteredOption: FilterOptionType) => {\n            if (options.findIndex((option: FilterOptionType) => option.value === filteredOption.value) < 0) {\n              options.push(filteredOption);\n            }\n          });\n          this.changeDetectorRef.detectChanges();\n        }),\n      );\n    };\n\n    this.formGroup.controls['SaveFilter'].valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((state) => {\n      this.deselectableRadioButtonFormControl.setValue(state ? this.valueForRadio : null);\n    });\n    this.updateComponentRect();\n  }\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n    this.formArrayValueChanged$.next(null);\n    this.formArrayValueChanged$.complete();\n  }\n\n  private initListeners() {\n    this.gridFilterService.gridFilterDefinitions.pipe(takeUntil(this.componentDestroyed$)).subscribe(() => {\n      this.options = this.gridFilterService.options;\n      this.operators = this.gridFilterService.operators;\n      this.values = this.gridFilterService.values;\n    });\n\n    if (Object.keys(this.activeUserFilter || {})?.length) {\n      this.patchFormGroupValues(this.activeUserFilter);\n      this.applyFilterText = 'Save';\n    } else {\n      this.gridFilterService.activeFilter.pipe(take(1)).subscribe((activeUserFilter: IFilterDataRequest | null) => {\n        this.userFiltersFormControl.clear();\n        this.applyFilterText = 'Apply';\n        this.activeUserFilter = activeUserFilter || ({} as IFilterDataRequest);\n        this.patchFormGroupValues(this.activeUserFilter);\n        if (!this.activeUserFilter || !this.activeUserFilter.name || (this.activeUserFilter.projectGridFilterId?.length ?? 0) < 1) {\n          this.formGroup.get('SaveFilter')?.setValue(false, { emitEvent: false });\n          this.nameFormControl.disable();\n        } else if ((this.activeUserFilter.projectGridFilterId?.length ?? 0) > 0) {\n          this.nameFormControl.enable();\n          this.formGroup.get('SaveFilter')?.setValue(true, { emitEvent: false });\n        }\n      });\n    }\n\n    this.gridFilterService.gridFilters.pipe(takeUntil(this.componentDestroyed$)).subscribe((userFiltersList: IFilterDataRequest[] | null) => {\n      this.userFiltersList = userFiltersList ?? [];\n      this.nameFormControl.updateValueAndValidity({ emitEvent: false });\n    });\n\n    this.formGroup.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((response) => {\n      if (this.retryAddingUserFilter) return;\n      this.formGroupValueChanged = true;\n      this.enableClearAll = this.userFiltersFormControl.controls.some((formControl) => formControl.valid);\n    });\n\n    this.formGroup\n      .get('SaveFilter')\n      ?.valueChanges.pipe(takeUntil(this.componentDestroyed$))\n      .subscribe((response) => {\n        if (response) {\n          this.applyFilterText = 'Apply & Save';\n          this.nameFormControl.enable();\n        } else {\n          this.applyFilterText = 'Apply';\n          this.nameFormControl.disable();\n        }\n      });\n  }\n\n  private patchFormGroupValues(activeUserFilter: IFilterDataRequest) {\n    this.nameFormControl.patchValue(activeUserFilter?.name || 'Custom Filter', { emitEvent: false });\n    if ((activeUserFilter?.userFilters?.length ?? 0) === 0) {\n      this.addUserFilter();\n    } else {\n      activeUserFilter?.userFilters?.forEach((userFilter: IUserFilter) => {\n        this.addUserFilter(userFilter);\n      });\n    }\n    if (activeUserFilter?.projectGridFilterId) {\n      this.mode = 'edit';\n      this.existingFilterProjectID = activeUserFilter.projectGridFilterId;\n    } else {\n      this.mode = 'create';\n      if (!activeUserFilter?.name) {\n        this.addUserFilter();\n      }\n    }\n  }\n\n  private watchForValueChanges(): void {\n    // cleanup any prior subscriptions before re-establishing new ones\n    this.formArrayValueChanged$.next(null);\n    merge(\n      ...this.userFiltersFormControl.controls.map((control: AbstractControl, index: number) =>\n        control.valueChanges.pipe(\n          takeUntil(this.formArrayValueChanged$),\n          map((value) => ({ rowIndex: index, control: control, data: value })),\n        ),\n      ),\n    ).subscribe((changes) => {\n      const publicFieldNameIdentifier = changes.data.publicFieldName?.identifier;\n      const operatorTypeIdentifier = changes.data.operatorType?.identifier;\n      let controlFieldLength = 0;\n\n      const operatorIdentifier2 = changes.data.operatorType?.identifier2;\n\n      if (publicFieldNameIdentifier > -1 && operatorTypeIdentifier > -1) {\n        controlFieldLength = this.values[changes.data.publicFieldName?.identifier]?.[changes.data.operatorType?.identifier]?.length ?? 0;\n        for (let index = 0; index < controlFieldLength; index++) {\n          if ((this.userFiltersFormControl.at(changes.rowIndex)?.get('Values') as UntypedFormArray).value?.length < 1) {\n            (this.userFiltersFormControl.at(changes.rowIndex).get('Values') as UntypedFormArray).clear({ emitEvent: false });\n            (this.userFiltersFormControl.at(changes.rowIndex).get('Values') as UntypedFormArray).push(new UntypedFormControl(), { emitEvent: false });\n          }\n        }\n      }\n      this.changeDetectorRef.detectChanges();\n    });\n  }\n\n  private createFormGroup(): void {\n    this.formGroup = this._formBuilder.group({\n      Name: new UntypedFormControl('Custom Filter'),\n      SaveFilter: new UntypedFormControl(false),\n      UserFilters: this._formBuilder.array([]),\n    });\n  }\n\n  private transformFilter(): IFilterDataRequest | null {\n    const userFilterCriteria: IUserFilter[] = [];\n    this.submitted = true;\n    if (this.formGroup.valid) {\n      this.userFiltersFormControl.value.forEach((userFilter: any) => {\n        if (userFilter.publicFieldName?.value && userFilter.operatorType?.value) {\n          let values: (string | number)[] = [];\n\n          userFilter.Values.forEach((userFilterValue: any) => {\n            if (userFilter.operatorType?.identifier2 === FilterType.SingleSelect) {\n              values.push(userFilterValue?.value?.toString());\n            } else if (userFilter.operatorType?.identifier2 === FilterType.Text || userFilter.operatorType?.identifier2 === FilterType.Number) {\n              values.push(userFilterValue);\n            } else if (userFilter.operatorType?.identifier2 === FilterType.MultiSelect || userFilter.operatorType?.identifier2 === FilterType.AutoCompleteMulti) {\n              values = userFilterValue?.map((multiSelectValue: FilterOptionType) => multiSelectValue.value?.toString());\n            } else if (userFilter.operatorType?.identifier2 === FilterType.DateFilter) {\n              if (userFilterValue instanceof Date) {\n                values.push(format(userFilterValue, this.dateFormat));\n              } else if (userFilter.operatorType.value === 'Between') {\n                // Ensure date-fns format tokens: YYYY->yyyy, DD->dd\n                const startValue = userFilterValue?.start ? format(userFilterValue.start, 'yyyy-MM-dd HH:mm:ss') : userFilterValue[0];\n                const endValue = userFilterValue?.end ? format(userFilterValue.end, 'yyyy-MM-dd HH:mm:ss') : userFilterValue[1];\n                values = [startValue, endValue];\n              }\n            }\n          });\n          userFilterCriteria.push({\n            publicFieldName: userFilter.publicFieldName?.value,\n            operatorType: userFilter.operatorType?.value,\n            values: values,\n          });\n        }\n      });\n      return {\n        name: this.formGroup.getRawValue().Name,\n        projectGridFilterId: this.existingFilterProjectID?.length ? this.existingFilterProjectID : undefined,\n        userFilters: userFilterCriteria,\n      };\n    }\n    return null;\n  }\n\n  private saveFilterValue(saveOnly: boolean = false): void {\n    const filterDataRequest = this.transformFilter();\n    if (!filterDataRequest) return;\n\n    this.gridFilterService.createUpdateUserFilter(filterDataRequest).subscribe(\n      (response) => {\n        this.dialogRef.close();\n        if (saveOnly) {\n          return;\n        }\n        if (!filterDataRequest.projectGridFilterId) {\n          this.gridFilterService.applyUserFilter({\n            ...filterDataRequest,\n            projectGridFilterId: (response as any).ProjectGridFilterCreatedId,\n          });\n        } else {\n          this.gridFilterService.applyUserFilter(filterDataRequest);\n        }\n      },\n      (validationErrors: any[]) => {\n        validationErrors.forEach((validationError: any) => {\n          if (validationError.ErrorCode === 'Duplicate') {\n            this.gridFilterService.getUserFilters();\n            this.invalidPatternMessage = validationError.DisplayMessage;\n          }\n        });\n      },\n    );\n  }\n\n  private saveAndReplaceFilterValue(saveOnly: boolean = false): void {\n    const dupeFilterIndex: number = this.userFiltersList\n      .map((userFilter, index) => (userFilter.projectGridFilterId !== this.existingFilterProjectID && this.nameFormControl.value === userFilter.name ? index : undefined))\n      .filter((v) => v !== undefined)[0] as number;\n\n    if (dupeFilterIndex !== undefined) {\n      const dialogRef = this.dialog.open(ConfirmationModalComponent, {\n        disableClose: true,\n        width: '500px',\n        panelClass: 'grid-filter-confirmation',\n        data: {\n          title: 'Are you sure want to replace the existing filter?',\n          headerIconTray: this.headerIconTray,\n          dialogMessage: `<div class=\"dialog-message--bold\"> ${this.nameFormControl.value} </div>This action can't be undone.`,\n          confirmText: 'Continue',\n        },\n      });\n      dialogRef.afterClosed().subscribe((response) => {\n        if (response) {\n          this.gridFilterService.deleteUserFilter(dupeFilterIndex);\n          this.saveFilterValue(saveOnly);\n        }\n      });\n    } else {\n      this.saveFilterValue(saveOnly);\n    }\n  }\n\n  // ----- Methods called by template -----\n\n  /**\n   * Closes the dialog\n   */\n  public handleClickCancel(): void {\n    this.dialogRef.close(false);\n  }\n\n  /**\n   * Closes the dialog and returns user filter object to the dialog owner.\n   */\n  public handleClickSave(): void {\n    if (!this.formGroup.valid) return;\n\n    if (this.applyFilterText === 'Apply') {\n      this.dialogRef.close();\n      this.nameFormControl.setValue('Custom Filter', { emitEvent: false });\n      this.existingFilterProjectID = '';\n      const filterData = this.transformFilter();\n      if (filterData) {\n        this.gridFilterService.applyUserFilter(filterData);\n      }\n    } else if (this.applyFilterText === 'Save') {\n      this.saveAndReplaceFilterValue(true);\n    } else {\n      this.handleClickSaveApply();\n    }\n  }\n\n  /**\n   * Closes the dialog and returns user filter object to the dialog owner.\n   */\n  public handleClickSaveApply(): void {\n    if (!this.formGroup.valid) return;\n    this.saveAndReplaceFilterValue();\n  }\n\n  public addUserFilter(userFilterCriteria?: IUserFilter): void {\n    let publicFieldNameValue: FilterOptionType | undefined;\n    let operatorTypeValue: FilterOptionType | undefined;\n    let controlValues: any[] = [];\n    const filterObservables: Observable<any>[] = [];\n    this.retryAddingUserFilter = false;\n\n    if (userFilterCriteria) {\n      this.options.find((option: FilterOptionType) => {\n        if (option.value === userFilterCriteria.publicFieldName) {\n          publicFieldNameValue = option;\n          const operatorArray = this.operators[option.identifier];\n          operatorArray?.find((operator: FilterOptionType) => {\n            if (operator.value === userFilterCriteria.operatorType) {\n              operatorTypeValue = operator;\n\n              // Correct type assertion - this is a quad nested array, so we need to assert it properly\n              const valueArray = this.values[option.identifier]?.[operator.identifier] as unknown as FilterOperator<any>[][];\n              valueArray?.forEach((controlField: FilterOperator<any>[]) => {\n                const controlFieldValues: FilterOptionType[] = [];\n                controlField.forEach((controlFieldValue: FilterOptionType) => {\n                  if (userFilterCriteria.values.indexOf(controlFieldValue.value?.toString()) > -1) {\n                    controlFieldValues.push(controlFieldValue);\n                  }\n                });\n\n                if (operator.identifier2 === this.FilterTypeEnum.MultiSelect) {\n                  controlValues.push(new UntypedFormControl(controlFieldValues));\n                } else if (operator.identifier2 === this.FilterTypeEnum.AutoCompleteMulti) {\n                  // Correct type assertion for the nested array\n                  const filterValues = (this.values[option.identifier]?.[operator.identifier]?.[0] as unknown as FilterOperator<any>[]) || [];\n                  userFilterCriteria.values.forEach((filterValue) => {\n                    if (filterValues.findIndex((controlFieldValue: FilterOptionType) => controlFieldValue?.value?.toString() === filterValue?.toString()) < 0) {\n                      filterObservables.push(this.gridFilterService.getFilterOptionData(filterValues[0]?.backendQueryUrl || '', filterValue));\n                    }\n                  });\n\n                  if (filterObservables.length) {\n                    forkJoin(filterObservables).subscribe((filteredOptions: any[]) => {\n                      filteredOptions.forEach((filteredOption: any) => {\n                        if (filterValues.findIndex((optionx: FilterOptionType) => optionx.value === filteredOption.value) < 0) {\n                          filterValues.push(\n                            new FilterOperator(\n                              filteredOption.key,\n                              filteredOption.value,\n                              filterValues[0]?.identifier,\n                              filterValues[0]?.identifier2,\n                              filterValues[0]?.backendQueryUrl,\n                            ),\n                          );\n                        }\n                      });\n                      this.addUserFilter(userFilterCriteria);\n                    });\n                    this.retryAddingUserFilter = true;\n                  } else {\n                    controlValues.push(new UntypedFormControl(controlFieldValues));\n                  }\n                } else if (operator.identifier2 === this.FilterTypeEnum.DateFilter) {\n                  controlValues = [new UntypedFormControl(userFilterCriteria.values)];\n                } else if (operator.identifier2 === this.FilterTypeEnum.Text || operator.identifier2 === this.FilterTypeEnum.Number) {\n                  controlValues = [new UntypedFormControl(userFilterCriteria.values)];\n                } else {\n                  controlValues.push(new UntypedFormControl(controlFieldValues));\n                }\n              });\n            }\n          });\n        }\n      });\n    }\n\n    if (operatorTypeValue?.identifier2 === this.FilterTypeEnum.AutoCompleteMulti && this.retryAddingUserFilter) return;\n\n    const userFilterGroup = this._formBuilder.group({\n      publicFieldName: [publicFieldNameValue, Validators.required],\n      operatorType: [operatorTypeValue, Validators.required],\n      Values: this._formBuilder.array(controlValues),\n    });\n\n    this.userFiltersFormControl.push(userFilterGroup);\n    this.watchForValueChanges();\n    this.changeDetectorRef.detectChanges();\n  }\n\n  public handleRowDeleted(rowIndex: number, event: Event): void {\n    event?.stopPropagation();\n    this.userFiltersFormControl.removeAt(rowIndex);\n    if (this.userFiltersFormControl.value.length === 0) {\n      this.addUserFilter();\n    }\n  }\n\n  public handleClearAll(): void {\n    this.userFiltersFormControl.clear();\n    this.addUserFilter();\n  }\n\n  public getFormControl(control: AbstractControl | null): FormControl {\n    if (control instanceof FormControl) {\n      return control;\n    }\n    return new FormControl();\n  }\n\n  public getFormArrayControls(control: AbstractControl | null): AbstractControl[] {\n    if (control instanceof UntypedFormArray) {\n      return control.controls;\n    }\n    return [];\n  }\n}\n","<div #filterDialogRef class=\"filter-dialog\" [ngStyle]=\"{ 'max-height': filterDialogComponentRect.height < filterDialogRef.offsetHeight ? '80vh' : 'auto' }\">\n  <div class=\"filter-dialog__header\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" cdkDragHandle>\n    <div class=\"filter-dialog__header-left-group\">\n      <img src=\"assets/icons/filter-plus.svg\" />\n      <div class=\"filter-dialog__header-text\">Filter Group {{ mode === 'edit' ? 'Editor' : 'Creator' }}</div>\n    </div>\n    <div class=\"filter-dialog__header-close-button\" (click)=\"handleClickCancel()\">\n      <img src=\"assets/icons/grid/transparent-cross.svg\" />\n    </div>\n  </div>\n\n  <div class=\"filter-dialog__body\" #filterDialogBodyRef>\n    <form [formGroup]=\"formGroup\" class=\"d-flex\">\n      <div #filterDialogBodyFormRowRef formArrayName=\"UserFilters\" class=\"filter-dailog-body-form-row\">\n        <ng-container *ngFor=\"let filter of userFiltersFormControl['controls']; let rowIndex = index\">\n          <div class=\"filter-dialog__row--prefix\" *ngIf=\"rowIndex !== 0\">and</div>\n          <div\n            [formGroupName]=\"rowIndex\"\n            [ngClass]=\"{\n              extended:\n                filter.get('publicFieldName')?.value?.value &&\n                filter.get('operatorType')?.value?.value &&\n                ((values && values[filter.get('publicFieldName')?.value?.identifier]?.[filter.get('operatorType')?.value?.identifier]?.length) || 0) > 0 &&\n                (values[filter.get('publicFieldName')?.value?.identifier]?.[filter.get('operatorType')?.value?.identifier]?.[0]?.length || 0) > 0,\n            }\"\n            class=\"filter-dialog__row\"\n          >\n            <lib-select-filter\n              [formFieldControl]=\"filter.get('publicFieldName') | asFormControl\"\n              [options]=\"options\"\n              [submitted]=\"submitted\"\n              placeholder=\"Select field\"\n              class=\"filter-dialog__row-select-filter\"\n            >\n            </lib-select-filter>\n            <lib-select-filter\n              [formFieldControl]=\"filter.get('operatorType') | asFormControl\"\n              [disabled]=\"!filter.get('publicFieldName')?.value\"\n              [options]=\"operators[filter.get('publicFieldName')?.value?.identifier]\"\n              [submitted]=\"submitted\"\n              placeholder=\"Select condition\"\n              class=\"filter-dialog__row-select-filter\"\n            >\n            </lib-select-filter>\n            <ng-container formArrayName=\"Values\" *ngFor=\"let valuefilter of (filter.get('Values') | asFormArray).controls; let i = index\">\n              <ng-container\n                [formGroupName]=\"i\"\n                *ngIf=\"\n                  filter.get('publicFieldName')?.value &&\n                  filter.get('operatorType')?.value &&\n                  filter.get('publicFieldName')?.value?.identifier > -1 &&\n                  filter.get('operatorType')?.value?.identifier > -1 &&\n                  (values | getFilterValues: filter.get('publicFieldName')?.value?.identifier : filter.get('operatorType')?.value?.identifier : i).length > 0\n                \"\n              >\n                <lib-select-filter\n                  *ngIf=\"\n                    (values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i)?.[0]?.identifier ===\n                      FilterTypeEnum.MultiSelect ||\n                    (values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i)?.[0]?.identifier ===\n                      FilterTypeEnum.SingleSelect\n                  \"\n                  [formFieldControl]=\"valuefilter | asFormControl\"\n                  [disabled]=\"filter.get('operatorType')?.value?.value < 0\"\n                  [options]=\"values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i\"\n                  [operator]=\"(values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i)?.[0]?.identifier2\"\n                  [multiple]=\"\n                    (values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i)?.[0]?.identifier ===\n                    FilterTypeEnum.MultiSelect\n                  \"\n                  [showSelectMessage]=\"true\"\n                  [submitted]=\"submitted\"\n                  placeholder=\"Select option\"\n                  class=\"filter-dialog__row-select-filter\"\n                >\n                </lib-select-filter>\n                <lib-select-filter\n                  *ngIf=\"\n                    (values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i)?.[0]?.identifier ===\n                    FilterTypeEnum.AutoCompleteMulti\n                  \"\n                  [formFieldControl]=\"valuefilter | asFormControl\"\n                  [disabled]=\"filter.get('operatorType')?.value?.value < 0\"\n                  [options]=\"values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i\"\n                  [operator]=\"(values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i)?.[0]?.identifier2\"\n                  [multiple]=\"true\"\n                  [showSelectMessage]=\"true\"\n                  [submitted]=\"submitted\"\n                  [backendQueryUrl]=\"\n                    (values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i)?.[0]?.backendQueryUrl || ''\n                  \"\n                  [getFiltersOptions]=\"getFiltersOptions\"\n                  placeholder=\"Select option\"\n                  class=\"filter-dialog__row-select-filter\"\n                >\n                </lib-select-filter>\n                <lib-date-filter\n                  *ngIf=\"\n                    (values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i)?.[0]?.identifier ===\n                    FilterTypeEnum.DateFilter\n                  \"\n                  [formFieldControl]=\"valuefilter | asFormControl\"\n                  [rangeSelect]=\"filter.get('operatorType')?.value?.value === 'Between'\"\n                  [dateFormat]=\"dateFormat\"\n                  placeholder=\"Select date\"\n                  class=\"filter-dialog__row-select-filter\"\n                >\n                </lib-date-filter>\n                <lib-form-field\n                  *ngIf=\"\n                    (values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i)?.[0]?.identifier ===\n                    FilterTypeEnum.Currency\n                  \"\n                  [formFieldControl]=\"valuefilter | asFormControl\"\n                  [currencySymbol]=\"currencyDisplaySymbol\"\n                  [hideCents]=\"true\"\n                  [ngClass]=\"{ 'filter-dialog__row-select-filter--multiple': filter.get('operatorType')?.value?.value === 'Between' }\"\n                  [type]=\"FormFieldType.currency\"\n                  class=\"filter-dialog__row-select-filter\"\n                >\n                </lib-form-field>\n                <lib-form-field\n                  *ngIf=\"\n                    (values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i)?.[0]?.identifier ===\n                    FilterTypeEnum.Text\n                  \"\n                  [formFieldControl]=\"valuefilter | asFormControl\"\n                  [errorInlineMode]=\"true\"\n                  [type]=\"FormFieldType.text\"\n                  [ngClass]=\"{ 'filter-dialog__row-select-filter--multiple': filter.get('operatorType')?.value?.value === 'Between' }\"\n                  class=\"filter-dialog__row-select-filter\"\n                >\n                </lib-form-field>\n                <lib-form-field\n                  *ngIf=\"\n                    (values | getFilterValues: filter.get('publicFieldName')?.value.identifier : filter.get('operatorType')?.value.identifier : i)?.[0]?.identifier ===\n                    FilterTypeEnum.Number\n                  \"\n                  [formFieldControl]=\"valuefilter | asFormControl\"\n                  [type]=\"FormFieldType.number\"\n                  [errorInlineMode]=\"true\"\n                  [ngClass]=\"{ 'filter-dialog__row-select-filter--multiple': filter.get('operatorType')?.value?.value === 'Between' }\"\n                  class=\"filter-dialog__row-select-filter\"\n                >\n                </lib-form-field>\n              </ng-container>\n            </ng-container>\n            <div class=\"filter-dailog-body-form-row__cross-icon\">\n              <div class=\"plus-svg-icon-container\" (click)=\"handleRowDeleted(rowIndex, $event)\">\n                <ng-container *ngTemplateOutlet=\"plusIcon; context: { cross: true }\"></ng-container>\n              </div>\n            </div>\n          </div>\n        </ng-container>\n        <div class=\"filter-dailog-body-form-row__plus-icon\">\n          <div (click)=\"addUserFilter()\" class=\"plus-svg-icon-container\">\n            <ng-container *ngTemplateOutlet=\"plusIcon; context: { cross: false }\"></ng-container>\n          </div>\n        </div>\n      </div>\n    </form>\n  </div>\n  <div class=\"filter-dialog__footer\">\n    <div class=\"filter-dialog__footer__separator-container\">\n      <ng-container *ngTemplateOutlet=\"footerSeparator\"></ng-container>\n    </div>\n    <div class=\"filter-dialog__footer__form-container\">\n      <form [formGroup]=\"formGroup\">\n        <div class=\"filter-dialog__footer__form-container__form\">\n          <div class=\"filter-dialog__body-filter-name\">\n            <div *ngIf=\"mode === 'create'\" class=\"filter-dialog__body-filter-name__saved-filter-button\">\n              <lib-form-field\n                class=\"filter-dialog__body-filter-name__saved-filter-button--checkbox\"\n                [type]=\"FormFieldType.checkbox\"\n                [formFieldControl]=\"formGroup.get('SaveFilter') | asFormControl\"\n              ></lib-form-field>\n              <lib-form-field\n                class=\"filter-dialog__body-filter-name__saved-filter-button--radio\"\n                [type]=\"FormFieldType.radio\"\n                [formFieldControl]=\"deselectableRadioButtonFormControl\"\n                [options]=\"[radioCheckbox]\"\n                [radioDeselectable]=\"false\"\n                #saveFilterRadioButton\n              ></lib-form-field>\n            </div>\n            <lib-form-field\n              [formFieldControl]=\"formGroup.get('Name') | asFormControl\"\n              [required]=\"formGroup.controls['SaveFilter'].value\"\n              [submitted]=\"formGroup.controls['SaveFilter'].value\"\n              [invalidPatternMessage]=\"invalidPatternMessage\"\n              placeholder=\"Save for later ?\"\n              [type]=\"FormFieldType.text\"\n              class=\"filter-dialog__body-field\"\n            >\n            </lib-form-field>\n          </div>\n        </div>\n      </form>\n      <div class=\"form-submission-btn-container\">\n        <lib-secondary-btn (click)=\"handleClickCancel()\" class=\"normal-text filter-dialog__cancel-button\" aria-label=\"cancel-details\" [type]=\"'button'\">\n          {{ 'COMMON.CANCEL' | translate }}\n        </lib-secondary-btn>\n        <lib-primary-btn\n          (click)=\"handleClickSaveApply()\"\n          class=\"normal-text filter-dialog__save-button\"\n          aria-label=\"save-details\"\n          [type]=\"'submit'\"\n          *ngIf=\"mode === 'edit'\"\n          [disabled]=\"!formGroup.valid || !formGroupValueChanged\"\n        >\n          {{ 'COMMON.SAVEANDAPPLY' | translate }}\n        </lib-primary-btn>\n        <lib-primary-btn\n          (click)=\"handleClickSave()\"\n          class=\"normal-text filter-dialog__save-button\"\n          aria-label=\"save-details\"\n          [type]=\"'submit'\"\n          [disabled]=\"!formGroup.valid || !formGroupValueChanged\"\n        >\n          <span>{{ applyFilterText }}</span>\n        </lib-primary-btn>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!-- SVG Icons -->\n\n<ng-template #plusIcon let-cross=\"cross\">\n  <ng-container [ngSwitch]=\"cross\">\n    <img *ngSwitchCase=\"true\" src=\"assets/icons/grid/cross.svg\" />\n    <img *ngSwitchCase=\"false\" src=\"assets/icons/grid/plus.svg\" />\n  </ng-container>\n</ng-template>\n\n<ng-template #footerSeparator>\n  <img src=\"assets/icons/grid/footer-separator.svg\" />\n</ng-template>\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IFilterDataRequest } from '../../../model/filter-data-request';\nimport { ItemActionHandler } from '../../../model/item-action-handler';\nimport { ConfirmationModalComponent } from '../../confirmation-modal/confirmation-modal.component';\nimport { GridService } from '../../grid/grid.service';\nimport { PopupModalService } from '../../modal/popup-modal/popup-modal.service';\nimport { GridModal } from '../enums/grid-modal.enum';\nimport { GridFiltersModalComponent } from '../grid-filters-modal/grid-filters-modal.component';\nimport { GridFilterService } from '../services/grid-filter.service';\nimport { IManageFiltersModalMiscellaneousData } from './manage-filters-modal.interface';\n\n@Component({\n  selector: 'lib-manage-filters-modal',\n  templateUrl: './manage-filters-modal.component.html',\n  styleUrls: ['./manage-filters-modal.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class ManageFiltersModalComponent implements OnInit, OnDestroy {\n  public manageFiltersModalMiscellaneousData: IManageFiltersModalMiscellaneousData = {} as IManageFiltersModalMiscellaneousData;\n  public userFiltersList: IFilterDataRequest[] = [];\n  public tempUserFiltersList: IFilterDataRequest[] = [];\n  public headerIconTray: ItemActionHandler[] = [];\n\n  private componentDestroyed$: Subject<void> = new Subject();\n\n  constructor(\n    private dialogRef: MatDialogRef<ManageFiltersModalComponent>,\n    private dialog: MatDialog,\n    private domSanitizer: DomSanitizer,\n    private gridFilterService: GridFilterService,\n    private popupModalService: PopupModalService,\n    private gridService: GridService,\n    @Inject(MAT_DIALOG_DATA) public modalData: IFilterDataRequest,\n  ) {\n    this.gridFilterService.gridFilters.pipe(takeUntil(this.componentDestroyed$)).subscribe((userFiltersList) => {\n      this.userFiltersList = userFiltersList ?? [];\n      this.tempUserFiltersList = this.userFiltersList.map((filter) => filter);\n    });\n  }\n\n  ngOnInit(): void {\n    this.headerIconTray.push(\n      new ItemActionHandler(this.domSanitizer.bypassSecurityTrustHtml('<i class=\"icon-gen3-warning\"></i>'), () => {}, this.domSanitizer.bypassSecurityTrustHtml('test')),\n    );\n    this.manageFiltersModalMiscellaneousData = this.gridService.gridMiscellaneousData?.manageFiltersModal ?? ({} as IManageFiltersModalMiscellaneousData);\n  }\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n  // ----- Methods called by template -----\n\n  public handleClose(): void {\n    this.dialogRef.close(true);\n  }\n\n  public drop(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this.tempUserFiltersList, event.previousIndex, event.currentIndex);\n  }\n\n  public handleApplyAll(): void {\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, {\n      disableClose: true,\n      width: '500px',\n      data: {\n        title: 'Are you sure want to save changes?',\n        headerIconTray: this.headerIconTray,\n        dialogMessage: `This action can't be undone.`,\n        confirmText: 'Continue',\n      },\n    });\n\n    dialogRef\n      .afterClosed()\n      .pipe(takeUntil(this.componentDestroyed$))\n      .subscribe((response) => {\n        if (!response) {\n          return;\n        }\n        this.saveFiltersList();\n        this.handleClose();\n      });\n  }\n\n  public saveFiltersList(): void {\n    this.gridFilterService.updateAllFilters(this.tempUserFiltersList.map((userFilter, order) => ({ ...userFilter, order })));\n  }\n\n  public handleClearAll(): void {\n    this.tempUserFiltersList = [];\n  }\n\n  public handleApplyFilter(filterDataRequest: IFilterDataRequest): void {\n    this.gridFilterService.applyUserFilter(filterDataRequest);\n  }\n\n  public handleEditFilter(filterDataRequest: IFilterDataRequest): void {\n    this.dialog.open(GridFiltersModalComponent, {\n      disableClose: true,\n      width: '750px',\n      minHeight: '500px',\n      maxHeight: '750px',\n      maxWidth: '80vw',\n      panelClass: GridModal.GridFiltersModal,\n      data: filterDataRequest,\n    });\n  }\n\n  public canApplyChanges(): boolean {\n    return JSON.stringify(this.userFiltersList) !== JSON.stringify(this.tempUserFiltersList);\n  }\n\n  public handleDeleteFilter(filterIndex: number): void {\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, {\n      disableClose: true,\n      width: '500px',\n      data: {\n        title: 'Are you sure want to delete filter?',\n        headerIconTray: this.headerIconTray,\n        dialogMessage: `This action can't be undone.`,\n        confirmText: 'Continue',\n      },\n    });\n    dialogRef\n      .afterClosed()\n      .pipe(takeUntil(this.componentDestroyed$))\n      .subscribe((response) => {\n        if (response) {\n          this.tempUserFiltersList = this.tempUserFiltersList.filter((userFilter, index) => filterIndex !== index);\n        }\n      });\n  }\n}\n","<div class=\"filter-dialog\">\n  <div class=\"filter-dialog__header\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" cdkDragHandle>\n    <div class=\"filter-dialog__header-left-group\">\n      <img src=\"assets/icons/filter-plus.svg\" />\n      <div class=\"filter-dialog__header-text\">Filter Group Manager</div>\n    </div>\n    <div class=\"filter-dialog__header-close-button\" (click)=\"handleClose()\">\n      <img src=\"assets/icons/grid/transparent-cross.svg\" />\n    </div>\n  </div>\n\n  <div class=\"filter-dialog__body\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n    <div class=\"filter-dialog__row\" *ngFor=\"let filter of tempUserFiltersList; let _index = index\" cdkDrag>\n      <ng-container *ngIf=\"!!filter\">\n        <div class=\"filter-dialog__placeholder\" *cdkDragPlaceholder></div>\n        <div class=\"filter-dialog__row-holder\">\n          <div (click)=\"handleEditFilter(filter)\" class=\"filter-dialog__row-holder__value\">{{ filter?.name }}</div>\n          <div class=\"filter-dialog__row-holder__delete-btn\" libTooltip=\"Delete\" (click)=\"handleDeleteFilter(_index)\">\n            <ng-container *ngTemplateOutlet=\"xIcon\"></ng-container>\n          </div>\n        </div>\n        <div class=\"filter-dialog__row__drag-handles\">\n          <ng-container *ngTemplateOutlet=\"dragHandles\"></ng-container>\n        </div>\n      </ng-container>\n    </div>\n  </div>\n\n  <div class=\"filter-dialog__footer\">\n    <lib-secondary-btn [disabled]=\"!tempUserFiltersList.length\" (click)=\"handleClearAll()\">Clear All</lib-secondary-btn>\n    <lib-primary-btn [disabled]=\"!canApplyChanges()\" class=\"apply-button\" (click)=\"handleApplyAll()\">Apply</lib-primary-btn>\n  </div>\n</div>\n\n<!-- SVG ICONS HERE BELOW -->\n\n<ng-template #xIcon>\n  <img src=\"assets/icons/x-icon.svg\" />\n</ng-template>\n\n<ng-template #dragHandles>\n  <img [src]=\"manageFiltersModalMiscellaneousData.dragHandles?.icon || 'assets/icons/grid/drag-handles.svg'\" />\n</ng-template>\n","export enum PremiumChipVariantTypes {\n  PRIMARY = 'primary',\n  GLASS = 'glass',\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'lib-primary-chip',\n  templateUrl: './primary-chip.component.html',\n  styleUrl: './primary-chip.component.scss',\n  standalone: false,\n})\nexport class PrimaryChipComponent {\n  @Input() height: number = 0;\n  @Input() width: number = 0;\n}\n","<div class=\"primary-chip\" [ngStyle]=\"{ 'border-radius.px': height * 0.5 }\">\n  <div class=\"primary-chip__outer-wrapper\" [ngStyle]=\"{ 'border-radius.px': height * 0.5 }\">\n    <div class=\"primary-chip__outer-background\" [ngStyle]=\"{ 'border-radius.px': height * 0.5 }\"></div>\n  </div>\n  <div class=\"primary-chip__inner-wrapper\" [ngStyle]=\"{ 'border-radius.px': height * 0.5 }\">\n    <div class=\"primary-chip__inner-background\" [ngStyle]=\"{ 'border-radius.px': height * 0.5 }\">\n      <img class=\"primary-chip__inner-image\" src=\"assets/premium-chip/inner-glow.svg\" />\n    </div>\n  </div>\n  <div class=\"primary-chip__border-wrapper\" [ngStyle]=\"{ 'border-radius.px': height * 0.5 }\">\n    <img class=\"primary-chip__border-top-image\" src=\"assets/premium-chip/border-top.svg\" />\n  </div>\n  <div class=\"primary-chip__border-wrapper\" [ngStyle]=\"{ 'border-radius.px': height * 0.5 }\">\n    <div class=\"primary-chip__border-container\">\n      <img class=\"primary-chip__border-bottom-image\" src=\"assets/premium-chip/border-bottom.svg\" />\n    </div>\n  </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IGlassChipIds } from '../../interfaces/glass-chip-ids.interface';\n\n@Component({\n  selector: 'lib-glass-chip',\n  templateUrl: './glass-chip.component.html',\n  styleUrl: './glass-chip.component.scss',\n  standalone: false,\n})\nexport class GlassChipComponent implements OnInit {\n  public bgSvgUniqueIds: IGlassChipIds = {\n    glassBorderGradient: '',\n    glassInnerGradient: '',\n    glassClipRoundedCorners: '',\n    glassBorderMask: '',\n  };\n\n  @Input() public height: number = 0;\n  @Input() public width: number = 0;\n\n  ngOnInit(): void {\n    this.bgSvgUniqueIds = {\n      glassBorderGradient: this.randomString(100),\n      glassInnerGradient: this.randomString(100),\n      glassClipRoundedCorners: this.randomString(100),\n      glassBorderMask: this.randomString(100),\n    };\n  }\n\n  private randomString(length: number = 10): string {\n    return Array.from({ length }, () => Math.random().toString(36).charAt(2)).join('');\n  }\n}\n","<svg class=\"glass-chip\" [ngStyle]=\"{ 'border-radius.px': height }\">\n  <defs>\n    <linearGradient class=\"glass-chip__border-gradient\" [attr.id]=\"bgSvgUniqueIds.glassBorderGradient\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n      <stop offset=\"0%\" class=\"glass-chip__border-gradient__from\" />\n      <stop offset=\"100%\" class=\"glass-chip__border-gradient__to\" />\n    </linearGradient>\n    <linearGradient class=\"glass-chip__border-inner-gradient\" [attr.id]=\"bgSvgUniqueIds.glassInnerGradient\" x1=\"0%\" y1=\"50%\" x2=\"100%\" y2=\"50%\">\n      <stop offset=\"0%\" class=\"glass-chip__border-inner-gradient__dark\" />\n      <stop offset=\"30%\" class=\"glass-chip__border-inner-gradient__light\" />\n      <stop offset=\"70%\" class=\"glass-chip__border-inner-gradient__light\" />\n      <stop offset=\"100%\" class=\"glass-chip__border-inner-gradient__dark\" />\n    </linearGradient>\n    <clipPath [attr.id]=\"bgSvgUniqueIds.glassClipRoundedCorners\">\n      <rect y=\"0\" width=\"100%\" height=\"100%\" [attr.rx]=\"height * 0.5\" [attr.ry]=\"height * 0.5\" fill=\"white\"></rect>\n    </clipPath>\n    <mask [attr.id]=\"bgSvgUniqueIds.glassBorderMask\">\n      <rect height=\"100%\" width=\"100%\" fill=\"rgb(255,255,255)\" [attr.rx]=\"height * 0.5\" [attr.ry]=\"height * 0.5\"></rect>\n      <rect\n        [attr.x]=\"height * 0.05\"\n        [attr.y]=\"height * 0.05\"\n        [attr.height]=\"height * 0.9\"\n        [attr.width]=\"width - height * 0.1\"\n        fill=\"rgb(0,0,0)\"\n        [attr.rx]=\"height * 0.45\"\n        [attr.ry]=\"height * 0.45\"\n      ></rect>\n    </mask>\n    <filter id=\"blurFilter\" x=\"0\" y=\"0\">\n      <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"1\" />\n    </filter>\n  </defs>\n  <g class=\"glass-chip__group-1\">\n    <g [attr.mask]=\"'url(#' + bgSvgUniqueIds.glassBorderMask + ')'\">\n      <rect width=\"100%\" height=\"50%\" [attr.fill]=\"'url(#' + bgSvgUniqueIds.glassBorderGradient + ')'\" />\n      <rect y=\"50%\" width=\"100%\" height=\"50%\" fill=\"rgb(116,116,116)\" />\n    </g>\n    <rect\n      class=\"glass-chip__blurred-background\"\n      [attr.x]=\"height * 0.045\"\n      [attr.y]=\"height * 0.045\"\n      height=\"91%\"\n      [attr.width]=\"width - height * 0.045 * 2\"\n      [attr.rx]=\"height * 0.45\"\n      [attr.ry]=\"height * 0.45\"\n    ></rect>\n  </g>\n</svg>\n<div class=\"glass-chip__inner-glow\"></div>\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { CommonOperations } from '../../operations/operations';\nimport { PremiumChipVariantTypes } from './premium-chip-variants.enum';\n\n@Component({\n  selector: 'lib-premium-chip',\n  templateUrl: './premium-chip.component.html',\n  styleUrl: './premium-chip.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class PremiumChipComponent implements AfterViewInit {\n  @ViewChild('matChipContainer') matChipRef!: ElementRef<HTMLElement>;\n  public PREMIUM_CHIP_VARIANT_TYPES = PremiumChipVariantTypes;\n  @Input() variant: PremiumChipVariantTypes = PremiumChipVariantTypes.PRIMARY;\n  private resizeObserver = new ResizeObserver((entries) => {\n    const entry = entries[0];\n    this.appPremiumChipContainerOffsetWidth = entry.contentRect.width + 10;\n    this.changeDetectorRef.detectChanges();\n  });\n\n  public bgSvgUniqueIds = {\n    // Primary Chip\n    fadeMaskBorderBottom: 'fade-mask-border-bottom' + CommonOperations.randomString(10),\n    premiumChipBorderBottom: 'premium-chip-border-bottom' + CommonOperations.randomString(10),\n    fadeMaskBorderTop: 'fade-mask-border-top' + CommonOperations.randomString(10),\n    premiumChipBorderTop: 'premium-chip-border-top' + CommonOperations.randomString(10),\n    fadeMaskInner: 'fade-mask-inner' + CommonOperations.randomString(10),\n    premiumChipInnerMaskGradient: 'premium-chip-inner-mask-gradient' + CommonOperations.randomString(10),\n    premiumChipInner: 'premium-chip-inner' + CommonOperations.randomString(10),\n    premiumChipBorder: 'premium-chip-border' + CommonOperations.randomString(10),\n\n    // Glass Chip\n    glassBorderGradient: CommonOperations.randomString(100),\n    glassInnerGradient: CommonOperations.randomString(100),\n    glassClipRoundedCorners: CommonOperations.randomString(100),\n    glassBorderMask: CommonOperations.randomString(100),\n  };\n  public appPremiumChipContainerOffsetHeight: number = 0;\n  public appPremiumChipContainerOffsetWidth: number = 0;\n  public updateSvg = true;\n  public readonly difference = 2.5;\n\n  constructor(private changeDetectorRef: ChangeDetectorRef) {}\n\n  public ngAfterViewInit(): void {\n    this.initChipContainer();\n  }\n\n  private initChipContainer() {\n    const chipContainerNativeElement = this.matChipRef?.nativeElement;\n    if (chipContainerNativeElement) {\n      this.resizeObserver.observe(chipContainerNativeElement);\n      this.updateChipRect(chipContainerNativeElement);\n    }\n  }\n\n  private updateChipRect(nativeElement: HTMLElement) {\n    this.updateSvg = false;\n    this.changeDetectorRef.detectChanges();\n\n    setTimeout(() => {\n      this.appPremiumChipContainerOffsetHeight = nativeElement?.offsetHeight || 0;\n      this.appPremiumChipContainerOffsetWidth = nativeElement?.offsetWidth || 0;\n      this.updateSvg = true;\n      this.changeDetectorRef.detectChanges();\n    }, 10);\n  }\n}\n","<div class=\"app-premium-chip-container\">\n  <div class=\"app-premium-chip-container__mat-chip-container\" #matChipContainer>\n    <ng-content></ng-content>\n  </div>\n  <div\n    *ngIf=\"updateSvg\"\n    class=\"app-premium-chip-container__bg-svg-container app-premium-chip\"\n    [ngStyle]=\"{\n      'border-radius.px': appPremiumChipContainerOffsetHeight,\n      'width.px':\n        appPremiumChipContainerOffsetWidth > appPremiumChipContainerOffsetHeight * difference\n          ? appPremiumChipContainerOffsetWidth\n          : appPremiumChipContainerOffsetHeight * difference,\n    }\"\n  >\n    @switch (variant) {\n      @case (PREMIUM_CHIP_VARIANT_TYPES.PRIMARY) {\n        <lib-primary-chip [height]=\"matChipContainer.offsetHeight\"></lib-primary-chip>\n      }\n      @case (PREMIUM_CHIP_VARIANT_TYPES.GLASS) {\n        <lib-glass-chip [height]=\"matChipContainer.offsetHeight\" [width]=\"matChipContainer.offsetWidth\"></lib-glass-chip>\n      }\n    }\n  </div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { format } from 'date-fns';\r\nimport { Observable, Subject, forkJoin } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\n\r\nimport { FilterType } from '../../../enums/filter-type';\r\nimport { IFilterDataRequest } from '../../../model/filter-data-request';\r\nimport { IGridFilterOption } from '../../../model/i-grid-filter-option.interface';\r\nimport { FilterOperator } from '../../../model/filter-operator';\r\nimport { IGridFilterConfig } from '../../../model/grid-filter-config';\r\nimport { SelectOption } from '../../../model/select-option';\r\nimport { IUserFilter } from '../../../model/user-filter';\r\nimport { GridModal } from '../enums/grid-modal.enum';\r\nimport { GridFiltersModalComponent } from '../grid-filters-modal/grid-filters-modal.component';\r\nimport { ManageFiltersModalComponent } from '../manage-filters-modal/manage-filters-modal.component';\r\nimport { GridFilterService } from '../services/grid-filter.service';\r\n\r\ntype GridFilterValueOperator = FilterOperator<string | number>;\r\n\r\n@Component({\r\n  selector: 'lib-filter-bar',\r\n  templateUrl: './filter-bar.component.html',\r\n  styleUrls: ['./filter-bar.component.scss', '../styles/common-grid-modal.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: false,\r\n})\r\nexport class FilterBarComponent implements OnInit, OnDestroy {\r\n  @Output() applyFilter = new EventEmitter();\r\n  @Output() searchStringChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n  public dateFormat: string = '';\r\n  public gridFilterConfig!: IGridFilterConfig;\r\n  @Input() public userFiltersList: IFilterDataRequest[] = [];\r\n\r\n  @Input() public standardFilters: SelectOption<string | number>[] = [];\r\n  @Input() public savedFilters: SelectOption<string | number>[] = [];\r\n\r\n  @Input() public showAllFilters = false;\r\n  public readonly maxFilterCount = 3;\r\n  @Input() public filters: SelectOption<number>[] = [];\r\n  @Input() public activeFilter!: IFilterDataRequest;\r\n\r\n  private componentDestroyed$: Subject<void> = new Subject();\r\n\r\n  private filterOptions: GridFilterValueOperator[] = [];\r\n  private filterOperators: GridFilterValueOperator[][] = [];\r\n  private filterValues: GridFilterValueOperator[][][][] = [];\r\n\r\n  constructor(\r\n    private readonly dialog: MatDialog,\r\n    private readonly changeDetectorRef: ChangeDetectorRef,\r\n    private readonly gridFilterService: GridFilterService,\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.gridFilterService.standardFilters.forEach((standardFilter) => {\r\n      this.standardFilters.push(new SelectOption(standardFilter.name, standardFilter.projectGridFilterId ?? ''));\r\n    });\r\n    this.gridFilterService.gridFilterDefinitions.pipe(takeUntil(this.componentDestroyed$)).subscribe((filterDefinitions) => {\r\n      this.filterOptions = this.gridFilterService.options as GridFilterValueOperator[];\r\n      this.filterOperators = this.gridFilterService.operators as GridFilterValueOperator[][];\r\n      this.filterValues = this.gridFilterService.values as GridFilterValueOperator[][][][];\r\n      this.processFilterDataRequest();\r\n    });\r\n    this.gridFilterService.gridFilters.pipe(takeUntil(this.componentDestroyed$)).subscribe((userFiltersList) => {\r\n      this.userFiltersList = userFiltersList || [];\r\n      this.processFilterDataRequest();\r\n    });\r\n    this.gridFilterService.activeFilter.pipe(takeUntil(this.componentDestroyed$)).subscribe((activeFilter) => {\r\n      this.activeFilter = {\r\n        ...activeFilter,\r\n        name: activeFilter?.name || '',\r\n        userFilters: activeFilter?.userFilters || [],\r\n        projectGridFilterId: activeFilter?.projectGridFilterId || '',\r\n        collectionName: activeFilter?.collectionName || '',\r\n      };\r\n      this.processFilterDataRequest();\r\n      this.applyFilter.emit(this.activeFilter);\r\n    });\r\n    this.dateFormat = this.gridFilterService.dateFormat;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.componentDestroyed$.next();\r\n    this.componentDestroyed$.complete();\r\n  }\r\n\r\n  public removeFilter(filter: SelectOption<number>): void {\r\n    if (this.activeFilter?.userFilters?.length === 1) {\r\n      this.removeAllFilters();\r\n    } else {\r\n      this.activeFilter?.userFilters?.splice(filter.value, 1);\r\n      this.gridFilterService.applyUserFilter(this.activeFilter);\r\n    }\r\n  }\r\n\r\n  public removeAllFilters(): void {\r\n    this.filters = [];\r\n    this.activeFilter = {\r\n      ...this.activeFilter,\r\n      userFilters: [],\r\n      projectGridFilterId: '',\r\n      name: '',\r\n    };\r\n    this.gridFilterService.applyUserFilter(this.activeFilter);\r\n  }\r\n\r\n  public toggleShowAllFilters(): void {\r\n    this.showAllFilters = !this.showAllFilters;\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  public handleApplyFilter(filter: IFilterDataRequest): void {\r\n    this.gridFilterService.applyUserFilter(filter);\r\n  }\r\n\r\n  public handleApplyStandardFilter(standardFilterValue: string | number): void {\r\n    this.gridFilterService.applyUserFilter(standardFilterValue.toString(), true);\r\n  }\r\n\r\n  public handleOpenFilterModal(): void {\r\n    this.dialog.open(GridFiltersModalComponent, {\r\n      disableClose: true,\r\n      width: '750px',\r\n      minHeight: '500px',\r\n      maxHeight: '750px',\r\n      maxWidth: '80vw',\r\n      panelClass: GridModal.GridFiltersModal,\r\n      data: {},\r\n    });\r\n  }\r\n\r\n  public handleManageFilterModal(): void {\r\n    this.dialog.open(ManageFiltersModalComponent, {\r\n      disableClose: true,\r\n      width: '750px',\r\n      minHeight: '500px',\r\n      maxHeight: '750px',\r\n      maxWidth: '80vw',\r\n      panelClass: GridModal.ManageFiltersModal,\r\n      data: {},\r\n    });\r\n  }\r\n\r\n  public updateUserFilters(userFilter: IFilterDataRequest): void {\r\n    this.gridFilterService.createUpdateUserFilter(userFilter).subscribe((response) => {\r\n      this.gridFilterService.applyUserFilter(userFilter);\r\n    });\r\n  }\r\n\r\n  private processFilterDataRequest(): void {\r\n    this.filters = [];\r\n    this.activeFilter?.userFilters?.forEach((userFilterCriteria, userFilterCriteriaIndex) => {\r\n      const filterOption = this.filterOptions.find((option) => option.value === userFilterCriteria.publicFieldName);\r\n      if (!filterOption) {\r\n        return;\r\n      }\r\n\r\n      const filterOperator = this.filterOperators[filterOption.identifier]?.find((operator) => operator.value === userFilterCriteria.operatorType);\r\n\r\n      if (!filterOperator) {\r\n        return;\r\n      }\r\n\r\n      const filterString = filterOption.label + ' ' + filterOperator.label + ' ';\r\n      const filterObservables: Observable<GridFilterValueOperator>[] = [];\r\n\r\n      if (filterOperator.identifier2 === FilterType.AutoCompleteMulti) {\r\n        const filterValues = this.filterValues[filterOption.identifier]?.[filterOperator.identifier]?.[0] || [];\r\n        const backendQueryUrl = filterValues[0]?.backendQueryUrl;\r\n\r\n        userFilterCriteria.values.forEach((filterValue) => {\r\n          if (filterValues.findIndex((controlFieldValue: GridFilterValueOperator) => controlFieldValue.value?.toString() === filterValue?.toString()) < 0) {\r\n            if (backendQueryUrl) {\r\n              filterObservables.push(\r\n                this.gridFilterService.getFilterOptionData(backendQueryUrl, filterValue).pipe(\r\n                  map((resolvedOption: IGridFilterOption | null) => {\r\n                    if (resolvedOption) {\r\n                      return new FilterOperator(resolvedOption.key, resolvedOption.value, filterValues[0].identifier, filterValues[0].identifier2, filterValues[0].backendQueryUrl);\r\n                    }\r\n                    return new FilterOperator('', '', filterValues[0].identifier, filterValues[0].identifier2, filterValues[0].backendQueryUrl);\r\n                  }),\r\n                ),\r\n              );\r\n            }\r\n          }\r\n        });\r\n\r\n        if (filterObservables.length) {\r\n          forkJoin(filterObservables).subscribe((filteredOptions) => {\r\n            filteredOptions.forEach((filteredOption: GridFilterValueOperator) => {\r\n              if (filterValues.findIndex((option: GridFilterValueOperator) => option.value === filteredOption.value) < 0) {\r\n                filterValues.push(\r\n                  new FilterOperator(filteredOption.label, filteredOption.value, filterValues[0].identifier, filterValues[0].identifier2, filterValues[0].backendQueryUrl),\r\n                );\r\n              }\r\n            });\r\n            this.processUserFilters(userFilterCriteria, filterOption, filterOperator, filterString, userFilterCriteriaIndex);\r\n          });\r\n        } else {\r\n          this.processUserFilters(userFilterCriteria, filterOption, filterOperator, filterString, userFilterCriteriaIndex);\r\n        }\r\n      } else {\r\n        this.processUserFilters(userFilterCriteria, filterOption, filterOperator, filterString, userFilterCriteriaIndex);\r\n      }\r\n    });\r\n  }\r\n\r\n  private processUserFilters(\r\n    userFilterCriteria: IUserFilter,\r\n    filterOption: GridFilterValueOperator,\r\n    filterOperator: GridFilterValueOperator,\r\n    filterString: string,\r\n    userFilterCriteriaIndex: number,\r\n  ) {\r\n    userFilterCriteria.values.forEach((filterValueKey, filterValueIndex) => {\r\n      const filterValuesArray = this.filterValues[filterOption.identifier]?.[filterOperator.identifier]?.[0] || [];\r\n      const filterValueObject = filterValuesArray.find((filterParameterValue: GridFilterValueOperator) => filterParameterValue.value?.toString() === filterValueKey);\r\n      let filterValue = filterValueObject?.label || '';\r\n\r\n      if (filterOperator.identifier2 === FilterType.DateFilter) {\r\n        filterValue = format(new Date(filterValueKey), this.dateFormat);\r\n      }\r\n      if (filterOperator.identifier2 === FilterType.Text || filterOperator.identifier2 === FilterType.Number) {\r\n        filterValue = filterValueKey as string;\r\n      }\r\n      filterString += filterValue + ' ';\r\n      if (filterValueIndex !== userFilterCriteria.values?.length - 1 && filterValueObject?.identifier2) {\r\n        filterString += filterValueObject.identifier2 + ' ';\r\n      } else if (filterOperator.identifier2 === FilterType.DateFilter && filterValueIndex !== userFilterCriteria.values?.length - 1) {\r\n        filterString += 'And ';\r\n      }\r\n    });\r\n    this.filters.push(new SelectOption(filterString, userFilterCriteriaIndex));\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  public onSearchStringChange(query: string): void {\r\n    this.searchStringChange.emit(query);\r\n  }\r\n}\r\n","<div class=\"filter-toolbar-top-container\">\n  <div class=\"filter-toolbar-top-container__div\">\n    <div class=\"filter-toolbar\">\n      <ng-container *ngTemplateOutlet=\"searchBar\"></ng-container>\n      <ng-container *ngTemplateOutlet=\"clearAllButton\"></ng-container>\n      <ng-container *ngTemplateOutlet=\"filterDropdownMenuButton\"></ng-container>\n    </div>\n  </div>\n</div>\n\n<div class=\"filter-chips\">\n  @if (filters.length && activeFilter.name) {\n    <div class=\"filter-chips__background\">\n      <img src=\"assets/grid/images/chips-background-shadow.svg\" />\n    </div>\n    <mat-chip-listbox #chipList class=\"chip_list\">\n      <ng-container *ngFor=\"let filter of filters; let pillIndex = index\">\n        <lib-premium-chip *ngIf=\"pillIndex < maxFilterCount || showAllFilters\">\n          <div [libTooltip]=\"filter.label\" (click)=\"removeFilter(filter)\" class=\"filter-chips__container\">\n            <span class=\"filter-chips__label\">{{ filter.label }}</span>\n            <span class=\"filter-chips__icon\"><i class=\"chip_list-item-button-icon icon-close\"></i></span>\n          </div>\n        </lib-premium-chip>\n      </ng-container>\n      <lib-premium-chip *ngIf=\"filters.length > maxFilterCount\" (click)=\"toggleShowAllFilters()\">\n        <div class=\"filter-chips__container\" [libTooltip]=\"'LIB.GRID.SHOW_LESS_FILTERS' | translate\" *ngIf=\"!showAllFilters; else temp\" (click)=\"$event.stopPropagation()\">\n          <span class=\"filter-chips__label\">{{ 'LIB.GRID.SHOW_MORE_FILTERS' | translate }}</span>\n        </div>\n        <ng-template #temp>\n          <span class=\"chip_list-item-text\" [libTooltip]=\"'LIB.GRID.SHOW_LESS_FILTERS' | translate\">{{ 'LIB.GRID.SHOW_LESS' | translate }}</span>\n          <button matChipRemove class=\"chip_list-item-button\">\n            <i class=\"chip_list-item-button-icon icon-close\"></i>\n          </button>\n        </ng-template>\n      </lib-premium-chip>\n    </mat-chip-listbox>\n  }\n</div>\n\n<!-- ng-templates -> svg / images below -->\n<ng-template #searchBar>\n  <div>\n    <lib-search-bar class=\"search-bar\" placeholderText=\"Search\" [libTooltip]=\"'Search'\" (searchStringChange)=\"onSearchStringChange($event)\">\n      <div right class=\"search-bar__right-icon\">\n        <img src=\"assets/icons/side-search-icon.svg\" />\n      </div>\n    </lib-search-bar>\n  </div>\n</ng-template>\n<ng-template #clearAllButton>\n  <div (click)=\"removeAllFilters()\" class=\"trash-icon\" [libTooltip]=\"'Delete'\">\n    <img src=\"assets/icons/trash.svg\" />\n  </div>\n</ng-template>\n<ng-template #filterDropdownMenuButton>\n  <div class=\"filter-buttons\">\n    <div class=\"filter-buttons__image\">\n      <img src=\"assets/grid/icons/filter-button.svg\" />\n    </div>\n    <div class=\"filter-buttons__container\">\n      <div class=\"filter-buttons__button\" libTooltip=\"Filter Creator\" (click)=\"handleOpenFilterModal()\"></div>\n      <div class=\"filter-buttons__button\" [matMenuTriggerFor]=\"menu\"></div>\n      <mat-menu #menu=\"matMenu\" class=\"menu\">\n        <div class=\"filter-menu\">\n          <ng-container *ngIf=\"standardFilters?.length\">\n            <div\n              *ngFor=\"let standardFilter of standardFilters\"\n              mat-menu-item\n              (click)=\"handleApplyStandardFilter(standardFilter.value)\"\n              [ngClass]=\"{ 'chip_list-menu-item--saved': standardFilter.value === activeFilter.projectGridFilterId }\"\n              class=\"chip_list-menu-item\"\n            >\n              <div [libTooltip]=\"standardFilter.label\" class=\"menu-item-container\">\n                <div class=\"text\">{{ standardFilter.label }}</div>\n                <ng-container *ngTemplateOutlet=\"checkBox; context: { state: standardFilter.value === activeFilter?.projectGridFilterId }\"></ng-container>\n              </div>\n            </div>\n          </ng-container>\n          <ng-container *ngIf=\"userFiltersList?.length\">\n            <div\n              *ngFor=\"let savedFilter of userFiltersList; let filterIndex = index\"\n              mat-menu-item\n              (click)=\"handleApplyFilter(savedFilter)\"\n              [ngClass]=\"{ 'chip_list-menu-item--saved': savedFilter.projectGridFilterId === activeFilter.projectGridFilterId }\"\n              class=\"chip_list-menu-item\"\n            >\n              <div [libTooltip]=\"savedFilter?.name || ''\" class=\"menu-item-container\">\n                <div class=\"text\">{{ savedFilter?.name }}</div>\n                <ng-container *ngTemplateOutlet=\"checkBox; context: { state: savedFilter.projectGridFilterId === activeFilter?.projectGridFilterId }\"></ng-container>\n              </div>\n            </div>\n          </ng-container>\n\n          <div class=\"filter-menu__filter-group-dropdown-separator\" *ngIf=\"standardFilters?.length || userFiltersList?.length\">\n            <img class=\"filter-menu__filter-group-dropdown-separator__img\" src=\"assets/icons/grid/filter-dropdown.svg\" />\n          </div>\n          <div mat-menu-item (click)=\"handleManageFilterModal()\" class=\"chip_list-menu-item\">\n            <div class=\"menu-item-container\">\n              <span><img src=\"assets/icons/grid/manage-filter.svg\" />&nbsp;</span>\n              <span class=\"text\">&nbsp;&nbsp;Manage Filters</span>\n            </div>\n          </div>\n        </div>\n      </mat-menu>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #checkBox let-state=\"state\">\n  <img *ngIf=\"!!state\" src=\"assets/icons/grid/checkbox-true.svg\" />\n  <img *ngIf=\"!state\" src=\"assets/icons/grid/checkbox-false.svg\" />\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { GlassChipComponent } from './components/glass-chip/glass-chip.component';\nimport { PrimaryChipComponent } from './components/primary-chip/primary-chip.component';\nimport { PremiumChipComponent } from './premium-chip.component';\n\n@NgModule({\n  declarations: [PremiumChipComponent, PrimaryChipComponent, GlassChipComponent],\n  imports: [CommonModule],\n  exports: [PremiumChipComponent],\n})\nexport class PremiumChipModule {}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule, DecimalPipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDateFnsModule } from '@angular/material-date-fns-adapter';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MenuModule } from 'primeng/menu';\n\nimport { HttpClientModule } from '@angular/common/http';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PipeModule } from '../../pipes/pipe.module';\nimport { ButtonsModule } from '../buttons/buttons.module';\nimport { DashedCheckboxModule } from '../dashed-checkbox/dashed-checkbox.module';\nimport { FormFieldModule } from '../form-field/form-field.module';\nimport { PremiumChipModule } from '../premium-chip/premium-chip.module';\nimport { SearchBarModule } from '../search-bar/search-bar.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { DateFilterComponent } from './date-filter/date-filter.component';\nimport { FilterBarComponent } from './filter-bar/filter-bar.component';\nimport { GridFiltersModalComponent } from './grid-filters-modal/grid-filters-modal.component';\nimport { ManageFiltersModalComponent } from './manage-filters-modal/manage-filters-modal.component';\nimport { SelectFilterComponent } from './select-filter/select-filter.component';\nimport { GridFilterService } from './services/grid-filter.service';\n\n@NgModule({\n  declarations: [GridFiltersModalComponent, SelectFilterComponent, DateFilterComponent, FilterBarComponent, ManageFiltersModalComponent],\n  exports: [GridFiltersModalComponent, SelectFilterComponent, DateFilterComponent, FilterBarComponent, ManageFiltersModalComponent],\n  imports: [\n    CommonModule,\n    HttpClientModule,\n    DragDropModule,\n    FormsModule,\n    MenuModule,\n    ReactiveFormsModule,\n    FormFieldModule,\n    MatChipsModule,\n    MatDatepickerModule,\n    MatDialogModule,\n    MatDividerModule,\n    MatMenuModule,\n    MatDateFnsModule,\n    MatSelectModule,\n    MatInputModule,\n    MatIconModule,\n    SearchBarModule,\n    TooltipModule,\n    ButtonsModule,\n    TranslateModule,\n    PremiumChipModule,\n    DashedCheckboxModule,\n    PipeModule,\n  ],\n  providers: [DecimalPipe, GridFilterService],\n})\nexport class GridFiltersModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { IFilterDataRequest } from '../../model/filter-data-request';\nimport { IGridRow } from '../../model/grid-row';\n\n@Component({\n  selector: 'lib-grid-toolbar',\n  templateUrl: `./grid-toolbar.component.html`,\n  styleUrls: [`./grid-toolbar.component.scss`],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class ToolbarComponent<T = unknown> {\n  @Input() enableCreate: boolean = false;\n  @Input() enableRefresh: boolean = false;\n  @Input() enableTrash: boolean = false;\n  @Input() enableSelection: boolean = false;\n  @Input() enableGridFilters: boolean = false;\n  @Input() isEditInProgress: boolean = false;\n  @Input() rowsPerPage: number = 0;\n  @Input() selectAllConfirmMsg: string = '';\n  @Input() selectAllConfirmedMsg: string = '';\n  @Input() selectAllExceptSomeRecordsConfirmedMsg: string = '';\n  @Input() clearSelectionMsg: string = 'Clear selection';\n  @Input() totalRecords: number = 0;\n  @Input() excludedRows: (string | number)[] = [];\n  @Input() selectAllConfirmButtonLabel: string = '';\n  @Input() selectedRows: IGridRow<T>[] = [];\n  @Input() selectAllPagesConfirmed: boolean = false;\n\n  @Output() createClicked = new EventEmitter<boolean>();\n  @Output() refreshData = new EventEmitter<boolean>();\n  @Output() showTrash = new EventEmitter<boolean>();\n  @Output() userFilter = new EventEmitter<IFilterDataRequest>();\n  @Output() selectAllPages = new EventEmitter<boolean>();\n  @Output() searchStringSubject: Subject<string> = new Subject();\n\n  private trashSelected: boolean = false;\n\n  public emitRefreshEvent(): void {\n    this.refreshData.emit(true);\n  }\n\n  public emitCreateEvent(): void {\n    this.createClicked.emit(true);\n  }\n\n  public emitTrashEvent(): void {\n    this.trashSelected = !this.trashSelected;\n    this.showTrash.emit(this.trashSelected);\n  }\n\n  public getTrashSelected(): boolean {\n    return this.trashSelected;\n  }\n\n  public handleSearchStringChange(query: string): void {\n    this.searchStringSubject.next(query);\n  }\n\n  public handleApplyFilter(userFilter: IFilterDataRequest) {\n    this.userFilter.emit(userFilter);\n  }\n\n  public onSelectAllPages(): void {\n    this.selectAllPages.emit(!this.selectAllPagesConfirmed);\n  }\n}\n","<div class=\"menu-container\" *ngIf=\"enableCreate || enableRefresh || enableTrash\">\n  <div class=\"menu-container__button\">\n    <button *ngIf=\"enableRefresh\" class=\"grid-primary-button\" type=\"button\" (click)=\"emitRefreshEvent()\" aria-label=\"refreshBtn\">\n      {{ 'NG_GRID.refresh' | translate }}\n    </button>\n  </div>\n  <div class=\"menu-container__button\">\n    <button *ngIf=\"enableTrash\" class=\"grid-primary-button\" type=\"button\" (click)=\"emitTrashEvent()\" aria-label=\"trashViewBtn\">\n      {{ !getTrashSelected() ? ('NG_GRID.showTrash' | translate) : ('NG_GRID.hideTrash' | translate) }}\n    </button>\n  </div>\n  <div class=\"menu-container__button\">\n    <button *ngIf=\"enableCreate && !getTrashSelected()\" class=\"grid-primary-button\" type=\"button\" (click)=\"emitCreateEvent()\" aria-label=\"createBtn\">\n      {{ 'NG_GRID.create' | translate }}\n    </button>\n  </div>\n</div>\n\n<div class=\"search-filters-container\" [ngClass]=\"{ 'search-filters-container--disabled': isEditInProgress, show: enableGridFilters, hide: !enableGridFilters }\">\n  <div class=\"search-filters-container__filters\">\n    <div class=\"sub-container\">\n      <lib-filter-bar (searchStringChange)=\"handleSearchStringChange($event)\" (applyFilter)=\"handleApplyFilter($event)\"></lib-filter-bar>\n    </div>\n  </div>\n</div>\n\n<div class=\"select-all-confirm\" *ngIf=\"(selectedRows?.length === rowsPerPage && totalRecords > rowsPerPage) || selectAllPagesConfirmed\">\n  <span *ngIf=\"!selectAllPagesConfirmed\">\n    {{ selectAllConfirmMsg || 'All ' + rowsPerPage + ' records in this page are selected.' }}\n  </span>\n  <span *ngIf=\"selectAllPagesConfirmed\">\n    {{\n      excludedRows.length === 0\n        ? selectAllConfirmedMsg || 'All ' + totalRecords + ' records selected.'\n        : selectAllExceptSomeRecordsConfirmedMsg || totalRecords - excludedRows.length + ' records selected.'\n    }}\n  </span>\n  <button mat-button color=\"primary\" (click)=\"onSelectAllPages()\">\n    {{ selectAllPagesConfirmed ? clearSelectionMsg : selectAllConfirmButtonLabel || 'Select all ' + totalRecords + ' records' }}\n  </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GridFiltersModule } from '../grid-filters/grid-filters.module';\nimport { ToolbarComponent } from './grid-toolbar.component';\n\n@NgModule({\n  declarations: [ToolbarComponent],\n  exports: [ToolbarComponent],\n  imports: [CommonModule, TranslateModule, GridFiltersModule],\n})\nexport class GridToolbarModule {}\n","import { IGridColumn } from './grid-column';\nimport { IGridRow } from './grid-row';\n\nexport class EditCompleteEvent {\n  field: string;\n  column: IGridColumn;\n  row: IGridRow<any>;\n  value: any;\n  previousValue: any;\n\n  constructor(event: PrimeNgEditEvent, previousValue: any) {\n    this.field = event.field;\n    this.column = event.data?.column;\n    this.row = event.data?.row;\n    this.value = event.data?.row[event.field as keyof IGridRow<any>];\n    this.previousValue = previousValue;\n  }\n}\n\nexport type PrimeNgEditEvent = {\n  index?: number;\n  field: string;\n  data: {\n    column: IGridColumn;\n    row: IGridRow<any>;\n  };\n};\n","import { ItemActionHandler } from './item-action-handler';\n\n/**\n * This model class contains strings for a label and tooltip as well as\n * a function that can be executed e.g. when a user clicks a UI element\n * associated with the ItemInfoLine. Additionally, icons can be attached\n * to the ItemInfoLine, optionally with actions.\n */\nexport class ItemInfoLine {\n  public label: string;\n  public tooltipText: string;\n  public action: (...args: unknown[]) => unknown;\n  public iconTray: ItemActionHandler[];\n  public inlineStyles: object;\n\n  constructor(label: string, tooltipText: string, action: (...args: unknown[]) => unknown, iconTray?: ItemActionHandler[], inlineStyles?: object) {\n    this.label = label;\n    this.tooltipText = tooltipText;\n    this.action = action;\n    this.iconTray = iconTray ? iconTray : [];\n    this.inlineStyles = inlineStyles ? inlineStyles : {};\n  }\n}\n","import { SafeHtml, SafeUrl } from '@angular/platform-browser';\nimport { ItemActionHandler } from './item-action-handler';\nimport { ItemInfoLine } from './item-info-line';\n\nexport class ItemSummary<T> {\n  public header: ItemInfoLine;\n  public subheaders: ItemInfoLine[];\n  public details: ItemInfoLine[];\n  public item: T;\n  public abbreviation: string = '';\n  public icon: SafeHtml | null = null;\n  public iconBackgroundColor: string = '';\n  public image: SafeUrl | null = null;\n  public visualIcon: SafeHtml | null = null;\n  public actionHandler: ItemActionHandler | null = null;\n  public disabled: boolean = false;\n\n  constructor(header: ItemInfoLine, subheaders: ItemInfoLine[], details: ItemInfoLine[], item: T) {\n    this.header = header;\n    this.subheaders = subheaders;\n    this.details = details;\n    this.item = item;\n  }\n\n  /**\n   *\n   * @param summary - summary to compare with.\n   *\n   * Determines if the summary matches this one based on the displayed text values.\n   */\n  public equals(summary: ItemSummary<any>): boolean {\n    let match = true;\n    match = match && this.header.label === summary.header.label;\n    match = match && this.details.length === summary.details.length;\n    match = match && this.subheaders.length === summary.subheaders.length;\n    if (match) {\n      this.details.forEach((detail, index) => {\n        match = match && detail.label === summary.details[index].label;\n      });\n      this.subheaders.forEach((subheader, index) => {\n        match = match && subheader.label === summary.subheaders[index].label;\n      });\n    }\n    return match;\n  }\n\n  public clone(): ItemSummary<T> {\n    const newSummary = new ItemSummary(this.header, this.subheaders, this.details, this.item);\n    newSummary.abbreviation = this.abbreviation;\n    newSummary.visualIcon = this.visualIcon;\n    newSummary.actionHandler = this.actionHandler;\n    newSummary.disabled = this.disabled;\n    newSummary.icon = this.icon;\n    newSummary.image = this.image;\n    return newSummary;\n  }\n}\n","export const GridPaginatorsManipulations = [\n  { src: 'assets/icons/first-page.svg', elem: 'angledoublelefticon', className: 'lib-paginator__first' },\n  { src: 'assets/icons/last-page.svg', elem: 'angledoublerighticon', className: 'lib-paginator__last' },\n  { src: 'assets/icons/prev-page.svg', elem: 'anglelefticon', className: 'lib-paginator__prev' },\n  { src: 'assets/icons/next-page.svg', elem: 'anglerighticon', className: 'lib-paginator__next' },\n  { src: 'assets/icons/down-chevron.svg', elem: 'chevrondownicon', className: 'lib-paginator__down-chevron' },\n];\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'lib-avatar',\n  standalone: true,\n  template: ` <svg width=\"9\" height=\"11\" viewBox=\"0 0 9 11\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [style.height]=\"height\" [style.width]=\"width\">\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M3.06701 5.92269C3.07486 5.92231 3.08271 5.92212 3.09056 5.92212H6.22725C6.2351 5.92212 6.24295 5.92231 6.2508 5.92269C7.34934 5.9772 8.32309 6.64576 8.76896 7.65034C9.08921 8.29104 8.91066 8.92534 8.50177 9.36216C8.10578 9.78512 7.49231 10.0377 6.85472 10.0377H2.4631C1.82574 10.0377 1.21245 9.78505 0.816547 9.36216C0.407706 8.92547 0.228939 8.29123 0.548769 7.65047C0.994669 6.64576 1.96845 5.97727 3.06701 5.92269V5.92269ZM3.10298 6.87187C2.36414 6.9127 1.7106 7.36567 1.41324 8.04392C1.40956 8.05234 1.40563 8.06063 1.40147 8.0688C1.28242 8.3025 1.32687 8.51759 1.50987 8.71304C1.70851 8.92522 2.06143 9.08794 2.4631 9.08794H6.85472C7.25677 9.08794 7.60983 8.92515 7.80839 8.71304C7.99131 8.51771 8.03569 8.30282 7.91647 8.06905C7.91229 8.06082 7.9083 8.0524 7.90456 8.04392C7.60723 7.36567 6.95368 6.9127 6.21484 6.87187H3.10298Z\"\n      fill=\"#5E5E5E\"\n    />\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M4.6589 1.17326C3.87213 1.17326 3.23429 1.81108 3.23429 2.59788C3.23429 3.38467 3.87213 4.0225 4.6589 4.0225C5.44574 4.0225 6.08352 3.38467 6.08352 2.59788C6.08352 2.22004 5.93346 1.85769 5.66627 1.59052C5.39907 1.32335 5.03671 1.17326 4.6589 1.17326ZM2.28455 2.59788C2.28455 1.28655 3.34758 0.223511 4.6589 0.223511C5.28865 0.223511 5.89256 0.473668 6.33787 0.918947C6.78311 1.36423 7.03327 1.96816 7.03327 2.59788C7.03327 3.90922 5.97025 4.97224 4.6589 4.97224C3.34758 4.97224 2.28455 3.90922 2.28455 2.59788Z\"\n      fill=\"#5E5E5E\"\n    />\n  </svg>`,\n  styleUrls: [],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class AvatarComponent {\n  @Input() height: string = 'auto';\n  @Input() width: string = '15px';\n}\n","import { Directive, effect, ElementRef, Input, signal } from '@angular/core';\n\n@Directive({\n  selector: '[libTextHighlight]',\n  standalone: true,\n})\nexport class TextHighlightDirective {\n  private libTextHighlightSignal = signal<string>('');\n  private searchTextSignal = signal<string>('');\n\n  @Input() set libTextHighlight(value: string) {\n    this.libTextHighlightSignal.set(value);\n  }\n  @Input() set searchText(value: string) {\n    this.searchTextSignal.set(value);\n  }\n\n  constructor(private el: ElementRef<HTMLElement>) {\n    effect(() => {\n      if (!this.libTextHighlightSignal() || !this.searchTextSignal()) {\n        this.el.nativeElement.innerHTML = this.libTextHighlightSignal();\n        return;\n      }\n      const regex = new RegExp(`(${this.searchTextSignal()})`, 'gi');\n      this.el.nativeElement.innerHTML = this.libTextHighlightSignal().replace(regex, `<span class=\"highlight\">$1</span>`);\n    });\n  }\n}\n","import { moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { CurrencyPipe } from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { Paginator } from 'primeng/paginator';\r\nimport { TableColumnReorderEvent, TableLazyLoadEvent, TableRowSelectEvent, TableRowUnSelectEvent } from 'primeng/table';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport { FormFieldType } from '../../enums/form-field-type';\r\nimport { EditCompleteEvent, PrimeNgEditEvent } from '../../model/edit-complete-event';\r\nimport { IFilterDataRequest } from '../../model/filter-data-request';\r\nimport { IFilterDefinition } from '../../model/filter-definition';\r\nimport { IGridColumn } from '../../model/grid-column';\r\nimport { IGridColumnChange } from '../../model/grid-column-change';\r\nimport { IGridDataRequest } from '../../model/grid-data-request';\r\nimport { IGridFilterConfig } from '../../model/grid-filter-config';\r\nimport { IGridRow } from '../../model/grid-row';\r\nimport { GridSortDirection } from '../../model/grid-sort-direction';\r\nimport { ItemInfoLine } from '../../model/item-info-line';\r\nimport { ItemSummary } from '../../model/item-summary';\r\nimport { SelectOption } from '../../model/select-option';\r\nimport { IUserFilter } from '../../model/user-filter';\r\nimport { GetDisplayValuePipe } from '../../pipes/get-display-value/get-display-value.pipe';\r\nimport { ColumnManagementData, ColumnManagementModalComponent } from '../column-management-modal/column-management-modal.component';\r\nimport { GridFilterService } from '../grid-filters/services/grid-filter.service';\r\nimport { GridService } from './grid.service';\r\nimport { IGridMiscellaneousData } from './interfaces/grid-miscellaneous-data.interface';\r\nimport { GridPaginatorsManipulations } from './lookups/grid.paginator.lookup';\r\n\r\n@Component({\r\n  selector: 'lib-grid',\r\n  templateUrl: './grid.component.html',\r\n  styleUrls: ['./grid.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: false,\r\n})\r\nexport class GridComponent<T extends Record<string, any> = Record<string, any>> implements OnInit, OnChanges, OnDestroy, AfterViewInit {\r\n  readonly defaultRowPerPageOptions: number[] = [10, 25, 50];\r\n  readonly defaultRowsPerPage: number = 10;\r\n\r\n  // Initialize all inputs with default values\r\n  @Input() hideToolbar: boolean = false;\r\n  @Input() hideSettings: boolean = false;\r\n  @Input() hideRowMenu: boolean = false;\r\n  @Input() enableSelection = false;\r\n  @Input() enableGridFilters = false;\r\n  @Input() enableCreate = false;\r\n  @Input() enableRefresh = false;\r\n  @Input() enableTrash = false;\r\n  @Input() isLoading = false;\r\n  @Input() totalRecords = 0;\r\n  @Input() rowsPerPage = this.defaultRowsPerPage;\r\n  @Input() first = 0;\r\n  @Input() rowsPerPageOptions: number[] = this.defaultRowPerPageOptions;\r\n  @Input() paginatorDataTypeLabel = 'Records';\r\n  @Input() selectAllConfirmButtonLabel: string = '';\r\n  @Input() selectAllConfirmMsg: string = '';\r\n  @Input() selectAllConfirmedMsg: string = '';\r\n  @Input() selectAllExceptSomeRecordsConfirmedMsg: string = '';\r\n  @Input() clearSelectionMsg = 'Clear selection';\r\n  @Input() actionButtons: string[] = [];\r\n  @Input() currencyDisplayCode: string = 'USD';\r\n  @Input() minimumColumnWidth: number = -1;\r\n  public processedData: IGridRow<T>[] = [];\r\n  public FormFieldType = FormFieldType;\r\n  public controlTypes = {\r\n    Percent: 'Percent',\r\n    ActionButtons: 'ActionButtons',\r\n    Image: 'Image',\r\n    SingleSelect: 'SingleSelect',\r\n    MultiSelect: 'MultiSelect',\r\n    Number: 'Number',\r\n    AutoComplete: 'AutoComplete',\r\n    AutoCompleteMulti: 'AutoCompleteMulti',\r\n    MultiField: 'MultiField',\r\n    Text: 'Text',\r\n    Date: 'Date',\r\n    Currency: 'Currency',\r\n    Boolean: 'Boolean',\r\n    Html: 'Html',\r\n  };\r\n  public fieldTypeMap: { [key: string]: FormFieldType } = {\r\n    SingleSelect: FormFieldType.select,\r\n    MultiSelect: FormFieldType.multiselectdropdown,\r\n    Number: FormFieldType.number,\r\n    Percent: FormFieldType.percentage,\r\n    Text: FormFieldType.text,\r\n    Date: FormFieldType.date,\r\n    Currency: FormFieldType.currency,\r\n    Boolean: FormFieldType.select,\r\n    AutoComplete: FormFieldType.typeahead,\r\n    AutoCompleteMulti: FormFieldType.multiselect,\r\n    MultiField: FormFieldType.multifield,\r\n    Image: FormFieldType.text,\r\n    Html: FormFieldType.textarea,\r\n  };\r\n\r\n  private _sortField: string = '';\r\n  @Input()\r\n  set sortField(value: string) {\r\n    this._sortField = value;\r\n    // Sometimes the consumer will set this to a value which\r\n    // does not directly correspond to a column name, which\r\n    // the grid really does not like, so we have to clear up\r\n    // that discrepancy here.\r\n    if (value) {\r\n      this.parsedSortField = this.allColumns?.find((c) => c.defaultSortColumn == value)?.name ?? value;\r\n    }\r\n  }\r\n  get sortField(): string {\r\n    return this._sortField;\r\n  }\r\n\r\n  private _groupByField: IGridColumn | null = null;\r\n  @Input()\r\n  set groupByField(value: IGridColumn | null) {\r\n    const wasGrouping = !!this._groupByField;\r\n    const isGrouping = !!value;\r\n    this._groupByField = value;\r\n\r\n    // If grouping state changed, re-process existing data to add/remove __groupValue\r\n    if (wasGrouping !== isGrouping && this.processedData.length > 0) {\r\n      this.processDisplayValues([...this.processedData]);\r\n      this.changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n  get groupByField(): IGridColumn | null {\r\n    return this._groupByField;\r\n  }\r\n  @Input() gridFilterConfig: IGridFilterConfig | null = null;\r\n\r\n  private _sortOrder: GridSortDirection | null = null;\r\n  @Input()\r\n  set sortOrder(value: GridSortDirection | null) {\r\n    this._sortOrder = value;\r\n    this.parsedSortOrder = value === 'Ascending' ? 1 : value === 'Descending' ? -1 : null;\r\n    this.createMenuItems(!!this.groupByField);\r\n  }\r\n  get sortOrder(): GridSortDirection | null {\r\n    if ((this.parsedSortOrder ?? 0) > 0) {\r\n      return 'Ascending';\r\n    }\r\n    return (this.parsedSortOrder ?? 0) < 0 ? 'Descending' : null;\r\n  }\r\n\r\n  /**\r\n   * Calculate minimum height for table body based on rowsPerPage to prevent jittering\r\n   * Row height is approximately 60px (including padding, borders, spacing, and loading state)\r\n   */\r\n  get tableBodyMinHeight(): string {\r\n    const rowHeight = 40; // Row height in pixels\r\n    const rowsPerPage = this.rowsPerPage ?? this.defaultRowsPerPage;\r\n\r\n    // If loading, always use full rowsPerPage height to prevent jitter\r\n    if (this.isLoading) {\r\n      return `${rowsPerPage * rowHeight}px`;\r\n    }\r\n\r\n    // Calculate if we're on the last page\r\n    const totalPages = Math.ceil(this.totalRecords / rowsPerPage);\r\n    const isLastPage = this.currentPage === totalPages - 1;\r\n\r\n    // If on last page, calculate based on actual remaining items\r\n    if (isLastPage && this.totalRecords > 0) {\r\n      const remainingItems = this.totalRecords % rowsPerPage || rowsPerPage;\r\n      return `${remainingItems * rowHeight}px`;\r\n    }\r\n\r\n    // Otherwise, use full rowsPerPage height\r\n    return `${rowsPerPage * rowHeight}px`;\r\n  }\r\n\r\n  private _allColumns: IGridColumn[] = [];\r\n  @Input()\r\n  set columns(columns: IGridColumn[]) {\r\n    this._allColumns = columns ?? [];\r\n    this.filteredColumns = (columns ?? []).filter((c) => c.visible);\r\n    this.precomputeColumnControlTypes();\r\n    this.calculateNumberAndPositionOfPinnedColumns();\r\n  }\r\n  get columns(): IGridColumn[] {\r\n    return this._allColumns ?? [];\r\n  }\r\n\r\n  private _processedData: IGridRow<T>[] = [];\r\n  @Input()\r\n  set data(data: IGridRow<T>[]) {\r\n    this.processDisplayValues(data);\r\n    if (!this.totalRecords) {\r\n      this.totalRecords = data?.length ?? 0;\r\n    }\r\n    if (this.columns?.length) {\r\n      this.isLoading = false;\r\n    }\r\n    if (this.didPaginate) {\r\n      setTimeout(() => {\r\n        const els = this.getBtnElements();\r\n        els.forEach((x) => {\r\n          if (this.allRowsExpanded && !x.classList.contains('expanded')) {\r\n            // do nothing, it's already collapsed\r\n          } else if (!this.allRowsExpanded && x.classList.contains('expanded')) {\r\n            // do nothing, it's already expanded\r\n          } else {\r\n            x.click();\r\n          }\r\n        });\r\n      }, 200);\r\n    } else if (this.groupByField) {\r\n      this.expandAllGroups();\r\n    }\r\n  }\r\n\r\n  get data(): IGridRow<T>[] {\r\n    return this.processedData;\r\n  }\r\n\r\n  @Input() filterDefinitions: IFilterDefinition[] = [];\r\n  @Input() userFiltersList: IFilterDataRequest[] = [];\r\n  @Input() dateFormat: string = 'MM/dd/yyyy';\r\n  @Input() maxPinnedColumns = 3;\r\n  @Input() errorInlineMode = false;\r\n  @Input() gridMiscellaneousData?: IGridMiscellaneousData;\r\n\r\n  @Output() lazyLoad = new EventEmitter<IGridDataRequest>();\r\n  @Output() columnsChange = new EventEmitter<IGridColumnChange>();\r\n  @Output() editComplete = new EventEmitter<EditCompleteEvent>();\r\n  @Output() editChange = new EventEmitter<boolean>();\r\n  @Output() bulkDelete = new EventEmitter<{ selectedRows: IGridRow<T>[] }>();\r\n  @Output() selectAllPages = new EventEmitter<boolean>();\r\n  @Output() cellClicked = new EventEmitter<{ data: T; colName: string }>();\r\n  @Output() createClicked = new EventEmitter<boolean>();\r\n  @Output() refreshData = new EventEmitter<boolean>();\r\n  @Output() showTrash = new EventEmitter<boolean>();\r\n  @Output() actionButtonClicked = new EventEmitter<{ event: string; data: T }>();\r\n  @Output() excludeItem = new EventEmitter<(string | number)[]>();\r\n\r\n  // Initialize ViewChildren with definite assignment assertions\r\n  @ViewChild('paginator') paginator!: Paginator;\r\n  private _paginatorContainerRef!: ElementRef<HTMLDivElement>;\r\n  @ViewChild('paginatorContainer')\r\n  set paginatorContainerRef(value: ElementRef) {\r\n    this._paginatorContainerRef = value;\r\n    if (value) {\r\n      this.updatePaginationButtons();\r\n    }\r\n  }\r\n\r\n  public display = true;\r\n  public selectedRows: IGridRow<T>[] = [];\r\n  public excludedRows: (string | number)[] = [];\r\n  public pagedProcessedData: IGridRow<T>[] = [];\r\n  public filteredColumns: IGridColumn[] = [];\r\n  public parsedSortOrder: number | null = null;\r\n  public editFormControl: UntypedFormControl = new UntypedFormControl(null);\r\n  public editSelectOptions: SelectOption<string | number | boolean>[] = [];\r\n  public totalNumberOfPinnedColumns = 0;\r\n  public columnManagementModalOpen = false;\r\n  public expanded = true;\r\n  public isEditInProgress = false;\r\n  public allRowsExpanded = false;\r\n  public selectAllPagesConfirmed = false;\r\n  public currentPage: number = 0; // Initial Page number of Grid\r\n\r\n  private parsedSortField: string = '';\r\n  private get allColumns(): IGridColumn[] {\r\n    return this._allColumns;\r\n  }\r\n  private set allColumns(value: IGridColumn[]) {\r\n    this._allColumns = value;\r\n  }\r\n  private precomputeColumnControlTypes(): void {\r\n    this.filteredColumns.forEach((col) => {\r\n      col._controlType = col.controlType || null;\r\n    });\r\n  }\r\n\r\n  public searchString: string = '';\r\n  private searchStringSubject: Subject<string> = new Subject();\r\n  private componentDestroyed$: Subject<void> = new Subject();\r\n  private userFilter: IUserFilter[] = [];\r\n  private lastChangedFieldValue: any;\r\n  private didPaginate = false;\r\n  private lazyLoadEvent: string = '';\r\n  private firstChange: boolean = true;\r\n\r\n  constructor(\r\n    private dialog: MatDialog,\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    private gridFilterService: GridFilterService,\r\n    private getDisplayValuePipe: GetDisplayValuePipe,\r\n    private currencyPipe: CurrencyPipe,\r\n    private gridService: GridService,\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this.validateConfig();\r\n    this.searchStringSubject\r\n      .asObservable()\r\n      .pipe(debounceTime(500), distinctUntilChanged(), takeUntil(this.componentDestroyed$))\r\n      .subscribe((searchString) => {\r\n        this.searchString = searchString;\r\n        this.first = 0;\r\n        this.emitLazyLoad();\r\n      });\r\n    this.createMenuItems(!!this.groupByField);\r\n    this.emitGridMiscellaneousData();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.updatePaginationButtons();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes?.['dateFormat']) {\r\n      this.dateFormat = (changes?.['dateFormat'].currentValue || 'MM/dd/yyyy') as string;\r\n      this.gridFilterService.dateFormat = this.dateFormat;\r\n    }\r\n    if (changes?.['gridFilterConfig']) {\r\n      this.gridFilterService.gridFilterConfig = changes['gridFilterConfig'].currentValue;\r\n      this.gridFilterService.getGridFilterDefinations();\r\n      this.gridFilterService.getUserFilters();\r\n    }\r\n    if (changes?.['filterDefinitions']) {\r\n      this.gridFilterService.filterDefinitions = changes['filterDefinitions'].currentValue;\r\n      this.gridFilterService.getGridFilterDefinations();\r\n    }\r\n    if (changes?.['userFiltersList']) {\r\n      this.gridFilterService.userFiltersList = changes['userFiltersList'].currentValue;\r\n      this.gridFilterService.getUserFilters();\r\n    }\r\n    if (changes?.['currencyDisplayCode']) {\r\n      const code = changes['currencyDisplayCode'].currentValue;\r\n      const currencyDisplaySymbol = code ? (this.currencyPipe.transform(0, code)?.split('0.00')[0] ?? '$') : '$';\r\n      this.gridFilterService.setCurrencyDisplaySymbol(currencyDisplaySymbol);\r\n      this.processDisplayValues(this.data);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.componentDestroyed$.next();\r\n    this.componentDestroyed$.complete();\r\n  }\r\n\r\n  private emitGridMiscellaneousData(): void {\r\n    if (this.gridMiscellaneousData) {\r\n      this.gridService.setGridMiscellaneousData(this.gridMiscellaneousData);\r\n    }\r\n  }\r\n\r\n  private processDisplayValues(data: IGridRow<T>[] | undefined | null): void {\r\n    if (data && data.length) {\r\n      data.forEach((row) => {\r\n        Object.entries(row.data).forEach((entry) => {\r\n          const col = this.allColumns.find((nextCol) => nextCol.name === entry[0]);\r\n          this.setDisplayValue(col, row, entry[0]);\r\n        });\r\n\r\n        // Add group value as a flat property for PrimeNG grouping\r\n        if (this.groupByField) {\r\n          const groupValue = row.displayValues?.[this.groupByField.name] || row.data?.[this.groupByField.name];\r\n          // Ensure __groupValue is always a string for consistent grouping\r\n          (row as any).__groupValue = groupValue !== undefined && groupValue !== null ? String(groupValue) : '';\r\n        }\r\n\r\n        if (this.selectAllPagesConfirmed && row.id !== undefined && row.id !== null && !this.excludedRows.includes(row.id)) {\r\n          this.selectedRows.push(row);\r\n        }\r\n      });\r\n\r\n      // Sort data by group field if grouping is enabled\r\n      if (this.groupByField && data.length > 0) {\r\n        data.sort((a, b) => {\r\n          const aValue = a.displayValues?.[this.groupByField!.name] || '';\r\n          const bValue = b.displayValues?.[this.groupByField!.name] || '';\r\n          return aValue.toString().localeCompare(bValue.toString());\r\n        });\r\n      }\r\n\r\n      // Create a new array reference to ensure change detection works properly\r\n      this.processedData = [...data];\r\n      this.pagedProcessedData =\r\n        data.length > (this.rowsPerPage ?? this.defaultRowsPerPage) ? data.slice(this.first, this.first + (this.rowsPerPage ?? this.defaultRowsPerPage)) : data;\r\n\r\n      // Trigger change detection when grouping is enabled to ensure template updates\r\n      if (this.groupByField) {\r\n        this.changeDetectorRef.markForCheck();\r\n      }\r\n    } else {\r\n      this.processedData = [];\r\n      this.pagedProcessedData = [];\r\n    }\r\n  }\r\n\r\n  toggleAll() {\r\n    const els = this.getBtnElements();\r\n\r\n    els.forEach((x) => {\r\n      if (this.allRowsExpanded && !x.classList.contains('expanded')) {\r\n        // do nothing, it's already collapsed\r\n      } else if (!this.allRowsExpanded && x.classList.contains('expanded')) {\r\n        // do nothing, it's already expanded\r\n      } else {\r\n        x.click();\r\n      }\r\n    });\r\n  }\r\n\r\n  getGroupValue = (row: IGridRow<T>): any => {\r\n    if (!this.groupByField || !row) {\r\n      return null;\r\n    }\r\n    return row.displayValues?.[this.groupByField.name] || row.data?.[this.groupByField.name] || null;\r\n  };\r\n\r\n  public onSelectionChange(rowsData: IGridRow<T>[]): void {\r\n    if (this.selectAllPagesConfirmed && (rowsData.length === 0 || rowsData.length === this.data.length)) {\r\n      this.data.map((item) => {\r\n        if (item.id !== undefined && item.id !== null) {\r\n          const index = this.excludedRows.indexOf(item.id);\r\n          if (index === -1 && rowsData.length === 0) {\r\n            this.excludedRows.push(item.id);\r\n          }\r\n          if (index !== -1 && rowsData.length === this.data.length) {\r\n            this.excludedRows.splice(index, 1);\r\n          }\r\n        }\r\n      });\r\n      this.excludeItem.emit(this.excludedRows);\r\n    }\r\n  }\r\n\r\n  public getFormFieldType(controlType: string): FormFieldType {\r\n    return this.fieldTypeMap[controlType] || FormFieldType.text;\r\n  }\r\n\r\n  private setDisplayValue(col: IGridColumn | undefined, row: IGridRow<Partial<T>>, fieldName: string): void {\r\n    if (!row.displayValues) {\r\n      row.displayValues = {};\r\n    }\r\n    if (col) {\r\n      (row.displayValues as Record<string, any>)[fieldName] = this.getDisplayValuePipe.transform(\r\n        (row.data as Record<string, any>)?.[col?.name],\r\n        col,\r\n        this.dateFormat,\r\n        this.currencyDisplayCode,\r\n      );\r\n    }\r\n  }\r\n\r\n  public isArray(data: any): boolean {\r\n    return Array.isArray(data);\r\n  }\r\n\r\n  public onLazyLoad(event: TableLazyLoadEvent): void {\r\n    const eventString = JSON.stringify(event);\r\n    if (this.lazyLoadEvent === eventString) return;\r\n    this.lazyLoadEvent = eventString;\r\n    this.parsedSortOrder = event.sortOrder ?? null;\r\n    const sortField = event.sortField;\r\n    if (typeof sortField === 'string') {\r\n      this.sortField = sortField;\r\n    } else if (Array.isArray(sortField) && sortField.length > 0) {\r\n      this.sortField = sortField[0];\r\n    } else {\r\n      this.sortField = '';\r\n    }\r\n\r\n    this.first = this.getFirstNthOfPage(this.currentPage, this.rowsPerPage);\r\n    if (this.firstChange) {\r\n      this.firstChange = false;\r\n      return;\r\n    }\r\n    this.emitLazyLoad();\r\n  }\r\n\r\n  public handleSearchStringChange(query: string): void {\r\n    this.searchStringSubject.next(query);\r\n  }\r\n\r\n  public paginate(event: any): void {\r\n    const paginatorEvent = event as { first: number; rows: number; page: number };\r\n    this.currentPage = paginatorEvent.page;\r\n    this.didPaginate = true;\r\n    this.first = this.getFirstNthOfPage(paginatorEvent.page, paginatorEvent.rows);\r\n    this.rowsPerPage = paginatorEvent.rows;\r\n    this.updatePaginationButtons();\r\n    this.pagedProcessedData = this.processedData.slice(this.first, this.first + this.rowsPerPage);\r\n    this.emitLazyLoad();\r\n  }\r\n\r\n  private updatePaginationButtons(): void {\r\n    const paginatorHtmlRef = this._paginatorContainerRef?.nativeElement;\r\n\r\n    if (!paginatorHtmlRef) return;\r\n    GridPaginatorsManipulations.forEach(({ src, elem, className }) => {\r\n      const element = paginatorHtmlRef.querySelector(elem);\r\n      if (element?.firstChild) {\r\n        element.firstChild.replaceWith(Object.assign(document.createElement('img'), { src, className }));\r\n      }\r\n    });\r\n    if (!paginatorHtmlRef.querySelector('.lib-paginator__nav-buttons')) {\r\n      const containerDiv = document.createElement('div');\r\n      if (!containerDiv.classList.contains('lib-paginator__nav-buttons')) {\r\n        containerDiv.classList.add('lib-paginator__nav-buttons');\r\n      }\r\n      const firstPage = paginatorHtmlRef.querySelector('.p-paginator-first');\r\n      const prevPage = paginatorHtmlRef.querySelector('.p-paginator-prev');\r\n      const pages = paginatorHtmlRef.querySelector('.p-paginator-pages');\r\n      const nextPage = paginatorHtmlRef.querySelector('.p-paginator-next');\r\n      const lastPage = paginatorHtmlRef.querySelector('.p-paginator-last');\r\n      [firstPage, prevPage, pages, nextPage, lastPage].forEach((e) => e && containerDiv.append(e));\r\n\r\n      const paginatorCurrent = document.querySelector('.p-paginator-current');\r\n\r\n      if (paginatorCurrent) {\r\n        paginatorCurrent.insertAdjacentElement('afterend', containerDiv);\r\n      }\r\n    }\r\n  }\r\n\r\n  public onSelectAllPages($event: boolean): void {\r\n    this.selectAllPagesConfirmed = $event;\r\n    if (!$event) {\r\n      this.selectedRows = [];\r\n      this.excludedRows = [];\r\n      this.excludeItem.emit([]);\r\n    }\r\n    this.selectAllPages.emit($event);\r\n  }\r\n\r\n  public onBulkDelete(): void {\r\n    this.bulkDelete.emit({ selectedRows: this.selectedRows });\r\n  }\r\n\r\n  private emitLazyLoad() {\r\n    const request: IGridDataRequest = {\r\n      from: this.first,\r\n      size: this.rowsPerPage,\r\n      userFilters: this.userFilter,\r\n      sortField: this.allColumns?.find((c) => c.name == this.sortField)?.defaultSortColumn ?? this.sortField,\r\n      sortDirection: (this.parsedSortOrder ?? 0) > 0 ? 'Ascending' : 'Descending',\r\n      groupByField: this.allColumns?.find((c) => c.name == this.groupByField?.name)?.defaultSortColumn ?? this.groupByField?.name,\r\n      searchString: this.searchString,\r\n    };\r\n    this.lazyLoad.emit(request);\r\n  }\r\n\r\n  private validateConfig() {\r\n    this.rowsPerPage = this.rowsPerPage ?? this.rowsPerPageOptions?.[0] ?? this.defaultRowsPerPage;\r\n\r\n    // add the provided rowsPerPage number to the rowsPerPageOptions dropdown (if necessary)\r\n    if (this.rowsPerPageOptions?.every((option) => option !== this.rowsPerPage)) {\r\n      this.rowsPerPageOptions.unshift(this.rowsPerPage);\r\n    }\r\n\r\n    this.rowsPerPageOptions = this.rowsPerPageOptions?.sort((a, b) => a - b);\r\n  }\r\n\r\n  private createMenuItems(ungroup = false) {\r\n    this.allColumns.forEach((column) => {\r\n      const menuItems: MenuItem[] = [\r\n        {\r\n          label: column.pinned ? 'Unpin' : 'Pin',\r\n          icon: 'icon-pin',\r\n          styleClass: column.pinned ? '' : 'pin-menu-item',\r\n          command: (event) => {\r\n            if (!column.pinned && this.totalNumberOfPinnedColumns >= this.maxPinnedColumns) {\r\n              return;\r\n            }\r\n            column.pinned = !column.pinned;\r\n            if (column.pinned && event.item) {\r\n              event.item.label = 'Unpin';\r\n              event.item.styleClass = '';\r\n            } else if (event.item) {\r\n              event.item.styleClass = 'pin-menu-item';\r\n            }\r\n            this.filterGridColumns();\r\n            this.calculateNumberAndPositionOfPinnedColumns();\r\n            this.columnsChange.emit({ columns: this.allColumns, groupByField: this.groupByField });\r\n          },\r\n        },\r\n      ];\r\n\r\n      if (column.sortable) {\r\n        menuItems.push({\r\n          label: ungroup ? 'Ungroup Grid' : 'Group by this field',\r\n          icon: 'icon-group-by',\r\n          command: () => {\r\n            if (ungroup) {\r\n              const field = this.allColumns.find((x) => x.name === this.groupByField?.name);\r\n              if (field) {\r\n                field.visible = true;\r\n              }\r\n              this.groupByField = null;\r\n              this.filteredColumns = this.allColumns.filter((nextColumn) => nextColumn.visible);\r\n            } else {\r\n              column.pinned = false;\r\n              column.visible = false;\r\n              this.filteredColumns = this.filteredColumns.filter((col) => col.visible);\r\n              this.groupByField = column;\r\n            }\r\n            this.createMenuItems(!ungroup);\r\n            this.display = false;\r\n            this.changeDetectorRef.detectChanges();\r\n            this.display = true;\r\n            this.changeDetectorRef.detectChanges();\r\n            this.calculateNumberAndPositionOfPinnedColumns();\r\n            this.columnsChange.emit({ groupByField: this.groupByField, columns: this.allColumns });\r\n          },\r\n        } as MenuItem);\r\n      }\r\n\r\n      menuItems.push({\r\n        label: 'Remove',\r\n        icon: 'icon-remove',\r\n        command: () => {\r\n          column.visible = false;\r\n          this.filteredColumns = this.filteredColumns.filter((col) => col.visible);\r\n          this.changeDetectorRef.detectChanges();\r\n          this.columnsChange.emit({ groupByField: this.groupByField, columns: this.allColumns });\r\n        },\r\n      } as MenuItem);\r\n\r\n      if (column.sortable) {\r\n        menuItems.push({ separator: true } as MenuItem);\r\n\r\n        menuItems.push({\r\n          label: 'Sort Ascending',\r\n          icon: 'icon-long-arrow-up',\r\n          styleClass: this.sortOrder === 'Ascending' && this.sortField === column.name ? 'selected' : '',\r\n          command: () => {\r\n            this.sortField = column.name;\r\n            this.sortOrder = 'Ascending';\r\n            this.first = 0;\r\n            this.changeDetectorRef.detectChanges();\r\n          },\r\n        } as MenuItem);\r\n\r\n        menuItems.push({\r\n          label: 'Sort Descending',\r\n          icon: 'icon-long-arrow-down',\r\n          styleClass: this.sortOrder === 'Descending' ? 'selected' : '',\r\n          command: () => {\r\n            this.sortField = column.name;\r\n            this.sortOrder = 'Descending';\r\n            this.first = 0;\r\n            this.changeDetectorRef.detectChanges();\r\n          },\r\n        } as MenuItem);\r\n      }\r\n\r\n      column.menuItems = menuItems;\r\n    });\r\n  }\r\n\r\n  public openManagementModal(): void {\r\n    const dialogRef = this.dialog.open(ColumnManagementModalComponent, {\r\n      disableClose: true,\r\n      panelClass: 'grid-column-management-component',\r\n      data: {\r\n        columns: [...this.allColumns],\r\n        // The groupByField column is nominally disabled for the purposes of grid rendering.\r\n        // However, when we display the column management modal, we want it to \"appear\" enabled\r\n        // so that the user is not confused (\"why does it say if it's disabled if I'm grouping\r\n        // by it right now?\"). So we pass it in here so we can show it as enabled in the modal.\r\n        groupByField: this.groupByField ?? {},\r\n        maxPinnedColumns: this.maxPinnedColumns,\r\n      } as ColumnManagementData,\r\n    });\r\n\r\n    this.columnManagementModalOpen = true;\r\n\r\n    dialogRef.afterClosed().subscribe((gridColumnChange: IGridColumnChange | undefined) => {\r\n      if (gridColumnChange) {\r\n        const columns = gridColumnChange.columns;\r\n        this.groupByField = gridColumnChange.groupByField ?? null;\r\n        this.emitLazyLoad();\r\n        this.display = false;\r\n        this.changeDetectorRef.detectChanges();\r\n        this.display = true;\r\n        if (columns && columns.length) {\r\n          this.allColumns = columns;\r\n          this.filteredColumns = gridColumnChange.filteredColumns ?? [];\r\n          this.calculateNumberAndPositionOfPinnedColumns();\r\n          this.columnsChange.emit({ columns, groupByField: this.groupByField });\r\n        }\r\n        this.createMenuItems(!!this.groupByField);\r\n        this.columnManagementModalOpen = false;\r\n        this.changeDetectorRef.detectChanges();\r\n      }\r\n    });\r\n  }\r\n\r\n  public handleEditComplete(event: any): void {\r\n    const primeNgEvent = event as PrimeNgEditEvent;\r\n    this.isEditInProgress = false;\r\n    this.editChange.emit(this.isEditInProgress);\r\n    this.changeDetectorRef.detectChanges();\r\n\r\n    if (!Array.isArray(this.lastChangedFieldValue) && !Array.isArray(this.editFormControl.value) && this.lastChangedFieldValue === this.editFormControl.value) {\r\n      return;\r\n    }\r\n\r\n    (primeNgEvent.data.row.data as Record<string, any>)[primeNgEvent.field] = this.editFormControl.value;\r\n    this.setDisplayValue(primeNgEvent.data.column, primeNgEvent.data.row, primeNgEvent.field);\r\n    this.editComplete.emit(new EditCompleteEvent(primeNgEvent, this.lastChangedFieldValue));\r\n  }\r\n\r\n  public handleEditInit(event: any): void {\r\n    const primeNgEvent = event as PrimeNgEditEvent;\r\n    const col = primeNgEvent.data.column;\r\n    let value = (primeNgEvent.data.row.data as Record<string, any>)[primeNgEvent.field];\r\n    if (Array.isArray(value) && col.controlType === 'SingleSelect') {\r\n      value = value[0]; // handle possible mismatch between column definition and the actual grid data\r\n    }\r\n\r\n    this.lastChangedFieldValue = value;\r\n    let prevValue = value;\r\n    if (prevValue?.en) prevValue = prevValue?.en;\r\n    this.editFormControl = new UntypedFormControl(prevValue);\r\n    this.editSelectOptions = Array.isArray(col.values) ? col.values.map((v) => new SelectOption(v.Value, v.Key)) : [];\r\n    if (col.controlType === 'Boolean') {\r\n      this.editSelectOptions = [new SelectOption('Select one', ''), new SelectOption('Yes', true), new SelectOption('No', false)];\r\n    }\r\n\r\n    if (col.controlType === 'AutoComplete') {\r\n      if (col.apiUrl) {\r\n        // when the apiUrl for the grid component is ready then we can\r\n        // build and add the entity property that uses the http service\r\n      } else {\r\n        event.data.row.data.entity = [\r\n          {\r\n            // TODO: move this to this.editTypeaheadFunctions?\r\n            searchFunction: (text: string) => new BehaviorSubject(['test 1', 'test 2']).asObservable(),\r\n            mappingFunction: (text: string) => {\r\n              return new BehaviorSubject(new ItemSummary(new ItemInfoLine(text, text, () => {}), [], [], []));\r\n            },\r\n            filterFunction: () => true,\r\n            sortFunction: () => 1,\r\n          },\r\n        ];\r\n      }\r\n    }\r\n    this.isEditInProgress = true;\r\n    this.editChange.emit(this.isEditInProgress);\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  public handleEditCancel(event: any): void {\r\n    this.isEditInProgress = false;\r\n    this.editChange.emit(this.isEditInProgress);\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  public handleUnpinColumn(column: IGridColumn, event: MouseEvent): void {\r\n    column.pinned = !column.pinned;\r\n    if (!column.pinned && column.menuItems?.[0]) {\r\n      column.menuItems[0].label = 'Pin';\r\n    }\r\n    this.filterGridColumns();\r\n    this.calculateNumberAndPositionOfPinnedColumns();\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n    this.columnsChange.emit({ columns: this.allColumns, groupByField: this.groupByField });\r\n  }\r\n\r\n  public colReorder(event: TableColumnReorderEvent): void {\r\n    const columns = event.columns ?? [];\r\n    const dragIndex = event.dragIndex ?? 0;\r\n    const dropIndex = event.dropIndex ?? 0;\r\n\r\n    const firstUnpinnedColumnIndex = this.filteredColumns.findIndex((column, i) => i !== dropIndex && !column.pinned);\r\n    if (dropIndex > firstUnpinnedColumnIndex && this.filteredColumns[dropIndex]?.pinned) {\r\n      // If a pinned column was moved out of the pinned column area, mark it unpinned\r\n      this.filteredColumns[dropIndex].pinned = false;\r\n      this.calculateNumberAndPositionOfPinnedColumns();\r\n    } else if (firstUnpinnedColumnIndex > 0 && dropIndex < firstUnpinnedColumnIndex - 1) {\r\n      if (!this.filteredColumns[dropIndex]?.pinned && firstUnpinnedColumnIndex <= this.maxPinnedColumns) {\r\n        // If an unpinned column was moved into the pinned column area and there is room\r\n        // for another pinned column, pin it\r\n        this.filteredColumns[dropIndex].pinned = true;\r\n        this.calculateNumberAndPositionOfPinnedColumns();\r\n        return;\r\n      } else if (!this.filteredColumns[dropIndex]?.pinned) {\r\n        moveItemInArray(this.filteredColumns, dropIndex, dragIndex);\r\n        this.calculateNumberAndPositionOfPinnedColumns();\r\n        return;\r\n      }\r\n    }\r\n\r\n    this.calculateNumberAndPositionOfPinnedColumns();\r\n\r\n    // Propagate the column reordering to the allColumns array, since the grid\r\n    const reorderedColumnIndex = this.allColumns.findIndex((column) => column.name === this.filteredColumns[dropIndex]?.name);\r\n    if (dropIndex !== 0 && reorderedColumnIndex !== -1) {\r\n      let precedingColumnIndex = this.allColumns.findIndex((column) => column === this.filteredColumns[dropIndex - 1]);\r\n      if (precedingColumnIndex < reorderedColumnIndex) {\r\n        precedingColumnIndex += 1;\r\n      }\r\n      moveItemInArray(this.allColumns, reorderedColumnIndex, precedingColumnIndex);\r\n    } else if (reorderedColumnIndex !== -1) {\r\n      moveItemInArray(this.allColumns, reorderedColumnIndex, 0);\r\n    }\r\n    this.columnsChange.emit({ groupByField: this.groupByField, columns: this.allColumns });\r\n  }\r\n\r\n  public colResize(event: any): void {\r\n    const col = this.allColumns.find((nextCol) => nextCol.label === event.element.innerText);\r\n    if (col) {\r\n      col.width = (col.width ?? 200) + event.delta;\r\n      if (this.minimumColumnWidth > 0) {\r\n        col.width = (col.width ?? 0) >= this.minimumColumnWidth ? col.width : this.minimumColumnWidth;\r\n      }\r\n      this.calculateNumberAndPositionOfPinnedColumns();\r\n      this.changeDetectorRef.detectChanges();\r\n      this.columnsChange.emit({ groupByField: this.groupByField, columns: this.allColumns });\r\n    }\r\n  }\r\n\r\n  public calculateNumberAndPositionOfPinnedColumns(): void {\r\n    this.totalNumberOfPinnedColumns = this.filteredColumns.filter((column) => column.pinned).length;\r\n    let position = 70;\r\n    this.filteredColumns.forEach((column, index) => {\r\n      if (index > 0) {\r\n        position += this.filteredColumns[index - 1].width ?? 200;\r\n      }\r\n      column.pinLocationInPx = position;\r\n    });\r\n    this.createMenuItems(!!this.groupByField);\r\n  }\r\n\r\n  public handleApplyFilter(userFilter: IFilterDataRequest) {\r\n    if (!userFilter || Object.keys(userFilter).length < 1) {\r\n      this.userFilter = [];\r\n    } else {\r\n      if (userFilter.userFilters) {\r\n        this.userFilter = userFilter.userFilters;\r\n      }\r\n      if (userFilter.sort?.direction) {\r\n        this.sortOrder = userFilter.sort.direction;\r\n      }\r\n      if (userFilter.sort?.field) {\r\n        this.sortField = userFilter.sort.field;\r\n      }\r\n    }\r\n    this.first = 0;\r\n    this.emitLazyLoad();\r\n  }\r\n\r\n  private getBtnElements() {\r\n    return document.querySelectorAll<HTMLButtonElement>('#expandBtn');\r\n  }\r\n\r\n  private expandAllGroups() {\r\n    setTimeout(() => {\r\n      const els = this.getBtnElements();\r\n      els.forEach((x) => {\r\n        x.click();\r\n      });\r\n      this.allRowsExpanded = true;\r\n    }, 200);\r\n  }\r\n\r\n  private filterGridColumns(): void {\r\n    const columnsCopy: IGridColumn[] = [...this.filteredColumns];\r\n    this.filteredColumns = this.allColumns\r\n      .filter((nextColumn) => nextColumn.visible)\r\n      .sort((a, b) => {\r\n        if (a.pinned && b.pinned) {\r\n          return columnsCopy.findIndex((k) => k.name === a.name) - columnsCopy.findIndex((k) => k.name === b.name);\r\n        }\r\n        return a.pinned ? -1 : 1;\r\n      });\r\n    this.precomputeColumnControlTypes();\r\n  }\r\n\r\n  /**\r\n   * Calculates the index of the first element on a specified page given the page number and rows per page.\r\n   *\r\n   * @param   {number} page         - The page number (0 is the 1st page).\r\n   * @param   {number} rowsPerPage  - The number of rows per page.\r\n   * @return {number}              - The index of the first element on the specified page.\r\n   *\r\n   * @example\r\n   * // Returns 0 for the first page with 10 rows per page.\r\n   * const firstElementIndex = getFirstNthOfPage(0, 10);\r\n   *\r\n   * // Returns 20 for the third page with 10 rows per page.\r\n   * const thirdPageFirstElementIndex = getFirstNthOfPage(2, 10);\r\n   */\r\n  private getFirstNthOfPage(page: number, rowsPerPage: number): number {\r\n    return page * rowsPerPage;\r\n  }\r\n\r\n  public emitClickCellEvent(rowData: IGridRow<T>, colName: string, controlType: string): void {\r\n    if (controlType !== 'ActionButtons') this.cellClicked.emit({ data: rowData.data, colName });\r\n  }\r\n\r\n  public emitRefreshEvent(): void {\r\n    this.refreshData.emit(true);\r\n  }\r\n\r\n  public emitCreateEvent(): void {\r\n    this.createClicked.emit(true);\r\n  }\r\n\r\n  public emitTrashEvent(event: boolean): void {\r\n    this.selectedRows = [];\r\n    this.excludedRows = [];\r\n    this.showTrash.emit(event);\r\n  }\r\n\r\n  public emitActionButton(event: string, rowData: IGridRow<T>): void {\r\n    this.actionButtonClicked.emit({ event, data: rowData.data });\r\n  }\r\n\r\n  public updateCurrentPage(currentPage: number): void {\r\n    this.paginator.changePage(currentPage);\r\n  }\r\n\r\n  public resetSelectedRows(): void {\r\n    this.selectedRows = [];\r\n    this.excludedRows = [];\r\n    this.excludeItem.emit([]);\r\n    this.selectAllPagesConfirmed = false;\r\n  }\r\n\r\n  public onRowSelected(event: any): void {\r\n    const rowEvent = event as TableRowSelectEvent<IGridRow<T>>;\r\n    const rowData = Array.isArray(rowEvent.data) ? rowEvent.data[0] : rowEvent.data;\r\n\r\n    if (this.selectAllPagesConfirmed && rowData) {\r\n      this.excludedRows = this.excludedRows.filter((value) => value !== (rowData.data as any)['id']);\r\n      this.excludeItem.emit(this.excludedRows);\r\n    }\r\n  }\r\n\r\n  public onRowUnselected(event: any): void {\r\n    const rowEvent = event as TableRowUnSelectEvent<IGridRow<T>>;\r\n    const rowData = Array.isArray(rowEvent.data) ? rowEvent.data[0] : rowEvent.data;\r\n\r\n    if (this.selectAllPagesConfirmed && rowData) {\r\n      this.excludedRows.push((rowData.data as any)['id']);\r\n      this.excludeItem.emit(this.excludedRows);\r\n    }\r\n  }\r\n}\r\n","<lib-grid-toolbar\n  [enableCreate]=\"enableCreate\"\n  [enableRefresh]=\"enableRefresh\"\n  [enableTrash]=\"enableTrash\"\n  [enableSelection]=\"enableSelection\"\n  [enableGridFilters]=\"enableGridFilters\"\n  [isEditInProgress]=\"isEditInProgress\"\n  [rowsPerPage]=\"rowsPerPage\"\n  [excludedRows]=\"excludedRows\"\n  [selectAllConfirmMsg]=\"selectAllConfirmMsg\"\n  [selectAllConfirmedMsg]=\"selectAllConfirmedMsg\"\n  [selectAllExceptSomeRecordsConfirmedMsg]=\"selectAllExceptSomeRecordsConfirmedMsg\"\n  [clearSelectionMsg]=\"clearSelectionMsg\"\n  [totalRecords]=\"totalRecords\"\n  [selectAllConfirmButtonLabel]=\"selectAllConfirmButtonLabel\"\n  [selectedRows]=\"selectedRows\"\n  [selectAllPagesConfirmed]=\"selectAllPagesConfirmed\"\n  (createClicked)=\"emitCreateEvent()\"\n  (refreshData)=\"emitRefreshEvent()\"\n  (showTrash)=\"emitTrashEvent($event)\"\n  (userFilter)=\"handleApplyFilter($event)\"\n  (selectAllPages)=\"onSelectAllPages($event)\"\n  (searchStringSubject)=\"handleSearchStringChange($event)\"\n></lib-grid-toolbar>\n<div class=\"table-container\" [ngClass]=\"{ 'table-container--disabled': isEditInProgress }\" [style.--table-body-min-height]=\"tableBodyMinHeight\">\n  <p-table\n    *ngIf=\"display\"\n    [lazy]=\"!groupByField\"\n    (onLazyLoad)=\"onLazyLoad($event)\"\n    [loading]=\"isLoading\"\n    [columns]=\"filteredColumns\"\n    [value]=\"groupByField ? processedData : pagedProcessedData\"\n    [scrollable]=\"true\"\n    [sortField]=\"sortField\"\n    [sortOrder]=\"parsedSortOrder ?? 1\"\n    [dataKey]=\"'id'\"\n    [groupRowsBy]=\"groupByField ? '__groupValue' : undefined\"\n    [resizableColumns]=\"true\"\n    [columnResizeMode]=\"'expand'\"\n    (onColResize)=\"colResize($event)\"\n    [reorderableColumns]=\"true\"\n    (onColReorder)=\"colReorder($event)\"\n    (onEditComplete)=\"handleEditComplete($event)\"\n    (onEditInit)=\"handleEditInit($event)\"\n    (onEditCancel)=\"handleEditCancel($event)\"\n    (onRowSelect)=\"onRowSelected($event.data)\"\n    (onRowUnselect)=\"onRowUnselected($event.data)\"\n    [(selection)]=\"selectedRows\"\n    (selectionChange)=\"onSelectionChange($event)\"\n    [rowGroupMode]=\"groupByField ? 'subheader' : undefined\"\n    scrollDirection=\"both\"\n    responsiveLayout=\"scroll\"\n  >\n    <ng-template pTemplate=\"header\">\n      <tr>\n        <!-- TODO: enable grid menu and add the edit/drag logic here -->\n        <th class=\"grid-cell-empty\" alignFrozen=\"left\" *ngIf=\"!hideRowMenu\">\n          <div class=\"separator\">\n            <button\n              (click)=\"toggleAll()\"\n              *ngIf=\"groupByField\"\n              type=\"button\"\n              pButton\n              pRipple\n              class=\"p-button-text p-button-rounded p-button-plain mr-2\"\n              [icon]=\"allRowsExpanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"\n            ></button>\n          </div>\n        </th>\n        <th class=\"selection-cell\" *ngIf=\"enableSelection && ((groupByField ? processedData : pagedProcessedData)?.length ?? 0) > 0\" pFrozenColumn alignFrozen=\"left\">\n          <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n          <button mat-icon-button class=\"bulk-delete\" (click)=\"onBulkDelete()\" *ngIf=\"(selectedRows?.length ?? 0) > 0\">\n            <mat-icon>delete</mat-icon>\n          </button>\n        </th>\n        <th\n          *ngFor=\"let col of filteredColumns\"\n          [frozen]=\"col.pinned ?? false\"\n          [class.auto-width]=\"!col.width || col.width === 0\"\n          [style.flex]=\"(col.pinned ? '0 0 ' : '0 1 ') + (col.width ?? 200) + 'px'\"\n          [style.width.px]=\"col.width || 200\"\n          [style.min-width.px]=\"col.width || 200\"\n          [style.left]=\"col.pinned ? col.pinLocationInPx + 'px' : 'unset'\"\n          pReorderableColumn\n          pResizableColumn\n          pFrozenColumn\n          alignFrozen=\"left\"\n          class=\"grid-cell\"\n        >\n          <div [pSortableColumn]=\"col.name\" [pSortableColumnDisabled]=\"!col.sortable\" pFrozenColumn class=\"grid-cell-text\">\n            <div class=\"grid-cell-label\" [libTooltip]=\"col.label ?? col.name | translate\" *ngIf=\"col.controlType !== 'Image'\">\n              {{ col.label ?? col.name | translate }}\n            </div>\n            <div *ngIf=\"col.sortable\">\n              <ng-container\n                *ngTemplateOutlet=\"sortDirection; context: { state: this.sortField === col.name, directionUp: (this.parsedSortOrder ?? 0) > 0 && this.sortField === col.name }\"\n              ></ng-container>\n            </div>\n          </div>\n          <ng-container>\n            <i class=\"icon-pin grid-cell-action\" [hidden]=\"!col.pinned\" (click)=\"handleUnpinColumn(col, $event)\"></i>\n            <div class=\"p-menu-container\">\n              <button\n                pButton\n                type=\"button\"\n                icon=\"pi pi-ellipsis-v\"\n                class=\"p-button-rounded p-button-text p-button-plain grid-cell-action\"\n                (click)=\"gridmenu.toggle($event)\"\n                *ngIf=\"col.menuItems?.length\"\n              ></button>\n              <p-menu\n                [popup]=\"true\"\n                [model]=\"col.menuItems\"\n                appendTo=\"body\"\n                #gridmenu\n                styleClass=\"{{ (totalNumberOfPinnedColumns >= maxPinnedColumns ? 'grid-menu-action--restricted' : '') + ' row-menu-items' }}\"\n              ></p-menu>\n            </div>\n          </ng-container>\n          <div class=\"separator\"></div>\n        </th>\n        <th class=\"grid-cell-settings grid-cell-settings-flex\" pFrozenColumn alignFrozen=\"right\" *ngIf=\"!hideSettings\" style=\"right: 0px; position: sticky\">\n          <div class=\"column-management-button\" [ngClass]=\"{ 'column-management-button--focused': columnManagementModalOpen }\" (click)=\"openManagementModal()\">\n            <svg class=\"column-management-button--icon\" width=\"24\" height=\"24\" viewBox=\"0 0 13 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <defs>\n                <filter id=\"gear-shadow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n                  <feDropShadow dx=\"1\" dy=\"1\" stdDeviation=\"2\" flood-color=\"rgba(0, 0, 0, 1)\" flood-opacity=\"1\" />\n                </filter>\n              </defs>\n              <path\n                d=\"M6.35452 0C6.85217 0.00550753 7.34785 0.0607131 7.83357 0.164731C8.04564 0.210139 8.20423 0.37987 8.2283 0.587183L8.34369 1.58118C8.3959 2.03756 8.7972 2.38324 9.27566 2.38372C9.40421 2.38391 9.53147 2.3582 9.65026 2.30771L10.5999 1.90717C10.7974 1.82386 11.0281 1.86928 11.1756 2.02048C11.8619 2.72424 12.373 3.56827 12.6704 4.48908C12.7345 4.68764 12.6608 4.90341 12.4864 5.02676L11.6447 5.6225C11.4046 5.79189 11.2628 6.06089 11.2628 6.34701C11.2628 6.63306 11.4046 6.90205 11.6453 7.07184L12.4877 7.66777C12.662 7.79107 12.736 8.00688 12.6717 8.2055C12.3744 9.12616 11.8636 9.97013 11.1778 10.674C11.0305 10.8252 10.7999 10.8707 10.6024 10.7876L9.6489 10.3865C9.37614 10.2719 9.06284 10.2887 8.80507 10.4318C8.54729 10.5748 8.37569 10.827 8.34295 11.1112L8.2283 12.1051C8.2047 12.31 8.04951 12.4787 7.84062 12.5264C6.85854 12.7507 5.83538 12.7507 4.85336 12.5264C4.64445 12.4787 4.48928 12.31 4.46564 12.1051L4.35118 11.1127C4.31756 10.8291 4.14574 10.5776 3.88816 10.435C3.63057 10.2924 3.31781 10.2757 3.04593 10.3897L2.09225 10.7909C1.89471 10.874 1.66406 10.8284 1.51677 10.6771C0.83053 9.97247 0.319708 9.12746 0.0227455 8.20583C-0.0412098 8.00734 0.0326917 7.79166 0.206923 7.66842L1.0499 7.0721C1.29 6.90271 1.43181 6.63371 1.43181 6.34766C1.43181 6.06154 1.29 5.79254 1.04958 5.62295L0.20714 5.02764C0.0326443 4.90434 -0.0413251 4.68842 0.0228608 4.48973C0.320331 3.56892 0.831425 2.72489 1.51768 2.02113C1.66512 1.86993 1.89587 1.82451 2.09338 1.90782L3.04282 2.30829C3.31602 2.42342 3.63009 2.40603 3.88906 2.26075C4.14692 2.11714 4.31859 1.86463 4.35173 1.58041L4.46704 0.587183C4.49112 0.379766 4.64984 0.209976 4.86201 0.164666C5.34831 0.0608172 5.84453 0.00563122 6.35452 0ZM6.35466 0.976447C6.04685 0.979924 5.73985 1.00544 5.43631 1.05269L5.36241 1.68883C5.29339 2.28092 4.93607 2.80651 4.40071 3.10468C3.86209 3.40684 3.20537 3.4432 2.63397 3.20242L2.02493 2.94553C1.63716 3.39744 1.32852 3.90693 1.11115 4.45399L1.65205 4.8362C2.15296 5.18958 2.4488 5.75081 2.4488 6.34766C2.4488 6.94444 2.15296 7.50567 1.65258 7.85865L1.11083 8.24189C1.32802 8.78991 1.6367 9.30037 2.02474 9.75315L2.63841 9.49502C3.20663 9.25682 3.85888 9.29165 4.39604 9.58896C4.93321 9.88628 5.29156 10.4107 5.3618 11.0037L5.4357 11.6443C6.03885 11.7428 6.65508 11.7428 7.25822 11.6443L7.33212 11.0038C7.40046 10.411 7.75838 9.88471 8.29616 9.58629C8.83402 9.2878 9.48754 9.25278 10.0568 9.49203L10.67 9.74996C11.0577 9.2979 11.3663 8.78829 11.5836 8.24111L11.0426 7.85839C10.5417 7.50502 10.2458 6.94378 10.2458 6.34701C10.2458 5.75016 10.5417 5.18893 11.042 4.836L11.5822 4.45361C11.3648 3.90645 11.0561 3.39686 10.6683 2.94487L10.0605 3.20125C9.81284 3.30648 9.5449 3.36063 9.27431 3.36023C8.27786 3.35923 7.44162 2.63889 7.33287 1.6886L7.25897 1.05248C6.95692 1.00529 6.65318 0.979846 6.35466 0.976447ZM6.34605 3.90602C7.75024 3.90602 8.88853 4.99901 8.88853 6.34733C8.88853 7.69557 7.75024 8.78861 6.34605 8.78861C4.9419 8.78861 3.80359 7.69557 3.80359 6.34733C3.80359 4.99901 4.9419 3.90602 6.34605 3.90602ZM6.34605 4.88253C5.50357 4.88253 4.82058 5.53832 4.82058 6.34733C4.82058 7.15627 5.50357 7.8121 6.34605 7.8121C7.18859 7.8121 7.87154 7.15627 7.87154 6.34733C7.87154 5.53832 7.18859 4.88253 6.34605 4.88253Z\"\n                fill=\"white\"\n                filter=\"url(#gear-shadow)\"\n              />\n            </svg>\n          </div>\n        </th>\n      </tr>\n    </ng-template>\n    <ng-template *ngIf=\"groupByField\" pTemplate=\"groupheader\" let-rowData let-expanded=\"expanded\">\n      <tr class=\"grid-group-header-row\">\n        <td\n          class=\"grid-group-header-cell\"\n          [attr.colspan]=\"\n            (hideRowMenu ? 0 : 1) +\n            (enableSelection && ((groupByField ? processedData : pagedProcessedData)?.length ?? 0) > 0 ? 1 : 0) +\n            filteredColumns.length +\n            (hideSettings ? 0 : 1)\n          \"\n          pFrozenColumn\n          alignFrozen=\"left\"\n        >\n          <button\n            id=\"expandBtn\"\n            [ngClass]=\"{ expanded: expanded }\"\n            type=\"button\"\n            pButton\n            pRipple\n            [pRowToggler]=\"rowData\"\n            class=\"p-button-text p-button-rounded p-button-plain mr-2\"\n            [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"\n          ></button>\n          <span>\n            {{ groupByField.label + ': ' + (rowData?.displayValues?.[groupByField.name] || rowData?.__groupValue || 'None') }}\n          </span>\n        </td>\n      </tr>\n    </ng-template>\n    <ng-template pTemplate=\"body\" let-rowData let-index>\n      <tr\n        class=\"p-selectable-row\"\n        [pSelectableRow]=\"rowData\"\n        [ngClass]=\"{\n          'not-deletable': !rowData.hasDeletePermissions,\n        }\"\n      >\n        <td class=\"grid-row-menu-button\" (click)=\"!!rowData?.rowMenuItems?.length && projectmenu.toggle($event)\" alignFrozen=\"left\" *ngIf=\"!hideRowMenu\">\n          <button pButton type=\"button\" [disabled]=\"!rowData?.rowMenuItems?.length\" class=\"p-button-rounded p-button-text p-button-plain\">\n            <i class=\"pi pi-ellipsis-v\"></i>\n          </button>\n          <p-menu styleClass=\"row-menu-items\" [popup]=\"true\" [model]=\"rowData.rowMenuItems\" appendTo=\"body\" #projectmenu></p-menu>\n        </td>\n        <td pFrozenColumn class=\"selection-cell\" *ngIf=\"enableSelection && ((groupByField ? processedData : pagedProcessedData)?.length ?? 0) > 0\" alignFrozen=\"left\">\n          <p-tableCheckbox [value]=\"rowData\" [index]=\"index\" [disabled]=\"!rowData.hasDeletePermissions\"></p-tableCheckbox>\n        </td>\n        <td\n          *ngFor=\"let col of filteredColumns; let i = index\"\n          class=\"grid-cell-body\"\n          [class.auto-width]=\"!col.width || col.width === 0\"\n          [style.flex]=\"(col.pinned ? '0 0 ' : '0 1 ') + (col.width ?? 200) + 'px'\"\n          [style.width]=\"(col.width ?? 200) + 'px'\"\n          [style.left]=\"col.pinned ? col.pinLocationInPx + 'px' : 'unset'\"\n          [frozen]=\"col?.pinned ?? false\"\n          [pFocusCellSelector]=\"'input, [role=combobox]'\"\n          [pEditableColumn]=\"{ column: col, row: rowData }\"\n          [pEditableColumnField]=\"col.name\"\n          [pEditableColumnRowIndex]=\"i\"\n          [pEditableColumnDisabled]=\"!col.editable || !rowData?.hasEditPermissions\"\n          pFrozenColumn\n          alignFrozen=\"left\"\n          [ngClass]=\"{\n            percent: col._controlType === controlTypes.Percent,\n            'not-editable': !col?.editable || !rowData?.hasEditPermissions,\n            editable: col?.editable && rowData?.hasEditPermissions,\n            hoverable: col._controlType !== controlTypes.ActionButtons,\n            'action-buttons': col._controlType === controlTypes.ActionButtons,\n            'image-cell': col._controlType === controlTypes.Image,\n          }\"\n          (click)=\"emitClickCellEvent(rowData, col.name, col.controlType || '')\"\n        >\n          <p-cellEditor [ngClass]=\"{ hoverable: col._controlType !== controlTypes.ActionButtons, avatar: col._controlType === controlTypes.Image }\">\n            <ng-template pTemplate=\"input\" [ngSwitch]=\"col.controlType\">\n              <lib-form-field *ngSwitchCase=\"'SingleSelect'\" [formFieldControl]=\"editFormControl\" [type]=\"FormFieldType.select\" [options]=\"editSelectOptions\"></lib-form-field>\n\n              <lib-form-field\n                *ngSwitchCase=\"'MultiSelect'\"\n                [formFieldControl]=\"editFormControl\"\n                [type]=\"FormFieldType.multiselectdropdown\"\n                [options]=\"editSelectOptions\"\n              ></lib-form-field>\n\n              <lib-form-field *ngSwitchCase=\"'Number'\" [formFieldControl]=\"editFormControl\" [type]=\"FormFieldType.number\"> </lib-form-field>\n\n              <lib-form-field *ngSwitchCase=\"'Percent'\" [formFieldControl]=\"editFormControl\" [type]=\"FormFieldType.percentage\"> </lib-form-field>\n\n              <lib-typeahead-field *ngSwitchCase=\"'AutoComplete'\" [entityFunctions]=\"rowData.entity\"></lib-typeahead-field>\n              <lib-typeahead-field *ngSwitchCase=\"'AutoCompleteMulti'\" [entityFunctions]=\"rowData.entity\" [isMultiselectMode]=\"true\"></lib-typeahead-field>\n              <lib-typeahead-field *ngSwitchCase=\"'MultiField'\" [entityFunctions]=\"rowData.entity\" [isMultiselectMode]=\"true\"></lib-typeahead-field>\n\n              <lib-form-field\n                *ngSwitchCase=\"'Text'\"\n                [formFieldControl]=\"editFormControl\"\n                [type]=\"FormFieldType.text\"\n                [submitted]=\"true\"\n                [errorInlineMode]=\"true\"\n                [required]=\"col?.requiredForEdit ?? false\"\n                [label]=\"col.label ?? col.name\"\n              ></lib-form-field>\n\n              <lib-form-field *ngSwitchCase=\"'Date'\" [formFieldControl]=\"editFormControl\" [type]=\"FormFieldType.date\"> </lib-form-field>\n\n              <lib-form-field *ngSwitchCase=\"'Currency'\" [formFieldControl]=\"editFormControl\" [type]=\"FormFieldType.currency\" [hideCents]=\"true\"> </lib-form-field>\n\n              <lib-form-field *ngSwitchCase=\"'Boolean'\" [formFieldControl]=\"editFormControl\" [type]=\"FormFieldType.select\" [options]=\"editSelectOptions\"> </lib-form-field>\n            </ng-template>\n            <ng-template pTemplate=\"output\" [ngSwitch]=\"col.controlType\">\n              <div *ngSwitchCase=\"'Image'\">\n                @if (rowData?.displayValues[col.name]) {\n                  <img class=\"avatar\" [src]=\"rowData?.displayValues[col.name]\" [alt]=\"rowData?.displayValues[col.name] || 'Image'\" />\n                } @else {\n                  <lib-avatar [width]=\"'20px'\"></lib-avatar>\n                }\n              </div>\n              <span *ngSwitchCase=\"'SingleSelect'\" [libTooltip]=\"rowData?.displayValues[col.name]?.length > 25 ? rowData?.displayValues[col.name] : ''\">{{\n                rowData?.displayValues[col.name] ?? ''\n              }}</span>\n              <span *ngSwitchCase=\"'MultiSelect'\" [libTooltip]=\"rowData?.displayValues[col.name]?.length > 25 ? rowData?.displayValues[col.name] : ''\">{{\n                rowData?.displayValues[col.name] ?? ''\n              }}</span>\n              <span *ngSwitchCase=\"'AutoComplete'\" [libTooltip]=\"rowData?.displayValues[col.name]?.length > 25 ? rowData?.displayValues[col.name] : ''\">{{\n                rowData?.displayValues[col.name] ?? ''\n              }}</span>\n              <span *ngSwitchCase=\"'AutoCompleteMulti'\" [libTooltip]=\"rowData?.displayValues[col.name]?.length > 25 ? rowData?.displayValues[col.name] : ''\">\n                <ng-container *ngIf=\"isArray(rowData?.data?.[col.name]); else notAnArray\">\n                  <ng-container *ngFor=\"let item of rowData?.data?.[col.name]; last as last\">\n                    <a *ngIf=\"item?.Url\" [href]=\"item.Url\" target=\"_blank\">{{ item.Value }}</a>\n                    <span *ngIf=\"!item?.Url\">{{ item.Value }}</span>\n                    <ng-container *ngIf=\"!last\">, </ng-container>\n                  </ng-container>\n                </ng-container>\n                <ng-template #notAnArray>{{ rowData?.displayValues[col.name] ?? '' }}</ng-template>\n              </span>\n              <span *ngSwitchCase=\"'MultiField'\" [libTooltip]=\"rowData?.displayValues[col.name]?.length > 25 ? rowData?.displayValues[col.name] : ''\">\n                <ng-container *ngIf=\"isArray(rowData?.data?.[col.name]); else notAnArray\">\n                  <ng-container *ngFor=\"let item of rowData?.data?.[col.name]; last as last\">\n                    <a *ngIf=\"item?.Url\" [href]=\"item.Url\" target=\"_blank\">{{ item.Value }}</a>\n                    <span *ngIf=\"!item?.Url\">{{ item.Value }}</span>\n                    <ng-container *ngIf=\"!last\">, </ng-container>\n                  </ng-container>\n                </ng-container>\n                <ng-template #notAnArray>{{ rowData?.displayValues[col.name] ?? '' }}</ng-template>\n              </span>\n              <span\n                *ngSwitchCase=\"'Number'\"\n                [libTextHighlight]=\"rowData?.displayValues[col.name]\"\n                [searchText]=\"searchString\"\n                [libTooltip]=\"rowData?.displayValues[col.name]?.length > 25 ? rowData?.displayValues[col.name] : ''\"\n                >{{ rowData?.displayValues[col.name] }}</span\n              >\n              <span\n                *ngSwitchCase=\"'Text'\"\n                [libTooltip]=\"rowData?.displayValues[col.name]?.length > 25 ? rowData?.displayValues[col.name] : ''\"\n                [libTextHighlight]=\"rowData?.displayValues[col.name]\"\n                [searchText]=\"searchString\"\n                >{{ rowData?.displayValues[col.name] || '' }}</span\n              >\n              <span\n                *ngSwitchCase=\"'Html'\"\n                [libTooltip]=\"rowData?.displayValues[col.name]?.length > 25 ? rowData?.displayValues[col.name] : ''\"\n                [innerHTML]=\"rowData?.displayValues[col.name]\"\n                >{{ rowData?.displayValues[col.name] }}</span\n              >\n              <span *ngSwitchCase=\"'Percent'\" [libTextHighlight]=\"rowData?.displayValues[col.name]\" [searchText]=\"searchString\">{{ rowData?.displayValues[col.name] }}</span>\n              <span *ngSwitchCase=\"'Date'\" [libTextHighlight]=\"rowData?.displayValues[col.name]\" [searchText]=\"searchString\">{{ rowData?.displayValues[col.name] || '' }}</span>\n              <span *ngSwitchCase=\"'Currency'\" [libTextHighlight]=\"rowData?.displayValues[col.name]\" [searchText]=\"searchString\">{{ rowData?.displayValues[col.name] }}</span>\n              <span *ngSwitchCase=\"'Boolean'\">\n                <i *ngIf=\"rowData?.data[col.name] === true\" class=\"pi pi-check\"></i>\n                <i *ngIf=\"rowData?.data[col.name] === false\" class=\"pi pi-times\"></i>\n              </span>\n              <span *ngSwitchCase=\"'ActionButtons'\">\n                <div class=\"grid-container__buttons\">\n                  <ng-container *ngFor=\"let btn of actionButtons\">\n                    <button (click)=\"emitActionButton(btn, rowData)\" type=\"button\" class=\"action-button\">\n                      {{ btn | translate }}\n                    </button>\n                  </ng-container>\n                </div>\n              </span>\n            </ng-template>\n          </p-cellEditor>\n        </td>\n        <td class=\"grid-cell-settings\"></td>\n      </tr>\n    </ng-template>\n    <ng-template pTemplate=\"emptymessage\">\n      <tr>\n        <td class=\"grid-group-no-records\">{{ 'GRID.NO_RECORDS' | translate }}</td>\n      </tr>\n    </ng-template>\n  </p-table>\n</div>\n<div #paginatorContainer class=\"lib-paginator paginator-container\" *ngIf=\"totalRecords > 0\" [ngClass]=\"{ 'paginator-container--disabled': isEditInProgress }\">\n  <p-paginator\n    #paginator\n    [first]=\"first\"\n    [rows]=\"rowsPerPage\"\n    [totalRecords]=\"totalRecords\"\n    [rowsPerPageOptions]=\"rowsPerPageOptions\"\n    [showJumpToPageInput]=\"true\"\n    [showCurrentPageReport]=\"true\"\n    currentPageReportTemplate=\"{first} to {last} of {totalRecords}\"\n    (onPageChange)=\"paginate($event)\"\n  >\n  </p-paginator>\n</div>\n\n<!-- SVG ICONS -->\n\n<ng-template #sortDirection let-state=\"state\" let-directionUp=\"directionUp\">\n  <svg [ngStyle]=\"{ transform: directionUp ? '' : 'rotate(180deg)' }\" width=\"9\" height=\"100%\" viewBox=\"0 0 5 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <rect x=\"1.95166\" y=\"1.38574\" width=\"0.769286\" height=\"4.61571\" [attr.fill]=\"state ? '#EF4869' : '#fff'\" />\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M2.33611 0.616211L4.4996 2.34701L4.01904 2.94772L2.33611 1.60138L0.653176 2.94772L0.172607 2.34701L2.33611 0.616211Z\"\n      [attr.fill]=\"state ? '#EF4869' : '#fff'\"\n    />\n  </svg>\n</ng-template>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule, CurrencyPipe } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MAT_SELECT_CONFIG } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { MenuModule } from 'primeng/menu';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { TableModule } from 'primeng/table';\nimport { TextHighlightDirective } from '../../directives/text-highlight/text-highlight.directive';\nimport { PipeModule } from '../../pipes/pipe.module';\nimport { AvatarComponent } from '../../shared/avatar.compoent';\nimport { ButtonsModule } from '../buttons/buttons.module';\nimport { ColumnManagementModalModule } from '../column-management-modal/column-management-modal.module';\nimport { DashedCheckboxModule } from '../dashed-checkbox/dashed-checkbox.module';\nimport { FormFieldModule } from '../form-field/form-field.module';\nimport { GridToolbarModule } from '../grid-toolbar/grid-toolbar.module';\nimport { SearchBarModule } from '../search-bar/search-bar.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { TypeaheadFieldModule } from '../typeahead-field/typeahead-field.module';\nimport { GridComponent } from './grid.component';\nimport { GridService } from './grid.service';\n\n@NgModule({\n  declarations: [GridComponent],\n  exports: [GridComponent],\n  imports: [\n    ButtonsModule,\n    CommonModule,\n    HttpClientModule,\n    ColumnManagementModalModule,\n    DragDropModule,\n    FormFieldModule,\n    FormsModule,\n    MatDialogModule,\n    PaginatorModule,\n    PipeModule,\n    TableModule,\n    ReactiveFormsModule,\n    SearchBarModule,\n    TooltipModule,\n    TypeaheadFieldModule,\n    TranslateModule,\n    MatButtonModule,\n    ButtonModule,\n    MatIconModule,\n    ButtonsModule,\n    DashedCheckboxModule,\n    MatMenuModule,\n    MenuModule,\n    GridToolbarModule,\n    AvatarComponent,\n    TextHighlightDirective,\n  ],\n  providers: [\n    {\n      provide: MAT_SELECT_CONFIG,\n      useValue: { overlayPanelClass: 'grid-overlay' },\n    },\n    CurrencyPipe,\n    GridService,\n  ],\n})\nexport class GridModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { IonicModule } from '@ionic/angular';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ImageCropperComponent } from 'ngx-image-cropper';\n\nimport { ButtonsModule } from '../buttons/buttons.module';\nimport { LibModalModule } from '../modal/modal.module';\nimport { ImageCropperService } from './image-cropper.service';\nimport { ImageTmpltComponent } from './image-tmplt/image-tmplt.component';\nimport { ImageUploadModalComponent } from './image-upload-modal.component';\n\n@NgModule({\n  declarations: [ImageUploadModalComponent, ImageTmpltComponent],\n  imports: [CommonModule, IonicModule, ImageCropperComponent, MatButtonModule, MatIconModule, TranslateModule, LibModalModule, ButtonsModule],\n  exports: [ImageUploadModalComponent],\n  providers: [ImageCropperService],\n})\nexport class SharedImageCropperModule {}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-image-deck',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './image-deck.component.html',\n  styleUrl: './image-deck.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageDeckComponent implements AfterViewInit, OnChanges, OnDestroy {\n  @Input() images: string[] = [];\n  @Input() activeIndex: number = 0;\n  @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n  public fadeIn: boolean = true;\n  private middleX: number = 0;\n  private isTransitioning: boolean = false;\n  private transitionTimeout: ReturnType<typeof setTimeout> | null = null;\n  private resizeObserver: ResizeObserver | null = null;\n  private internalActiveIndex: number = 0;\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    private el: ElementRef,\n  ) {}\n\n  ngAfterViewInit(): void {\n    // Ensure internalActiveIndex is initialized (in case ngOnChanges didn't run)\n    if (this.internalActiveIndex === 0 && this.activeIndex !== 0) {\n      this.internalActiveIndex = this.activeIndex >= 0 && this.activeIndex < this.images.length ? this.activeIndex : 0;\n    }\n    this.updateMiddleX();\n    // Update middleX when the component is resized\n    if (typeof ResizeObserver !== 'undefined') {\n      this.resizeObserver = new ResizeObserver(() => {\n        this.updateMiddleX();\n      });\n      this.resizeObserver.observe(this.el.nativeElement);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['activeIndex']) {\n      const newIndex = changes['activeIndex'].currentValue;\n      if (changes['activeIndex'].firstChange) {\n        // Initialize on first change\n        this.internalActiveIndex = newIndex >= 0 && newIndex < this.images.length ? newIndex : 0;\n      } else if (newIndex >= 0 && newIndex < this.images.length && newIndex !== this.internalActiveIndex && !this.isTransitioning) {\n        // Update if changed externally and not transitioning\n        this.setActiveImage(newIndex);\n      }\n    }\n    if (changes['images']) {\n      // Adjust index if images array changed and current index is out of bounds\n      if (this.internalActiveIndex >= this.images.length) {\n        this.internalActiveIndex = Math.max(0, this.images.length - 1);\n        this.activeIndex = this.internalActiveIndex;\n        this.activeIndexChange.emit(this.internalActiveIndex);\n        this.cdr.detectChanges();\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.transitionTimeout) {\n      clearTimeout(this.transitionTimeout);\n    }\n    if (this.resizeObserver) {\n      this.resizeObserver.disconnect();\n    }\n  }\n\n  private updateMiddleX(): void {\n    const rect = this.el.nativeElement.getBoundingClientRect();\n    this.middleX = rect.left + rect.width / 2;\n  }\n\n  public handleSwitchImage(event: MouseEvent): void {\n    if (this.isTransitioning || this.images.length === 0) {\n      return;\n    }\n\n    // Update middleX in case the component position changed\n    this.updateMiddleX();\n\n    const currentIndex = this.internalActiveIndex;\n    const newIndex = event.clientX < this.middleX ? currentIndex - 1 : currentIndex + 1;\n\n    if (newIndex >= 0 && newIndex < this.images.length && newIndex !== currentIndex) {\n      this.setActiveImage(newIndex);\n    }\n  }\n\n  public setActiveImage(index: number): void {\n    // Prevent switching if already transitioning or invalid index\n    if (this.isTransitioning || index < 0 || index >= this.images.length || index === this.internalActiveIndex) {\n      return;\n    }\n\n    // Clear any existing timeout\n    if (this.transitionTimeout) {\n      clearTimeout(this.transitionTimeout);\n    }\n\n    this.isTransitioning = true;\n    this.fadeIn = false;\n    this.cdr.detectChanges();\n\n    this.transitionTimeout = setTimeout(() => {\n      this.internalActiveIndex = index;\n      this.activeIndex = index;\n      this.activeIndexChange.emit(this.activeIndex);\n      this.fadeIn = true;\n      this.isTransitioning = false;\n      this.cdr.detectChanges();\n      this.transitionTimeout = null;\n    }, 500);\n  }\n\n  /**\n   * Gets the current active image index.\n   * @returns The index of the currently active image\n   */\n  public get currentActiveIndex(): number {\n    return this.internalActiveIndex;\n  }\n}\n","<div class=\"images-deck\">\n  <div class=\"inner-wrapper\">\n    <div class=\"top-blur\"></div>\n    <div class=\"pic-switch-bar\">\n      @for (image of images; track $index) {\n        <div [class.active]=\"currentActiveIndex === $index\" (click)=\"setActiveImage($index)\"></div>\n      }\n    </div>\n    <ng-content></ng-content>\n    <img (click)=\"handleSwitchImage($event)\" [src]=\"images[currentActiveIndex]\" [class.fade-in]=\"fadeIn\" alt=\"image\" />\n  </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lib-info-card-placeholder',\r\n  templateUrl: './info-card-placeholder.component.html',\r\n  styleUrls: ['./info-card-placeholder.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class InfoCardPlaceholderComponent {\r\n  @Input() avatar = false;\r\n  @Input() count = 2;\r\n}\r\n","<div class=\"placeholders\">\r\n  <div *ngFor=\"let placeholder of [].constructor(count)\" class=\"placeholders__placeholder\">\r\n    <div *ngIf=\"avatar\" class=\"background-masker placeholders__avatar\"></div>\r\n    <div class=\"placeholder__lines\">\r\n      <div class=\"background-masker placeholders__header-line\"></div>\r\n      <div class=\"background-masker placeholders__detail-line\"></div>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { InfoCardPlaceholderComponent } from './info-card-placeholder.component';\r\n\r\n@NgModule({\r\n  declarations: [InfoCardPlaceholderComponent],\r\n  exports: [InfoCardPlaceholderComponent],\r\n  imports: [CommonModule],\r\n})\r\nexport class InfoCardPlaceholderModule {}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { addHours, format } from 'date-fns';\nimport type { Instance as FlatpickrInstance } from 'flatpickr/dist/types/instance';\n\n@Component({\n  selector: 'lib-duration-picker',\n  templateUrl: './duration-picker.component.html',\n  styleUrls: ['./duration-picker.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class DurationPickerComponent implements OnInit, OnChanges {\n  @Input() label = 'Duration';\n  /** Legacy: kept for backward compatibility but ignored in the new UI. Use maxDurationHours instead. */\n  @Input() maxDurationDays = 2;\n  /** Cap for the hours stepper. Default 16 hours. */\n  @Input() maxDurationHours = 16;\n  @Input() startDate: Date | null = null;\n  @Input() endDate: Date | null = null;\n  @Input() showTime = true;\n  @Input() disabled = false;\n  @Input() minuteIncrement = 15;\n  @Input() defaultStartHour = 9;\n\n  @Output() startDateChange = new EventEmitter<Date | null>();\n  @Output() endDateChange = new EventEmitter<Date | null>();\n  @Output() durationChange = new EventEmitter<{ start: Date | null; end: Date | null; days: number; hours: number }>();\n\n  selectedDate: Date | null = null;\n  durationHours = 4;\n  durationLabel = '';\n  validationMessage = '';\n  minDate: Date = new Date();\n\n  constructor(private readonly cd: ChangeDetectorRef) {}\n\n  ngOnInit(): void {\n    const now = new Date();\n    this.minDate = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n    this.syncFromInputs();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['startDate'] || changes['endDate']) {\n      this.syncFromInputs();\n    }\n  }\n\n  onDateChange(event: { selectedDates: Date[]; dateString: string; instance: FlatpickrInstance }): void {\n    const dates = event.selectedDates;\n    if (!dates || !dates.length) {\n      this.selectedDate = null;\n      this.startDate = null;\n      this.endDate = null;\n      this.startDateChange.emit(null);\n      this.endDateChange.emit(null);\n      this.durationLabel = '';\n      this.emitDuration();\n      this.cd.markForCheck();\n      return;\n    }\n\n    this.selectedDate = dates[0];\n    this.startDate = dates[0];\n    this.computeAndEmitEnd();\n  }\n\n  incrementHours(): void {\n    if (this.durationHours < this.maxDurationHours) {\n      this.durationHours++;\n      this.computeAndEmitEnd();\n    }\n  }\n\n  decrementHours(): void {\n    if (this.durationHours > 1) {\n      this.durationHours--;\n      this.computeAndEmitEnd();\n    }\n  }\n\n  private computeAndEmitEnd(): void {\n    if (!this.startDate) {\n      this.durationLabel = '';\n      this.cd.markForCheck();\n      return;\n    }\n    const end = addHours(this.startDate, this.durationHours);\n    this.endDate = end;\n    this.startDateChange.emit(this.startDate);\n    this.endDateChange.emit(end);\n    this.durationLabel = this.buildDurationLabel();\n    this.emitDuration();\n    this.cd.markForCheck();\n  }\n\n  private syncFromInputs(): void {\n    if (this.startDate) {\n      this.selectedDate = this.startDate;\n      if (this.endDate) {\n        const diffMs = this.endDate.getTime() - this.startDate.getTime();\n        const diffHours = Math.round(diffMs / (1000 * 60 * 60));\n        this.durationHours = Math.max(1, Math.min(this.maxDurationHours, diffHours || 4));\n      } else {\n        this.durationHours = 4;\n      }\n    } else {\n      this.selectedDate = null;\n    }\n    this.durationLabel = this.buildDurationLabel();\n  }\n\n  private buildDurationLabel(): string {\n    if (!this.startDate) return '';\n    const startStr = format(this.startDate, 'MMM d, yyyy h:mm a');\n    const end = this.endDate ?? addHours(this.startDate, this.durationHours);\n    const endTimeStr = format(end, 'h:mm a');\n    return `${startStr} – ${endTimeStr} (${this.durationHours}h)`;\n  }\n\n  private emitDuration(): void {\n    this.durationChange.emit({\n      start: this.startDate,\n      end: this.endDate,\n      days: 0,\n      hours: this.durationHours,\n    });\n  }\n}\n","<div class=\"lib-duration-picker\" [class.disabled]=\"disabled\">\n  <label class=\"duration-label-text\" *ngIf=\"label\">{{ label }}</label>\n\n  <!-- Date-time selector -->\n  <div class=\"duration-datetime-row\">\n    <div class=\"duration-datetime-wrap\">\n      <span class=\"duration-datetime-icon\">\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"16\"\n          height=\"16\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          stroke=\"currentColor\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        >\n          <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n          <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n          <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n          <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n        </svg>\n      </span>\n      <input\n        type=\"text\"\n        class=\"duration-datetime-input\"\n        mwlFlatpickr\n        [(ngModel)]=\"selectedDate\"\n        [mode]=\"'single'\"\n        [enableTime]=\"true\"\n        [minuteIncrement]=\"minuteIncrement\"\n        [minDate]=\"minDate\"\n        [altInput]=\"true\"\n        [altFormat]=\"'M j, Y h:iK'\"\n        [time24hr]=\"false\"\n        [defaultHour]=\"defaultStartHour\"\n        [convertModelValue]=\"true\"\n        [disabled]=\"disabled\"\n        placeholder=\"Select date &amp; time\"\n        (flatpickrChange)=\"onDateChange($event)\"\n      />\n    </div>\n  </div>\n\n  <!-- Hours duration selector -->\n  <div class=\"duration-hours-row\">\n    <span class=\"duration-hours-label\">Duration</span>\n    <div class=\"duration-hours-stepper\">\n      <button type=\"button\" class=\"duration-step-btn\" [disabled]=\"disabled || durationHours <= 1\" (click)=\"decrementHours()\">\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\">\n          <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n        </svg>\n      </button>\n      <span class=\"duration-hours-value\">{{ durationHours }}h</span>\n      <button type=\"button\" class=\"duration-step-btn\" [disabled]=\"disabled || durationHours >= maxDurationHours\" (click)=\"incrementHours()\">\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\">\n          <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n          <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n        </svg>\n      </button>\n    </div>\n    <span class=\"duration-max-hint\">Max {{ maxDurationHours }}h</span>\n  </div>\n\n  <!-- Summary label -->\n  <div class=\"duration-summary-row\" *ngIf=\"durationLabel\">\n    <span class=\"duration-summary-text\">{{ durationLabel }}</span>\n  </div>\n\n  <div class=\"duration-validation\" *ngIf=\"validationMessage\">\n    <p class=\"validation-text\">{{ validationMessage }}</p>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FlatpickrDirective, provideFlatpickrDefaults } from 'angularx-flatpickr';\nimport { DurationPickerComponent } from './duration-picker.component';\n\n@NgModule({\n  declarations: [DurationPickerComponent],\n  imports: [CommonModule, FormsModule, FlatpickrDirective],\n  exports: [DurationPickerComponent],\n  providers: [provideFlatpickrDefaults({ altInput: true, enableTime: true })],\n})\nexport class DurationPickerModule {}\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'lib-scan-pill',\n  templateUrl: './scan-pill.component.html',\n  styleUrls: ['./scan-pill.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ScanPillComponent implements OnChanges {\n  @ViewChild('promptInput') promptInput!: ElementRef<HTMLInputElement>;\n\n  @Input() count = 5;\n  @Input() minCount = 1;\n  @Input() maxCount = 20;\n  @Input() placeholder = 'Describe your ideal day';\n  @Input() loading = false;\n  @Input() disabled = false;\n  @Input() countLabel = 'activities';\n  @Input() iconType: 'gem' | 'activity' = 'activity';\n  /**\n   * When the parent selects a city from the autocomplete dropdown it sets this input\n   * so the pill's text field reflects the selected label without triggering another\n   * promptChange emission (which would re-run the search).\n   */\n  @Input() value: string | null = null;\n  /**\n   * When true, the execute (lightning bolt) button is lit and enabled.\n   * Must only become true after the user selects a geocoded option from the dropdown\n   * — not just when text is typed. Defaults to false so the button stays gray/disabled\n   * until a valid geocoded city selection is confirmed.\n   */\n  @Input() citySelected = false;\n  /**\n   * Shows an inline loading spinner inside the prompt bar while the geocode\n   * autocomplete results are being fetched. Appears to the left of the lightning bolt.\n   */\n  @Input() geocodingLoading = false;\n\n  @Output() countChange = new EventEmitter<number>();\n  @Output() execute = new EventEmitter<string>();\n  /** Emits on every keystroke in the prompt input so parents can drive autocomplete dropdowns. */\n  @Output() promptChange = new EventEmitter<string>();\n  /** Forwards keydown events from the prompt input so parents can handle dropdown navigation. */\n  @Output() promptKeydown = new EventEmitter<KeyboardEvent>();\n  /** Emits when the prompt input loses focus so parents can hide dropdowns with a delay. */\n  @Output() promptBlur = new EventEmitter<void>();\n\n  promptText = '';\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['value'] && changes['value'].currentValue !== null && changes['value'].currentValue !== undefined) {\n      this.promptText = changes['value'].currentValue as string;\n    }\n  }\n\n  incrementCount(): void {\n    if (this.count < this.maxCount) {\n      this.count++;\n      this.countChange.emit(this.count);\n    }\n  }\n\n  decrementCount(): void {\n    if (this.count > this.minCount) {\n      this.count--;\n      this.countChange.emit(this.count);\n    }\n  }\n\n  clampCount(): void {\n    if (!this.count || this.count < this.minCount) this.count = this.minCount;\n    if (this.count > this.maxCount) this.count = this.maxCount;\n    this.count = Math.floor(this.count);\n    this.countChange.emit(this.count);\n  }\n\n  onCountInput(event: Event): void {\n    const val = parseInt((event.target as HTMLInputElement).value, 10);\n    if (!isNaN(val)) {\n      this.count = val;\n    }\n  }\n\n  focusPrompt(): void {\n    this.promptInput?.nativeElement?.focus();\n  }\n\n  get canExecute(): boolean {\n    return !this.loading && !this.disabled && this.citySelected;\n  }\n\n  onExecute(): void {\n    if (!this.canExecute) return;\n    this.execute.emit(this.promptText);\n  }\n\n  onPromptInput(): void {\n    this.promptChange.emit(this.promptText);\n  }\n\n  onKeydown(event: KeyboardEvent): void {\n    this.promptKeydown.emit(event);\n    if (event.key === 'Enter' && !event.defaultPrevented) {\n      event.preventDefault();\n      this.onExecute();\n    }\n  }\n\n  onPromptBlur(): void {\n    this.promptBlur.emit();\n  }\n}\n","<div class=\"lib-scan-pill\" [class.loading]=\"loading\" [class.disabled]=\"disabled\">\n  <div class=\"scan-pill-inner\">\n    <div class=\"count-section\">\n      <span class=\"count-icon\" *ngIf=\"iconType === 'gem'\">&#x1F48E;</span>\n      <div class=\"count-stepper\">\n        <button class=\"stepper-btn stepper-up\" type=\"button\" (click)=\"incrementCount()\" [disabled]=\"loading || disabled || count >= maxCount\" aria-label=\"Increase count\">\n          <svg width=\"8\" height=\"5\" viewBox=\"0 0 8 5\" fill=\"none\">\n            <path d=\"M1 4L4 1L7 4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n          </svg>\n        </button>\n        <input\n          type=\"number\"\n          class=\"count-input\"\n          [(ngModel)]=\"count\"\n          [min]=\"minCount\"\n          [max]=\"maxCount\"\n          (change)=\"clampCount()\"\n          (input)=\"onCountInput($event)\"\n          [disabled]=\"loading || disabled\"\n          [attr.aria-label]=\"'Number of ' + countLabel\"\n        />\n        <button class=\"stepper-btn stepper-down\" type=\"button\" (click)=\"decrementCount()\" [disabled]=\"loading || disabled || count <= minCount\" aria-label=\"Decrease count\">\n          <svg width=\"8\" height=\"5\" viewBox=\"0 0 8 5\" fill=\"none\">\n            <path d=\"M1 1L4 4L7 1\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n          </svg>\n        </button>\n      </div>\n      <span class=\"count-label\">{{ countLabel }}</span>\n    </div>\n\n    <div class=\"prompt-bar\" (click)=\"focusPrompt()\">\n      <input\n        #promptInput\n        type=\"text\"\n        class=\"prompt-input\"\n        [placeholder]=\"placeholder\"\n        [(ngModel)]=\"promptText\"\n        [disabled]=\"loading || disabled\"\n        (keydown)=\"onKeydown($event)\"\n        (input)=\"onPromptInput()\"\n        (blur)=\"onPromptBlur()\"\n        autocomplete=\"off\"\n      />\n      <span *ngIf=\"geocodingLoading\" class=\"geocoding-spinner\" aria-hidden=\"true\">\n        <svg class=\"geocoding-spin\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n          <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"rgba(255,255,255,0.3)\" stroke-width=\"1.5\" />\n          <path d=\"M6 1A5 5 0 0 1 11 6\" stroke=\"#fe3c72\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\n        </svg>\n      </span>\n    </div>\n\n    <button\n      type=\"button\"\n      class=\"execute-btn\"\n      [class.lit]=\"citySelected\"\n      [disabled]=\"!canExecute\"\n      [attr.aria-disabled]=\"!canExecute\"\n      (click)=\"onExecute()\"\n      [title]=\"citySelected ? 'Start scan' : 'Select a location from the dropdown first'\"\n      aria-label=\"Execute scan\"\n    >\n      <svg *ngIf=\"!loading\" width=\"12\" height=\"16\" viewBox=\"0 0 12 16\" fill=\"none\">\n        <path d=\"M7 1L1 9H6L5 15L11 7H6L7 1Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"currentColor\" fill-opacity=\"0.15\" />\n      </svg>\n      <span *ngIf=\"loading\" class=\"loading-dots\">...</span>\n    </button>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ScanPillComponent } from './scan-pill.component';\n\n@NgModule({\n  declarations: [ScanPillComponent],\n  imports: [CommonModule, FormsModule],\n  exports: [ScanPillComponent],\n})\nexport class ScanPillModule {}\n","export enum JsonEditorMode {\n  TREE = 'tree',\n  TEXT = 'text',\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { createJSONEditor } from 'vanilla-jsoneditor';\nimport { JsonEditorMode } from '../../enums/json-editor-mode.enum';\nimport { IJSONEditorInterface, IMenuItem, ITreeNode } from '../../interfaces/json-editor.interface';\nimport { EditorContent, JsonValue } from '../../types/json-editor.type';\n\n@Component({\n  selector: 'lib-json-editor',\n  templateUrl: './json-editor.component.html',\n  styleUrls: ['./json-editor.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class LibJsonEditorComponent implements AfterViewInit, OnChanges, OnDestroy {\n  @Input() public data: JsonValue | null = null;\n  @Input() public expandAll: boolean = false;\n  @Input() public mode: JsonEditorMode = JsonEditorMode.TREE;\n  @Input() public search: boolean = false;\n  @Input() public mainMenuBar: boolean = false;\n  @Input() public language: string = 'en';\n  @Output() public dataChange = new EventEmitter<JsonValue | null>();\n\n  @ViewChild('editorContainer', { static: true }) public editorContainer!: ElementRef;\n\n  private editor: IJSONEditorInterface | null = null;\n\n  public ngAfterViewInit(): void {\n    this.initializeEditor();\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (this.editor) {\n      if (changes['data']) {\n        this.updateEditorContent();\n      }\n\n      if (changes['mode'] || changes['mainMenuBar'] || changes['search'] || changes['expandAll'] || changes['language']) {\n        this.updateEditorProps();\n      }\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.destroyEditor();\n  }\n\n  public customizeMenu(items: IMenuItem[], node: ITreeNode): IMenuItem[] {\n    const unwantedOptions = ['Transform', 'Extract', 'Sort'];\n    const path = node.path.map(String);\n\n    const filteredItems = items.filter((item) => !unwantedOptions.includes(item.text));\n\n    if (path.length > 0) {\n      const hasRemove = filteredItems.some((item) => item.text === 'Remove');\n      if (!hasRemove) {\n        filteredItems.push({\n          text: 'Remove',\n          title: 'Remove',\n          className: 'jsoneditor-remove',\n          click: () => {\n            const content = this.editor?.get();\n            if (!content || !('json' in content)) return;\n\n            const jsonData = content.json;\n            let currentLevel = jsonData;\n\n            for (let i = 0; i < path.length - 1; i++) {\n              if (typeof currentLevel === 'object' && currentLevel !== null && !Array.isArray(currentLevel)) {\n                currentLevel = (currentLevel as Record<string, unknown>)[path[i]];\n              } else if (Array.isArray(currentLevel)) {\n                currentLevel = currentLevel[Number(path[i])];\n              } else {\n                return;\n              }\n            }\n\n            const lastKey = path[path.length - 1];\n            if (typeof currentLevel === 'object' && currentLevel !== null && !Array.isArray(currentLevel)) {\n              delete (currentLevel as Record<string, unknown>)[lastKey];\n            } else if (Array.isArray(currentLevel)) {\n              currentLevel.splice(Number(lastKey), 1);\n            }\n\n            this.editor?.updateProps({ content: { json: jsonData } });\n            this.dataChange.emit(jsonData as JsonValue);\n          },\n        });\n      }\n\n      const hasDuplicate = filteredItems.some((item) => item.text === 'Duplicate');\n      if (!hasDuplicate) {\n        filteredItems.push({\n          text: 'Duplicate',\n          title: 'Duplicate',\n          className: 'jsoneditor-duplicate',\n          click: () => {\n            const content = this.editor?.get();\n            if (!content || !('json' in content)) return;\n\n            const jsonData = content.json;\n            let currentLevel = jsonData;\n\n            for (let i = 0; i < path.length - 1; i++) {\n              if (typeof currentLevel === 'object' && currentLevel !== null && !Array.isArray(currentLevel)) {\n                currentLevel = (currentLevel as Record<string, unknown>)[path[i]];\n              } else if (Array.isArray(currentLevel)) {\n                currentLevel = currentLevel[Number(path[i])];\n              } else {\n                return;\n              }\n            }\n\n            const lastKey = path[path.length - 1];\n            let currentNodeValue: unknown;\n\n            if (typeof currentLevel === 'object' && currentLevel !== null && !Array.isArray(currentLevel)) {\n              currentNodeValue = (currentLevel as Record<string, unknown>)[lastKey];\n            } else if (Array.isArray(currentLevel)) {\n              currentNodeValue = currentLevel[Number(lastKey)];\n            } else {\n              return;\n            }\n\n            if (Array.isArray(currentLevel)) {\n              const index = Number(lastKey);\n              currentLevel.splice(index + 1, 0, JSON.parse(JSON.stringify(currentNodeValue)));\n            } else if (typeof currentLevel === 'object' && currentLevel !== null) {\n              const newKey = `${lastKey}_copy`;\n              (currentLevel as Record<string, unknown>)[newKey] = JSON.parse(JSON.stringify(currentNodeValue));\n            }\n\n            this.editor?.updateProps({ content: { json: jsonData } });\n            this.dataChange.emit(jsonData as JsonValue);\n          },\n        });\n      }\n    }\n\n    return filteredItems;\n  }\n\n  private initializeEditor(): void {\n    if (!this.editorContainer?.nativeElement) {\n      console.error('Editor container not found');\n      return;\n    }\n\n    try {\n      this.destroyEditor();\n\n      this.editor = createJSONEditor({\n        target: this.editorContainer.nativeElement,\n        props: {\n          mode: this.mode,\n          theme: 'dark',\n          class: 'jse-theme-dark',\n          mainMenuBar: this.mainMenuBar,\n          search: this.search,\n          onExpand: this.expandAll ? () => true : undefined,\n          languages:\n            this.language === 'en'\n              ? undefined\n              : {\n                  locale: this.language,\n                },\n          content: this.getContent(),\n          onChange: (updatedContent: EditorContent, previousContent: EditorContent) => {\n            if (updatedContent.json !== undefined) {\n              this.data = updatedContent.json as JsonValue;\n              this.dataChange.emit(this.data);\n            }\n          },\n        },\n      });\n\n      if (this.editor) {\n        this.editor.updateProps({ content: this.getContent() });\n      }\n    } catch (error) {\n      console.error('Error initializing JSON editor:', error);\n    }\n  }\n\n  private updateEditorContent(): void {\n    if (this.editor) {\n      this.editor.updateProps({ content: this.getContent() });\n    }\n  }\n\n  private updateEditorProps(): void {\n    if (this.editor) {\n      this.editor.updateProps({\n        mode: this.mode,\n        mainMenuBar: this.mainMenuBar,\n        onExpand: this.expandAll ? () => true : undefined,\n        language: this.language === 'en' ? undefined : this.language,\n      });\n    }\n  }\n\n  private getContent(): EditorContent {\n    if (this.mode === 'text') {\n      return { text: this.data !== null ? JSON.stringify(this.data, null, 2) : 'null' };\n    }\n    return { json: this.data };\n  }\n\n  private destroyEditor(): void {\n    if (this.editor) {\n      this.editor.destroy();\n      this.editor = null;\n    }\n  }\n}\n","<div #editorContainer class=\"json-editor-container\"></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LibJsonEditorComponent } from './json-editor.component';\n\n@NgModule({\n  declarations: [LibJsonEditorComponent],\n  imports: [CommonModule],\n  exports: [LibJsonEditorComponent],\n})\nexport class LibJsonEditorModule {}\n","export class ListItemModel {\n  title?: string;\n  label?: string;\n  labelIconUrl?: string;\n  labelIconName?: string;\n  value?: string;\n  actionName?: string;\n  cssClass?: string;\n  disabled?: boolean;\n  checked?: boolean;\n  command?: (event?: ListItemModel) => void;\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';\nimport { ListItemModel } from '../list-item.model';\n\n@Component({\n  selector: 'lib-list-toggle',\n  templateUrl: './list-toggle.component.html',\n  styleUrls: ['./list-toggle.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ListToggleComponent {\n  @Input() listItems: ListItemModel[] = [];\n  @Input() listTitle: string = '';\n  @Input() disableTranslation: boolean = false;\n  @Input() loading: boolean = false;\n  @ViewChild('libListItemToggleRef') libListItemToggle!: HTMLElement;\n\n  /**\n   * on list item clicked\n   * @param item\n   */\n  public onListItemClick(item: ListItemModel): void {\n    if (item.command && !this.loading) {\n      item.command(item);\n    }\n  }\n}\n","<div class=\"lib-list-container\" *ngIf=\"listItems && listItems.length > 0\">\n  <div class=\"lib-list-title\" *ngIf=\"listTitle\">{{ disableTranslation ? listTitle : (listTitle | translate) }}</div>\n  <div class=\"lib-toggle-list-item-container\" *ngFor=\"let item of listItems; let i = index\">\n    <div class=\"lib-list-item-content\">\n      <div class=\"lib-list-item-content-inner\" mat-ripple (click)=\"item.checked = !item.checked; onListItemClick(item)\">\n        <img [src]=\"item.labelIconUrl\" *ngIf=\"item?.labelIconUrl\" alt=\"list item icon\" />\n        <mat-icon *ngIf=\"item?.labelIconName\">{{ item.labelIconName }}</mat-icon>\n        <span class=\"lib-list-item-value\">{{ disableTranslation ? item?.label : (item?.label | translate) }}</span>\n      </div>\n    </div>\n    <lib-toggle #libListItemToggleRef [toggleState]=\"item.checked ?? false\" [disabled]=\"loading\" (toggleStateChange)=\"onListItemClick(item)\"> </lib-toggle>\n  </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ListItemModel } from './list-item.model';\n\n@Component({\n  selector: 'lib-list',\n  templateUrl: './list.component.html',\n  styleUrls: ['./list.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ListComponent {\n  @Input() listItems: ListItemModel[] = [];\n  @Input() hideMenuIcon: boolean = false;\n  @Input() listTitle: string = '';\n  @Input() disableTranslation: boolean = false;\n\n  /**\n   * on list item clicked\n   * @param item\n   */\n  public onListItemClick(item: ListItemModel): void {\n    if (item.command) {\n      item.command(item);\n    }\n  }\n}\n","<div class=\"lib-list-container\" *ngIf=\"listItems && listItems.length > 0\">\n  <div class=\"lib-list-title\" *ngIf=\"listTitle\">{{ disableTranslation ? listTitle : (listTitle | translate) }}</div>\n  <div class=\"lib-list-item-container\" [ngClass]=\"item.cssClass\" *ngFor=\"let item of listItems; let i = index\" mat-ripple (click)=\"onListItemClick(item)\">\n    <div class=\"lib-list-item-title\" *ngIf=\"item?.title\">{{ disableTranslation ? item.title : (item.title | translate) }}</div>\n    <div class=\"lib-list-item-content\">\n      <div class=\"lib-list-item-icon\" *ngIf=\"item?.labelIconUrl || item?.labelIconName\">\n        <img [src]=\"item.labelIconUrl\" *ngIf=\"item?.labelIconUrl\" alt=\"list item icon\" />\n        <mat-icon *ngIf=\"item?.labelIconName\">{{ item.labelIconName }}</mat-icon>\n      </div>\n      <span class=\"lib-list-item-value\">{{ disableTranslation ? item?.label : (item?.label | translate) }}</span>\n      <span class=\"spacer\"></span>\n      <span class=\"lib-list-item-action\" *ngIf=\"item?.actionName\">{{ disableTranslation ? item.actionName : (item.actionName | translate) }}</span>\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"7\" height=\"11\" viewBox=\"0 0 7 11\" fill=\"none\" class=\"lib-list-item-arrow-icon\" *ngIf=\"!hideMenuIcon\">\n        <path d=\"M0.950928 9.66406L5.24176 5.37323L0.950928 1.08241\" stroke=\"#F7416E\" stroke-width=\"1.60906\" stroke-linecap=\"round\" />\n      </svg>\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ListComponent } from './list.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRippleModule } from '@angular/material/core';\nimport { ListToggleComponent } from './list-toggle/list-toggle.component';\nimport { ToggleModule } from '../toggle/toggle.module';\n\n@NgModule({\n  declarations: [ListComponent, ListToggleComponent],\n  imports: [CommonModule, TranslateModule, MatIconModule, MatRippleModule, TranslateModule, ToggleModule],\n  exports: [ListComponent, ListToggleComponent],\n})\nexport class ListModule {}\n","export enum PlaceTypes {\n  Accounting = 'accounting',\n  Airport = 'airport',\n  AmusementPark = 'amusement_park',\n  Aquarium = 'aquarium',\n  ArtGallery = 'art_gallery',\n  ATM = 'atm',\n  Bakery = 'bakery',\n  Bank = 'bank',\n  Bar = 'bar',\n  BeautySalon = 'beauty_salon',\n  BicycleStore = 'bicycle_store',\n  BookStore = 'book_store',\n  BowlingAlley = 'bowling_alley',\n  BusStation = 'bus_station',\n  Cafe = 'cafe',\n  Campground = 'campground',\n  CarDealer = 'car_dealer',\n  CarRental = 'car_rental',\n  CarRepair = 'car_repair',\n  CarWash = 'car_wash',\n  Casino = 'casino',\n  CityHall = 'city_hall',\n  ClothingStore = 'clothing_store',\n  ConvenienceStore = 'convenience_store',\n  Courthouse = 'courthouse',\n  Dentist = 'dentist',\n  DepartmentStore = 'department_store',\n  Doctor = 'doctor',\n  Electrician = 'electrician',\n  ElectronicsStore = 'electronics_store',\n  Embassy = 'embassy',\n  FireStation = 'fire_station',\n  Florist = 'florist',\n  FuneralHome = 'funeral_home',\n  FurnitureStore = 'furniture_store',\n  GasStation = 'gas_station',\n  Gym = 'gym',\n  HairCare = 'hair_care',\n  HardwareStore = 'hardware_store',\n  HinduTemple = 'hindu_temple',\n  HomeGoodsStore = 'home_goods_store',\n  Hospital = 'hospital',\n  InsuranceAgency = 'insurance_agency',\n  JewelryStore = 'jewelry_store',\n  Laundry = 'laundry',\n  Library = 'library',\n  LiquorStore = 'liquor_store',\n  LocalGovernmentOffice = 'local_government_office',\n  Locksmith = 'locksmith',\n  Lodging = 'lodging',\n  MealDelivery = 'meal_delivery',\n  MealTakeaway = 'meal_takeaway',\n  Mosque = 'mosque',\n  MovieRental = 'movie_rental',\n  MovieTheater = 'movie_theater',\n  MovingCompany = 'moving_company',\n  Museum = 'museum',\n  NightClub = 'night_club',\n  Painter = 'painter',\n  Park = 'park',\n  Parking = 'parking',\n  PetStore = 'pet_store',\n  Pharmacy = 'pharmacy',\n  Physiotherapist = 'physiotherapist',\n  PlaceOfWorship = 'place_of_worship',\n  Plumber = 'plumber',\n  Police = 'police',\n  PostOffice = 'post_office',\n  RealEstateAgency = 'real_estate_agency',\n  Restaurant = 'restaurant',\n  RoofingContractor = 'roofing_contractor',\n  RVPark = 'rv_park',\n  School = 'school',\n  ShoeStore = 'shoe_store',\n  ShoppingMall = 'shopping_mall',\n  Spa = 'spa',\n  Stadium = 'stadium',\n  Storage = 'storage',\n  Store = 'store',\n  SubwayStation = 'subway_station',\n  Synagogue = 'synagogue',\n  TaxiStand = 'taxi_stand',\n  TrainStation = 'train_station',\n  TransitStation = 'transit_station',\n  TravelAgency = 'travel_agency',\n  University = 'university',\n  VeterinaryCare = 'veterinary_care',\n  Zoo = 'zoo',\n}\n","import { SlicePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, of } from 'rxjs';\nimport { catchError, takeUntil } from 'rxjs/operators';\nimport { DirectiveModule } from '../../directives/directive.module';\nimport { IPosition } from '../../interfaces/position.interface';\nimport { ILocationModel } from '../../model/location.model';\nimport { InputFieldModule } from '../input-field/input-field.module';\nimport { MapActionTypes } from '../map/enums/map-action-types.enum';\nimport { PlaceTypes } from '../map/enums/place-types.enum';\nimport { IMapActionEvent } from '../map/interfaces/map-action-event.interface';\nimport { DEFAULT_MAP_OPTIONS } from '../map/map.config';\nimport { LibMapModule } from '../map/map.module';\nimport { MapService } from '../map/map.service';\nimport { IPlaceQuery } from '../map/place-query-parameters.model';\nimport { IPlace } from '../map/place.model';\nimport { PremiumChipModule } from '../premium-chip/premium-chip.module';\n\n@Component({\n  selector: 'lib-location-suggestion-panel',\n  templateUrl: './location-suggestion-panel.component.html',\n  styleUrls: ['./location-suggestion-panel.component.scss'],\n  standalone: true,\n  imports: [LibMapModule, PremiumChipModule, InputFieldModule, DirectiveModule, FormsModule, ReactiveFormsModule, TranslateModule, SlicePipe],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LocationSuggestionPanelComponent implements OnInit, OnDestroy {\n  @Input({ required: true }) selectedLocation!: IPosition;\n  @Input() locationFormControl: FormControl<string> = new FormControl<string>('', {\n    nonNullable: true,\n  });\n  @Input() showSearchBar: boolean = true;\n  @Input() placesTitleTranslationKey: string = 'PAYMENT_SCREENS.SHOP.PLACES_TO_GO';\n\n  @Output() locationChange = new EventEmitter<IPosition>();\n\n  public mapOptions: google.maps.MapOptions = DEFAULT_MAP_OPTIONS;\n  public places: IPlace[] = [];\n\n  private componentDestroyed$ = new Subject<void>();\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    private mapService: MapService,\n  ) {}\n\n  // OBSERVATION: Previously hardcoded San Francisco as fallback. Now uses {0,0}\n  // as a safe no-op default — callers are responsible for providing a real location\n  // via the required @Input(). A {0,0} center renders the world view until the\n  // host app resolves a real location from settings/IP/GPS.\n  ngOnInit(): void {\n    if (!this.selectedLocation || (!this.selectedLocation.lat && !this.selectedLocation.lng)) {\n      this.selectedLocation = {\n        lat: 0,\n        lng: 0,\n        address: '',\n      };\n    }\n    this.updateMap(this.selectedLocation);\n  }\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  public centerMap(): void {\n    if (this.selectedLocation) {\n      this.updateMap(this.selectedLocation);\n    }\n  }\n\n  public onPlaceClick(place: IPlace): void {\n    if (place?.geometry?.location) {\n      const location: IPosition = {\n        lat: place.geometry.location.lat(),\n        lng: place.geometry.location.lng(),\n        address: place.name || place.vicinity || '',\n      };\n      this.selectedLocation = location;\n      this.locationFormControl.setValue(location.address || '');\n      this.updateMap(location);\n      this.locationChange.emit(location);\n    }\n  }\n\n  public onLocationChange(value: ILocationModel): void {\n    if (value?.coordinates?.length > 1) {\n      this.selectedLocation = {\n        lng: value.coordinates[0],\n        lat: value.coordinates[1],\n        address: value?.address,\n      };\n      this.findNearByPlaces(this.selectedLocation);\n      this.locationChange.emit(this.selectedLocation);\n    }\n  }\n\n  public onMapActionEvent(mapActionEvent: IMapActionEvent): void {\n    switch (mapActionEvent.type) {\n      case MapActionTypes.MapLoaded: {\n        this.intializePlacesSection();\n        return;\n      }\n    }\n  }\n\n  private intializePlacesSection(): void {\n    this.findNearByPlaces(this.selectedLocation);\n    // Use nullish coalescing to handle undefined address\n    this.locationFormControl.setValue(this.selectedLocation?.address ?? '');\n  }\n\n  private findNearByPlaces(location: IPosition): void {\n    if (location?.lat && location.lng) {\n      const query: IPlaceQuery = {\n        location,\n        types: [\n          PlaceTypes.Cafe,\n          PlaceTypes.Restaurant,\n          PlaceTypes.Museum,\n          PlaceTypes.Zoo,\n          PlaceTypes.Stadium,\n          PlaceTypes.ShoppingMall,\n          PlaceTypes.CityHall,\n          PlaceTypes.NightClub,\n          PlaceTypes.Park,\n          PlaceTypes.MovieTheater,\n          PlaceTypes.Bar,\n          PlaceTypes.Library,\n          PlaceTypes.ArtGallery,\n          PlaceTypes.Aquarium,\n          PlaceTypes.AmusementPark,\n        ],\n        radius: 5000,\n      };\n      this.mapService\n        .findNearbyPlaces(query)\n        .pipe(\n          catchError(() => of([])),\n          takeUntil(this.componentDestroyed$),\n        )\n        .subscribe((places: IPlace[]) => {\n          this.places = places && places.length <= 6 ? places : places ? places.splice(0, 6) : [];\n          this.updateMap(this.selectedLocation);\n        });\n    }\n  }\n\n  private updateMap(location: IPosition): void {\n    this.mapOptions = {\n      ...DEFAULT_MAP_OPTIONS,\n      draggableCursor: 'default',\n      zoom: 8,\n      center: {\n        lat: location?.lat,\n        lng: location?.lng,\n      },\n    };\n    this.selectedLocation = location;\n    this.cdr.detectChanges();\n  }\n}\n","<div class=\"two-cols-container places-section f-xs f-xs-responsive f-gilroy-regular\">\n  <div class=\"left-section gap-5\">\n    @if (mapOptions) {\n      <div class=\"map-container\">\n        <lib-map [initialLocation]=\"selectedLocation\" [mapOptions]=\"mapOptions\" (mapActionEvent)=\"onMapActionEvent($event)\"></lib-map>\n        @if (selectedLocation.address) {\n          <lib-premium-chip class=\"map-overlay\" (click)=\"centerMap()\">\n            <svg width=\"11\" height=\"14\" viewBox=\"0 0 11 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path\n                d=\"M5.5 0C2.4673 0 0 2.44569 0 5.45138C0 9.60077 4.7608 13.636 4.9643 13.8062C5.1183 13.9354 5.3086 14 5.5 14C5.6914 14 5.8817 13.9354 6.0357 13.8062C6.2392 13.636 11 9.60077 11 5.45138C11 2.44569 8.5327 0 5.5 0ZM5.5 7.53846C4.2867 7.53846 3.3 6.57246 3.3 5.38462C3.3 4.19677 4.2867 3.23077 5.5 3.23077C6.7133 3.23077 7.7 4.19677 7.7 5.38462C7.7 6.57246 6.7133 7.53846 5.5 7.53846Z\"\n                fill=\"#222\"\n              />\n            </svg>\n\n            <div class=\"text\">{{ selectedLocation.address }}</div>\n          </lib-premium-chip>\n        }\n      </div>\n    }\n  </div>\n  <div class=\"right-section gap-5 places-wrapper\">\n    @if (showSearchBar) {\n      <lib-input-field\n        [enableGoogleAddress]=\"true\"\n        [formControl]=\"locationFormControl\"\n        [label]=\"'FIELDS.ADD_LOCATION' | translate\"\n        [trimWhiteSpace]=\"false\"\n        (locationChange)=\"onLocationChange($event)\"\n      ></lib-input-field>\n    }\n    <div class=\"places-container block-container\">\n      @if (placesTitleTranslationKey) {\n        <div class=\"places-title\">{{ placesTitleTranslationKey | translate }}</div>\n      }\n      @if (places.length) {\n        <div libDraggableScroll [includeSidePadding]=\"true\">\n          <div class=\"places\">\n            <!-- Use index as fallback since IPlace interface might not have id -->\n            @for (place of places | slice: 0 : (places.length > 6 ? places.length / 2 : 3); track $index) {\n              <div appLongPress class=\"center-content f-xxsm place-content\" (shortPress)=\"onPlaceClick(place)\">\n                <img [src]=\"place.icon\" alt=\"place\" />\n                <div class=\"place-name\">{{ place.name }}</div>\n              </div>\n            }\n          </div>\n        </div>\n        <div libDraggableScroll [includeSidePadding]=\"true\">\n          @if (places.length > 3) {\n            <div class=\"places\">\n              @for (place of places | slice: (places.length > 6 ? places.length / 2 : 3); track $index) {\n                <div appLongPress class=\"center-content f-xxsm place-content\" (shortPress)=\"onPlaceClick(place)\">\n                  <img [src]=\"place.icon\" alt=\"place\" />\n                  <div class=\"place-name\">{{ place.name }}</div>\n                </div>\n              }\n            </div>\n          }\n        </div>\n      } @else {\n        <div class=\"no-places\">{{ 'PAYMENT_SCREENS.SHOP.NO_PLACES' | translate }}</div>\n      }\n    </div>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { Subject, Subscription, from, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nconst DEFAULT_SPEED_PX_PER_SEC = 40;\nconst HOVER_PLAYBACK_RATE = 2.5;\nconst GAP_PERCENT = 10;\nconst CHECK_MARQUEE_DELAY_MS = 100;\n\n@Component({\n  selector: 'lib-marquee',\n  templateUrl: './marquee.component.html',\n  styleUrls: ['./marquee.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class MarqueeComponent implements OnChanges, AfterViewInit, OnDestroy {\n  @ViewChild('titleContent') titleContent!: ElementRef<HTMLElement>;\n  @ViewChild('continuousContent') continuousContent!: ElementRef<HTMLElement>;\n\n  @Input() title: string = 'marquee';\n  @Input() searchText: string = '';\n  @Input() padding: number = 30;\n  @Input() onlyMarqueeOnHover: boolean = false;\n  @Output() marquee: EventEmitter<boolean> = new EventEmitter();\n\n  @HostBinding('class.marquee-active')\n  public isMarqueeActive: boolean = false;\n\n  public showContinuous: boolean = false;\n\n  private primaryAnimation: Animation | null = null;\n  private continuousAnimation: Animation | null = null;\n  private isHovering = false;\n  private readonly destroy$ = new Subject<void>();\n  private checkMarqueeSub: Subscription | null = null;\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    private el: ElementRef<HTMLElement>,\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['title']?.currentValue !== changes['title']?.previousValue) {\n      this.stopAnimations();\n      this.isMarqueeActive = false;\n      this.showContinuous = false;\n      this.checkMarquee();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    // Call checkMarquee immediately to apply gradients on init\n    // This ensures the marquee-active class (and its gradient pseudo-elements) are applied right away\n    this.checkMarquee();\n\n    // Also re-check after fonts are ready for accurate measurements\n    from(document.fonts.ready)\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.checkMarquee());\n  }\n\n  ngOnDestroy(): void {\n    this.stopAnimations();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  @HostListener('window:resize')\n  public onResize(): void {\n    this.stopAnimations();\n    this.isMarqueeActive = false;\n    this.showContinuous = false;\n    this.checkMarquee();\n  }\n\n  public onPointerEnter(): void {\n    if (this.onlyMarqueeOnHover && this.isMarqueeActive && !this.isHovering) {\n      this.isHovering = true;\n      this.startAnimations();\n      return;\n    }\n    this.isHovering = true;\n    this.setPlaybackRate(HOVER_PLAYBACK_RATE);\n  }\n\n  public onPointerLeave(): void {\n    if (this.onlyMarqueeOnHover) {\n      this.isHovering = false;\n      this.stopAnimations();\n      return;\n    }\n    this.isHovering = false;\n    this.setPlaybackRate(1);\n  }\n\n  private checkMarquee(): void {\n    if (this.title?.length > 0 && this.titleContent) {\n      this.checkMarqueeSub?.unsubscribe();\n      this.checkMarqueeSub = timer(CHECK_MARQUEE_DELAY_MS)\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => {\n          const containerWidth = this.el.nativeElement.clientWidth;\n          const textWidth = this.titleContent.nativeElement.scrollWidth;\n          const wasActive = this.isMarqueeActive;\n          this.isMarqueeActive = textWidth > containerWidth - this.padding;\n          this.marquee.emit(this.isMarqueeActive);\n\n          if (this.isMarqueeActive && !this.onlyMarqueeOnHover) {\n            this.showContinuous = true;\n            this.cdr.detectChanges();\n            this.startAnimations();\n          } else if (!this.isMarqueeActive && wasActive) {\n            this.showContinuous = false;\n          }\n\n          this.cdr.detectChanges();\n        });\n    }\n  }\n\n  private startAnimations(): void {\n    this.stopAnimations();\n\n    if (!this.titleContent) return;\n\n    this.showContinuous = true;\n    this.cdr.detectChanges();\n\n    const textWidth = this.titleContent.nativeElement.scrollWidth;\n    const gapFraction = GAP_PERCENT / 100;\n    const totalTravel = textWidth * (1 + gapFraction);\n\n    const customSpeed = this.getCSSVarAsSeconds('--marquee-speed-px-per-sec');\n    const speed = customSpeed ?? DEFAULT_SPEED_PX_PER_SEC;\n    const duration = (totalTravel / speed) * 1000;\n\n    const primaryEl = this.titleContent.nativeElement;\n    this.primaryAnimation = primaryEl.animate([{ transform: 'translateX(0%)' }, { transform: `translateX(-${100 + GAP_PERCENT}%)` }], {\n      duration,\n      iterations: Infinity,\n      easing: 'linear',\n    });\n\n    if (this.continuousContent) {\n      const contEl = this.continuousContent.nativeElement;\n      this.continuousAnimation = contEl.animate([{ transform: `translateX(${GAP_PERCENT}%)` }, { transform: 'translateX(-100%)' }], {\n        duration,\n        iterations: Infinity,\n        easing: 'linear',\n      });\n    }\n\n    if (this.isHovering) {\n      this.setPlaybackRate(HOVER_PLAYBACK_RATE);\n    }\n  }\n\n  private stopAnimations(): void {\n    if (this.primaryAnimation) {\n      this.primaryAnimation.cancel();\n      this.primaryAnimation = null;\n    }\n    if (this.continuousAnimation) {\n      this.continuousAnimation.cancel();\n      this.continuousAnimation = null;\n    }\n  }\n\n  private setPlaybackRate(rate: number): void {\n    if (this.primaryAnimation) {\n      this.primaryAnimation.playbackRate = rate;\n    }\n    if (this.continuousAnimation) {\n      this.continuousAnimation.playbackRate = rate;\n    }\n  }\n\n  private getCSSVarAsSeconds(name: string): number | null {\n    const raw = getComputedStyle(this.el.nativeElement).getPropertyValue(name)?.trim();\n    if (!raw) return null;\n    const n = parseFloat(raw);\n    return isNaN(n) ? null : n;\n  }\n}\n","<h2 class=\"title-container\" (mouseenter)=\"onPointerEnter()\" (mouseleave)=\"onPointerLeave()\" (touchstart)=\"onPointerEnter()\" (touchend)=\"onPointerLeave()\">\n  <ng-container *ngIf=\"onlyMarqueeOnHover; else defaultTitle\">\n    <div class=\"marquee-title\" #titleContent [libTextHighlight]=\"title\" [searchText]=\"searchText\"></div>\n  </ng-container>\n  <ng-template #defaultTitle>\n    <div class=\"marquee-title\" #titleContent>{{ title }}</div>\n  </ng-template>\n  <div class=\"continuous-marquee-title\" #continuousContent *ngIf=\"showContinuous\">{{ title }}</div>\n</h2>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TextHighlightDirective } from '../../directives/text-highlight/text-highlight.directive';\nimport { MarqueeComponent } from './marquee.component';\n\n@NgModule({\n  declarations: [MarqueeComponent],\n  imports: [CommonModule, TextHighlightDirective],\n  exports: [MarqueeComponent],\n})\nexport class LibMarqueeModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'lib-multi-colored-text',\n  templateUrl: './multi-colored-text.component.html',\n  styleUrls: ['./multi-colored-text.component.scss'],\n  standalone: false,\n})\nexport class MultiColoredTextComponent {\n  @Input() text: string = '';\n  @Input() class: string = '';\n}\n","<div class=\"multi-colored\" [ngClass]=\"class\" [innerHTML]=\"text\"></div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MultiColoredTextComponent } from './multi-colored-text.component';\n\n@NgModule({\n  declarations: [MultiColoredTextComponent],\n  imports: [CommonModule],\n  exports: [MultiColoredTextComponent],\n})\nexport class MultiColoredTextModule {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Observable, Subject, takeUntil } from 'rxjs';\r\nimport { NotificationBannerType } from '../../enums/notification-banner-type';\r\n\r\n@Component({\r\n  selector: 'lib-notification-banner',\r\n  templateUrl: './notification-banner.component.html',\r\n  styleUrls: ['./notification-banner.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class NotificationBannerComponent implements OnInit, OnDestroy {\r\n  public display = false;\r\n  private timeout?: ReturnType<typeof setTimeout>;\r\n  public message: string = '';\r\n  public bannerType: string = '';\r\n  private componentDestroyed$: Subject<void> = new Subject();\r\n\r\n  @Input() notification$!: Observable<{ message: string; type: NotificationBannerType }>;\r\n\r\n  constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n  ngOnInit(): void {\r\n    this.notification$.pipe(takeUntil(this.componentDestroyed$)).subscribe((res) => {\r\n      this.message = res.message;\r\n      this.bannerType = res.type;\r\n      this.setTimedDisplay();\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.componentDestroyed$.next();\r\n    this.componentDestroyed$.complete();\r\n  }\r\n\r\n  private setTimedDisplay(): void {\r\n    this.display = true;\r\n    this.changeDetectorRef.detectChanges();\r\n\r\n    if (this.timeout) {\r\n      clearTimeout(this.timeout);\r\n    }\r\n\r\n    this.timeout = setTimeout(() => {\r\n      this.display = false;\r\n      this.changeDetectorRef.detectChanges();\r\n    }, 5000);\r\n  }\r\n\r\n  public hide(): void {\r\n    this.display = false;\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n}\r\n","<div *ngIf=\"display\">\r\n  <div *ngIf=\"bannerType === 'success'\" class=\"notification-banner notification-banner__success\">\r\n    <i class=\"notification-banner__icon icon-check-circle\"></i>\r\n    <div class=\"notification-banner__message\">\r\n      {{ message }}\r\n    </div>\r\n    <i class=\"notification-banner__icon notification-banner__icon--clickable icon-close\" (click)=\"hide()\"></i>\r\n  </div>\r\n  <div *ngIf=\"bannerType === 'warn'\" class=\"notification-banner notification-banner__warn\">\r\n    <i class=\"notification-banner__icon icon-gen3-enrich\"></i>\r\n    <div class=\"notification-banner__message\">\r\n      {{ message }}\r\n    </div>\r\n    <i class=\"notification-banner__icon notification-banner__icon--clickable icon-close\" (click)=\"hide()\"></i>\r\n  </div>\r\n  <div *ngIf=\"bannerType === 'error'\" class=\"notification-banner notification-banner__error\">\r\n    <i class=\"notification-banner__icon icon-exclamation-circle\"></i>\r\n    <div class=\"notification-banner__message\">\r\n      {{ message }}\r\n    </div>\r\n    <i class=\"notification-banner__icon notification-banner__icon--clickable icon-close\" (click)=\"hide()\"></i>\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NotificationBannerComponent } from './notification-banner.component';\r\n\r\n@NgModule({\r\n  declarations: [NotificationBannerComponent],\r\n  imports: [CommonModule],\r\n  exports: [NotificationBannerComponent],\r\n})\r\nexport class NotificationBannerModule {}\r\n","export enum NotificationStatuses {\n  NEW = 'New',\n  EARLIER = 'Earlier',\n}\n","export enum NotificationSwipes {\n  RIGHT = 'right',\n  LEFT = 'left',\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChildren,\n} from '@angular/core';\nimport { Gesture, GestureController, IonicModule } from '@ionic/angular';\nimport { Subject, takeUntil } from 'rxjs';\nimport { NotificationStatuses } from '../enums/notification-statuses.enum';\nimport { NotificationSwipes } from '../enums/notification-swipes.enum';\nimport { INotificationActivity, INotificationItem, INotificationsList } from '../interfaces';\n\n@Component({\n  standalone: true,\n  selector: 'lib-notifications-list',\n  imports: [CommonModule, IonicModule],\n  templateUrl: './notifications-list.component.html',\n  styleUrl: './notifications-list.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NotificationsListComponent implements AfterViewInit, OnDestroy, OnChanges {\n  @ViewChildren('card', { read: ElementRef }) private cardElements!: QueryList<ElementRef>;\n  /** List of notifications to display */\n  @Input() public notifications: INotificationsList[] = [];\n  /** Controls the loading state of the notifications list */\n  @Input() public isLoading: boolean = false;\n  /** Emits when a notification is clicked */\n  @Output() public notificationClicked: EventEmitter<INotificationItem> = new EventEmitter<INotificationItem>();\n  @Output() public notificationAccepted: EventEmitter<INotificationItem> = new EventEmitter<INotificationItem>();\n  @Output() public notificationSwipe: EventEmitter<INotificationActivity> = new EventEmitter<INotificationActivity>();\n  public NotificationStatuses = NotificationStatuses;\n  private gestureCtrl = inject(GestureController);\n  private cdr = inject(ChangeDetectorRef);\n  public gestures: Gesture[] = [];\n  public componentDestroyed$: Subject<void> = new Subject<void>();\n  public removingNotificationIds: Set<string> = new Set<string>();\n  public swipingNotificationIds: Set<string> = new Set<string>();\n  public clickedNotificationIds: Set<string> = new Set<string>();\n  private notificationClickPrevented: Set<string> = new Set<string>();\n\n  ngAfterViewInit(): void {\n    this.setupGestures();\n    this.cardElements.changes.pipe(takeUntil(this.componentDestroyed$)).subscribe(() => {\n      this.cleanupGestures();\n      this.setupGestures();\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['notifications']) {\n      this.cdr.markForCheck();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.cleanupGestures();\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  public handleClick(notification: INotificationItem): void {\n    if (this.notificationClickPrevented.has(notification._id)) {\n      this.notificationClickPrevented.delete(notification._id);\n      return;\n    }\n    this.clickedNotificationIds.add(notification._id);\n    this.notificationClicked.emit(notification);\n    this.cdr.markForCheck();\n  }\n\n  public handleDeleteClick(notificationId: string, event: Event): void {\n    event.stopPropagation();\n    event.preventDefault();\n    event.stopImmediatePropagation();\n\n    this.swipingNotificationIds.delete(notificationId);\n    this.notificationClickPrevented.delete(notificationId);\n    this.removingNotificationIds.delete(notificationId);\n\n    this.notificationSwipe.emit({\n      id: notificationId,\n      swipe: NotificationSwipes.RIGHT,\n      isButtonClick: true,\n    });\n\n    this.cdr.markForCheck();\n  }\n\n  public handleAcceptClick(notification: INotificationItem, event: Event): void {\n    event.stopPropagation();\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    this.notificationAccepted.emit(notification);\n  }\n\n  private setupGestures(): void {\n    this.cardElements?.forEach((cardElem) => {\n      let startX = 0;\n      let isSwiping = false;\n      let swipeDirection: NotificationSwipes | null = null;\n      let gestureDisabled = false;\n\n      const gesture = this.gestureCtrl.create({\n        el: cardElem.nativeElement,\n        threshold: 10,\n        gestureName: 'swipe-card',\n        direction: 'x',\n        onStart: (ev) => {\n          const target = (ev.event?.target || ev.event?.srcElement || ev.event?.currentTarget) as HTMLElement;\n          if (target?.closest('.delete-button') || target?.closest('.delete-button-col')) {\n            gestureDisabled = true;\n            return;\n          }\n          gestureDisabled = false;\n          startX = ev.currentX;\n          isSwiping = false;\n          swipeDirection = null;\n        },\n        onMove: (ev) => {\n          if (gestureDisabled) {\n            return;\n          }\n          const deltaX = ev.currentX - startX;\n          const absDeltaX = Math.abs(deltaX);\n\n          if (absDeltaX > 10) {\n            isSwiping = true;\n            swipeDirection = deltaX > 0 ? NotificationSwipes.RIGHT : NotificationSwipes.LEFT;\n\n            const notifId = cardElem.nativeElement.dataset.notificationId;\n            if (notifId) {\n              this.swipingNotificationIds.add(notifId);\n              this.notificationClickPrevented.add(notifId);\n            }\n          }\n        },\n        onEnd: (ev) => {\n          if (gestureDisabled) {\n            gestureDisabled = false;\n            isSwiping = false;\n            swipeDirection = null;\n            return;\n          }\n\n          const target = (ev.event?.target || ev.event?.srcElement) as HTMLElement;\n          if (target?.closest('.delete-button') || target?.closest('.delete-button-col')) {\n            gestureDisabled = false;\n            isSwiping = false;\n            swipeDirection = null;\n            return;\n          }\n\n          const notifId = cardElem.nativeElement.dataset.notificationId;\n\n          if (notifId && isSwiping && Math.abs(ev.deltaX) >= 10 && !this.removingNotificationIds.has(notifId)) {\n            this.removingNotificationIds.add(notifId);\n            const finalSwipeDirection = swipeDirection || (ev.deltaX > 0 ? NotificationSwipes.RIGHT : NotificationSwipes.LEFT);\n\n            cardElem.nativeElement.classList.remove('slide-out-left', 'slide-out-right');\n            cardElem.nativeElement.classList.add('removing');\n            if (finalSwipeDirection === NotificationSwipes.LEFT) {\n              cardElem.nativeElement.classList.add('slide-out-left');\n            } else {\n              cardElem.nativeElement.classList.add('slide-out-right');\n            }\n\n            setTimeout(() => {\n              this.notificationSwipe.emit({\n                id: notifId,\n                swipe: finalSwipeDirection,\n                isButtonClick: false,\n              });\n              setTimeout(() => {\n                this.removingNotificationIds.delete(notifId);\n                this.swipingNotificationIds.delete(notifId);\n                this.notificationClickPrevented.delete(notifId);\n              }, 300);\n            }, 50);\n          } else if (notifId && this.swipingNotificationIds.has(notifId)) {\n            setTimeout(() => {\n              this.swipingNotificationIds.delete(notifId);\n              this.notificationClickPrevented.delete(notifId);\n            }, 100);\n          } else if (notifId) {\n            this.notificationClickPrevented.delete(notifId);\n          }\n\n          isSwiping = false;\n          swipeDirection = null;\n        },\n      });\n      gesture.enable(true);\n      this.gestures.push(gesture);\n    });\n  }\n\n  private cleanupGestures(): void {\n    this.gestures.forEach((gesture) => {\n      gesture.destroy();\n    });\n\n    this.gestures = [];\n  }\n}\n","<ion-grid class=\"notifications\">\n  @if (isLoading) {\n    <ion-row>\n      <ion-col size=\"12\" class=\"date\">\n        <div class=\"date-skeleton\"></div>\n      </ion-col>\n      @for (item of [1, 2]; track $index) {\n        <ion-col size=\"12\">\n          <ion-row class=\"align-center notification-item\">\n            <ion-col size-xs=\"1.5\">\n              <ul>\n                <li class=\"img-container\">\n                  <span class=\"img-skeleton\"></span>\n                </li>\n              </ul>\n            </ion-col>\n            <ion-col size-xs=\"9.7\">\n              <div class=\"skeleton-notification\"></div>\n            </ion-col>\n            <ion-col size=\"0.8\">\n              <div class=\"notification-alert-container\">\n                <span class=\"alert-skeleton\"></span>\n              </div>\n            </ion-col>\n          </ion-row>\n        </ion-col>\n      }\n    </ion-row>\n  } @else {\n    @for (notificationList of notifications; track $index; let groupIdx = $index) {\n      <ion-row>\n        <ion-col size=\"12\" class=\"date\">\n          <p>{{ notificationList.date }}</p>\n        </ion-col>\n        <ion-col size=\"12\" class=\"notification-container\">\n          @for (notification of notificationList.items; track notification._id ?? $index) {\n            <ion-row\n              class=\"align-center notification-item\"\n              [class.removing]=\"removingNotificationIds.has(notification._id)\"\n              [class.swiping]=\"swipingNotificationIds.has(notification._id)\"\n              [class.read]=\"notificationList.status === NotificationStatuses.EARLIER || clickedNotificationIds.has(notification._id)\"\n              (click)=\"handleClick(notification)\"\n              #card\n              [attr.data-notification-id]=\"notification._id\"\n            >\n              <ion-col size-xs=\"1.5\" [class.multi-img]=\"notification.icons.length > 1\">\n                <ul>\n                  @for (icon of notification.icons; track $index; let i = $index) {\n                    @if (icon) {\n                      <li class=\"img-container\" [class.second-img]=\"i === 1\">\n                        <span [ngStyle]=\"{ 'background-image': $any(icon).link ? 'url(' + $any(icon).link + ')' : 'none' }\"></span>\n                      </li>\n                    }\n                  }\n                </ul>\n              </ion-col>\n              <ion-col [attr.size-xs]=\"notification.type === 'Actionable' ? '7.5' : '9.7'\">\n                <p class=\"notification-text\" [innerHTML]=\"notification.text\"></p>\n              </ion-col>\n              @if (notification.type === 'Actionable') {\n                <ion-col size=\"1.6\" class=\"action-buttons-col\" (click)=\"$event.stopPropagation(); $event.stopImmediatePropagation()\">\n                  <div class=\"action-buttons\">\n                    <button class=\"action-btn dismiss-btn\" (click)=\"handleDeleteClick(notification._id, $event)\" type=\"button\" aria-label=\"Dismiss notification\">\n                      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n                        <path d=\"M9 1L1 9M1 1L9 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n                      </svg>\n                    </button>\n                    <button class=\"action-btn accept-btn\" (click)=\"handleAcceptClick(notification, $event)\" type=\"button\" aria-label=\"Accept notification\">\n                      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\">\n                        <path d=\"M1 5L4.5 8.5L11 1.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n                      </svg>\n                    </button>\n                  </div>\n                </ion-col>\n              }\n            </ion-row>\n          }\n        </ion-col>\n      </ion-row>\n    }\n  }\n</ion-grid>\n","import { Injectable } from '@angular/core';\nimport { NotificationStatuses } from './enums/notification-statuses.enum';\nimport { INotificationItem, INotificationSimple, INotificationsList } from './interfaces';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NotificationsService {\n  public transformNotificationsSimpleIntoList(notifications: INotificationSimple[]): INotificationsList[] {\n    const groupedByDate = notifications.reduce<Record<NotificationStatuses, INotificationSimple[]>>(\n      (acc, notification) => {\n        acc[notification.status] = acc[notification.status] || [];\n        acc[notification.status].push(notification);\n        return acc;\n      },\n      {\n        [NotificationStatuses.NEW]: [],\n        [NotificationStatuses.EARLIER]: [],\n      },\n    );\n\n    const result: INotificationsList[] = Object.keys(groupedByDate).map((statusKey) => {\n      const status = statusKey as NotificationStatuses;\n\n      const sortedNotifications = groupedByDate[status].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());\n\n      const items: INotificationItem[] = sortedNotifications.map((notif) => ({\n        _id: notif._id,\n        text: notif.text,\n        icons: [notif.icons[0], notif.icons[1]],\n        timestamp: notif.timestamp,\n        type: notif.type,\n        itinerary: notif.itinerary,\n        prospect: notif.prospect,\n      }));\n\n      return {\n        status,\n        date: status,\n        items,\n      };\n    });\n\n    return result;\n  }\n\n  public updateNotificationsList(notifications: INotificationsList[]): INotificationsList[] {\n    const groupedByDate: Record<string, INotificationItem[]> = {};\n\n    notifications.forEach((notificationGroup) => {\n      const { status, items } = notificationGroup;\n\n      if (!groupedByDate[status]) {\n        groupedByDate[status] = [];\n      }\n\n      groupedByDate[status].push(...items);\n    });\n\n    Object.keys(groupedByDate).forEach((dateKey) => {\n      groupedByDate[dateKey].sort((a, b) => b._id.localeCompare(a._id));\n    });\n\n    const transformed: INotificationsList[] = [];\n\n    if (groupedByDate['New']) {\n      transformed.push({\n        status: NotificationStatuses.NEW,\n        items: groupedByDate['New'],\n      });\n    }\n\n    if (groupedByDate['Earlier']) {\n      transformed.push({\n        status: NotificationStatuses.EARLIER,\n        items: groupedByDate['Earlier'],\n      });\n    }\n\n    return transformed;\n  }\n\n  public insertNotificationIntoLists(existingLists: INotificationsList[], newNotification: INotificationSimple): INotificationsList[] {\n    const newLists = existingLists.map((list) => ({\n      ...list,\n      items: [...list.items],\n    }));\n\n    let targetList = newLists.find((list) => list.status === newNotification.status);\n\n    if (!targetList) {\n      targetList = {\n        status: newNotification.status,\n        date: newNotification.status,\n        items: [],\n      };\n      newLists.push(targetList);\n    }\n\n    const newItem: INotificationItem = {\n      _id: newNotification._id,\n      text: newNotification.text,\n      icons: newNotification.icons,\n      timestamp: newNotification.timestamp,\n      type: newNotification.type,\n      itinerary: newNotification.itinerary,\n      prospect: newNotification.prospect,\n    };\n\n    targetList.items = [...targetList.items, newItem].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());\n\n    newLists.sort((a, b) => {\n      if (a.status === NotificationStatuses.NEW && b.status === NotificationStatuses.EARLIER) return -1;\n      if (a.status === NotificationStatuses.EARLIER && b.status === NotificationStatuses.NEW) return 1;\n      return 0;\n    });\n\n    return newLists;\n  }\n\n  public countTotalNotifications(notifications: INotificationsList[]): number {\n    return notifications.reduce((total, group) => total + group.items.length, 0);\n  }\n\n  public removeNotificationFromLists(notifications: INotificationsList[], notificationId: string): INotificationsList[] {\n    if (!notificationId || !notifications || notifications.length === 0) {\n      return notifications;\n    }\n\n    const newLists = notifications.map((list) => ({\n      ...list,\n      items: [...list.items],\n    }));\n\n    const updatedLists = newLists\n      .map((list) => {\n        const filteredItems = list.items.filter((item) => String(item._id) !== String(notificationId));\n\n        if (filteredItems.length === 0 && list.items.length > 0) {\n          return null;\n        }\n\n        return {\n          ...list,\n          items: filteredItems,\n        };\n      })\n      .filter((list): list is INotificationsList => list !== null);\n\n    return updatedLists;\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'lib-percentage-bar',\n  templateUrl: './percentage-bar.component.html',\n  styleUrls: ['./percentage-bar.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class LibPercentageBarComponent {\n  @Input() value: number = 0;\n}\n","<div class=\"lib-percentage\">\n  <div class=\"lib-percentage__inner\" [ngStyle]=\"{ 'width.%': value }\" [ngClass]=\"{ 'lib-percentage__inner--value': !!value, 'lib-percentage__inner--no-value': !value }\"></div>\n  <div class=\"lib-percentage__label-container\">\n    <div class=\"lib-percentage__label-container__label\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LibPercentageBarComponent } from './percentage-bar.component';\n\n@NgModule({\n  declarations: [LibPercentageBarComponent],\n  imports: [CommonModule],\n  exports: [LibPercentageBarComponent],\n})\nexport class LibPercentageBarModule {}\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { NgxImageCompressService } from 'ngx-image-compress';\nimport { ImageModel } from '../../../model/image-model';\nimport { ImageCropperService } from '../../image-cropper/image-cropper.service';\nimport { ImageBaseComponent } from '../image-base/image-base.component';\n\n@Component({\n  selector: 'lib-drag-and-drop',\n  templateUrl: './drag-and-drop.component.html',\n  styleUrls: ['./drag-and-drop.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class DragAndDropComponent extends ImageBaseComponent implements OnInit, OnDestroy {\n  @Input() showOutLine = true;\n\n  @ViewChild('dragOutline') dragOutline!: ElementRef;\n\n  constructor(\n    private imageCompress: NgxImageCompressService,\n    private imageCropper: ImageCropperService,\n  ) {\n    super(imageCompress, imageCropper);\n  }\n\n  ngOnInit(): void {\n    this.setDragAndDrop();\n  }\n\n  ngOnDestroy() {\n    document.body.removeEventListener('dragenter', this.preventDefault.bind(this));\n    document.body.removeEventListener('dragleave', this.preventDefault.bind(this));\n    document.body.removeEventListener('dragover', this.preventDefault.bind(this));\n    document.body.removeEventListener('drop', this.preventDefault.bind(this));\n  }\n\n  public preventDefault(event: DragEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  public setDragAndDrop(): void {\n    document.body.addEventListener('dragenter', this.preventDefault.bind(this));\n    document.body.addEventListener('dragleave', this.preventDefault.bind(this));\n    document.body.addEventListener('dragover', this.preventDefault.bind(this));\n    document.body.addEventListener('drop', this.preventDefault.bind(this));\n  }\n\n  public showOutline(event: DragEvent): void {\n    this.preventDefault(event);\n    this.dragOutline.nativeElement.classList.add('show-outline');\n  }\n\n  public hideOutline(event: DragEvent): void {\n    this.preventDefault(event);\n    this.dragOutline.nativeElement.classList.remove('show-outline');\n  }\n\n  public async receiveDroppedFiles(event: DragEvent): Promise<void> {\n    this.dragOutline.nativeElement.classList.remove('show-outline');\n    if (event.dataTransfer?.files && event.dataTransfer.files.length) {\n      const photos = await this.readFiles(event.dataTransfer.files);\n      this.onSelectImages(photos);\n    }\n  }\n\n  private async readFiles(files: FileList): Promise<ImageModel[]> {\n    const promises = [];\n    for (let i = 0; i < files.length; i++) {\n      promises.push(this.readFile(files[i]));\n    }\n    return await Promise.all(promises);\n  }\n\n  public async readFile(file: File): Promise<ImageModel> {\n    return new Promise((resolve, reject) => {\n      const fileReader = new FileReader();\n      fileReader.onload = (evt) => {\n        resolve({\n          fileName: file.name,\n          image: (evt.target?.result as string) || '',\n          isDark: true,\n        });\n      };\n      fileReader.onerror = (evt) => {\n        reject(new Error(`An error occured while reading this file: ${file.name}`));\n      };\n      fileReader.readAsDataURL(file);\n    });\n  }\n}\n","<lib-image-base\n  [maxNumOfPhotos]=\"maxNumOfPhotos\"\n  [loading]=\"loading\"\n  [disabled]=\"disabled\"\n  [enableCropper]=\"enableCropper\"\n  [cropperModalViewRef]=\"cropperModalViewRef\"\n  [enableCompression]=\"enableCompression\"\n  [maxImageSizeInBytes]=\"maxImageSizeInBytes\"\n  [maxImageCompressSizeInBytes]=\"maxImageCompressSizeInBytes\"\n  [photoAspectRatio]=\"photoAspectRatio\"\n  [photos]=\"photos\"\n  [faceDetector]=\"faceDetector\"\n  [nsfwChecker]=\"nsfwChecker\"\n>\n  <div (dragover)=\"showOutline($event)\" (dragenter)=\"showOutline($event)\" (dragleave)=\"hideOutline($event)\" (dragend)=\"hideOutline($event)\" (drop)=\"receiveDroppedFiles($event)\">\n    <ng-content></ng-content>\n  </div>\n  <span #dragOutline class=\"drag-outline\"></span>\n</lib-image-base>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DragAndDropComponent } from './drag-and-drop.component';\nimport { ImageBaseModule } from '../image-base/image-base.module';\n\n@NgModule({\n  declarations: [DragAndDropComponent],\n  imports: [CommonModule, ImageBaseModule],\n  exports: [DragAndDropComponent],\n})\nexport class DragAndDropModule {}\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { ImageModel } from '../../model/image-model';\n\n@Component({\n  selector: 'lib-drag-and-drop',\n  templateUrl: './drag-and-drop.component.html',\n  styleUrls: ['./drag-and-drop.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class DragAndDropComponent implements OnInit, OnDestroy {\n  @ViewChild('dragOutline') dragOutline!: ElementRef;\n\n  @Input() showOutLine = true;\n  @Output() fileRecieved: EventEmitter<ImageModel[]> = new EventEmitter();\n\n  ngOnInit(): void {\n    this.setDragAndDrop();\n  }\n\n  ngOnDestroy() {\n    document.body.removeEventListener('dragenter', this.preventDefault.bind(this));\n    document.body.removeEventListener('dragleave', this.preventDefault.bind(this));\n    document.body.removeEventListener('dragover', this.preventDefault.bind(this));\n    document.body.removeEventListener('drop', this.preventDefault.bind(this));\n  }\n\n  public preventDefault(event: Event): void {\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  public setDragAndDrop(): void {\n    document.body.addEventListener('dragenter', this.preventDefault.bind(this));\n    document.body.addEventListener('dragleave', this.preventDefault.bind(this));\n    document.body.addEventListener('dragover', this.preventDefault.bind(this));\n    document.body.addEventListener('drop', this.preventDefault.bind(this));\n  }\n\n  public showOutline(event: DragEvent): void {\n    this.preventDefault(event);\n    this.dragOutline.nativeElement.classList.add('show-outline');\n  }\n\n  public hideOutline(event: DragEvent): void {\n    this.preventDefault(event);\n    this.dragOutline.nativeElement.classList.remove('show-outline');\n  }\n\n  public async recieveDroppedFiles(event: DragEvent): Promise<void> {\n    this.dragOutline.nativeElement.classList.remove('show-outline');\n    if (event.dataTransfer?.files && event.dataTransfer.files.length) {\n      const photos = await this.readFiles(event.dataTransfer.files);\n      this.fileRecieved.emit(photos);\n    }\n  }\n\n  private async readFiles(files: FileList): Promise<ImageModel[]> {\n    const promises = [];\n    for (let i = 0; i < files.length; i++) {\n      promises.push(this.readFile(files[i]));\n    }\n\n    const images = await Promise.all(promises);\n    return images;\n  }\n\n  public async readFile(file: File): Promise<ImageModel> {\n    return new Promise((resolve, reject) => {\n      const fileReader = new FileReader();\n      fileReader.onload = (evt) => {\n        resolve({\n          fileName: file.name,\n          image: (evt.target?.result as string) ?? '',\n          isDark: true,\n        });\n      };\n\n      fileReader.onerror = (evt) => {\n        reject(new Error(`An error occured while reading this file: ${file.name}`));\n      };\n      fileReader.readAsDataURL(file);\n    });\n  }\n}\n","<div (dragover)=\"showOutline($event)\" (dragenter)=\"showOutline($event)\" (dragleave)=\"hideOutline($event)\" (dragend)=\"hideOutline($event)\" (drop)=\"recieveDroppedFiles($event)\">\n  <ng-content></ng-content>\n</div>\n<span #dragOutline class=\"drag-outline\"></span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DragAndDropComponent } from './drag-and-drop.component';\n\n@NgModule({\n  declarations: [DragAndDropComponent],\n  imports: [CommonModule],\n  exports: [DragAndDropComponent],\n})\nexport class DragAndDropModule {}\n","import { CropperPosition } from 'ngx-image-cropper';\n\nexport class ImageModel {\n  image: string = '';\n  fileName: string = '';\n  orientation?: number;\n  moreThan2mb?: boolean;\n  constainsFace?: boolean;\n  isSafeForWork?: boolean;\n  dupName?: string;\n  invalid?: boolean;\n  deactivated?: boolean;\n  isDark: boolean = true;\n  croppedCoordinates?: CropperPosition;\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { DOC_ORIENTATION, NgxImageCompressService } from 'ngx-image-compress';\nimport { Observable, Subject, take } from 'rxjs';\nimport { ImageModel } from '../../model/image-model';\nimport { ILargeFileWarningParams } from '../../model/large-file-warning-params.interface';\nimport { ImageCropperService } from '../image-cropper/image-cropper.service';\nimport { PopupModalService } from '../modal/popup-modal/popup-modal.service';\n\ninterface UploadResponse {\n  image: string;\n  fileName: string;\n  orientation?: number;\n}\n\n@Component({\n  selector: 'lib-picture-gallery',\n  templateUrl: './picture-gallery.component.html',\n  styleUrls: ['./picture-gallery.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class PictureGalleryComponent implements OnInit, OnDestroy {\n  @Input() maxNumOfPhotos: number = 4;\n  @Input() photos: ImageModel[] = [];\n  @Input() slotsPerRow: number = 2;\n  @Input() gridGap: number = 24;\n  @Input() enableDragAndDrop: boolean = false;\n  @Input() infoIcon: string = '';\n  @Input() largeFileUploadWarningParams: ILargeFileWarningParams = {\n    icon: '',\n    confirmButton: 'Upload Anyway',\n    cancelButton: 'Cancel',\n    title: 'Large File Upload Warning',\n    message: 'The image is above 2mb. It could take a little while. Would you like to continue?',\n  };\n  @Input() photoAspectRatio: number = 1;\n  @Input() enableNsfwCheck: boolean = false;\n  @Input() enableFaceCheck: boolean = false;\n  @Input() compressRatio: number = 50;\n  @Input() compressQuality: number = 50;\n  @Input() faceDetector: (images: string) => Observable<boolean> = () => new Observable<boolean>();\n  @Input() nsfwChecker: (images: string) => Observable<boolean> = () => new Observable<boolean>();\n\n  @Output() photosUpload: EventEmitter<ImageModel[]> = new EventEmitter<ImageModel[]>();\n  @Output() photosDelete: EventEmitter<ImageModel[]> = new EventEmitter<ImageModel[]>();\n  @Output() photoUploadFail: EventEmitter<string> = new EventEmitter<string>();\n  @Output() dupPhotosDetect: EventEmitter<number> = new EventEmitter<number>();\n  @Output() unsupportedFormatsDetect: EventEmitter<string[]> = new EventEmitter<string[]>();\n  @Output() maxUploadLimitExceeded: EventEmitter<null> = new EventEmitter();\n\n  @ViewChild('dragOutline') dragOutline!: ElementRef;\n\n  public skeletonLoaders: boolean[] = [];\n  public imageBeingLoaded: boolean = false;\n  public imageBeingProcessed: ImageModel = new ImageModel();\n  private imageFiles: ImageModel[] = [];\n  private croppedImages: ImageModel[] = [];\n  private readonly twoMegabytes = 2097152;\n  private imageSizeMap: boolean[] = [];\n\n  public destroy$: Subject<void> = new Subject();\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    private imageCompress: NgxImageCompressService,\n    public modalFactoryService: PopupModalService,\n    private imageCropperService: ImageCropperService,\n  ) {}\n\n  ngOnInit(): void {\n    this.skeletonLoaders = new Array(this.maxNumOfPhotos);\n    this.skeletonLoaders.fill(false);\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  public selectImage(): void {\n    this.imageCompress.uploadMultipleFiles().then(async (uploadResponses: UploadResponse[]) => {\n      const imageFiles: ImageModel[] = uploadResponses.map((response) => ({\n        image: response.image,\n        fileName: response.fileName,\n        orientation: response.orientation,\n        isDark: true,\n      }));\n      this.handleImages(imageFiles);\n    });\n  }\n\n  public async handleImages(imageFiles: ImageModel[]): Promise<void> {\n    if (imageFiles?.length) {\n      this.imageSizeMap = imageFiles.map((file) => (this.imageCompress.byteCount(file.image) >= this.twoMegabytes ? true : false));\n      const data = {\n        images: imageFiles,\n        aspectRatio: this.photoAspectRatio,\n        nsfwChecker: this.nsfwChecker,\n        faceChecker: this.faceDetector,\n        maxNumOfPhotos: this.maxNumOfPhotos,\n        enableNsfwCheck: this.enableNsfwCheck,\n        enableFaceCheck: this.enableFaceCheck,\n      };\n      this.imageCropperService\n        .openImageCropper(data)\n        .pipe(take(1))\n        .subscribe((croppedImages) => {\n          this.croppedImages = [];\n          if (!croppedImages.length) return;\n          croppedImages.forEach((image, index) =>\n            this.croppedImages.push({\n              image,\n              fileName: imageFiles[index].fileName,\n              isDark: true,\n            }),\n          );\n          this.parseUploadedImages(this.croppedImages);\n        });\n    }\n  }\n\n  private async compressImage(file: ImageModel, lastIndex: number): Promise<string> {\n    let compressedImage = await this.imageCompress.compressFile(file.image, DOC_ORIENTATION.Default, this.compressRatio, this.compressQuality);\n    if (this.imageCompress.byteCount(compressedImage) > 700000) {\n      compressedImage = await this.compressImage(\n        {\n          image: compressedImage,\n          fileName: file.fileName,\n          isDark: true,\n        },\n        lastIndex,\n      );\n    }\n    return compressedImage;\n  }\n\n  public removeImage(index: number): void {\n    if (this.photos[index]) {\n      this.photos.splice(index, 1);\n    } else {\n      this.skeletonLoaders[index] = false;\n    }\n    this.updateView();\n    this.photosDelete.emit(this.photos);\n  }\n\n  private updateView(): void {\n    this.imageBeingLoaded = this.skeletonLoaders.indexOf(true) > -1;\n    this.cdr.detectChanges();\n  }\n\n  private async parseUploadedImages(imageFiles: ImageModel[]): Promise<void> {\n    if (imageFiles?.length === 0) return;\n    let maxUploadLimit = this.photos.length >= this.maxNumOfPhotos;\n    const lastIndex = this.photos.length;\n\n    if (maxUploadLimit) {\n      this.maxUploadLimitExceeded.emit();\n      return;\n    }\n\n    for (const imageFile of imageFiles) {\n      if (lastIndex >= this.maxNumOfPhotos) {\n        maxUploadLimit = true;\n        this.maxUploadLimitExceeded.emit();\n        this.emitUploadedPhotos();\n        break;\n      } else {\n        // Show skeleton loader for the number of selected files\n        const foundImage = this.croppedImages.find((value) => value.fileName === imageFile.fileName);\n        imageFile.image = foundImage?.image || '';\n\n        if (maxUploadLimit) continue;\n        this.skeletonLoaders[lastIndex] = true;\n\n        try {\n          const compressedImg = await this.compressImage(imageFile, lastIndex);\n          this.processCompressedImage(imageFile, lastIndex, compressedImg);\n        } catch (err) {\n          this.skeletonLoaders[lastIndex] = false;\n          this.photoUploadFail.emit(imageFile.fileName);\n        }\n        this.updateView();\n      }\n    }\n\n    this.emitUploadedPhotos();\n  }\n\n  private processCompressedImage(file: ImageModel, lastIndex: number, compressedImage: string): void {\n    if (this.skeletonLoaders[lastIndex]) {\n      this.photos.push({\n        image: compressedImage,\n        fileName: file.fileName,\n        isDark: true,\n      });\n    }\n\n    this.skeletonLoaders[lastIndex] = false;\n  }\n\n  private emitUploadedPhotos(): void {\n    this.photosUpload.emit(this.photos);\n    this.imageFiles = [];\n  }\n}\n","<lib-drag-and-drop (fileRecieved)=\"handleImages($event)\">\n  <div class=\"row\">\n    <div\n      class=\"col\"\n      *ngFor=\"let skeletonLoader of skeletonLoaders; let i = index\"\n      [ngStyle]=\"{ width: 'calc(' + 100 / maxNumOfPhotos + '% - ' + (gridGap * (maxNumOfPhotos - 1)) / maxNumOfPhotos + 'px)', minWidth: '180px', flexShrink: 0 }\"\n    >\n      <canvas class=\"aspect-ratio-renderer\" [width]=\"10\" [height]=\"10 / photoAspectRatio\"></canvas>\n      <lib-image-card\n        [imageUrl]=\"photos[i]?.image || ''\"\n        [enableCropper]=\"false\"\n        [enableCompression]=\"false\"\n        [disableUploadOnClick]=\"true\"\n        (removeImage)=\"removeImage(i)\"\n        (click)=\"selectImage()\"\n      ></lib-image-card>\n    </div>\n  </div>\n</lib-drag-and-drop>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IonicModule } from '@ionic/angular';\nimport { DragAndDropModule } from '../drag-and-drop/drag-and-drop.module';\nimport { ImageCardModule } from './image-card/image-card.module';\nimport { PictureGalleryComponent } from './picture-gallery.component';\n\n@NgModule({\n  declarations: [PictureGalleryComponent],\n  imports: [CommonModule, IonicModule, MatIconModule, ImageCardModule, DragAndDropModule],\n  exports: [PictureGalleryComponent],\n})\nexport class PhotoUploadModule {}\n","import { ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject, take } from 'rxjs';\nimport { IRouteParams } from './route-params.interface';\n\n@Component({\n  selector: 'lib-preview-window',\n  templateUrl: './preview-window.component.html',\n  styleUrls: ['./preview-window.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class PreviewWindowComponent implements OnInit, OnDestroy {\n  @ViewChild('thumbnail') thumbnail!: ElementRef;\n  @ViewChild('progressBar') progressBar!: ElementRef;\n  @Input() stepWeight: number = 0;\n  @Input() routes: IRouteParams[] = [];\n  @Input() includeSteps: boolean = false;\n  @Input() includeStepsCount: boolean = false;\n  @Input() progress: number = 0;\n  @Input() availableFarthestProgress: number = 0;\n  @Input() farthestProgress: number = 0;\n  @Input() canContinue$: Observable<boolean> = new Observable<boolean>();\n  @Input() router: {\n    routeToNextPage: (user: {}, storage: boolean, url: string) => void;\n    routeBackinRegistrationFlow: (url: string) => void;\n    shouldINavigateOnClick?: (url: string) => boolean;\n    routeToPage?: (url: string) => void;\n  } = {\n    routeToNextPage: () => {},\n    routeBackinRegistrationFlow: () => {},\n  };\n\n  private el = inject(ElementRef);\n  public thumbnailUrl: string = '';\n  public displayThumbnail$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  public selectedRoute!: IRouteParams;\n  public initialStepIndex!: number;\n  private isTouchEvent = false;\n  private unsubscribeAll: Subject<void> = new Subject();\n\n  private currentRoute: string = '';\n  private currentProgress: number = 0;\n\n  private get previewTab(): Element | null {\n    return this.el.nativeElement.querySelectorAll('.preview-tab')[0];\n  }\n\n  ngOnInit(): void {\n    this.preloadThumbnails();\n  }\n\n  @HostListener('document:mouseup', ['$event'])\n  onDocumentMouseUp(event: MouseEvent): void {\n    const targetElement = event.target as HTMLElement;\n    const clickedOnProgressBar = targetElement.closest('.progress-bar');\n    const clickedOnThumbnail = targetElement.closest('.preview-wrapper');\n    const clickedOnPreviewTab = targetElement.closest('.preview-tab');\n\n    if (this.displayThumbnail$ && !clickedOnProgressBar && !clickedOnThumbnail && !clickedOnPreviewTab) {\n      this.displayThumbnail$.next(false);\n    }\n  }\n\n  private preloadThumbnails(): void {\n    this.routes.forEach((route) => {\n      if (route.previewThumbnail) {\n        const img = new Image();\n        img.src = route.previewThumbnail;\n      }\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribeAll.next();\n    this.unsubscribeAll.unsubscribe();\n  }\n\n  private getStepIndexFromTouch(event: TouchEvent): number {\n    const touchX = event.touches[0]?.clientX || event.changedTouches[0]?.clientX;\n    const progressBar = this.progressBar?.nativeElement;\n    if (progressBar) {\n      const progressBarRect = progressBar.getBoundingClientRect();\n      const totalWidth = progressBarRect.width;\n      const stepIndex = Math.floor((touchX - progressBarRect.left) / (totalWidth / this.routes.length));\n\n      return Math.max(0, Math.min(stepIndex, this.routes.length - 1));\n    }\n    return 0;\n  }\n\n  public onTouchStart(event: TouchEvent, regRoute: IRouteParams, index: number): void {\n    this.isTouchEvent = true;\n    this.initialStepIndex = this.getStepIndexFromTouch(event);\n    this.adoptElement(event, regRoute);\n  }\n\n  public onTouchMove(event: TouchEvent, regRoute: IRouteParams, index: number): void {\n    event.stopPropagation();\n    const stepIndex = this.getStepIndexFromTouch(event);\n    if (stepIndex >= 0 && stepIndex < this.routes.length) {\n      this.adoptElement(event, this.routes[stepIndex]);\n    }\n  }\n\n  public showThumbnail(event: MouseEvent | TouchEvent): void {\n    const target = event.target;\n    let offsetX: number = 0;\n\n    if (event instanceof TouchEvent) {\n      const touch = event.touches[0];\n      const progressBar = this.progressBar?.nativeElement;\n\n      if (progressBar instanceof HTMLElement) {\n        const progressBarRect = progressBar.getBoundingClientRect();\n        offsetX = touch.clientX - progressBarRect.left;\n      } else {\n        return;\n      }\n    } else if (event instanceof MouseEvent) {\n      offsetX = event.offsetX;\n    }\n\n    if (target instanceof HTMLElement) {\n      if (target.classList.contains('preview-wrapper')) {\n        return;\n      }\n\n      if (target.classList.contains('step')) {\n        const stepRect = target.getBoundingClientRect();\n        const parentNode = target.parentNode;\n\n        if (parentNode instanceof HTMLElement) {\n          offsetX = stepRect.left - parentNode.getBoundingClientRect().left;\n        }\n      }\n\n      this.displayThumbnail$.next(true);\n      this.thumbnail.nativeElement.style.left = `${offsetX}px`;\n    }\n  }\n\n  public adoptElement(event: MouseEvent | TouchEvent, selectedRoute: IRouteParams): void {\n    event.stopPropagation();\n\n    if (selectedRoute) {\n      this.selectedRoute = selectedRoute;\n      this.thumbnailUrl = selectedRoute.previewThumbnail || '';\n    }\n\n    const progressBar = this.progressBar?.nativeElement;\n    const preview = this.thumbnail.nativeElement;\n\n    if (event instanceof TouchEvent && progressBar instanceof HTMLElement) {\n      const targetElement = event.target;\n      if (targetElement instanceof HTMLElement) {\n        const progressBarRectObj = progressBar.getBoundingClientRect();\n        const progressBarRect = targetElement.getBoundingClientRect();\n        const clientX = event.changedTouches[0].clientX;\n        const offsetX = clientX - progressBarRect.left;\n        const previewTabX: number = this.previewTab?.getBoundingClientRect()?.x || 0;\n        if (!selectedRoute || clientX < previewTabX) return;\n\n        // Handles the position of the preview thumbnail based on whether the user touches the left or right edge.\n        // If it is the last step, the thumbnail aligns to the right edge; otherwise, it aligns to the left edge.\n        const isLastStep = this.initialStepIndex === this.routes.length - 1 || clientX >= progressBarRectObj.right;\n        const previewTabWidth = this.previewTab?.getBoundingClientRect()?.width || 0;\n        const previewTabOffset = previewTabWidth / 2 || 0;\n        const rightOffset = progressBarRectObj.right * -1 + progressBarRect.right + progressBarRect.width - previewTabOffset + progressBarRectObj.left;\n\n        this.thumbnail.nativeElement.style.right = isLastStep ? `${rightOffset}px` : '0';\n        this.thumbnail.nativeElement.style.left = isLastStep ? 'unset' : `${offsetX}px`;\n      }\n    } else if (event instanceof MouseEvent) {\n      this.thumbnail.nativeElement.style.left = `${event.offsetX}px`;\n    }\n\n    // Handle currentTarget safely\n    const targetElement = event.currentTarget;\n    if (targetElement instanceof HTMLElement) {\n      const parent = preview.parentNode;\n      if (parent) {\n        targetElement.appendChild(parent.removeChild(preview));\n        this.displayThumbnail$.next(true);\n      }\n    }\n  }\n\n  public onThumbnailClick() {\n    this.navigateOnClick(this.currentRoute, this.currentProgress);\n  }\n\n  public navigateOnClick(url: string, progress: number): void {\n    this.canContinue$?.pipe(take(1)).subscribe((canContinue) => {\n      const shouldNavigate = this.router.shouldINavigateOnClick ? this.router.shouldINavigateOnClick(url) : true;\n      if ((progress >= this.progress && !canContinue) || !shouldNavigate || progress >= this.farthestProgress) {\n        return;\n      }\n\n      if (progress >= this.progress) {\n        this.router.routeToNextPage({}, true, url);\n      } else {\n        this.router.routeBackinRegistrationFlow(url);\n      }\n\n      if (this.displayThumbnail$.getValue()) {\n        this.displayThumbnail$.next(false);\n      }\n    });\n  }\n\n  public navigatePreview(): void {\n    if (this.selectedRoute && this.router.shouldINavigateOnClick) {\n      this.router.shouldINavigateOnClick(this.selectedRoute.value);\n    }\n  }\n\n  public onTouchEnd(event: TouchEvent, regRoute: IRouteParams, index: number): void {\n    const stepIndex = this.getStepIndexFromTouch(event);\n    const selectedRoute = this.routes[stepIndex];\n    this.adoptElement(event, selectedRoute);\n    const progress = index;\n\n    // we get the position on Y for the touch event\n    const clientY = event.changedTouches[0].clientY;\n    // we get the position on Y for the progress bar\n    const previewTabY: number = this.previewTab?.getBoundingClientRect()?.y || 0;\n    // we create a default range if the user clicks above the preview tab\n    // in this case, 20px is the maximum the user can get above the item\n    const rangepx = 20;\n    // also, we get the height of the thumbnail element\n    // that way, if the user clicks below the preview tab\n    // he will navigate to the route since there will be a thumbnail\n    const heightThumbnail = this.thumbnail.nativeElement.offsetHeight + 16;\n\n    if (\n      // If there is a selectedRoute value associated with the current touch event's X position...\n      selectedRoute?.value &&\n      // ...and if the Y position of the touch event is within the rangepx and heightThumbnail of the preview tab...\n      clientY <= previewTabY + heightThumbnail &&\n      clientY >= previewTabY - rangepx\n    ) {\n      this.currentRoute = selectedRoute.key;\n      this.currentProgress = progress;\n    }\n  }\n\n  public navigateOnClickSubRoute(event: MouseEvent, url: string): void {\n    event.stopPropagation();\n\n    this.canContinue$?.pipe(take(1)).subscribe((canContinue) => {\n      const shouldNavigate = this.router.shouldINavigateOnClick ? this.router.shouldINavigateOnClick(url) : true;\n      if (!canContinue || !shouldNavigate) {\n        return;\n      }\n\n      if (this.router.routeToPage) {\n        this.router.routeToPage(url);\n      }\n    });\n  }\n\n  public subRouteMouseMove(event: MouseEvent | TouchEvent): void {\n    event.stopPropagation();\n  }\n\n  public onClick(event: MouseEvent, key: string, weight: number): void {\n    if (this.isTouchEvent) {\n      this.isTouchEvent = false;\n      event.preventDefault();\n      return;\n    }\n\n    this.currentRoute = key;\n    this.currentProgress = weight;\n  }\n}\n","<div [ngStyle]=\"{ width: includeStepsCount ? '80%' : '100%' }\" class=\"wrapper-bar\">\n  <div class=\"progress-bar\" #progressBar>\n    <div class=\"disabled-progress-inside\" [style.width.%]=\"farthestProgress\"></div>\n    <div class=\"progress-inside\" [style.width.%]=\"availableFarthestProgress\"></div>\n    <span class=\"glow\" [style.width.%]=\"progress\"></span>\n  </div>\n  <div class=\"preview-tab\">\n    <ng-container *ngFor=\"let regRoute of routes; let i = index\">\n      <div\n        [ngClass]=\"{\n          preview: true,\n          completed: farthestProgress > i * stepWeight,\n          visited: availableFarthestProgress >= i * stepWeight,\n          disabled: farthestProgress >= i * stepWeight,\n        }\"\n        (click)=\"onClick($event, regRoute.key, i * stepWeight)\"\n        (mouseenter)=\"adoptElement($event, regRoute)\"\n        (mousemove)=\"showThumbnail($event)\"\n        (touchstart)=\"onTouchStart($event, regRoute, i)\"\n        (touchmove)=\"onTouchMove($event, regRoute, i)\"\n        (touchend)=\"onTouchEnd($event, regRoute, i)\"\n        [style.width.%]=\"stepWeight\"\n      >\n        <div class=\"hover-extension\"></div>\n        @if (includeSteps && regRoute.stepStart) {\n          <div class=\"step\" [ngClass]=\"{ 'empty-circle': progress <= i * stepWeight }\"></div>\n        }\n      </div>\n    </ng-container>\n    <ng-template #borderRectTemplate>\n      <div class=\"border-rect rect-1\"></div>\n      <div class=\"border-rect rect-2\"></div>\n      <div class=\"border-rect rect-3\"></div>\n      <div class=\"border-rect rect-4\"></div>\n    </ng-template>\n    <div class=\"preview-wrapper\" (click)=\"onThumbnailClick()\" [ngClass]=\"{ 'display-thumbnail': displayThumbnail$ | async }\" #thumbnail (touchstart)=\"navigatePreview()\">\n      <div class=\"tooltip-sign\">\n        <ng-container *ngTemplateOutlet=\"borderRectTemplate\"></ng-container>\n      </div>\n      @if (selectedRoute && !selectedRoute.subRoutes) {\n        <div class=\"preview-image-wrapper\">\n          <img [src]=\"thumbnailUrl\" class=\"component\" alt=\"preview-img\" />\n          <ng-container *ngTemplateOutlet=\"borderRectTemplate\"></ng-container>\n        </div>\n      }\n      @if (selectedRoute && selectedRoute.subRoutes && selectedRoute.subRoutes.length > 0) {\n        <div class=\"preview-image-wrapper\">\n          <ul class=\"sub-routes\">\n            <li\n              *ngFor=\"let subRoute of selectedRoute.subRoutes\"\n              (mousemove)=\"subRouteMouseMove($event)\"\n              (touchmove)=\"subRouteMouseMove($event)\"\n              (click)=\"navigateOnClickSubRoute($event, subRoute.value)\"\n            >\n              <div class=\"step empty-circle sub-route-step\"></div>\n              {{ subRoute.pageTitle | translate }}\n            </li>\n          </ul>\n          <ng-container *ngTemplateOutlet=\"borderRectTemplate\"></ng-container>\n        </div>\n      }\n    </div>\n  </div>\n</div>\n@if (includeStepsCount) {\n  <div class=\"step-count\">\n    <span>{{ 'PROGRESSBAR.STEP' | translate }} {{ progress / stepWeight | round }}/{{ 100 / stepWeight | round }} </span>\n  </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PipeModule } from '../../pipes/pipe.module';\nimport { PreviewWindowComponent } from './preview-window.component';\n\n@NgModule({\n  declarations: [PreviewWindowComponent],\n  imports: [CommonModule, TranslateModule, PipeModule],\n  exports: [PreviewWindowComponent],\n})\nexport class PreviewWindowModule {}\n","import { Component, Input } from '@angular/core';\nimport { ProfileHeaderOrientation } from '../../enums/orientation.enum';\n\n@Component({\n  selector: 'lib-profile-header',\n  templateUrl: './profile-header.component.html',\n  styleUrls: ['./profile-header.component.scss'],\n  standalone: false,\n})\nexport class ProfileHeaderComponent {\n  @Input() photo: string = '';\n  @Input() name: string = '';\n  @Input() leftIcon: any = null;\n  @Input() rightIcon: any = null;\n  @Input() leftText: string = '';\n  @Input() rightText: string = '';\n  @Input() orientation: string = ProfileHeaderOrientation.horizontal;\n}\n","<div [class]=\"'profile profile-' + orientation\">\n  <div class=\"profile-photo\">\n    <img [class]=\"'profile-photo-' + orientation\" [src]=\"photo\" />\n  </div>\n  <div class=\"profile-bottom-container\">\n    <span [class]=\"'name-' + orientation + ' f-calistoga f-w-400 h-160 f-white '\">{{ name }}</span>\n    <div [class]=\"'p-icon-text p-icon-text-' + orientation\">\n      <div [class]=\"'icon-container' + ' icon-container-' + orientation\">\n        <ion-icon [src]=\"leftIcon\"></ion-icon>\n        <span class=\"f-calistoga f-w-400 f-sm h-160 f-dark\">{{ leftText }}</span>\n      </div>\n      <div class=\"icon-container\">\n        <ion-icon [src]=\"rightIcon\"></ion-icon>\n        <span class=\"f-calistoga f-w-400 f-sm h-160 f-dark\">{{ rightText }}</span>\n      </div>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { ProfileHeaderComponent } from './profile-header.component';\n\n@NgModule({\n  declarations: [ProfileHeaderComponent],\n  imports: [CommonModule, IonicModule],\n  exports: [ProfileHeaderComponent],\n})\nexport class ProfileHeaderModule {}\n","import { AfterViewChecked, ChangeDetectionStrategy, Component, ElementRef, Input, NgZone, OnChanges, OnDestroy, SimpleChanges, ViewChild } from '@angular/core';\n\nimport { IMasonrySize } from './masonry-container.interface';\n\ninterface BricksInstance {\n  pack(): BricksInstance;\n  update(): BricksInstance;\n  resize(flag?: boolean): BricksInstance;\n}\n\nconst DEFAULT_SIZES: IMasonrySize[] = [\n  { columns: 1, gutter: 16 },\n  { mq: '768px', columns: 2, gutter: 24 },\n  { mq: '1280px', columns: 3, gutter: 24 },\n];\n\n@Component({\n  selector: 'lib-masonry-container',\n  templateUrl: './masonry-container.component.html',\n  styleUrls: ['./masonry-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class LibMasonryContainerComponent implements AfterViewChecked, OnChanges, OnDestroy {\n  @ViewChild('container', { static: true }) containerRef!: ElementRef<HTMLElement>;\n\n  @Input() sizes: IMasonrySize[] = DEFAULT_SIZES;\n  @Input() repackTrigger: unknown;\n\n  private bricksInstance: BricksInstance | null = null;\n  private resizeObserver: ResizeObserver | null = null;\n  private childResizeObserver: ResizeObserver | null = null;\n  private mutationObserver: MutationObserver | null = null;\n  private needsRepack = false;\n  private lastItemCount = 0;\n  private childResizeRaf: number | null = null;\n\n  constructor(private zone: NgZone) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['sizes'] || changes['repackTrigger']) {\n      this.needsRepack = true;\n    }\n  }\n\n  ngAfterViewChecked(): void {\n    const container = this.containerRef?.nativeElement;\n    if (!container) return;\n\n    const currentCount = container.children.length;\n    if (currentCount !== this.lastItemCount || this.needsRepack) {\n      this.lastItemCount = currentCount;\n      this.needsRepack = false;\n      this.schedulePack();\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.childResizeRaf != null) cancelAnimationFrame(this.childResizeRaf);\n    this.resizeObserver?.disconnect();\n    this.childResizeObserver?.disconnect();\n    this.mutationObserver?.disconnect();\n    this.bricksInstance?.resize(false);\n    this.bricksInstance = null;\n  }\n\n  private async initBricks(): Promise<void> {\n    const container = this.containerRef?.nativeElement;\n    if (!container || this.bricksInstance) return;\n\n    this.setCardWidths(container);\n\n    // @ts-ignore bricks.js ships without type declarations\n    const bricksModule = await import('bricks.js');\n    const createBricks = bricksModule.default || bricksModule;\n    this.bricksInstance = (createBricks as Function)({\n      container,\n      packed: 'data-packed',\n      sizes: this.sizes,\n      position: true,\n    }) as BricksInstance;\n\n    this.bricksInstance.resize(true);\n\n    this.zone.runOutsideAngular(() => {\n      this.resizeObserver = new ResizeObserver(() => {\n        this.setCardWidths(container);\n        this.bricksInstance?.pack();\n      });\n      this.resizeObserver.observe(container);\n\n      const childResizeObserver = new ResizeObserver(() => {\n        if (this.childResizeRaf != null) cancelAnimationFrame(this.childResizeRaf);\n        this.childResizeRaf = requestAnimationFrame(() => {\n          this.childResizeRaf = null;\n          this.setCardWidths(container);\n          this.bricksInstance?.pack();\n        });\n      });\n      const observeChildren = () => {\n        Array.from(container.children).forEach((child) => childResizeObserver.observe(child as Element));\n      };\n      observeChildren();\n      const mo = new MutationObserver(() => observeChildren());\n      mo.observe(container, { childList: true });\n      this.childResizeObserver = childResizeObserver;\n      this.mutationObserver = mo;\n    });\n  }\n\n  private schedulePack(): void {\n    const container = this.containerRef?.nativeElement;\n    if (!container) return;\n\n    if (!this.bricksInstance) {\n      this.initBricks().then(() => {\n        this.setCardWidths(container);\n        requestAnimationFrame(() => this.bricksInstance?.pack());\n      });\n      return;\n    }\n\n    this.setCardWidths(container);\n    requestAnimationFrame(() => {\n      this.bricksInstance?.pack();\n    });\n  }\n\n  private setCardWidths(container: HTMLElement): void {\n    const size = this.getCurrentSize();\n    const parentWidth = container.parentElement?.clientWidth || container.clientWidth;\n    const cardWidth = Math.floor((parentWidth - (size.columns - 1) * size.gutter) / size.columns);\n\n    Array.from(container.children).forEach((child: Element) => {\n      (child as HTMLElement).style.width = `${cardWidth}px`;\n      (child as HTMLElement).style.setProperty('--card-container-width', cardWidth + 'px');\n    });\n  }\n\n  private getCurrentSize(): IMasonrySize {\n    const reversed = [...this.sizes].reverse();\n    const matched = reversed.find((s) => s.mq && window.matchMedia(`(min-width: ${s.mq})`).matches);\n    return matched || reversed[reversed.length - 1];\n  }\n}\n","<div #container class=\"masonry-container\">\n  <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LibMasonryContainerComponent } from './masonry-container.component';\n\n@NgModule({\n  declarations: [LibMasonryContainerComponent],\n  imports: [CommonModule],\n  exports: [LibMasonryContainerComponent],\n})\nexport class LibMasonryContainerModule {}\n","import { Injectable } from '@angular/core';\n\nconst STORAGE_PREFIX = 'cyrano_scroll:';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollPositionService {\n  private positions = new Map<string, number>();\n  private _isBack = false;\n\n  save(url: string, scrollTop: number): void {\n    this.positions.set(url, scrollTop);\n    try {\n      localStorage.setItem(STORAGE_PREFIX + url, String(scrollTop));\n    } catch {\n      // Storage quota exceeded — best-effort only\n    }\n  }\n\n  get(url: string): number | undefined {\n    const inMemory = this.positions.get(url);\n    if (inMemory !== undefined) return inMemory;\n    // Fall back to localStorage so position survives page refresh\n    try {\n      const stored = localStorage.getItem(STORAGE_PREFIX + url);\n      if (stored !== null) {\n        const value = parseInt(stored, 10);\n        if (!isNaN(value) && value > 0) {\n          this.positions.set(url, value);\n          return value;\n        }\n      }\n    } catch {\n      // ignore\n    }\n    return undefined;\n  }\n\n  clear(url: string): void {\n    this.positions.delete(url);\n    try {\n      localStorage.removeItem(STORAGE_PREFIX + url);\n    } catch {\n      /* ignore */\n    }\n  }\n\n  clearAll(): void {\n    this.positions.clear();\n    try {\n      Object.keys(localStorage)\n        .filter((k) => k.startsWith(STORAGE_PREFIX))\n        .forEach((k) => localStorage.removeItem(k));\n    } catch {\n      /* ignore */\n    }\n  }\n\n  markBackNavigation(): void {\n    this._isBack = true;\n  }\n\n  clearBackNavigation(): void {\n    this._isBack = false;\n  }\n\n  get isBack(): boolean {\n    return this._isBack;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nconst SEARCH_BAR_VISIBLE_KEY = 'searchBarVisible';\n\nfunction loadSearchBarVisible(): boolean {\n  try {\n    const stored = localStorage.getItem(SEARCH_BAR_VISIBLE_KEY);\n    if (stored !== null) {\n      return JSON.parse(stored) === true;\n    }\n  } catch {\n    // localStorage unavailable\n  }\n  // Default: hidden (user preference is \"hide search\" checked by default)\n  return false;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SearchBarVisibilityService {\n  readonly visible$ = new BehaviorSubject<boolean>(loadSearchBarVisible());\n\n  toggle(): void {\n    this.visible$.next(!this.visible$.value);\n  }\n\n  setVisible(visible: boolean): void {\n    this.visible$.next(visible);\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n  selector: 'lib-tab-menu',\n  templateUrl: './tab-menu.component.html',\n  styleUrls: ['./tab-menu.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class LibTabMenuComponent {\n  @Input() items: MenuItem[] = [];\n  @Input() activeItem!: MenuItem;\n  @Input() stretchTabs: boolean = true;\n  @Input() disablePagination: boolean = false;\n  @Output() activeItemChange: EventEmitter<MenuItem> = new EventEmitter<MenuItem>();\n\n  public activeItemChanged(item: MenuItem): void {\n    this.activeItem = item;\n    this.activeItemChange.emit(item);\n  }\n}\n","<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\" [disablePagination]=\"disablePagination\">\n  @for (item of items; track item) {\n    <a mat-tab-link [class.unstretch-tab]=\"!stretchTabs\" (click)=\"activeItemChanged(item)\" [active]=\"activeItem === item\">\n      {{ item['translateKey'] ? (item['translateKey'] | translate) : item.label }}\n    </a>\n  }\n</nav>\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  AfterViewInit,\n} from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { Subject, filter, takeUntil } from 'rxjs';\nimport { IFilterDataRequest } from '../../model/filter-data-request';\nimport { GridFilterService } from '../grid-filters/services/grid-filter.service';\nimport { IPageLayoutFilterChip } from './page-layout-filter-chip.interface';\nimport { ScrollPositionService } from './scroll-position.service';\nimport { SearchBarVisibilityService } from './search-bar-visibility.service';\n\n/**\n * DEV NOTES:\n * - `GridFilterService.activeFilter` is a BehaviorSubject — tests must provide a mock\n *   with `activeFilter: new BehaviorSubject(null)` or the ngOnInit subscription crashes.\n * - Use `fixture.componentRef.setInput(...)` instead of direct property assignment so\n *   that `ngOnChanges` fires properly in tests.\n * - The `filterApplied` output was typed as `EventEmitter<any>` — now uses\n *   `EventEmitter<IFilterDataRequest>` for type safety.\n */\n@Component({\n  selector: 'lib-page-layout',\n  templateUrl: './page-layout.component.html',\n  styleUrls: ['./page-layout.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class LibPageLayoutComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n  @Input() tabs: MenuItem[] = [];\n  @Input() activeTab!: MenuItem;\n  @Input() showSearch = false;\n  @Input() searchPlaceholder = 'Search';\n  @Input() searchIcon = '';\n  @Input() filters: IPageLayoutFilterChip[] = [];\n  @Input() activeFilter = '';\n  @Input() stretchTabs = false;\n  @Input() disablePagination = true;\n  @Input() centerTabs = false;\n\n  @Output() activeTabChange = new EventEmitter<MenuItem>();\n  @Output() searchStringChange = new EventEmitter<string>();\n  @Output() filterApplied = new EventEmitter<IFilterDataRequest>();\n  @Output() filterChange = new EventEmitter<string>();\n\n  @ViewChild('scrollContent', { static: false }) scrollContent?: ElementRef<HTMLElement>;\n\n  private destroy$ = new Subject<void>();\n\n  effectiveShowSearch = false;\n\n  constructor(\n    private gridFilterService: GridFilterService,\n    private cdr: ChangeDetectorRef,\n    private router: Router,\n    private scrollPositionService: ScrollPositionService,\n    private searchBarVisibility: SearchBarVisibilityService,\n  ) {}\n\n  ngOnInit(): void {\n    this.effectiveShowSearch = this.showSearch && this.searchBarVisibility.visible$.value;\n\n    this.searchBarVisibility.visible$.pipe(takeUntil(this.destroy$)).subscribe((globallyVisible) => {\n      this.effectiveShowSearch = this.showSearch && globallyVisible;\n      this.cdr.markForCheck();\n    });\n\n    this.gridFilterService.activeFilter.pipe(takeUntil(this.destroy$)).subscribe((active: IFilterDataRequest | null) => {\n      if (!active?.projectGridFilterId) return;\n      const chip = this.filters.find((f) => f.value === active.projectGridFilterId);\n      if (chip && this.activeFilter !== chip.value) {\n        this.activeFilter = chip.value;\n        this.filterChange.emit(chip.value);\n        this.cdr.markForCheck();\n      }\n    });\n\n    this.router.events\n      .pipe(\n        filter((e): e is NavigationStart => e instanceof NavigationStart),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((event) => {\n        const el = this.scrollContent?.nativeElement;\n        if (el) {\n          this.scrollPositionService.save(this.router.url, el.scrollTop);\n        }\n        if (event.navigationTrigger === 'popstate') {\n          this.scrollPositionService.markBackNavigation();\n        }\n      });\n\n    this.router.events\n      .pipe(\n        filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((event) => {\n        this.scrollPositionService.clearBackNavigation();\n        // Restore on any navigation — covers back AND page refresh via localStorage fallback\n        const saved = this.scrollPositionService.get(event.urlAfterRedirects);\n        if (saved !== undefined && saved > 0) {\n          setTimeout(() => {\n            const el = this.scrollContent?.nativeElement;\n            if (el) {\n              el.scrollTop = saved;\n              this.cdr.markForCheck();\n            }\n          }, 150);\n        }\n      });\n  }\n\n  ngAfterViewInit(): void {\n    // Also restore on initial component mount (handles page refresh case)\n    const saved = this.scrollPositionService.get(this.router.url);\n    if (saved !== undefined && saved > 0) {\n      setTimeout(() => {\n        const el = this.scrollContent?.nativeElement;\n        if (el) {\n          el.scrollTop = saved;\n          this.cdr.markForCheck();\n        }\n      }, 200);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['filters'] || changes['activeFilter']) {\n      this.registerStandardFilters();\n    }\n    if (changes['showSearch']) {\n      this.effectiveShowSearch = this.showSearch && this.searchBarVisibility.visible$.value;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  onTabChange(item: MenuItem): void {\n    this.activeTab = item;\n    this.activeTabChange.emit(item);\n  }\n\n  onSearchStringChange(query: string): void {\n    this.searchStringChange.emit(query);\n  }\n\n  onFilterApplied(filterData: IFilterDataRequest): void {\n    if (filterData?.projectGridFilterId) {\n      const chip = this.filters.find((f) => f.value === filterData.projectGridFilterId);\n      if (chip && this.activeFilter !== chip.value) {\n        this.activeFilter = chip.value;\n        this.filterChange.emit(chip.value);\n        this.cdr.markForCheck();\n      }\n    }\n    this.filterApplied.emit(filterData);\n  }\n\n  onFilterSelect(value: string): void {\n    this.filterChange.emit(value);\n  }\n\n  private registerStandardFilters(): void {\n    if (!this.filters.length) return;\n    this.gridFilterService.standardFilters = this.filters.map((chip) => ({\n      name: chip.label,\n      projectGridFilterId: chip.value,\n      userFilters: [],\n    }));\n    if (this.activeFilter) {\n      this.gridFilterService.applyUserFilter(this.activeFilter, true);\n    }\n  }\n}\n","<div class=\"page-layout-outer\">\r\n  <div class=\"page-layout-nav\">\r\n    @if (tabs.length) {\r\n      <div class=\"tab-section\" libDraggableScroll [initialCenter]=\"centerTabs\">\r\n        <lib-tab-menu\r\n          class=\"layout-tab-menu\"\r\n          [items]=\"tabs\"\r\n          [activeItem]=\"activeTab\"\r\n          [stretchTabs]=\"stretchTabs\"\r\n          [disablePagination]=\"disablePagination\"\r\n          (activeItemChange)=\"onTabChange($event)\"\r\n        ></lib-tab-menu>\r\n      </div>\r\n    }\r\n\r\n    <div class=\"filter-bar-section\" [class.filter-visible]=\"effectiveShowSearch\" [class.filter-hidden]=\"!effectiveShowSearch\">\r\n      <lib-filter-bar (searchStringChange)=\"onSearchStringChange($event)\" (applyFilter)=\"onFilterApplied($event)\"></lib-filter-bar>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"page-layout-content\" #scrollContent>\r\n    <ng-content></ng-content>\r\n  </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TabsModule } from 'primeng/tabs';\nimport { LibTabMenuComponent } from './tab-menu.component';\n\n@NgModule({\n  declarations: [LibTabMenuComponent],\n  imports: [CommonModule, TabsModule, MatTabsModule, MatButtonModule, TranslateModule],\n  exports: [LibTabMenuComponent],\n})\nexport class LibTabMenuModule {}\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { DirectiveModule } from '../../directives/directive.module';\r\nimport { GridFiltersModule } from '../grid-filters/grid-filters.module';\r\nimport { LibTabMenuModule } from '../tab-menu/tab-menu.module';\r\nimport { LibPageLayoutComponent } from './page-layout.component';\r\n\r\n@NgModule({\r\n  declarations: [LibPageLayoutComponent],\r\n  imports: [CommonModule, RouterModule, DirectiveModule, LibTabMenuModule, GridFiltersModule],\r\n  exports: [LibPageLayoutComponent],\r\n})\r\nexport class LibPageLayoutModule {}\r\n","/** Route `data` keys used by insights routing. */\r\nexport const INSIGHTS_ROUTE_DATA = {\r\n  MATCHER_INSIGHTS: 'matcherInsights',\r\n} as const;\r\n","/** Default filter chip values for the insights page-layout strip. */\r\nexport enum InsightsFilterChipValue {\r\n  All = 'All',\r\n  New = 'New',\r\n  Active = 'Active',\r\n}\r\n","export enum InsightsViewTab {\n  Requests = 'requests',\n  Matchers = 'matchers',\n  Prospects = 'prospects',\n}\n","export enum InsightsViewType {\n  GRID = 'grid',\n  CONTENT = 'content',\n}\n","export enum MacherInsightsViewTab {\n  Requests = 'requests',\n  Clients = 'clients',\n  Prospects = 'prospects',\n}\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { IInsightsIcons } from '../_interfaces/i-insights-icons.interface';\r\nimport { PaginationResponse } from '../_interfaces/pagination-response.model';\r\nimport { IDashboardClientRequest } from '../_interfaces/client-request.interface';\r\nimport { IDashboardClientMatcher } from '../_interfaces/client-matcher.interface';\r\nimport { IDashboardClientProspect } from '../_interfaces/client-prospects.interface';\r\nimport { IDashboardMatcherClient } from '../_interfaces/matcher-client.interface';\r\n\r\n@Injectable()\r\nexport abstract class InsightsDataBridge {\r\n  abstract readonly icons: IInsightsIcons;\r\n\r\n  abstract readonly requests$: BehaviorSubject<PaginationResponse<IDashboardClientRequest>>;\r\n  abstract readonly matchers$: BehaviorSubject<PaginationResponse<IDashboardClientMatcher>>;\r\n  abstract readonly prospects$: BehaviorSubject<PaginationResponse<IDashboardClientProspect>>;\r\n  abstract readonly clients$: BehaviorSubject<PaginationResponse<IDashboardMatcherClient>>;\r\n\r\n  abstract initialize(matcherInsights: boolean, destroy$: Observable<void>, initialTab?: string): void;\r\n\r\n  abstract fetchTabData(tab: string, matcherInsights: boolean, params?: { searchText: string; page?: number }): void;\r\n\r\n  abstract updateLayout(matcherInsights: boolean): void;\r\n\r\n  abstract showError(title: string, message: string): void;\r\n\r\n  abstract onDataLoaded(callback: () => void): void;\r\n}\r\n\r\nexport type { IInsightsIcons } from '../_interfaces/i-insights-icons.interface';\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MenuItem } from 'primeng/api';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { FormFieldType } from '../../enums/form-field-type';\nimport { IFilterDataRequest } from '../../model/filter-data-request';\nimport { IFilterDefinition } from '../../model/filter-definition';\nimport { ILibMenuItem } from '../../model/lib-menu-item';\nimport { SelectOption } from '../../model/select-option';\nimport { IPageLayoutFilterChip } from '../page-layout/page-layout-filter-chip.interface';\nimport { GridFilterService } from '../grid-filters/services/grid-filter.service';\nimport { PaginationResponse } from './_interfaces/pagination-response.model';\nimport { INSIGHTS_ROUTE_DATA } from './_constants/insights-route-data.constant';\nimport { InsightsFilterChipValue } from './_enums/insights-filter-chip.enum';\nimport { InsightsViewTab } from './_enums/insights-tab.enum';\nimport { InsightsViewType } from './_enums/insights-view.enum';\nimport { MacherInsightsViewTab } from './_enums/matcher-insights-tab.enum';\nimport { IInsightsIcons } from './_interfaces/i-insights-icons.interface';\nimport { IInsightsTabMenuItem } from './_interfaces/i-insights-tab-menu-item.interface';\nimport { IDashboardClientMatcher } from './_interfaces/client-matcher.interface';\nimport { IDashboardClientProspect } from './_interfaces/client-prospects.interface';\nimport { IDashboardClientRequest } from './_interfaces/client-request.interface';\nimport { IDashboardMatcherClient } from './_interfaces/matcher-client.interface';\nimport { InsightsDataBridge } from './_services/insights-data-bridge';\n\n/**\n * DEV NOTES:\n * - The real template's `lib-menu-btn [onlyCloseOnClickOutside]` binding causes NG0306\n *   (unknown property) under Jest/jsdom. Tests must use a template override that drops\n *   this binding while keeping `lib-page-layout`, `router-outlet`, and `#` template refs\n *   so ViewChild/ngAfterViewInit/menuItems still work.\n * - `InsightsDataBridge.onDataLoaded` is async — it calls `cb()` after a microtask.\n *   Tests need `await fixture.whenStable()` after triggering it.\n * - The icons object was typed as `any` which hid missing icon keys at compile time.\n *   Now typed as `IInsightsIcons` in the _interfaces folder.\n */\n@Component({\n  selector: 'lib-insights',\n  templateUrl: './insights.component.html',\n  styleUrls: ['./insights.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class LibInsightsComponent implements OnInit, AfterViewInit, OnDestroy {\n  @ViewChild('insightGridViewMenuItem') insightGridViewMenuItem!: TemplateRef<HTMLElement>;\n  @ViewChild('insightContentViewMenuItem') insightContentViewMenuItem!: TemplateRef<HTMLElement>;\n  @ViewChild('insightsearchMenu') insightsearchMenu!: TemplateRef<HTMLElement>;\n\n  @Input() matcherInsights = false;\n\n  public INSIGHTS_VIEW_TYPES: typeof InsightsViewType = InsightsViewType;\n  public selectedViewType: InsightsViewType = InsightsViewType.CONTENT;\n  public selectedTab!: IInsightsTabMenuItem;\n  public icons!: IInsightsIcons;\n  public expanded = true;\n  public insightsTabItems: IInsightsTabMenuItem[] = [];\n  public menuItemFormControl: FormControl<InsightsViewType> = new FormControl(InsightsViewType.CONTENT) as FormControl<InsightsViewType>;\n  public toggleSearchFormControl: FormControl<boolean> = new FormControl(false) as FormControl<boolean>;\n  public menuItemCheckboxType: FormFieldType = FormFieldType.checkbox;\n  public menuItemRadioType: FormFieldType = FormFieldType.radio;\n  public menuItemOptions: SelectOption<InsightsViewType>[] = [];\n  public menuItems: ILibMenuItem[] = [];\n  public requests$: BehaviorSubject<PaginationResponse<IDashboardClientRequest>>;\n  public matchers$: BehaviorSubject<PaginationResponse<IDashboardClientMatcher>>;\n  public prospects$: BehaviorSubject<PaginationResponse<IDashboardClientProspect>>;\n  public clients$: BehaviorSubject<PaginationResponse<IDashboardMatcherClient>>;\n  public loading = false;\n  public searchText = '';\n\n  public filterChips: IPageLayoutFilterChip[] = [\n    { label: 'All', value: InsightsFilterChipValue.All },\n    { label: 'New', value: InsightsFilterChipValue.New },\n    { label: 'Active', value: InsightsFilterChipValue.Active },\n  ];\n  public activeFilter: string = InsightsFilterChipValue.All;\n\n  private componentDestroyed$ = new Subject<void>();\n\n  constructor(\n    private bridge: InsightsDataBridge,\n    private translateService: TranslateService,\n    private cdr: ChangeDetectorRef,\n    private router: Router,\n    private route: ActivatedRoute,\n    private gridFilterService: GridFilterService,\n  ) {\n    this.requests$ = this.bridge.requests$;\n    this.matchers$ = this.bridge.matchers$;\n    this.prospects$ = this.bridge.prospects$;\n    this.clients$ = this.bridge.clients$;\n  }\n\n  ionViewWillEnter(): void {\n    this.bridge.updateLayout(this.matcherInsights);\n  }\n\n  ngOnInit(): void {\n    this.icons = this.bridge.icons;\n\n    if (!this.matcherInsights) {\n      this.matcherInsights = this.route.snapshot.data?.[INSIGHTS_ROUTE_DATA.MATCHER_INSIGHTS] ?? false;\n    }\n\n    this.insightsTabItems = (this.matcherInsights ? Object.values(MacherInsightsViewTab) : Object.values(InsightsViewTab)).map((value) => ({\n      label: value,\n      translateKey: 'CLIENT.DASHBOARD.' + value.toUpperCase(),\n      value,\n    }));\n\n    const childPath = this.route.firstChild?.snapshot?.url[0]?.path;\n    const matchingTab = childPath ? this.insightsTabItems.find((t) => t.value === childPath) : undefined;\n    this.selectedTab = matchingTab ?? this.insightsTabItems[0];\n\n    this.menuItemOptions = Object.values<InsightsViewType>(InsightsViewType).map((value) => ({ label: '', value }));\n\n    this.registerFilterDefinitions();\n    this.loading = true;\n    this.bridge.initialize(this.matcherInsights, this.componentDestroyed$.asObservable(), this.selectedTab.value);\n    this.bridge.onDataLoaded(() => {\n      this.loading = false;\n      this.cdr.detectChanges();\n    });\n  }\n\n  ngAfterViewInit(): void {\n    this.menuItems = [\n      { templateRef: this.insightGridViewMenuItem, command: () => this.onInsightViewMenuClick(this.INSIGHTS_VIEW_TYPES.GRID) },\n      { templateRef: this.insightContentViewMenuItem, separator: true, command: () => this.onInsightViewMenuClick(this.INSIGHTS_VIEW_TYPES.CONTENT) },\n      { templateRef: this.insightsearchMenu, command: () => this.toggleSearchForm() },\n    ];\n  }\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  public onTabChangeFromLayout(item: MenuItem): void {\n    const tab = item as IInsightsTabMenuItem;\n    this.selectedTab = tab;\n    this.router.navigate([tab.value], { relativeTo: this.route });\n    this.loading = true;\n    this.cdr.markForCheck();\n    this.bridge.fetchTabData(tab.value, this.matcherInsights);\n  }\n\n  public onInsightViewMenuClick(insightViewType: InsightsViewType): void {\n    if (insightViewType === this.INSIGHTS_VIEW_TYPES.CONTENT) {\n      this.expanded = true;\n    }\n    this.menuItemFormControl.setValue(insightViewType, { emitEvent: false });\n  }\n\n  public toggleSearchForm(): void {\n    this.toggleSearchFormControl.setValue(!this.toggleSearchFormControl.value, { emitEvent: true });\n    this.cdr.detectChanges();\n  }\n\n  public onClickInsightMenu(event: MouseEvent): void {\n    event.stopPropagation();\n  }\n\n  public updateTabData(event: { searchText: string; page?: number }): void {\n    this.searchText = event.searchText;\n    this.loading = true;\n    this.cdr.detectChanges();\n    this.bridge.fetchTabData(this.selectedTab.value, this.matcherInsights, event);\n  }\n\n  public onFilterApplied(_filter: IFilterDataRequest): void {}\n\n  public onFilterChange(value: string): void {\n    this.activeFilter = value;\n  }\n\n  private registerFilterDefinitions(): void {\n    const definitions: IFilterDefinition[] = [\n      {\n        publicFieldName: 'name',\n        label: 'Name',\n        displayedToUser: true,\n        filterCriterias: [\n          {\n            operator: { label: 'Contains', value: 'Contains' },\n            filterParameters: [\n              {\n                label: 'Value',\n                initialValue: '',\n                controlType: 'Text',\n                apiQueryUrl: '',\n                values: [],\n              },\n            ],\n          },\n        ],\n      },\n      {\n        publicFieldName: 'status',\n        label: 'Status',\n        displayedToUser: true,\n        filterCriterias: [\n          {\n            operator: { label: 'Contains', value: 'Contains' },\n            filterParameters: [\n              {\n                label: 'Value',\n                initialValue: '',\n                controlType: 'Text',\n                apiQueryUrl: '',\n                values: [],\n              },\n            ],\n          },\n        ],\n      },\n    ];\n\n    this.gridFilterService.filterDefinitions = definitions;\n    this.gridFilterService.getGridFilterDefinations();\n  }\n}\n","<lib-page-layout\r\n  [tabs]=\"insightsTabItems\"\r\n  [activeTab]=\"selectedTab\"\r\n  [showSearch]=\"true\"\r\n  searchPlaceholder=\"Search\"\r\n  [filters]=\"filterChips\"\r\n  [activeFilter]=\"activeFilter\"\r\n  [stretchTabs]=\"true\"\r\n  [disablePagination]=\"true\"\r\n  [centerTabs]=\"true\"\r\n  (activeTabChange)=\"onTabChangeFromLayout($event)\"\r\n  (searchStringChange)=\"updateTabData({ searchText: $event })\"\r\n  (filterApplied)=\"onFilterApplied($event)\"\r\n  (filterChange)=\"onFilterChange($event)\"\r\n>\r\n  <div class=\"insights-toolbar\">\r\n    <div class=\"header-text\">{{ menuItemFormControl.value }} {{ 'CLIENT.DASHBOARD.VIEW' | translate }}</div>\r\n    <span class=\"spacer\"></span>\r\n    @if (menuItems) {\r\n      <lib-menu-btn\r\n        (click)=\"onClickInsightMenu($event)\"\r\n        [onlyCloseOnClickOutside]=\"true\"\r\n        [menuBtnImgUrl]=\"icons.common?.dotMenu ?? ''\"\r\n        [menuBtnIcon]=\"true\"\r\n        [menuItems]=\"menuItems\"\r\n      ></lib-menu-btn>\r\n    }\r\n  </div>\r\n\r\n  <router-outlet></router-outlet>\r\n</lib-page-layout>\r\n\r\n<ng-template #insightsearchMenu>\r\n  <label class=\"insights-3dot-menu__option\" type=\"checkbox\">\r\n    <img [src]=\"icons.dashboard?.insights?.searchTool\" alt=\"'search-icon'\" />\r\n    <div class=\"option-text\">{{ 'CLIENT.DASHBOARD.SEARCH' | translate }}</div>\r\n    <lib-form-field class=\"option-input checkbox\" [type]=\"menuItemCheckboxType\" [formFieldControl]=\"toggleSearchFormControl\"></lib-form-field>\r\n  </label>\r\n</ng-template>\r\n\r\n<ng-template #insightGridViewMenuItem>\r\n  <div class=\"insights-3dot-menu__option\">\r\n    <img [src]=\"icons.dashboard?.insights?.grid\" alt=\"'grid-icon'\" />\r\n    <div class=\"option-text\">{{ INSIGHTS_VIEW_TYPES.GRID | titlecase }}</div>\r\n    <lib-form-field\r\n      class=\"option-input\"\r\n      [type]=\"menuItemRadioType\"\r\n      [formFieldControl]=\"menuItemFormControl\"\r\n      [options]=\"[{ label: '', value: INSIGHTS_VIEW_TYPES.GRID }]\"\r\n    ></lib-form-field>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #insightContentViewMenuItem>\r\n  <div class=\"insights-3dot-menu__option\">\r\n    <img [src]=\"icons.dashboard?.insights?.content\" alt=\"'content-icon'\" />\r\n    <div class=\"option-text\">{{ INSIGHTS_VIEW_TYPES.CONTENT | titlecase }}</div>\r\n    <lib-form-field\r\n      class=\"option-input\"\r\n      [type]=\"menuItemRadioType\"\r\n      [formFieldControl]=\"menuItemFormControl\"\r\n      [options]=\"[{ label: '', value: INSIGHTS_VIEW_TYPES.CONTENT }]\"\r\n    ></lib-form-field>\r\n  </div>\r\n</ng-template>\r\n","import { Directive, inject } from '@angular/core';\nimport { IMasonrySize } from '../../masonry-container/masonry-container.interface';\nimport { InsightsViewType } from '../_enums/insights-view.enum';\nimport { LibInsightsComponent } from '../insights.component';\n\n@Directive()\nexport abstract class BaseInsightsTabComponent {\n  abstract readonly tabKey: string; // InsightsViewTab or MacherInsightsViewTab value\n\n  protected parent = inject(LibInsightsComponent);\n\n  readonly INSIGHTS_VIEW_TYPES = InsightsViewType;\n\n  readonly masonrySizes: IMasonrySize[] = [\n    { columns: 1, gutter: 16 },\n    { mq: '768px', columns: 2, gutter: 20 },\n    { mq: '1280px', columns: 3, gutter: 20 },\n  ];\n\n  onGridUpdateTabData(event: { searchText: string; page?: number }): void {\n    this.parent.updateTabData(event);\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Observable, of, Subject } from 'rxjs';\nimport { PaginationResponse } from './_interfaces/pagination-response.model';\nimport { MacherInsightsViewTab } from './_enums/matcher-insights-tab.enum';\nimport { IDashboardClientMatcher } from './_interfaces/client-matcher.interface';\nimport { IDashboardClientProspect } from './_interfaces/client-prospects.interface';\nimport { IDashboardClientRequest } from './_interfaces/client-request.interface';\nimport { IDashboardMatcherClient } from './_interfaces/matcher-client.interface';\n\n@Component({\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class BaseInsightsComponent implements OnDestroy {\n  @Input() matcherInsights = false;\n  @Input() loading = false;\n  @Input() requests$: Observable<PaginationResponse<IDashboardClientRequest>> = of();\n  @Input() matchers$: Observable<PaginationResponse<IDashboardClientMatcher>> = of();\n  @Input() prospects$: Observable<PaginationResponse<IDashboardClientProspect>> = of();\n  @Input() clients$: Observable<PaginationResponse<IDashboardMatcherClient>> = of();\n  @Output() updateTabData = new EventEmitter<{ searchText: string; page?: number }>();\n  public MATCHER_INSIGHTS_VIEW_TAB: typeof MacherInsightsViewTab = MacherInsightsViewTab;\n  public selectedTab = '';\n\n  protected componentDestroyed$ = new Subject<void>();\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n}\n","import { IGridColumn } from '../../../model/grid-column';\n\nconst baseColumns: IGridColumn[] = [\n  { name: 'avatar', requiredForEdit: false, label: 'Avatar', visible: true, groupName: 'Basic Data', editable: false, controlType: 'Image', width: 65 },\n  { name: 'name', requiredForEdit: false, label: 'Name', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Text' },\n  { name: 'age', requiredForEdit: false, label: 'Age', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Number', width: 90 },\n  { name: 'locations', requiredForEdit: false, label: 'Location', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Text' },\n];\n\nconst ClientRequests: IGridColumn[] = [\n  ...baseColumns,\n  { name: 'fees', requiredForEdit: false, label: 'Fees', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Currency', width: 100 },\n  { name: 'meetups', requiredForEdit: false, label: 'Meetups', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Number', width: 120 },\n  { name: 'msgsDate', requiredForEdit: false, label: 'Msgs/Date', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Number', width: 140 },\n  { name: 'timeframe', requiredForEdit: false, label: 'Timeframe', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Number', width: 140 },\n  { name: 'acceptedDate', label: 'Date', visible: true, sortable: true, groupName: 'Extended Data', controlType: 'Date', editable: true, width: 150 },\n  { name: 'options', requiredForEdit: false, label: 'Options', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Text' },\n];\n\nconst ClientMatchers: IGridColumn[] = [\n  ...baseColumns,\n  {\n    name: 'backgroundCheck',\n    requiredForEdit: false,\n    label: 'Verified',\n    visible: true,\n    sortable: true,\n    groupName: 'Basic Data',\n    editable: false,\n    controlType: 'Boolean',\n    width: 120,\n  },\n  { name: 'joinDate', requiredForEdit: false, label: 'Join Date', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Date', width: 140 },\n  {\n    name: 'lifetimeEarn',\n    requiredForEdit: false,\n    label: 'Lifetime Earn',\n    visible: true,\n    sortable: true,\n    groupName: 'Basic Data',\n    editable: false,\n    controlType: 'Currency',\n    width: 155,\n  },\n  {\n    name: 'lifetimeMeetups',\n    requiredForEdit: false,\n    label: 'Lifetime Meetups',\n    visible: true,\n    sortable: true,\n    groupName: 'Basic Data',\n    editable: false,\n    controlType: 'Number',\n    width: 185,\n  },\n  {\n    name: 'matcherClientInterests',\n    requiredForEdit: false,\n    label: 'Interest Overlap',\n    visible: true,\n    sortable: true,\n    groupName: 'Basic Data',\n    editable: false,\n    controlType: 'Percent',\n    width: 180,\n  },\n  { name: 'msgsDate', requiredForEdit: false, label: 'Msgs/Date', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Number', width: 140 },\n  { name: 'rank', requiredForEdit: false, label: 'Rank', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Text', width: 100 },\n  { name: 'rating', requiredForEdit: false, label: 'Rating', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Number', width: 110 },\n  {\n    name: 'successRate',\n    requiredForEdit: false,\n    label: 'Success Rate',\n    visible: true,\n    sortable: true,\n    groupName: 'Basic Data',\n    editable: false,\n    controlType: 'Percent',\n    width: 160,\n  },\n  { name: 'certifications', requiredForEdit: false, label: 'Certifications', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Text' },\n  { name: 'superlatives', requiredForEdit: false, label: 'Superlatives', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Text' },\n];\n\nconst MatcherClients: IGridColumn[] = [\n  ...baseColumns,\n  { name: 'joinDate', requiredForEdit: false, label: 'Join Date', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Date', width: 140 },\n  {\n    name: 'lifetimeEarn',\n    requiredForEdit: false,\n    label: 'Lifetime Earn',\n    visible: true,\n    sortable: true,\n    groupName: 'Basic Data',\n    editable: false,\n    controlType: 'Currency',\n    width: 155,\n  },\n  {\n    name: 'lifetimeMeetups',\n    requiredForEdit: false,\n    label: 'Lifetime Meetups',\n    visible: true,\n    sortable: true,\n    groupName: 'Basic Data',\n    editable: false,\n    controlType: 'Number',\n    width: 185,\n  },\n  { name: 'msgsDate', requiredForEdit: false, label: 'Msgs/Date', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Number', width: 140 },\n];\n\nconst ClientProspects: IGridColumn[] = [\n  ...baseColumns,\n  {\n    name: 'interestLevel',\n    requiredForEdit: false,\n    label: 'Interest Level',\n    visible: true,\n    sortable: true,\n    groupName: 'Basic Data',\n    editable: false,\n    controlType: 'Number',\n    width: 160,\n  },\n  { name: 'progress', requiredForEdit: false, label: 'Progress', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Number', width: 120 },\n  { name: 'score', requiredForEdit: false, label: 'Score', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Number', width: 120 },\n  { name: 'msgsDate', requiredForEdit: false, label: 'Msgs/Date', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Number', width: 140 },\n  {\n    name: 'currentChats',\n    requiredForEdit: false,\n    label: 'Current Chats',\n    visible: true,\n    sortable: true,\n    groupName: 'Basic Data',\n    editable: false,\n    controlType: 'Number',\n    width: 160,\n  },\n  {\n    name: 'lifetimeDates',\n    requiredForEdit: false,\n    label: 'Lifetime Dates',\n    visible: true,\n    sortable: true,\n    groupName: 'Basic Data',\n    editable: false,\n    controlType: 'Number',\n    width: 160,\n  },\n  { name: 'goals', requiredForEdit: false, label: 'Goals', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Text' },\n  { name: 'profileSummary', requiredForEdit: false, label: 'IProfile Summary', visible: true, sortable: true, groupName: 'Basic Data', editable: false, controlType: 'Text' },\n];\n\nexport const InsightsGridColumn = { ClientRequests, ClientMatchers, ClientProspects, MatcherClients };\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { IGridColumn } from '../../../model/grid-column';\nimport { IGridDataRequest } from '../../../model/grid-data-request';\nimport { IGridRow } from '../../../model/grid-row';\nimport { GridSortDirection } from '../../../model/grid-sort-direction';\nimport { takeUntil } from 'rxjs';\nimport { PaginationResponse } from '../_interfaces/pagination-response.model';\nimport { BaseInsightsComponent } from '../base-insights.component';\nimport { InsightsViewTab } from '../_enums/insights-tab.enum';\nimport { MacherInsightsViewTab } from '../_enums/matcher-insights-tab.enum';\nimport { IDashboardClientMatcher } from '../_interfaces/client-matcher.interface';\nimport { IDashboardClientProspect } from '../_interfaces/client-prospects.interface';\nimport { IDashboardClientRequest } from '../_interfaces/client-request.interface';\nimport { IDashboardMatcherClient } from '../_interfaces/matcher-client.interface';\nimport { InsightsGridColumn } from '../_lookups/insights-grid-columns.lookup';\n\nexport const DefaultDateFormat = 'mm/dd/yyyy';\n\n@Component({\n  selector: 'app-client-grid',\n  templateUrl: './content-grid.component.html',\n  styleUrls: ['./content-grid.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class AppClientGridComponent extends BaseInsightsComponent implements OnInit {\n  @Input() hideToolbar = false;\n  @Input() set tab(value: string) {\n    this.updatedSelectedTab(value);\n  }\n  public data: IGridRow<IDashboardClientRequest | IDashboardClientMatcher | IDashboardClientProspect | IDashboardMatcherClient>[] = [];\n  public totalRecords = 0;\n  public rowsPerPageOptions: number[] = [];\n  public rowsPerPage = 0;\n  public sortField = '';\n  public sortOrder: GridSortDirection = 'Ascending';\n  public columns: IGridColumn[] = [];\n  public DefaultDateFormat = '';\n  private requests!: PaginationResponse<IDashboardClientRequest>;\n  private matchers!: PaginationResponse<IDashboardClientMatcher>;\n  private prospects!: PaginationResponse<IDashboardClientProspect>;\n  private clients!: PaginationResponse<IDashboardMatcherClient>;\n\n  constructor(private cdr: ChangeDetectorRef) {\n    super();\n  }\n\n  ngOnInit(): void {\n    this.rowsPerPageOptions = [10, 14, 28];\n    this.rowsPerPage = this.rowsPerPageOptions[0];\n    this.sortField = 'name';\n    this.sortOrder = 'Ascending';\n    this.DefaultDateFormat = DefaultDateFormat;\n    this.requests$.pipe(takeUntil(this.componentDestroyed$)).subscribe((requests) => {\n      this.requests = requests;\n      this.setTabsData();\n    });\n    this.matchers$.pipe(takeUntil(this.componentDestroyed$)).subscribe((requests) => {\n      this.matchers = requests;\n      this.setTabsData();\n    });\n    this.prospects$.pipe(takeUntil(this.componentDestroyed$)).subscribe((requests) => {\n      this.prospects = requests;\n      this.setTabsData();\n    });\n    this.clients$.pipe(takeUntil(this.componentDestroyed$)).subscribe((clients) => {\n      this.clients = clients;\n      this.setTabsData();\n    });\n  }\n\n  public onLazyLoad(request: IGridDataRequest): void {\n    this.loading = true;\n    this.cdr.detectChanges();\n    const page = request.from / this.rowsPerPage + 1;\n    this.updateTabData.emit({ searchText: request.searchString || '', page });\n  }\n\n  private updatedSelectedTab(value: string): void {\n    this.selectedTab = value;\n    this.setTabsData();\n  }\n\n  private toGridData(\n    arrayData: (IDashboardClientRequest | IDashboardClientMatcher | IDashboardClientProspect | IDashboardMatcherClient)[],\n  ): IGridRow<IDashboardClientRequest | IDashboardClientMatcher | IDashboardClientProspect | IDashboardMatcherClient>[] {\n    return (\n      arrayData?.map((data) => ({\n        data,\n        hasDeletePermissions: false,\n        hasEditPermissions: false,\n        rowMenuItems: [],\n      })) || []\n    );\n  }\n\n  private setTabsData(): void {\n    switch (this.selectedTab) {\n      case InsightsViewTab.Requests: {\n        this.columns = InsightsGridColumn.ClientRequests;\n        this.totalRecords = this.requests?.meta?.totalDocs || 0;\n        this.data = this.toGridData(this.requests?.docs);\n        break;\n      }\n      case InsightsViewTab.Matchers: {\n        this.columns = InsightsGridColumn.ClientMatchers;\n        this.totalRecords = this.matchers?.meta?.totalDocs || 0;\n        this.data = this.toGridData(this.matchers?.docs);\n        break;\n      }\n      case InsightsViewTab.Prospects: {\n        this.columns = InsightsGridColumn.ClientProspects;\n        this.totalRecords = this.prospects?.meta?.totalDocs || 0;\n        this.data = this.toGridData(this.prospects?.docs);\n        break;\n      }\n      case MacherInsightsViewTab.Clients: {\n        this.columns = InsightsGridColumn.MatcherClients;\n        this.totalRecords = this.clients?.meta?.totalDocs || 0;\n        this.data = this.toGridData(this.clients?.docs);\n        break;\n      }\n    }\n    this.cdr.detectChanges();\n  }\n}\n","<lib-grid\n  class=\"insights__grid\"\n  [columns]=\"columns\"\n  [data]=\"data\"\n  [rowsPerPage]=\"rowsPerPage\"\n  [rowsPerPageOptions]=\"rowsPerPageOptions\"\n  [sortField]=\"sortField\"\n  [sortOrder]=\"sortOrder\"\n  [isLoading]=\"loading\"\n  [enableGridFilters]=\"!hideToolbar\"\n  [totalRecords]=\"totalRecords\"\n  [groupByField]=\"null\"\n  [dateFormat]=\"DefaultDateFormat\"\n  [enableGridFilters]=\"true\"\n  [hideRowMenu]=\"true\"\n  (lazyLoad)=\"onLazyLoad($event)\"\n></lib-grid>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MacherInsightsViewTab } from '../../_enums/matcher-insights-tab.enum';\n\n@Component({\n  selector: 'app-card-expander',\n  templateUrl: './card-expander.component.html',\n  styleUrls: ['../content-card.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class CardExpanderComponent {\n  @Input() searchText = '';\n  @Output() cardExpand = new EventEmitter<boolean>();\n\n  public cardExpanded = false;\n  public MATCHER_INSIGHTS_VIEW_TAB: typeof MacherInsightsViewTab = MacherInsightsViewTab;\n\n  public expandToggle(): void {\n    this.cardExpanded = !this.cardExpanded;\n    this.cardExpand.emit(this.cardExpanded);\n  }\n}\n","<div (click)=\"expandToggle()\" class=\"content-card__expansion-button\">{{ (cardExpanded ? 'DASHBOARD.SEE_LESS' : 'DASHBOARD.SEE_MORE') | translate }}...</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'contentCardNameAge',\n  standalone: false,\n})\nexport class ContentCardNameAgePipe implements PipeTransform {\n  transform({ name, age }: { name: string; age: number }): string {\n    return [name, age].join(', ');\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'contentCardFeePerMeetup',\n  standalone: false,\n})\nexport class ContentCardFeePerMeetupPipe implements PipeTransform {\n  transform({ fees, meetups }: { fees: number; meetups: number }): string {\n    const perEach = (fees / meetups)?.toFixed(1);\n    return `(${perEach}/ea)`;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'contentCardStringArray',\n  standalone: false,\n})\nexport class ContentCardStringArrayPipe implements PipeTransform {\n  transform(array: string[]): string {\n    return array?.join(', ') || '';\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IDashboardClientRequest } from '../../_interfaces/client-request.interface';\nimport { InsightsDataBridge } from '../../_services/insights-data-bridge';\nimport { CardExpanderComponent } from '../card-expander/card-expander.component';\n\n@Component({\n  selector: 'app-client-request-content-card',\n  templateUrl: './client-request-card.component.html',\n  styleUrls: ['../content-card.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ClientRequestCardComponent extends CardExpanderComponent {\n  @Input() clientRequest!: IDashboardClientRequest;\n\n  public readonly icons: any;\n\n  constructor(private bridge: InsightsDataBridge) {\n    super();\n    this.icons = bridge.icons;\n  }\n}\n","<lib-content-view-card [cardExpanded]=\"cardExpanded\" class=\"content-view-card--request\">\n  <div libContentCardFirstColumn [imgSrc]=\"clientRequest.avatar || 'assets/content-card/no-profile-picture.png'\">\n    <app-card-expander (cardExpand)=\"cardExpanded = $event\"></app-card-expander>\n    <div section [class.first-column-fields]=\"cardExpanded\">\n      <ng-template libContentToggle>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.OPTIONS' | translate }}:</div>\n          <div subHeadings>\n            @for (option of clientRequest.options; track clientRequest.options) {\n              <span>{{ option }}</span>\n            }\n          </div>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n  <div class=\"mid-column\">\n    <div section>\n      <div contentBlock section>\n        <div xLSubHeadings>\n          <lib-marquee [onlyMarqueeOnHover]=\"true\" [title]=\"clientRequest | contentCardNameAge\" [searchText]=\"searchText\"></lib-marquee>\n        </div>\n        <div>\n          <div heading>{{ 'CLIENT.DASHBOARD.LOCATION' | translate }}</div>\n          <div subHeadings class=\"sub-headings-inline\">\n            <span [libTextHighlight]=\"clientRequest.locations | contentCardStringArray\" [searchText]=\"searchText\">{{ clientRequest.locations | contentCardStringArray }}</span>\n          </div>\n        </div>\n      </div>\n      <ng-template libContentToggle>\n        @if (clientRequest.preferencesProfile !== null) {\n          <div contentBlock>\n            <div heading>{{ 'CLIENT.DASHBOARD.PREFERENCES_PROFILE' | translate }}</div>\n            <div subHeadings>\n              <span\n                >{{ clientRequest.preferencesProfile }}%\n                @if (clientRequest.preferencesProfileAvg !== null) {\n                  <span class=\"client-request-container__smaller-font\"> ({{ clientRequest.preferencesProfileAvg }}%)</span>\n                }\n              </span>\n            </div>\n          </div>\n        }\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.ACCEPTED_DATE_TIME' | translate }}</div>\n          <div subHeadings>\n            <span>{{ clientRequest.acceptedDate | date: 'MM-dd-yy' }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.MSGS_DATE' | translate }}({{ 'CLIENT.DASHBOARD.MATCHER' | translate }})</div>\n          <div subHeadings>\n            <span>{{ clientRequest.msgsDate }}</span>\n          </div>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n  <div libContentLastColumn class=\"last-column\">\n    <div section>\n      <div contentBlock section>\n        <div heading>\n          <img class=\"lock-chevron-size\" src=\"assets/lock-chevron.svg\" />\n        </div>\n        <div class=\"dates-price-section\">\n          <div heading>{{ 'CLIENT.DASHBOARD.FEE' | translate }}</div>\n          <div subHeadings>\n            <span class=\"client-request-container__fee-wrapper\">\n              <span class=\"client-request-container__smaller-font client-request-container__dollar-sign\">$</span>\n              <span> {{ clientRequest.fees }}</span>\n              <span class=\"client-request-container__smaller-font\">{{ clientRequest | contentCardFeePerMeetup }}</span>\n            </span>\n          </div>\n        </div>\n      </div>\n      <ng-template libContentToggle>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.MEETUPS' | translate }}</div>\n          <div subHeadings>\n            <span>{{ clientRequest.meetups }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.TIMEFRAME' | translate }}</div>\n          <div subHeadings>\n            <span>{{ clientRequest.timeframe }} {{ 'CLIENT.DASHBOARD.DAYS' | translate }}</span>\n          </div>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n  <ng-template libContentToggle>\n    <div class=\"client-request-container__bottom-content\">\n      <div class=\"client-request-container__bottom-content--label\" heading>{{ 'CLIENT.DASHBOARD.SERVICE_ENHANCEMENT' | translate }}</div>\n      <div class=\"client-request-container__bottom-content--sub-headings\" subHeadings>\n        <div class=\"client-request-container__bottom-content__sub-heading-wrapper\">\n          <span>{{ 'CLIENT.DASHBOARD.SERVICE_ENHANCEMENT_PART1' | translate }} </span>\n          <a>{{ 'CLIENT.DASHBOARD.SERVICE_ENHANCEMENT_AI' | translate }} </a>\n          <span>{{ 'CLIENT.DASHBOARD.SERVICE_ENHANCEMENT_PART2' | translate }} </span>\n          <a>{{ 'CLIENT.DASHBOARD.SERVICE_ENHANCEMENT_MATCHERS' | translate }} </a>\n          <span>{{ 'CLIENT.DASHBOARD.SERVICE_ENHANCEMENT_PART3' | translate }}</span>\n        </div>\n      </div>\n    </div>\n  </ng-template>\n</lib-content-view-card>\n","import { Component } from '@angular/core';\nimport { BaseInsightsTabComponent } from './base-insights-tab.component';\nimport { InsightsViewTab } from '../_enums/insights-tab.enum';\n\n@Component({\n  selector: 'app-insights-requests-tab',\n  template: `\n    @switch (parent.menuItemFormControl.value) {\n      @case (INSIGHTS_VIEW_TYPES.CONTENT) {\n        <lib-masonry-container [sizes]=\"masonrySizes\" [repackTrigger]=\"tabKey\">\n          @if (parent.loading) {\n            <lib-card-skeleton [count]=\"3\"></lib-card-skeleton>\n          } @else {\n            <ng-container *ngIf=\"parent.requests$ | async as data\">\n              @if (data?.meta?.totalDocs) {\n                @for (item of data.docs; track item._id) {\n                  <app-client-request-content-card [clientRequest]=\"item\" [searchText]=\"parent.searchText\"></app-client-request-content-card>\n                }\n              } @else {\n                <div class=\"no-cards-label\">\n                  <p>{{ 'CLIENT.DASHBOARD.NO_REQUESTS_EXISTS' | translate }}</p>\n                </div>\n              }\n            </ng-container>\n          }\n        </lib-masonry-container>\n      }\n      @case (INSIGHTS_VIEW_TYPES.GRID) {\n        <app-client-grid\n          [tab]=\"tabKey\"\n          [hideToolbar]=\"!parent.toggleSearchFormControl.value\"\n          [matcherInsights]=\"parent.matcherInsights\"\n          [clients$]=\"parent.clients$\"\n          [requests$]=\"parent.requests$\"\n          [matchers$]=\"parent.matchers$\"\n          [prospects$]=\"parent.prospects$\"\n          [loading]=\"parent.loading\"\n          (updateTabData)=\"onGridUpdateTabData($event)\"\n        ></app-client-grid>\n      }\n    }\n  `,\n  styles: [\n    `\n      :host {\n        display: contents;\n      }\n      .no-cards-label {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        padding: 2em;\n        text-align: center;\n      }\n    `,\n  ],\n  standalone: false,\n})\nexport class InsightsRequestsTabComponent extends BaseInsightsTabComponent {\n  readonly tabKey = InsightsViewTab.Requests;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n  name: 'contentCardBackgroundCheck',\n  standalone: false,\n})\nexport class ContentCardBackgroundCheckPipe implements PipeTransform {\n  constructor(private readonly translateService: TranslateService) {}\n  transform({ backgroundCheck }: { backgroundCheck: boolean }): string {\n    return this.translateService.instant('CLIENT.DASHBOARD.'.concat(backgroundCheck ? 'VERIFIED' : 'UNVERIFIED'));\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'contentCardLifetimeEarnPerMeetup',\n  standalone: false,\n})\nexport class ContentCardLifetimeEarnPerMeetupPipe implements PipeTransform {\n  transform({ lifetimeEarn, lifetimeMeetups }: { lifetimeEarn: number; lifetimeMeetups: number }): string {\n    const perEach = Math.round(lifetimeEarn / lifetimeMeetups);\n    return `(~${perEach || 0}/ea)`;\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IDashboardClientMatcher } from '../../_interfaces/client-matcher.interface';\nimport { InsightsDataBridge } from '../../_services/insights-data-bridge';\nimport { CardExpanderComponent } from '../card-expander/card-expander.component';\n\n@Component({\n  selector: 'app-client-matcher-content-card',\n  templateUrl: './client-matcher-card.component.html',\n  styleUrls: ['../content-card.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ClientMatcherCardComponent extends CardExpanderComponent {\n  @Input() matcher!: IDashboardClientMatcher;\n\n  public readonly icons: any;\n\n  constructor(private bridge: InsightsDataBridge) {\n    super();\n    this.icons = bridge.icons;\n  }\n}\n","<lib-content-view-card class=\"client-matcher-container\" [cardExpanded]=\"cardExpanded\">\n  <div libContentCardFirstColumn [imgSrc]=\"matcher.avatar || 'assets/content-card/no-profile-picture.png'\">\n    <app-card-expander (cardExpand)=\"cardExpanded = $event\"></app-card-expander>\n    <div section [class.first-column-fields]=\"cardExpanded\">\n      <ng-template libContentToggle>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.CERTIFICATIONS' | translate }}:</div>\n          <div subHeadings>\n            @for (certification of matcher.certifications; track certification) {\n              <span>{{ certification }}</span>\n            }\n          </div>\n        </div>\n\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.SUPERLATIVES' | translate }}:</div>\n          <div subHeadings>\n            @for (superlative of matcher.superlatives; track superlative) {\n              <span>{{ superlative }}</span>\n            }\n          </div>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n  <div class=\"mid-column\">\n    <div section>\n      <div contentBlock section>\n        <div xLSubHeadings>\n          <lib-marquee [onlyMarqueeOnHover]=\"true\" [title]=\"matcher | contentCardNameAge\" [searchText]=\"searchText\"></lib-marquee>\n        </div>\n        <div>\n          <div heading>{{ 'CLIENT.DASHBOARD.LOCATION' | translate }}</div>\n          <div subHeadings>\n            <span>{{ matcher.locations | contentCardStringArray }}</span>\n          </div>\n        </div>\n      </div>\n      <ng-template libContentToggle>\n        <div contentBlock>\n          <div heading class=\"matcher-client-interests\">{{ 'CLIENT.DASHBOARD.MATCHER_CLIENT_INTERESTS' | translate }}</div>\n          <div subHeadings>\n            <span>{{ matcher.matcherClientInterests | number: '1.2-2' }}% ({{ 'CLIENT.DASHBOARD.NON_SIMILAR_INTERESTS' | translate }})</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.RANK' | translate }}</div>\n          <div subHeadings>\n            <span>{{ matcher.rank }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.RATING' | translate }}</div>\n          <div subHeadings>\n            <span>{{ matcher.rating }}/5 {{ 'CLIENT.DASHBOARD.STARS' | translate }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.BACKGROUND_CHECK' | translate }}</div>\n          <div subHeadings>\n            <span>{{ matcher | contentCardBackgroundCheck }}</span>\n          </div>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n  <div libContentLastColumn class=\"last-column\">\n    <div section>\n      <div contentBlock section>\n        <div heading>\n          <img class=\"lock-chevron-size\" src=\"assets/lock-chevron.svg\" />\n        </div>\n        <div class=\"dates-price-section\">\n          <div heading>{{ 'CLIENT.DASHBOARD.MSGS_DATE' | translate }}</div>\n          <div subHeadings>\n            <span>{{ matcher.msgsDate }}</span>\n          </div>\n        </div>\n      </div>\n      <ng-template libContentToggle>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.JOIN_DATE' | translate }}</div>\n          <div subHeadings>\n            <span>{{ matcher.joinDate | date: 'MM-dd-yy' }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.LIFETIME_EARN' | translate }}</div>\n          <div subHeadings>\n            <span class=\"client-matcher-container__fee-wrapper\">\n              <span class=\"client-matcher-container__smaller-font client-matcher-container__dollar-sign\">$</span>\n              <span>{{ matcher.lifetimeEarn }}</span>\n              <span class=\"client-matcher-container__smaller-font\">{{ matcher | contentCardLifetimeEarnPerMeetup }}</span>\n            </span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.SUCCESS_RATE' | translate }}</div>\n          <div subHeadings>\n            <span>{{ matcher.successRate }}%({{ matcher.lifetimeMeetups }})</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.LIFETIME_MEETUPS' | translate }}</div>\n          <div subHeadings>\n            <span>{{ matcher.lifetimeMeetups }}</span>\n          </div>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n</lib-content-view-card>\n","import { Component } from '@angular/core';\nimport { BaseInsightsTabComponent } from './base-insights-tab.component';\nimport { InsightsViewTab } from '../_enums/insights-tab.enum';\n\n@Component({\n  selector: 'app-insights-matchers-tab',\n  template: `\n    @switch (parent.menuItemFormControl.value) {\n      @case (INSIGHTS_VIEW_TYPES.CONTENT) {\n        <lib-masonry-container [sizes]=\"masonrySizes\" [repackTrigger]=\"tabKey\">\n          @if (parent.loading) {\n            <lib-card-skeleton [count]=\"3\"></lib-card-skeleton>\n          } @else {\n            <ng-container *ngIf=\"parent.matchers$ | async as data\">\n              @if (data?.meta?.totalDocs) {\n                @for (item of data.docs; track item._id) {\n                  <app-client-matcher-content-card [matcher]=\"item\" [searchText]=\"parent.searchText\"></app-client-matcher-content-card>\n                }\n              } @else {\n                <div class=\"no-cards-label\">\n                  <p>{{ 'CLIENT.DASHBOARD.NO_MATCHERS_EXISTS' | translate }}</p>\n                </div>\n              }\n            </ng-container>\n          }\n        </lib-masonry-container>\n      }\n      @case (INSIGHTS_VIEW_TYPES.GRID) {\n        <app-client-grid\n          [tab]=\"tabKey\"\n          [hideToolbar]=\"!parent.toggleSearchFormControl.value\"\n          [matcherInsights]=\"parent.matcherInsights\"\n          [clients$]=\"parent.clients$\"\n          [requests$]=\"parent.requests$\"\n          [matchers$]=\"parent.matchers$\"\n          [prospects$]=\"parent.prospects$\"\n          [loading]=\"parent.loading\"\n          (updateTabData)=\"onGridUpdateTabData($event)\"\n        ></app-client-grid>\n      }\n    }\n  `,\n  styles: [\n    `\n      :host {\n        display: contents;\n      }\n      .no-cards-label {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        padding: 2em;\n        text-align: center;\n      }\n    `,\n  ],\n  standalone: false,\n})\nexport class InsightsMatchersTabComponent extends BaseInsightsTabComponent {\n  readonly tabKey = InsightsViewTab.Matchers;\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport interface InsightsProgressBarConfig {\n  value: number;\n  label: string;\n}\n\n@Component({\n  selector: 'lib-insights-progress-bars',\n  templateUrl: './insights-progress-bars.component.html',\n  styleUrls: ['./insights-progress-bars.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class InsightsProgressBarsComponent {\n  @Input() bars: InsightsProgressBarConfig[] = [];\n}\n","<div class=\"insights-progress-bars\" *ngIf=\"bars?.length\">\n  @for (bar of bars; track bar.label) {\n    <lib-percentage-bar [value]=\"bar.value\">{{ bar.label }}</lib-percentage-bar>\n  }\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'contentCardBWH',\n  standalone: false,\n})\nexport class ContentCardBWHPipe implements PipeTransform {\n  transform(value: { bust: number; waist: number; height: number }): string {\n    return `${value?.bust || 0}b ${value?.waist || 0}w ${value?.height || 0}h`;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ILowerUpper } from '../../_interfaces/lower-upper.interface';\n\n@Pipe({\n  name: 'contentCardWeightHeightRange',\n  standalone: false,\n})\nexport class ContentCardWeightHeightRangePipe implements PipeTransform {\n  private weightRange({ lower, upper }: ILowerUpper): string {\n    return Math.round(lower) + '-' + Math.round(upper) + ' kg';\n  }\n\n  private heightRange({ lower, upper }: ILowerUpper): string {\n    return this.ftToCm(lower) + '-' + this.ftToCm(upper) + ' cm';\n  }\n\n  private ftToCm(feet: number): number {\n    return Math.round(feet * 30.48);\n  }\n\n  transform({ preferredWeight, preferredHeight }: { preferredWeight: ILowerUpper; preferredHeight: ILowerUpper }): string {\n    return this.weightRange(preferredWeight) + ' / ' + this.heightRange(preferredHeight);\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IDashboardClientProspect } from '../../_interfaces/client-prospects.interface';\nimport { InsightsDataBridge } from '../../_services/insights-data-bridge';\nimport { CardExpanderComponent } from '../card-expander/card-expander.component';\nimport { InsightsProgressBarConfig } from '../insights-progress-bars/insights-progress-bars.component';\n\n@Component({\n  selector: 'app-client-prospect-content-card',\n  templateUrl: './client-prospect-card.component.html',\n  styleUrls: ['../content-card.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ClientProspectCardComponent extends CardExpanderComponent {\n  @Input() clientProspect!: IDashboardClientProspect;\n\n  public readonly icons: any;\n\n  constructor(private bridge: InsightsDataBridge) {\n    super();\n    this.icons = bridge.icons;\n  }\n\n  get midColumnBars(): InsightsProgressBarConfig[] {\n    return [\n      { value: this.clientProspect?.match?.preferences ?? 0, label: `Match ${this.clientProspect?.match?.preferences ?? 0}% (Preferences)` },\n      { value: this.clientProspect?.match?.personality ?? 0, label: `Match ${this.clientProspect?.match?.personality ?? 0}% (Personality)` },\n    ];\n  }\n\n  get lastColumnBars(): InsightsProgressBarConfig[] {\n    return [{ value: this.clientProspect?.progress ?? 0, label: `Progress ${this.clientProspect?.progress ?? 0}%` }];\n  }\n}\n","<lib-content-view-card class=\"client-prospect-container\" [cardExpanded]=\"cardExpanded\">\n  <div libContentCardFirstColumn [imgSrc]=\"clientProspect.avatar || 'assets/content-card/no-profile-picture.png'\">\n    <app-card-expander (cardExpand)=\"cardExpanded = $event\"></app-card-expander>\n    <div section [class.first-column-fields]=\"cardExpanded\">\n      <ng-template libContentToggle>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.SCORES_SUMMARY' | translate }}:</div>\n          <div subHeadings>\n            <span>{{ clientProspect.scoreSummary | contentCardBWH }}</span>\n            <span>{{ 'CLIENT.DASHBOARD.CELIBACY' | translate }} {{ clientProspect.scoreSummary.celibacy }}</span>\n            <span>{{ 'CLIENT.DASHBOARD.COOPERATION' | translate }} {{ clientProspect.scoreSummary.cooperation }}</span>\n            <span>{{ 'CLIENT.DASHBOARD.INTELLIGENCE' | translate }} {{ clientProspect.scoreSummary.intelligence }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.PROFILE_SUMMARY' | translate }}:</div>\n          <div subHeadings>\n            @for (item of clientProspect.profileSummary; track clientProspect) {\n              <span>{{ item }}</span>\n            }\n          </div>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n  <div class=\"mid-column\">\n    <div section contentBlock>\n      <div xLSubHeadings>\n        <lib-marquee [onlyMarqueeOnHover]=\"true\" [title]=\"clientProspect | contentCardNameAge\" [searchText]=\"searchText\"></lib-marquee>\n      </div>\n      <div>\n        <div heading>{{ 'CLIENT.DASHBOARD.LOCATION' | translate }}</div>\n        <div subHeadings>\n          <span [libTextHighlight]=\"clientProspect.location\" [searchText]=\"searchText\">{{ clientProspect.location }}</span>\n        </div>\n      </div>\n      <ng-template libContentToggle>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.WEIGHT_HEIGHT' | translate }}</div>\n          <div subHeadings>\n            <span>{{ clientProspect | contentCardWeightHeightRange }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.INTEREST_LEVEL' | translate }}</div>\n          <div subHeadings>\n            <span>{{ clientProspect.interestLevel }} / 100</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.GOAL' | translate }}</div>\n          <div subHeadings>\n            <span>{{ clientProspect.goals | contentCardStringArray }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <lib-insights-progress-bars [bars]=\"midColumnBars\"></lib-insights-progress-bars>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n  <div libContentLastColumn class=\"last-column\">\n    <div section>\n      <div contentBlock>\n        <div heading>\n          <img class=\"lock-chevron-size\" src=\"assets/lock-chevron.svg\" />\n        </div>\n      </div>\n      <div contentBlock>\n        <div heading>{{ 'CLIENT.DASHBOARD.SCORE' | translate }}</div>\n        <div subHeadings>\n          <span>{{ clientProspect.score }}</span>\n        </div>\n      </div>\n      <ng-template libContentToggle>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.MSGS_DATE' | translate }}</div>\n          <div subHeadings>\n            <span>{{ clientProspect.msgsDate }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.LIFETIME_DATES' | translate }}</div>\n          <div subHeadings>\n            <span>{{ clientProspect.lifetimeDates }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.CURRENT_CHATS' | translate }}</div>\n          <div subHeadings>\n            <span>{{ clientProspect.currentChats }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <lib-insights-progress-bars [bars]=\"lastColumnBars\"></lib-insights-progress-bars>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n</lib-content-view-card>\n","import { Component } from '@angular/core';\nimport { BaseInsightsTabComponent } from './base-insights-tab.component';\nimport { InsightsViewTab } from '../_enums/insights-tab.enum';\n\n@Component({\n  selector: 'app-insights-prospects-tab',\n  template: `\n    @switch (parent.menuItemFormControl.value) {\n      @case (INSIGHTS_VIEW_TYPES.CONTENT) {\n        <lib-masonry-container [sizes]=\"masonrySizes\" [repackTrigger]=\"tabKey\">\n          @if (parent.loading) {\n            <lib-card-skeleton [count]=\"3\"></lib-card-skeleton>\n          } @else {\n            <ng-container *ngIf=\"parent.prospects$ | async as data\">\n              @if (data?.meta?.totalDocs) {\n                @for (item of data.docs; track item._id) {\n                  <app-client-prospect-content-card [clientProspect]=\"item\" [searchText]=\"parent.searchText\"></app-client-prospect-content-card>\n                }\n              } @else {\n                <div class=\"no-cards-label\">\n                  <p>{{ 'CLIENT.DASHBOARD.NO_PROSPECTS_EXISTS' | translate }}</p>\n                </div>\n              }\n            </ng-container>\n          }\n        </lib-masonry-container>\n      }\n      @case (INSIGHTS_VIEW_TYPES.GRID) {\n        <app-client-grid\n          [tab]=\"tabKey\"\n          [hideToolbar]=\"!parent.toggleSearchFormControl.value\"\n          [matcherInsights]=\"parent.matcherInsights\"\n          [clients$]=\"parent.clients$\"\n          [requests$]=\"parent.requests$\"\n          [matchers$]=\"parent.matchers$\"\n          [prospects$]=\"parent.prospects$\"\n          [loading]=\"parent.loading\"\n          (updateTabData)=\"onGridUpdateTabData($event)\"\n        ></app-client-grid>\n      }\n    }\n  `,\n  styles: [\n    `\n      :host {\n        display: contents;\n      }\n      .no-cards-label {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        padding: 2em;\n        text-align: center;\n      }\n    `,\n  ],\n  standalone: false,\n})\nexport class InsightsProspectsTabComponent extends BaseInsightsTabComponent {\n  readonly tabKey = InsightsViewTab.Prospects;\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IDashboardMatcherClient } from '../../_interfaces/matcher-client.interface';\nimport { InsightsDataBridge } from '../../_services/insights-data-bridge';\nimport { CardExpanderComponent } from '../card-expander/card-expander.component';\n\n@Component({\n  selector: 'app-matcher-client-content-card',\n  templateUrl: './matcher-client-card.component.html',\n  styleUrls: ['../content-card.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class MatcherClientCardComponent extends CardExpanderComponent {\n  @Input() client!: IDashboardMatcherClient;\n\n  public readonly icons: any;\n\n  constructor(private bridge: InsightsDataBridge) {\n    super();\n    this.icons = bridge.icons;\n  }\n}\n","<lib-content-view-card class=\"client-matcher-container\" [cardExpanded]=\"cardExpanded\">\n  <div libContentCardFirstColumn [imgSrc]=\"client.avatar || 'assets/content-card/no-profile-picture.png'\">\n    <app-card-expander (cardExpand)=\"cardExpanded = $event\"></app-card-expander>\n    <div section [class.first-column-fields]=\"cardExpanded\">\n      <ng-template libContentToggle>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.PREFERENCES_SUMMARY' | translate }}:</div>\n          <div subHeadings>\n            <span>{{ client.preferencesSummary | contentCardBWH }}</span>\n            <span>{{ 'CLIENT.DASHBOARD.CELIBACY' | translate }} {{ client.preferencesSummary.celibacy }}{{ client.preferencesSummary.celibacySign }}</span>\n            <span>{{ 'CLIENT.DASHBOARD.COOPERATION' | translate }} {{ client.preferencesSummary.cooperation }}{{ client.preferencesSummary.cooperationSign }}</span>\n            <span>{{ 'CLIENT.DASHBOARD.INTELLIGENCE' | translate }} {{ client.preferencesSummary.intelligence }}{{ client.preferencesSummary.intelligenceSign }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.PROFILE_SUMMARY' | translate }}:</div>\n          <div subHeadings>\n            @for (item of client.profileSummary; track item) {\n              <span>{{ item }}</span>\n            }\n          </div>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n  <div class=\"mid-column\">\n    <div section>\n      <div contentBlock section>\n        <div xLSubHeadings>\n          <lib-marquee [onlyMarqueeOnHover]=\"true\" [title]=\"client | contentCardNameAge\" [searchText]=\"searchText\"></lib-marquee>\n        </div>\n        <div>\n          <div heading>{{ 'CLIENT.DASHBOARD.LOCATION' | translate }}</div>\n          <div subHeadings>\n            <span>{{ client.location }}</span>\n          </div>\n        </div>\n      </div>\n      <ng-template libContentToggle>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.PREFERENCES_PROFILE' | translate }}</div>\n          <div subHeadings>\n            <span>{{ client.preferencesProfile }}%</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.WEIGHT_HEIGHT_PREF' | translate }}</div>\n          <div subHeadings>\n            <span>{{ client | contentCardWeightHeightRange }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.COMMUNICATION_STYLE' | translate }}</div>\n          <div subHeadings>\n            <span>{{ client.communicationStyle }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.GOAL' | translate }}</div>\n          <div subHeadings>\n            <span>{{ client.goal | contentCardStringArray }}</span>\n          </div>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n  <div libContentLastColumn class=\"last-column\">\n    <div section>\n      <div contentBlock section>\n        <div heading>\n          <img class=\"lock-chevron-size\" src=\"assets/lock-chevron.svg\" />\n        </div>\n        <div class=\"dates-price-section\">\n          <div heading>{{ 'CLIENT.DASHBOARD.MSGS_DATE' | translate }}</div>\n          <div subHeadings>\n            <span>{{ client.msgsDate }}</span>\n          </div>\n        </div>\n      </div>\n      <ng-template libContentToggle>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.LIFETIME_FEE' | translate }}</div>\n          <div subHeadings>\n            <span class=\"client-matcher-container__fee-wrapper\">\n              <span class=\"client-matcher-container__smaller-font client-matcher-container__dollar-sign\">$</span>\n              <span>{{ client.lifetimeFee }}</span>\n            </span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.JOIN_DATE' | translate }}</div>\n          <div subHeadings>\n            <span>{{ client.joinDate | date: 'MM-dd-yy' }}</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.SCORE_PREFERRED' | translate }}</div>\n          <div subHeadings>\n            <span>{{ client.score }} / {{ client.preferred }}+</span>\n          </div>\n        </div>\n        <div contentBlock>\n          <div heading>{{ 'CLIENT.DASHBOARD.LIFETIME_MEETUPS' | translate }}</div>\n          <div subHeadings>\n            <span>{{ client.lifetimeMeetups }}</span>\n          </div>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n</lib-content-view-card>\n","import { Component } from '@angular/core';\nimport { BaseInsightsTabComponent } from './base-insights-tab.component';\nimport { MacherInsightsViewTab } from '../_enums/matcher-insights-tab.enum';\n\n@Component({\n  selector: 'app-insights-clients-tab',\n  template: `\n    @switch (parent.menuItemFormControl.value) {\n      @case (INSIGHTS_VIEW_TYPES.CONTENT) {\n        <lib-masonry-container [sizes]=\"masonrySizes\" [repackTrigger]=\"tabKey\">\n          @if (parent.loading) {\n            <lib-card-skeleton [count]=\"3\"></lib-card-skeleton>\n          } @else {\n            <ng-container *ngIf=\"parent.clients$ | async as data\">\n              @if (data?.meta?.totalDocs) {\n                @for (item of data.docs; track item._id) {\n                  <app-matcher-client-content-card [client]=\"item\" [searchText]=\"parent.searchText\"></app-matcher-client-content-card>\n                }\n              } @else {\n                <div class=\"no-cards-label\">\n                  <p>{{ 'CLIENT.DASHBOARD.NO_CLIENTS_EXISTS' | translate }}</p>\n                </div>\n              }\n            </ng-container>\n          }\n        </lib-masonry-container>\n      }\n      @case (INSIGHTS_VIEW_TYPES.GRID) {\n        <app-client-grid\n          [tab]=\"tabKey\"\n          [hideToolbar]=\"!parent.toggleSearchFormControl.value\"\n          [matcherInsights]=\"parent.matcherInsights\"\n          [clients$]=\"parent.clients$\"\n          [requests$]=\"parent.requests$\"\n          [matchers$]=\"parent.matchers$\"\n          [prospects$]=\"parent.prospects$\"\n          [loading]=\"parent.loading\"\n          (updateTabData)=\"onGridUpdateTabData($event)\"\n        ></app-client-grid>\n      }\n    }\n  `,\n  styles: [\n    `\n      :host {\n        display: contents;\n      }\n      .no-cards-label {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        padding: 2em;\n        text-align: center;\n      }\n    `,\n  ],\n  standalone: false,\n})\nexport class InsightsClientsTabComponent extends BaseInsightsTabComponent {\n  readonly tabKey = MacherInsightsViewTab.Clients;\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { LibInsightsComponent } from './insights.component';\nimport { InsightsRequestsTabComponent } from './tab-routes/insights-requests-tab.component';\nimport { InsightsMatchersTabComponent } from './tab-routes/insights-matchers-tab.component';\nimport { InsightsProspectsTabComponent } from './tab-routes/insights-prospects-tab.component';\nimport { InsightsClientsTabComponent } from './tab-routes/insights-clients-tab.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: LibInsightsComponent,\n    children: [\n      { path: '', redirectTo: 'requests', pathMatch: 'full' },\n      { path: 'requests', component: InsightsRequestsTabComponent },\n      { path: 'matchers', component: InsightsMatchersTabComponent },\n      { path: 'prospects', component: InsightsProspectsTabComponent },\n      { path: 'clients', component: InsightsClientsTabComponent },\n    ],\n  },\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule],\n})\nexport class InsightsRoutingModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BaseInsightsComponent } from '../base-insights.component';\nimport { InsightsViewTab } from '../_enums/insights-tab.enum';\nimport { MacherInsightsViewTab } from '../_enums/matcher-insights-tab.enum';\nimport { IMasonrySize } from '../../masonry-container/masonry-container.interface';\n\n@Component({\n  selector: 'app-client-content-cards',\n  templateUrl: './content-cards.component.html',\n  styleUrls: ['./content-cards.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class AppClientContentCardsComponent extends BaseInsightsComponent {\n  @Input() searchText = '';\n  @Input() set tab(value: InsightsViewTab) {\n    this.selectedTab = value;\n  }\n  public INSIGHTS_VIEW_TAB = InsightsViewTab;\n  public override MATCHER_INSIGHTS_VIEW_TAB = MacherInsightsViewTab;\n\n  readonly masonrySizes: IMasonrySize[] = [\n    { columns: 1, gutter: 16 },\n    { mq: '768px', columns: 2, gutter: 20 },\n    { mq: '1280px', columns: 3, gutter: 20 },\n  ];\n}\n","<lib-masonry-container [sizes]=\"masonrySizes\" [repackTrigger]=\"selectedTab\">\n  @switch (selectedTab) {\n    @case (INSIGHTS_VIEW_TAB.Requests) {\n      <ng-container *ngIf=\"requests$ | async as clientRequests; else noDataLabel\">\n        @if (clientRequests?.meta?.totalDocs) {\n          @for (request of clientRequests?.docs; track request._id) {\n            <app-client-request-content-card [clientRequest]=\"request\" [searchText]=\"searchText\"></app-client-request-content-card>\n          }\n        } @else {\n          <ng-container *ngTemplateOutlet=\"noDataLabel\"></ng-container>\n        }\n      </ng-container>\n    }\n    @case (INSIGHTS_VIEW_TAB.Matchers) {\n      <ng-container *ngIf=\"matchers$ | async as matcher; else noDataLabel\">\n        @if (matcher?.meta?.totalDocs) {\n          @for (matcher of matcher?.docs; track matcher._id) {\n            <app-client-matcher-content-card [matcher]=\"matcher\" [searchText]=\"searchText\"></app-client-matcher-content-card>\n          }\n        } @else {\n          <ng-container *ngTemplateOutlet=\"noDataLabel\"></ng-container>\n        }\n      </ng-container>\n    }\n    @case (MATCHER_INSIGHTS_VIEW_TAB.Clients) {\n      <ng-container *ngIf=\"clients$ | async as clients; else noDataLabel\">\n        @if (clients?.meta?.totalDocs) {\n          @for (client of clients?.docs; track client._id) {\n            <app-matcher-client-content-card [client]=\"client\" [searchText]=\"searchText\"></app-matcher-client-content-card>\n          }\n        } @else {\n          <ng-container *ngTemplateOutlet=\"noDataLabel\"></ng-container>\n        }\n      </ng-container>\n    }\n    @case (INSIGHTS_VIEW_TAB.Prospects) {\n      <ng-container *ngIf=\"prospects$ | async as clientProspects; else noDataLabel\">\n        @if (clientProspects?.meta?.totalDocs) {\n          @for (prospect of clientProspects?.docs; track prospect._id) {\n            <app-client-prospect-content-card [clientProspect]=\"prospect\" [searchText]=\"searchText\"></app-client-prospect-content-card>\n          }\n        } @else {\n          <ng-container *ngTemplateOutlet=\"noDataLabel\"></ng-container>\n        }\n      </ng-container>\n    }\n  }\n</lib-masonry-container>\n\n<ng-template #noDataLabel>\n  <div class=\"no-cards-label\">\n    <p>{{ 'CLIENT.DASHBOARD.NO_' + (selectedTab | uppercase) + '_EXISTS' | translate }}</p>\n  </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { CardSkeletonModule } from '../card-skeleton/card-skeleton.module';\nimport { ExpansionPanelModule } from '../expansion-panel/expansion-panel.module';\nimport { FormFieldModule } from '../form-field/form-field.module';\nimport { GridModule } from '../grid/grid.module';\nimport { LibTabMenuModule } from '../tab-menu/tab-menu.module';\nimport { LibPageLayoutModule } from '../page-layout/page-layout.module';\nimport { LibMasonryContainerModule } from '../masonry-container/masonry-container.module';\nimport { SearchBarModule } from '../search-bar/search-bar.module';\nimport { ButtonsModule } from '../buttons/buttons.module';\nimport { ContentViewCardModule } from '../content-view-card/content-view-card.module';\nimport { LibMarqueeModule } from '../marquee/marquee.module';\nimport { LibPercentageBarModule } from '../percentage-bar/percentage-bar.module';\nimport { TextHighlightDirective } from '../../directives/text-highlight/text-highlight.directive';\n\nimport { InsightsRoutingModule } from './insights-routing.module';\nimport { LibInsightsComponent } from './insights.component';\nimport { BaseInsightsComponent } from './base-insights.component';\nimport { AppClientContentCardsComponent } from './content-cards/content-cards.component';\nimport { AppClientGridComponent } from './grid/content-grid.component';\nimport { InsightsRequestsTabComponent } from './tab-routes/insights-requests-tab.component';\nimport { InsightsMatchersTabComponent } from './tab-routes/insights-matchers-tab.component';\nimport { InsightsProspectsTabComponent } from './tab-routes/insights-prospects-tab.component';\nimport { InsightsClientsTabComponent } from './tab-routes/insights-clients-tab.component';\n\nimport { CardExpanderComponent } from './content-card/card-expander/card-expander.component';\nimport { ClientRequestCardComponent } from './content-card/client-request-card/client-request-card.component';\nimport { ClientMatcherCardComponent } from './content-card/client-matcher-card/client-matcher-card.component';\nimport { MatcherClientCardComponent } from './content-card/matcher-client-card/matcher-client-card.component';\nimport { ClientProspectCardComponent } from './content-card/client-prospect-card/client-prospect-card.component';\nimport { InsightsProgressBarsComponent } from './content-card/insights-progress-bars/insights-progress-bars.component';\n\nimport { ContentCardNameAgePipe } from './content-card/pipes/content-card-name-age.pipe';\nimport { ContentCardFeePerMeetupPipe } from './content-card/pipes/content-card-fee-per-meetup.pipe';\nimport { ContentCardBackgroundCheckPipe } from './content-card/pipes/content-card-background-check.pipe';\nimport { ContentCardLifetimeEarnPerMeetupPipe } from './content-card/pipes/content-card-lifetime-earn-per-meetup.pipe';\nimport { ContentCardBWHPipe } from './content-card/pipes/content-card-bwh.pipe';\nimport { ContentCardWeightHeightRangePipe } from './content-card/pipes/content-card-weight-height-range.pipe';\nimport { ContentCardStringArrayPipe } from './content-card/pipes/content-card-string-array.pipe';\n\n@NgModule({\n  declarations: [\n    LibInsightsComponent,\n    BaseInsightsComponent,\n    AppClientContentCardsComponent,\n    AppClientGridComponent,\n    CardExpanderComponent,\n    ClientRequestCardComponent,\n    ClientMatcherCardComponent,\n    MatcherClientCardComponent,\n    ClientProspectCardComponent,\n    InsightsProgressBarsComponent,\n    ContentCardNameAgePipe,\n    ContentCardFeePerMeetupPipe,\n    ContentCardBackgroundCheckPipe,\n    ContentCardLifetimeEarnPerMeetupPipe,\n    ContentCardBWHPipe,\n    ContentCardWeightHeightRangePipe,\n    ContentCardStringArrayPipe,\n    InsightsRequestsTabComponent,\n    InsightsMatchersTabComponent,\n    InsightsProspectsTabComponent,\n    InsightsClientsTabComponent,\n  ],\n  exports: [\n    LibInsightsComponent,\n    CardExpanderComponent,\n    ClientRequestCardComponent,\n    ClientMatcherCardComponent,\n    MatcherClientCardComponent,\n    ClientProspectCardComponent,\n    InsightsProgressBarsComponent,\n    ContentCardNameAgePipe,\n    ContentCardFeePerMeetupPipe,\n    ContentCardBackgroundCheckPipe,\n    ContentCardLifetimeEarnPerMeetupPipe,\n    ContentCardBWHPipe,\n    ContentCardWeightHeightRangePipe,\n    ContentCardStringArrayPipe,\n  ],\n  imports: [\n    CommonModule,\n    IonicModule,\n    CardSkeletonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    InsightsRoutingModule,\n    TranslateModule,\n    ExpansionPanelModule,\n    FormFieldModule,\n    GridModule,\n    LibTabMenuModule,\n    LibPageLayoutModule,\n    LibMasonryContainerModule,\n    SearchBarModule,\n    ButtonsModule,\n    ContentViewCardModule,\n    LibMarqueeModule,\n    LibPercentageBarModule,\n    TextHighlightDirective,\n  ],\n})\nexport class LibInsightsModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport interface InsightsLayoutConfig {\n  showHeader: boolean;\n  showBackButton: boolean;\n}\n\nexport const DEFAULT_INSIGHTS_LAYOUT_CONFIG: InsightsLayoutConfig = {\n  showHeader: true,\n  showBackButton: false,\n};\n\nexport const INSIGHTS_LAYOUT_CONFIG = new InjectionToken<InsightsLayoutConfig>('INSIGHTS_LAYOUT_CONFIG', {\n  providedIn: 'root',\n  factory: () => DEFAULT_INSIGHTS_LAYOUT_CONFIG,\n});\n","export class PaginationResponse<T> {\n  docs: T[] = [];\n  meta: {\n    hasNextPage?: boolean;\n    hasPrevPage?: boolean;\n    limit?: number;\n    nextPage?: number;\n    page?: number;\n    pagingCounter?: number;\n    prevPage?: number;\n    totalDocs: number;\n    totalPages: number;\n  } = { page: 0, totalDocs: 0, totalPages: 0 };\n}\n","export enum Polarity {\n  Positive = 'positive',\n  Negative = 'negative',\n}\n","export enum Ranks {\n  IronIV = 'Iron IV',\n  IronIII = 'Iron III',\n  IronII = 'Iron II',\n  IronI = 'Iron I',\n  BronzeIV = 'Bronze IV',\n  BronzeIII = 'Bronze III',\n  BronzeII = 'Bronze II',\n  BronzeI = 'Bronze I',\n  SilverIV = 'Silver IV',\n  SilverIII = 'Silver III',\n  SilverII = 'Silver II',\n  SilverI = 'Silver I',\n  GoldIV = 'Gold IV',\n  GoldIII = 'Gold III',\n  GoldII = 'Gold II',\n  GoldI = 'Gold I',\n  PlatinumIV = 'Platinum IV',\n  PlatinumIII = 'Platinum III',\n  PlatinumII = 'Platinum II',\n  PlatinumI = 'Platinum I',\n  DiamondIV = 'Diamond IV',\n  DiamondIII = 'Diamond III',\n  DiamondII = 'Diamond II',\n  DiamondI = 'Diamond I',\n  Master = 'Master',\n  GrandMaster = 'Grandmaster',\n  Challenger = 'Challenger',\n}\n","export interface IRichText {\n  html: string;\n  text: string;\n  markdown: string;\n}\n\nexport type RichTextToolbarAction =\n  'emoji' | 'gif' | 'bold' | 'italic' | 'strike' | 'link' | 'heading' | 'blockquote' | 'bullet-list' | 'ordered-list' | 'code-block' | 'superscript' | 'markdown-toggle';\n\nexport const DEFAULT_TOOLBAR_ACTIONS: RichTextToolbarAction[] = [\n  'emoji',\n  'gif',\n  'bold',\n  'italic',\n  'strike',\n  'link',\n  'heading',\n  'blockquote',\n  'bullet-list',\n  'ordered-list',\n  'code-block',\n  'superscript',\n  'markdown-toggle',\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  Renderer2,\n  ViewChild,\n  forwardRef,\n  inject,\n  CUSTOM_ELEMENTS_SCHEMA,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, NG_VALUE_ACCESSOR, ControlValueAccessor, ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport Quill from 'quill';\nimport { IRichText, RichTextToolbarAction, DEFAULT_TOOLBAR_ACTIONS } from './rich-text.model';\nimport { IEmojiPickerConfig } from '../../model/emoji-picker-config';\nimport 'emoji-picker-element';\n\n@Component({\n  selector: 'lib-rich-textarea',\n  standalone: true,\n  imports: [CommonModule, ReactiveFormsModule, IonicModule, TranslateModule],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => RichTextareaComponent),\n      multi: true,\n    },\n  ],\n  templateUrl: './rich-textarea.component.html',\n  styleUrl: './rich-textarea.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class RichTextareaComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\n  @ViewChild('quillEditor', { static: false }) quillEditorRef!: ElementRef;\n  @ViewChild('emojiPicker') emojiPickerRef!: ElementRef;\n\n  @Input() placeholder = 'Write something...';\n  @Input() maxLength = 5000;\n  @Input() showToolbar = true;\n  @Input() toolbarActions: RichTextToolbarAction[] = DEFAULT_TOOLBAR_ACTIONS;\n  @Input() emojiPickerConfig: IEmojiPickerConfig | null = null;\n\n  @Output() contentChange = new EventEmitter<IRichText>();\n\n  private cdr = inject(ChangeDetectorRef);\n  private renderer = inject(Renderer2);\n  private elementRef = inject(ElementRef);\n  private documentClickListener: () => void = () => {};\n\n  quill!: Quill;\n  isMarkdownMode = false;\n  readonly markdownTextControl = new FormControl<string>('', { nonNullable: true });\n  emojiVisible = false;\n  disabled = false;\n\n  private onChange: (value: IRichText | null) => void = () => {};\n  private onTouched: (touched: boolean) => void = () => {};\n\n  hasAction(action: RichTextToolbarAction): boolean {\n    return this.toolbarActions.includes(action);\n  }\n\n  ngAfterViewInit(): void {\n    this.initQuill();\n    this.documentClickListener = this.renderer.listen('document', 'click', this.onDocumentClick.bind(this));\n\n    if (this.emojiPickerConfig?.style && this.emojiPickerRef?.nativeElement) {\n      const style = document.createElement('style');\n      style.textContent = this.emojiPickerConfig.style;\n      this.emojiPickerRef.nativeElement.shadowRoot?.appendChild(style);\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.documentClickListener) {\n      this.documentClickListener();\n    }\n  }\n\n  private initQuill(): void {\n    if (!this.quillEditorRef) return;\n\n    this.quill = new Quill(this.quillEditorRef.nativeElement, {\n      theme: 'snow',\n      placeholder: this.placeholder,\n      modules: {\n        toolbar: false,\n      },\n    });\n\n    this.quill.on('text-change', () => {\n      const value = this.buildValue();\n      this.onChange(value);\n      this.contentChange.emit(value);\n    });\n\n    this.quill.on('selection-change', (range) => {\n      if (!range) {\n        this.onTouched(true);\n      }\n    });\n  }\n\n  private buildValue(): IRichText {\n    const html = this.quill.root.innerHTML;\n    const text = this.quill.getText().trim();\n    return { html, text, markdown: this.markdownTextControl.value || text };\n  }\n\n  // Toolbar actions\n  formatBold(): void {\n    this.toggleFormat('bold');\n  }\n  formatItalic(): void {\n    this.toggleFormat('italic');\n  }\n  formatStrike(): void {\n    this.toggleFormat('strike');\n  }\n  formatSuperscript(): void {\n    const fmt = this.quill.getFormat();\n    this.quill.format('script', fmt['script'] === 'super' ? false : 'super');\n  }\n\n  formatHeading(): void {\n    const fmt = this.quill.getFormat();\n    const current = (fmt['header'] as number) || 0;\n    this.quill.format('header', current ? 0 : 2);\n  }\n\n  formatBlockquote(): void {\n    const fmt = this.quill.getFormat();\n    this.quill.format('blockquote', !fmt['blockquote']);\n  }\n\n  formatBulletList(): void {\n    const fmt = this.quill.getFormat();\n    this.quill.format('list', fmt['list'] === 'bullet' ? false : 'bullet');\n  }\n\n  formatOrderedList(): void {\n    const fmt = this.quill.getFormat();\n    this.quill.format('list', fmt['list'] === 'ordered' ? false : 'ordered');\n  }\n\n  formatCodeBlock(): void {\n    const fmt = this.quill.getFormat();\n    this.quill.format('code-block', !fmt['code-block']);\n  }\n\n  insertLink(): void {\n    const range = this.quill.getSelection();\n    if (!range) return;\n    const url = prompt('Enter URL:');\n    if (url) {\n      if (range.length > 0) {\n        this.quill.formatText(range.index, range.length, 'link', url);\n      } else {\n        this.quill.insertText(range.index, url, 'link', url);\n      }\n    }\n  }\n\n  toggleEmoji(): void {\n    this.emojiVisible = !this.emojiVisible;\n    this.cdr.detectChanges();\n  }\n\n  onEmojiClick(event: any): void {\n    const range = this.quill.getSelection(true);\n    this.quill.insertText(range.index, event.detail.unicode);\n    this.quill.setSelection(range.index + event.detail.unicode.length);\n    this.emojiVisible = false;\n    this.cdr.detectChanges();\n  }\n\n  insertGif(): void {\n    const url = prompt('Enter GIF URL:');\n    if (url) {\n      const range = this.quill.getSelection(true);\n      this.quill.insertEmbed(range.index, 'image', url);\n    }\n  }\n\n  toggleMarkdownMode(): void {\n    if (this.isMarkdownMode) {\n      this.quill.root.innerHTML = this.simpleMarkdownToHtml(this.markdownTextControl.value);\n      this.isMarkdownMode = false;\n    } else {\n      this.markdownTextControl.setValue(this.quill.getText().trim(), { emitEvent: false });\n      this.isMarkdownMode = true;\n    }\n    this.cdr.detectChanges();\n  }\n\n  onMarkdownInput(): void {\n    const md = this.markdownTextControl.value;\n    const value: IRichText = {\n      html: this.simpleMarkdownToHtml(md),\n      text: md,\n      markdown: md,\n    };\n    this.onChange(value);\n    this.contentChange.emit(value);\n  }\n\n  private simpleMarkdownToHtml(md: string): string {\n    let html = md;\n    html = html.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\n    html = html.replace(/\\*(.*?)\\*/g, '<em>$1</em>');\n    html = html.replace(/~~(.*?)~~/g, '<s>$1</s>');\n    html = html.replace(/`(.*?)`/g, '<code>$1</code>');\n    html = html.replace(/\\n/g, '<br>');\n    return html;\n  }\n\n  private toggleFormat(format: string): void {\n    const fmt = this.quill.getFormat();\n    this.quill.format(format, !fmt[format]);\n  }\n\n  private onDocumentClick(event: Event): void {\n    if (!this.elementRef.nativeElement.contains(event.target)) {\n      this.emojiVisible = false;\n      this.cdr.detectChanges();\n    }\n  }\n\n  // ControlValueAccessor\n  writeValue(value: IRichText | null): void {\n    if (!value) {\n      if (this.quill) {\n        this.quill.setText('');\n      }\n      this.markdownTextControl.setValue('', { emitEvent: false });\n      return;\n    }\n    if (this.isMarkdownMode) {\n      this.markdownTextControl.setValue(value.markdown || value.text || '', { emitEvent: false });\n    } else if (this.quill) {\n      this.quill.root.innerHTML = value.html || '';\n    }\n  }\n\n  registerOnChange(fn: (value: IRichText | null) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: (touched: boolean) => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    if (isDisabled) {\n      this.markdownTextControl.disable({ emitEvent: false });\n    } else {\n      this.markdownTextControl.enable({ emitEvent: false });\n    }\n    if (this.quill) {\n      this.quill.enable(!isDisabled);\n    }\n  }\n}\n","<div class=\"rich-textarea-wrapper\" [class.disabled]=\"disabled\">\n  <div class=\"toolbar\" *ngIf=\"showToolbar && !isMarkdownMode\">\n    <button *ngIf=\"hasAction('emoji')\" type=\"button\" class=\"toolbar-btn\" title=\"Emoji\" (click)=\"toggleEmoji()\">\n      <ion-icon name=\"happy-outline\"></ion-icon>\n    </button>\n    <button *ngIf=\"hasAction('gif')\" type=\"button\" class=\"toolbar-btn\" title=\"GIF\" (click)=\"insertGif()\">\n      <span class=\"toolbar-text\">GIF</span>\n    </button>\n\n    <span *ngIf=\"hasAction('emoji') || hasAction('gif')\" class=\"toolbar-divider\"></span>\n\n    <button *ngIf=\"hasAction('bold')\" type=\"button\" class=\"toolbar-btn\" title=\"Bold\" (click)=\"formatBold()\">\n      <ion-icon name=\"text-outline\"></ion-icon>\n    </button>\n    <button *ngIf=\"hasAction('italic')\" type=\"button\" class=\"toolbar-btn\" title=\"Italic\" (click)=\"formatItalic()\">\n      <span class=\"toolbar-text italic\">I</span>\n    </button>\n    <button *ngIf=\"hasAction('strike')\" type=\"button\" class=\"toolbar-btn\" title=\"Strikethrough\" (click)=\"formatStrike()\">\n      <span class=\"toolbar-text strike\">S</span>\n    </button>\n    <button *ngIf=\"hasAction('link')\" type=\"button\" class=\"toolbar-btn\" title=\"Link\" (click)=\"insertLink()\">\n      <ion-icon name=\"link-outline\"></ion-icon>\n    </button>\n\n    <span *ngIf=\"hasAction('bold') || hasAction('italic') || hasAction('strike')\" class=\"toolbar-divider\"></span>\n\n    <button *ngIf=\"hasAction('heading')\" type=\"button\" class=\"toolbar-btn\" title=\"Heading\" (click)=\"formatHeading()\">\n      <span class=\"toolbar-text heading\">H</span>\n    </button>\n    <button *ngIf=\"hasAction('blockquote')\" type=\"button\" class=\"toolbar-btn\" title=\"Quote\" (click)=\"formatBlockquote()\">\n      <ion-icon name=\"chatbox-ellipses-outline\"></ion-icon>\n    </button>\n    <button *ngIf=\"hasAction('bullet-list')\" type=\"button\" class=\"toolbar-btn\" title=\"Bullet List\" (click)=\"formatBulletList()\">\n      <ion-icon name=\"list-outline\"></ion-icon>\n    </button>\n    <button *ngIf=\"hasAction('ordered-list')\" type=\"button\" class=\"toolbar-btn\" title=\"Ordered List\" (click)=\"formatOrderedList()\">\n      <span class=\"toolbar-text ordered\">1.</span>\n    </button>\n    <button *ngIf=\"hasAction('code-block')\" type=\"button\" class=\"toolbar-btn\" title=\"Code Block\" (click)=\"formatCodeBlock()\">\n      <ion-icon name=\"code-slash-outline\"></ion-icon>\n    </button>\n    <button *ngIf=\"hasAction('superscript')\" type=\"button\" class=\"toolbar-btn\" title=\"Superscript\" (click)=\"formatSuperscript()\">\n      <span class=\"toolbar-text superscript\">X<sup>2</sup></span>\n    </button>\n\n    <span class=\"toolbar-spacer\"></span>\n\n    <button\n      *ngIf=\"hasAction('markdown-toggle')\"\n      type=\"button\"\n      class=\"toolbar-btn markdown-toggle\"\n      [attr.title]=\"'RICH_TEXTAREA.MARKDOWN_MODE' | translate\"\n      (click)=\"toggleMarkdownMode()\"\n    >\n      <ion-icon name=\"logo-markdown\"></ion-icon>\n    </button>\n  </div>\n\n  <div class=\"toolbar markdown-bar\" *ngIf=\"showToolbar && isMarkdownMode\">\n    <span class=\"toolbar-label\">{{ 'RICH_TEXTAREA.MARKDOWN_MODE' | translate }}</span>\n    <span class=\"toolbar-spacer\"></span>\n    <button type=\"button\" class=\"toolbar-btn markdown-toggle active\" [attr.title]=\"'RICH_TEXTAREA.EXIT_MARKDOWN' | translate\" (click)=\"toggleMarkdownMode()\">\n      <ion-icon name=\"logo-markdown\"></ion-icon>\n    </button>\n  </div>\n\n  <div class=\"editor-area\" *ngIf=\"!isMarkdownMode\">\n    <div #quillEditor class=\"quill-container\"></div>\n  </div>\n\n  <div class=\"editor-area\" *ngIf=\"isMarkdownMode\">\n    <textarea class=\"markdown-textarea\" [formControl]=\"markdownTextControl\" (input)=\"onMarkdownInput()\" [placeholder]=\"placeholder\" [maxlength]=\"maxLength\"></textarea>\n  </div>\n\n  <div class=\"emoji-picker-container\" *ngIf=\"emojiVisible\">\n    <emoji-picker #emojiPicker (emoji-click)=\"onEmojiClick($event)\"></emoji-picker>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  CUSTOM_ELEMENTS_SCHEMA,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewChild,\n  forwardRef,\n  inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport 'emoji-picker-element';\nimport { IEmojiPickerConfig } from '../../model/emoji-picker-config';\nimport { ImageModel } from '../../model/image-model';\nimport { ImageCardModule } from '../photo-upload/image-card/image-card.module';\nimport { IText } from './text.interface';\n\n@Component({\n  selector: 'lib-text-box',\n  standalone: true,\n  imports: [CommonModule, ImageCardModule, MatInputModule, MatSelectModule, MatFormFieldModule],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TextBoxComponent),\n      multi: true,\n    },\n  ],\n  templateUrl: './text-box.component.html',\n  styleUrl: './text-box.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class TextBoxComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy {\n  @ViewChild('messageBox') messageBoxRef!: ElementRef;\n  @ViewChild('emojiPicker') emojiPickerRef!: ElementRef;\n\n  @Input() label: string = '';\n  @Input() maxLength: number = 100;\n  @Input() includeEmojiPicker: boolean = false;\n  @Input() emojiPickerConfig: IEmojiPickerConfig | null = null;\n  @Input() includeImageAttachment: boolean = false;\n  @Input() maxImageAttachmentLength: number = 10;\n\n  private renderer = inject(Renderer2);\n  private elementRef = inject(ElementRef);\n  private cdr = inject(ChangeDetectorRef);\n\n  private documentClickListener: () => void = () => {};\n\n  public emojiVisibility: boolean = false;\n  public attachedImagesVisibility: boolean = false;\n  public attachedImages: ImageModel[] = [];\n  public disabled: boolean = false;\n  public value: IText = { message: '', attachments: [] };\n\n  ngOnInit(): void {\n    this.documentClickListener = this.renderer.listen('document', 'click', this.onDocumentClick.bind(this));\n  }\n\n  ngAfterViewInit(): void {\n    if (this.emojiPickerConfig?.style) {\n      if (this.emojiPickerRef?.nativeElement) {\n        const style = document.createElement('style');\n        style.textContent = this.emojiPickerConfig.style;\n        this.emojiPickerRef.nativeElement.shadowRoot.appendChild(style);\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.documentClickListener) {\n      this.documentClickListener();\n    }\n  }\n\n  public onDocumentClick(event: Event): void {\n    const clickedInside = this.elementRef.nativeElement.contains(event.target);\n    if (!clickedInside) {\n      this.onBlurPickerSpace();\n    }\n  }\n\n  public onBlurPickerSpace(): void {\n    this.emojiVisibility = false;\n    this.cdr.detectChanges();\n  }\n\n  public onEmojiclick(event: any): void {\n    this.messageBoxRef.nativeElement.innerText += event.detail.unicode;\n    this.updateModel();\n  }\n\n  public onUploadImages(images: ImageModel[]): void {\n    const remainder = this.maxImageAttachmentLength - this.attachedImages.length;\n    if (images.length >= remainder) {\n      images = images.slice(0, remainder);\n    }\n    this.attachedImages = this.attachedImages.concat(images);\n    this.updateModel();\n  }\n\n  public onAttachedPhotoDelete(index: number): void {\n    this.attachedImages.splice(index, 1);\n    this.updateModel();\n  }\n\n  public onChange: (value: IText) => void = () => {};\n  public onTouched: (touched: boolean) => void = () => {};\n\n  writeValue(value: IText | null): void {\n    if (value == null && this.messageBoxRef) {\n      this.messageBoxRef.nativeElement.innerText = '';\n      this.attachedImages = [];\n      this.value = { message: '', attachments: [] };\n      this.attachedImagesVisibility = false;\n      this.cdr.detectChanges();\n      return;\n    }\n\n    let msg = '';\n    if (value && typeof value.message === 'string') {\n      msg = value.message.slice(0, this.maxLength);\n    }\n    if (this.messageBoxRef) {\n      this.messageBoxRef.nativeElement.innerText = msg;\n    }\n\n    const incomingAttachments = value && Array.isArray(value.attachments) ? value.attachments : [];\n\n    if (incomingAttachments.length) {\n      this.attachedImages = incomingAttachments.slice(0, this.maxImageAttachmentLength).map((att) => {\n        if (typeof att === 'string') {\n          return { image: att } as ImageModel;\n        }\n        return att;\n      });\n      this.attachedImagesVisibility = true;\n    } else {\n      this.attachedImages = [];\n      this.attachedImagesVisibility = false;\n    }\n\n    this.value = {\n      message: msg,\n      attachments: this.attachedImages.map((img) => img.image),\n    };\n    this.cdr.detectChanges();\n  }\n\n  registerOnChange(fn: (value: IText) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: (touched: boolean) => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public onKeydown(event: KeyboardEvent): void {\n    if (this.isDeleteOrArrowKey(event.key)) return;\n    if (this.messageBoxRef.nativeElement.innerText.length >= this.maxLength) {\n      event.preventDefault();\n      return;\n    }\n  }\n\n  public onPaste(event: ClipboardEvent): void {\n    event.preventDefault();\n    const data = event.clipboardData?.getData('text');\n    if (data) {\n      const clippedText = data.slice(0, this.maxLength);\n      this.messageBoxRef.nativeElement.innerText = clippedText;\n      this.updateModel();\n    }\n  }\n\n  public onInput(event: Event): void {\n    this.updateModel();\n  }\n\n  public updateModel(): void {\n    this.value = {\n      message: this.messageBoxRef.nativeElement.innerText,\n      attachments: this.attachedImages.map((img) => img.image),\n    };\n    this.onChange({ ...this.value });\n  }\n\n  private isDeleteOrArrowKey(key: string): boolean {\n    if (key === 'ArrowLeft' || key === 'ArrowRight' || key === 'ArrowUp' || key === 'ArrowDown' || key === 'Backspace') {\n      return true;\n    }\n    return false;\n  }\n}\n","<div class=\"input-group-wrapper\" [ngClass]=\"{ 'included-emoji-picker': includeEmojiPicker, 'included-image-attachment': includeImageAttachment }\">\n  <ion-icon\n    [ngClass]=\"{ 'emoji-picker-trigger': true, active: emojiVisibility }\"\n    [attr.name]=\"emojiPickerConfig?.pickerIcon ? '' : 'body-outline'\"\n    (click)=\"emojiVisibility = !emojiVisibility\"\n    *ngIf=\"includeEmojiPicker\"\n    [attr.src]=\"emojiPickerConfig?.pickerIcon\"\n  ></ion-icon>\n  <div class=\"text\" contenteditable=\"true\" (input)=\"onInput($event)\" (keydown)=\"onKeydown($event)\" (paste)=\"onPaste($event)\" #messageBox></div>\n  <emoji-picker\n    #emojiPicker\n    *ngIf=\"includeEmojiPicker\"\n    [ngStyle]=\"{ display: emojiVisibility ? '' : 'none' }\"\n    emoji-version=\"15.0\"\n    (emoji-click)=\"onEmojiclick($event)\"\n  ></emoji-picker>\n  <label *ngIf=\"label\" class=\"input-label\" [ngClass]=\"{ 'with-value': value.message }\">{{ label }}</label>\n  <span *ngIf=\"includeImageAttachment\" class=\"attach-images\" (click)=\"attachedImagesVisibility = !attachedImagesVisibility\">\n    <span class=\"horizontal\"></span>\n    <span *ngIf=\"!attachedImagesVisibility\" class=\"vertical\"></span>\n  </span>\n</div>\n<div *ngIf=\"includeImageAttachment && attachedImagesVisibility\" class=\"attached-images\">\n  <lib-image-card\n    (photosUpload)=\"onUploadImages($event)\"\n    [photos]=\"attachedImages\"\n    [maxNoOfPhotos]=\"maxImageAttachmentLength - attachedImages.length\"\n    [enableCropper]=\"true\"\n  ></lib-image-card>\n  <lib-image-card *ngFor=\"let image of attachedImages; let i = index\" [imageUrl]=\"image.image\" (removeImage)=\"onAttachedPhotoDelete(i)\"></lib-image-card>\n</div>\n","export enum ToastrActionInitiator {\n  TOASTR = 'toastr-child',\n  CONTROLLER = 'toast-controller',\n}\n","export enum ToastrActionType {\n  CREATION = 'toastr-creation',\n  DELETION = 'toastr-deletion',\n  REPLACEMENT = 'toastr-replacement',\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { IToastrActionEvent } from './interfaces/toastr-action.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LibToastrStackService {\n  private toastrChangeSubject: Subject<IToastrActionEvent>;\n  public toastrChanges: Observable<IToastrActionEvent>;\n\n  constructor() {\n    this.toastrChangeSubject = new Subject<IToastrActionEvent>();\n    this.toastrChanges = this.toastrChangeSubject.asObservable();\n  }\n\n  public emitToastrEvent(toastrActionEvent: IToastrActionEvent): void {\n    this.toastrChangeSubject.next(toastrActionEvent);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, filter } from 'rxjs';\nimport { ToastrActionInitiator } from '../../enums/action-initiator.enum';\nimport { ToastrActionType } from '../../enums/action-type.enum';\nimport { IToastrActionEvent } from '../../interfaces/toastr-action.interface';\nimport { IToasterConfig } from '../../models/toaster.config';\nimport { LibToastrStackService } from '../../toastr-stack.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LibToastrService {\n  private mouseOverSubject: Subject<boolean>;\n  private isMouseOver: boolean;\n  public mouseOver$: Observable<boolean>;\n\n  public toastrAnimationDuration: number;\n  public toastrConfig!: IToasterConfig;\n\n  constructor(private toastrStackService: LibToastrStackService) {\n    this.mouseOverSubject = new Subject<boolean>();\n    this.isMouseOver = false;\n    this.mouseOver$ = this.mouseOverSubject.asObservable();\n    this.toastrAnimationDuration = 300;\n  }\n  public setMouseOverState(isMouseOver: boolean): void {\n    if (this.isMouseOver !== isMouseOver) {\n      this.isMouseOver = isMouseOver;\n      this.mouseOverSubject.next(this.isMouseOver);\n    }\n  }\n\n  public emitToastrDeletionEvent(toastrConfig: IToasterConfig): void {\n    const toastrDeletionActionEvent: IToastrActionEvent = {\n      type: ToastrActionType.DELETION,\n      initiator: ToastrActionInitiator.TOASTR,\n      config: toastrConfig,\n    };\n    this.toastrStackService.emitToastrEvent(toastrDeletionActionEvent);\n  }\n\n  public emitToastrReplacementEvent(updatedToastrConfig: IToasterConfig): void {\n    const toastrReplacementActionEvent: IToastrActionEvent = {\n      type: ToastrActionType.REPLACEMENT,\n      initiator: ToastrActionInitiator.TOASTR,\n      config: updatedToastrConfig,\n    };\n    this.toastrStackService.emitToastrEvent(toastrReplacementActionEvent);\n  }\n\n  public onToastrReplacementEvent(): Observable<IToastrActionEvent> {\n    return this.toastrStackService.toastrChanges.pipe(\n      filter((toastrActionEvent: IToastrActionEvent) => {\n        return (\n          toastrActionEvent.initiator === ToastrActionInitiator.CONTROLLER &&\n          toastrActionEvent.type === ToastrActionType.REPLACEMENT &&\n          toastrActionEvent.config.token === this.toastrConfig.token\n        );\n      }),\n    );\n  }\n\n  public onToastrDeletionEvent(): Observable<IToastrActionEvent> {\n    return this.toastrStackService.toastrChanges.pipe(\n      filter((toastrActionEvent: IToastrActionEvent) => {\n        return (\n          toastrActionEvent.initiator === ToastrActionInitiator.CONTROLLER &&\n          toastrActionEvent.type === ToastrActionType.DELETION &&\n          toastrActionEvent.config.token === this.toastrConfig.token\n        );\n      }),\n    );\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { LibToastrService } from '../toastr/toastr.service';\n\n@Component({\n  selector: 'lib-loading-bar',\n  templateUrl: './loading-bar.component.html',\n  styleUrl: './loading-bar.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n  host: { 'data-cid': 'lib-loading-bar' },\n})\nexport class LibLoadingBarComponent implements OnInit, OnDestroy {\n  private destroy$: Subject<void> = new Subject<void>();\n  public mouseOver: boolean = false;\n  @Input() toasterLife: number = 0;\n\n  constructor(\n    private libToastrService: LibToastrService,\n    private changeDetetorRef: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit(): void {\n    this.toasterLife = this.toasterLife || 0;\n    this.destroy$ = new Subject<void>();\n    this.mouseOver = false;\n    this.libToastrService.mouseOver$.pipe(takeUntil(this.destroy$)).subscribe((mouseOver: boolean) => {\n      this.mouseOver = mouseOver;\n      this.changeDetetorRef.detectChanges();\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","<div class=\"lib-progress-base\">\n  <div\n    class=\"lib-progress-base__inner\"\n    [ngClass]=\"mouseOver ? 'lib-progress-base__inner--mouse-in' : 'lib-progress-base__inner--mouse-out'\"\n    [ngStyle]=\"{ 'animation-duration.ms': toasterLife }\"\n  ></div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { Subject, first, takeUntil } from 'rxjs';\r\nimport { IToastrActionEvent } from '../../interfaces/toastr-action.interface';\r\nimport { IToasterConfig } from '../../models/toaster.config';\r\nimport { LibToastrService } from './toastr.service';\r\n\r\n@Component({\r\n  selector: 'lib-toastr',\r\n  templateUrl: './toastr.component.html',\r\n  styleUrls: ['./toastr.component.scss'],\r\n  providers: [LibToastrService],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class LibToastrComponent implements OnInit, OnDestroy {\r\n  // Main Configuration object.\r\n  @Input() config!: IToasterConfig;\r\n\r\n  // Callback method to be called when close button is clicked.\r\n  @Output() closeClick = new EventEmitter();\r\n\r\n  // Callback method to be called when checkbox is clicked(changed).\r\n  @Output() checkboxChange = new EventEmitter();\r\n\r\n  // Default and minimum life of the toaster. If need, more than 3s life can be passed in configuration.\r\n  public toasterLife: number = 2000;\r\n  public show: boolean = false;\r\n\r\n  public toasterIcon: string = '';\r\n  public timeout: number | null = null;\r\n  public checkbox: boolean = false;\r\n  public destroy$: Subject<void> = new Subject<void>();\r\n\r\n  public animationDuration: number = 0;\r\n  public toastrExiting: boolean = false;\r\n  public selfKill: boolean = true;\r\n\r\n  // Properties to replace method calls\r\n  public descriptionContent: string = '';\r\n  public descriptionTemplate: TemplateRef<void> | null = null;\r\n\r\n  constructor(\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    private libToastrService: LibToastrService,\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.toasterLife = 2000;\r\n    this.show = false;\r\n    this.destroy$ = new Subject<void>();\r\n    this.checkbox = false;\r\n    this.toastrExiting = false;\r\n    this.selfKill = true;\r\n    this.animationDuration = this.libToastrService.toastrAnimationDuration;\r\n    this.libToastrService.toastrConfig = this.config;\r\n    this.libToastrService.mouseOver$.pipe(takeUntil(this.destroy$)).subscribe((isMouseOver: boolean) => {\r\n      if (isMouseOver) {\r\n        this._clearTime();\r\n      } else {\r\n        this._initTimeout();\r\n      }\r\n    });\r\n\r\n    this.libToastrService\r\n      .onToastrReplacementEvent()\r\n      .pipe(first())\r\n      .subscribe((toastrActionEvent: IToastrActionEvent) => {\r\n        this.selfKill = false;\r\n        this.performToastrCleanupRitual(toastrActionEvent.config);\r\n      });\r\n    this.libToastrService\r\n      .onToastrDeletionEvent()\r\n      .pipe(first())\r\n      .subscribe((toastrActionEvent: IToastrActionEvent) => {\r\n        this.selfKill = true;\r\n        this.performToastrCleanupRitual(toastrActionEvent.config);\r\n      });\r\n\r\n    this._initToaster();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  private _initToaster(): void {\r\n    this.show = true;\r\n    this.checkbox = false;\r\n    this.toasterIcon = this.config.severity + '.svg';\r\n\r\n    // Initialize description properties\r\n    this._updateDescriptionProperties();\r\n\r\n    if (this.config.life && this.config.life > this.toasterLife) {\r\n      this.toasterLife = this.config.life;\r\n    }\r\n\r\n    if (!this.config.clickToClose || this.config.hideClose) this._initTimeout();\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  private _updateDescriptionProperties(): void {\r\n    const desc = this.config?.description;\r\n\r\n    // Set description content\r\n    if (desc?.type === 'string' || desc?.type === 'button') {\r\n      this.descriptionContent = typeof desc.content === 'string' ? desc.content : '';\r\n    } else {\r\n      this.descriptionContent = '';\r\n    }\r\n\r\n    // Set template reference\r\n    if (desc?.type === 'template' && desc.content instanceof TemplateRef) {\r\n      this.descriptionTemplate = desc.content;\r\n    } else {\r\n      this.descriptionTemplate = null;\r\n    }\r\n  }\r\n\r\n  private _initTimeout(): void {\r\n    this.timeout = setTimeout(() => {\r\n      this.performToastrCleanupRitual();\r\n      this.changeDetectorRef.detectChanges();\r\n    }, this.toasterLife);\r\n  }\r\n\r\n  private _clearTime(): void {\r\n    if (this.timeout) {\r\n      clearTimeout(this.timeout);\r\n      this.timeout = null;\r\n    }\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  public onCloseIconClick(event: Event): void {\r\n    this.performToastrCleanupRitual();\r\n    this.closeClick.emit();\r\n    event.preventDefault();\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  public onCheckboxChange(): void {\r\n    this.checkbox = !this.checkbox;\r\n    this.checkboxChange.emit({ checked: this.checkbox });\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  public mouseOver(mouseState: boolean): void {\r\n    this.libToastrService.setMouseOverState(mouseState);\r\n  }\r\n\r\n  public performToastrCleanupRitual(updatedToastrConfig?: IToasterConfig): void {\r\n    if (!this.toastrExiting) {\r\n      this._clearTime();\r\n      setTimeout(() => {\r\n        if (this.selfKill) {\r\n          this.libToastrService.emitToastrDeletionEvent(this.config);\r\n        } else {\r\n          this.libToastrService.emitToastrReplacementEvent(updatedToastrConfig || this.config);\r\n        }\r\n      }, this.animationDuration);\r\n    }\r\n    this.toastrExiting = true;\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  // REMOVE ALL THESE METHODS - they are no longer used in template\r\n  // public getDescriptionContent(): string {\r\n  //   const desc = this.config?.description;\r\n  //   if (desc?.type === 'string' || desc?.type === 'button') {\r\n  //     return typeof desc.content === 'string' ? desc.content : '';\r\n  //   }\r\n  //   return '';\r\n  // }\r\n  //\r\n  // public getDescriptionTemplate(): TemplateRef<void> | null {\r\n  //   const desc = this.config?.description;\r\n  //   if (desc?.type === 'template' && desc.content instanceof TemplateRef) {\r\n  //     return desc.content;\r\n  //   }\r\n  //   return null;\r\n  // }\r\n  //\r\n  // public isTemplateDescription(): boolean {\r\n  //   return this.config?.description?.type === 'template';\r\n  // }\r\n  //\r\n  // public isStringDescription(): boolean {\r\n  //   return this.config?.description?.type === 'string';\r\n  // }\r\n  //\r\n  // public isButtonDescription(): boolean {\r\n  //   return this.config?.description?.type === 'button';\r\n  // }\r\n}\r\n","@if (show) {\r\n  <div\r\n    (mouseover)=\"mouseOver(true)\"\r\n    (mouseleave)=\"mouseOver(false)\"\r\n    class=\"message-box app-toaster-border app-toaster-{{ config.severity }} toaster-{{ config.position || 'right-top' }} {{\r\n      toastrExiting ? 'toaster-' + (config.position || 'right-top') + '--exit' : 'toaster-' + (config.position || 'right-top') + '--enter'\r\n    }}\"\r\n    [ngStyle]=\"{ 'animation-duration.ms': animationDuration }\"\r\n  >\r\n    <div class=\"message-box-wrapper app-toaster-wrapper\">\r\n      <img class=\"message-box-icon\" [src]=\"'./../../../assets/icons/' + toasterIcon\" alt=\"Toster icon\" />\r\n      <div class=\"message-box-content\">\r\n        <h2 class=\"m-0 f-calistoga\">{{ config.title | translate }}</h2>\r\n        @if (config.description.type === 'string') {\r\n          <p class=\"m-0 f-gilroy-medium\">{{ (descriptionContent | translate) || '' }}</p>\r\n        } @else if (config.description.type === 'template') {\r\n          <ng-container *ngTemplateOutlet=\"descriptionTemplate\"></ng-container>\r\n        } @else if (config.description.type === 'button') {\r\n          <p class=\"m-0 f-gilroy-medium message-box-content__button-wrapper\">\r\n            <span>{{ (descriptionContent | translate) || '' }}</span>\r\n            <span class=\"message-box-content__button-wrapper__button\" (click)=\"config.button?.onClick()\"> &nbsp;{{ config.button?.name || '' }} </span>\r\n          </p>\r\n        } @else {\r\n          <!-- No Description Content -->\r\n        }\r\n        @if (config.loading && !config.clickToClose) {\r\n          <lib-loading-bar [toasterLife]=\"toasterLife\"></lib-loading-bar>\r\n        }\r\n      </div>\r\n      <div class=\"app-action-button\">\r\n        @if (!config.hideClose) {\r\n          <span class=\"absolute top\">\r\n            <img src=\"assets/icons/close.svg\" alt=\"Toster Close icon\" libTooltip=\"Close\" (click)=\"onCloseIconClick($event)\" />\r\n          </span>\r\n        }\r\n        @if (config.markCheck) {\r\n          @if (!checkbox) {\r\n            <span (click)=\"onCheckboxChange()\" libTooltip=\"Checkbox\" class=\"app-toaster-checkbox\"></span>\r\n          } @else {\r\n            <span class=\"absolute bottom\">\r\n              <img (click)=\"onCheckboxChange()\" libTooltip=\"Checkbox\" src=\"assets/icons/check.svg\" class=\"check-icon\" alt=\"Toster icon\" />\r\n            </span>\r\n          }\r\n        }\r\n      </div>\r\n    </div>\r\n  </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from '../../../tooltip/tooltip.module';\nimport { LibLoadingBarComponent } from '../loading-bar/loading-bar.component';\nimport { LibToastrComponent } from './toastr.component';\n\n@NgModule({\n  declarations: [LibToastrComponent, LibLoadingBarComponent],\n  imports: [CommonModule, TranslateModule, TooltipModule],\n  exports: [LibToastrComponent],\n})\nexport class LibToastrModule {}\n","export enum ToastrDescription {\n  STRING = 'string',\n  TEMPLATE = 'template',\n  BUTTON = 'button',\n}\n","export enum ToastrPosition {\n  LeftTop = 'left-top',\n  LeftBottom = 'left-bottom',\n  RightTop = 'right-top',\n  RightBottom = 'right-bottom',\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { ToastrActionInitiator } from './enums/action-initiator.enum';\nimport { ToastrActionType } from './enums/action-type.enum';\nimport { ToastrPosition } from './enums/toastr-position.enum';\nimport { IToastrActionEvent } from './interfaces/toastr-action.interface';\nimport { IToasterConfig } from './models/toaster.config';\nimport { ToastrStackConfig } from './models/toastr-stack.config';\nimport { LibToastrStackService } from './toastr-stack.service';\n\n@Component({\n  selector: 'lib-toastr-stack',\n  templateUrl: './toastr-stack.component.html',\n  styleUrls: ['./toastr-stack.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n  host: { 'data-cid': 'lib-toastr-stack' },\n})\nexport class LibToastrStackComponent implements OnInit, OnDestroy {\n  @Input() max: number = 5;\n  @Input() position: ToastrPosition = ToastrPosition.RightTop;\n  @Input() config$!: Observable<ToastrStackConfig>;\n\n  public configs: Array<IToasterConfig> = [];\n  private componentDestroyed$: Subject<void> = new Subject<void>();\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    private toastrStackService: LibToastrStackService,\n  ) {}\n\n  ngOnInit(): void {\n    this.initListeners();\n  }\n\n  ngOnDestroy(): void {\n    this.componentDestroyed$.next();\n    this.componentDestroyed$.complete();\n  }\n\n  private initListeners(): void {\n    this.config$.pipe(takeUntil(this.componentDestroyed$)).subscribe((toastrStackConfig: ToastrStackConfig) => {\n      const toasterConfig: IToasterConfig = { ...toastrStackConfig, position: this.position };\n\n      if (this.configs.map(({ token }) => token).includes(toasterConfig.token)) {\n        // Toastr Replacement Block\n        const toastrReplacementActionEvent: IToastrActionEvent = {\n          type: ToastrActionType.REPLACEMENT,\n          initiator: ToastrActionInitiator.CONTROLLER,\n          config: toasterConfig,\n        };\n\n        this.toastrStackService.emitToastrEvent(toastrReplacementActionEvent);\n      } else {\n        // Toastr Creation Block\n        this.configs.push(toasterConfig);\n      }\n\n      if (this.configs.length > this.max) {\n        // NO MORE Toastrs Block\n        const toastrLimitActionEvent: IToastrActionEvent = {\n          type: ToastrActionType.DELETION,\n          initiator: ToastrActionInitiator.CONTROLLER,\n          config: this.configs[this.configs.length - (this.max + 1)],\n        };\n\n        this.toastrStackService.emitToastrEvent(toastrLimitActionEvent);\n      }\n      this.cdr.detectChanges();\n    });\n\n    this.toastrStackService.toastrChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((toastrActionEvent: IToastrActionEvent) => {\n      if (toastrActionEvent && toastrActionEvent?.config && toastrActionEvent.initiator === ToastrActionInitiator.TOASTR) {\n        switch (toastrActionEvent.type) {\n          case ToastrActionType.DELETION:\n            this.configs = this.configs.filter((config) => config.token !== toastrActionEvent.config.token);\n            break;\n          case ToastrActionType.REPLACEMENT:\n            this.configs = this.configs.filter((config) => config.token !== toastrActionEvent.config.token).concat(toastrActionEvent.config);\n            break;\n        }\n\n        this.cdr.detectChanges();\n      }\n    });\n  }\n}\n","<div [class]=\"'toastr-stack ' + position\">\n  @for (config of configs; track config) {\n    <div class=\"toastr-wrapper\">\n      <lib-toastr [config]=\"config\"></lib-toastr>\n    </div>\n  }\n</div>\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { LibToastrModule } from './components/toastr/toastr.module';\nimport { LibToastrStackComponent } from './toastr-stack.component';\nimport { LibToastrStackService } from './toastr-stack.service';\n\n@NgModule({\n  declarations: [LibToastrStackComponent],\n  imports: [TranslateModule, TooltipModule, LibToastrModule],\n  providers: [LibToastrStackService],\n  exports: [LibToastrStackComponent],\n})\nexport class LibToastrStackModule {}\n","export interface IToggleGraphics {\n  /**\n   * The `enable` key holds the value that will be displayed when the toggle is in the \"on\" state.\n   * - For the 'image' variant: This should be the URL of the image that will appear on the active side of the toggle.\n   * - For the 'text' variant: This should be the label or text that will appear when the toggle is active.\n   * - When the toggle is in the \"on\" state:\n   *   - If `enable` is defined, the image (or text) will be displayed on the right side of the toggle.\n   *   - If the `variant` is 'text', this text will be visible on the right side.\n   */\n  enable?: string;\n\n  /**\n   * The `disable` key holds the value that will be displayed when the toggle is in the \"off\" state.\n   * - For the 'image' variant: This should be the URL of the image that will appear on the inactive side of the toggle.\n   * - For the 'text' variant: This should be the label or text that will appear when the toggle is inactive.\n   * - When the toggle is in the \"off\" state:\n   *   - If `disable` is defined, the image (or text) will be displayed on the right side of the toggle.\n   *   - If the `variant` is 'text', this text will be visible on the left side.\n   */\n  disable?: string;\n}\n\n/**\n * Behavior of IToggleGraphics Interface:\n *\n * 1. Basic Variant:\n *    - When the variant is 'basic', no text or image will be displayed, and the toggle will act as a simple switch.\n *\n * 2. Image Variant:\n *    - When the toggle is in the \"off\" state:\n *      - On the left side of the toggle, the image source specified in the `enable` key will be displayed (if provided).\n *      - On the right side of the toggle, the image source specified in the `disable` key will be displayed (if provided).\n *    - When the toggle is in the \"on\" state:\n *      - The image source specified in the `disable` key will now be displayed on the left side.\n *      - The image source specified in the `enable` key will now be displayed on the right side.\n *\n * 3. Text Variant:\n *    - The functionality is the same as the 'image' variant, but instead of displaying images, the toggle will display text labels.\n *    - When the toggle is in the \"off\" state:\n *      - The text specified in the `enable` key will be shown on the left side.\n *      - The text specified in the `disable` key will be shown on the right side.\n *    - When the toggle is in the \"on\" state:\n *      - The text specified in the `disable` key will be shown on the left side.\n *      - The text specified in the `enable` key will be shown on the right side.\n */\n","// OBSERVATION: This is a shared library component (ionic-library). Changes here are NOT\n// automatically picked up by consuming apps like cyrano unless:\n//   1. The library is rebuilt (npm run dev:watch or ng build), AND\n//   2. The consuming app's node_modules has a symlink to the dist output, OR you manually\n//      copy the built files from dist/nextsapien-component-lib/ into the consumer's\n//      node_modules/@naniteninja/ionic-lib/.\n// If cyrano was installed via npm (not linked), the library watcher's output lands in\n// ionic-library/dist/ but cyrano's node_modules still has the old npm-installed copy.\n// Symptom: changes compile fine in the library but the app keeps showing old behavior.\n// Fix: manually cp -r dist/nextsapien-component-lib/. → cyrano/node_modules/@naniteninja/ionic-lib/\n// and let the Angular dev server rebuild.\nimport { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ILibMenuItem } from '../../model/lib-menu-item';\nimport { ButtonsModule } from '../buttons/buttons.module';\nimport { NotificationStatuses } from '../notifications-list/enums/notification-statuses.enum';\nimport { NotificationSwipes } from '../notifications-list/enums/notification-swipes.enum';\nimport { INotificationActivity, INotificationItem, INotificationsList } from '../notifications-list/interfaces';\nimport { NotificationsListComponent } from '../notifications-list/notifications-list/notifications-list.component';\nimport { SearchBarVisibilityService } from '../page-layout/search-bar-visibility.service';\n\n@Component({\n  standalone: true,\n  selector: 'lib-user-menu',\n  templateUrl: './user-menu.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ButtonsModule, NotificationsListComponent, CommonModule, InfiniteScrollModule, TranslateModule],\n})\nexport class UserMenuComponent implements OnInit, OnChanges {\n  @ViewChild('logoutTemplate', { static: true }) logoutTemplate!: TemplateRef<HTMLElement>;\n  @ViewChild('settingsTemplate', { static: true }) settingsTemplate!: TemplateRef<HTMLElement>;\n  @ViewChild('infoTemplate', { static: true }) infoTemplate!: TemplateRef<HTMLElement>;\n  @ViewChild('feedbackTemplate', { static: true }) feedbackTemplate!: TemplateRef<HTMLElement>;\n  @ViewChild('aisearchTemplate', { static: true }) aisearchTemplate!: TemplateRef<HTMLElement>;\n  @ViewChild('notificationsTemplate', { static: true }) notificationsTemplate!: TemplateRef<HTMLElement>;\n  @ViewChild('scrollableContainer') scrollableContainer!: ElementRef;\n  @Input() customMenuItems: ILibMenuItem[] = [];\n  @Input() notifications: INotificationsList[] = [];\n  @Input() isLoadingNotifications: boolean = false;\n  @Input() userImageUrl: string = '';\n\n  @Output() handleNotificationClick = new EventEmitter<INotificationItem>();\n  @Output() handleNotificationAccepted = new EventEmitter<INotificationItem>();\n  // Emitted when user scrolls up to load older notifications in infinite scroll\n  @Output() getNotifications = new EventEmitter<boolean>();\n  // Emitted when a notification is deleted (swiped)\n  @Output() handleNotificationDelete = new EventEmitter<{ id: string; isButtonClick: boolean }>();\n  // Emitted when user opens notifications panel (to mark all as \"seen\" and clear avatar dot)\n  @Output() notificationsPanelOpened = new EventEmitter<void>();\n  // Emitted when the user clicks on every menu option\n  @Output() emitFeedback = new EventEmitter<void>();\n  @Output() emitSettings = new EventEmitter<void>();\n  @Output() emitInfo = new EventEmitter<void>();\n  @Output() emitLogout = new EventEmitter<void>();\n  @Output() emitToggleSearch = new EventEmitter<boolean>();\n\n  @Input() searchVisible = false;\n\n  /** Distance in pixels before the bottom to start loading more items */\n  public scrollThreshold = 0;\n  /** Time in milliseconds during which to ignore scroll events */\n  public throttle = 0;\n  /** Distance in percentage of container height to trigger infinite scroll */\n  public distance = 0;\n\n  public notificationsOpened: boolean = false;\n  public moreNotificationsEnabled: boolean = false;\n\n  /** Mirrors `computeHasNewNotifications` for template bindings (avoid method calls in templates). */\n  public hasNewNotifications = false;\n\n  public menuItems: ILibMenuItem[] = [];\n  private cdr = inject(ChangeDetectorRef);\n  private searchBarVisibility = inject(SearchBarVisibilityService);\n\n  ngOnInit(): void {\n    this.customMenuItems = this.customMenuItems || [];\n    this.menuItems = [\n      ...this.customMenuItems,\n      { title: 'Settings', cssClass: 'user-menu-item', templateRef: this.settingsTemplate, separator: true, command: () => this.emitSettings.emit() },\n      { title: 'Logout', cssClass: 'user-menu-item', templateRef: this.logoutTemplate, command: () => this.emitLogout.emit() },\n      { title: 'Feedback', cssClass: 'user-menu-item', templateRef: this.feedbackTemplate, separator: true, command: () => this.emitFeedback.emit() },\n      {\n        title: 'Hide Search',\n        cssClass: 'user-menu-item',\n        templateRef: this.aisearchTemplate,\n        separator: true,\n        disableClick: true,\n      },\n      {\n        title: 'Notifications',\n        cssClass: 'user-menu-item',\n        templateRef: this.notificationsTemplate,\n        disableClick: true,\n      },\n    ];\n    this.refreshHasNewNotifications();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['customMenuItems'] && !changes['customMenuItems'].firstChange) {\n      this.rebuildMenuItems();\n    }\n    if (changes['notifications']) {\n      this.refreshHasNewNotifications();\n      this.cdr.markForCheck();\n    }\n    if (changes['searchVisible']) {\n      this.cdr.markForCheck();\n    }\n  }\n\n  private rebuildMenuItems(): void {\n    this.customMenuItems = this.customMenuItems || [];\n    this.menuItems = [\n      ...this.customMenuItems,\n      { title: 'Settings', cssClass: 'user-menu-item', templateRef: this.settingsTemplate, separator: true, command: () => this.emitSettings.emit() },\n      { title: 'Logout', cssClass: 'user-menu-item', templateRef: this.logoutTemplate, command: () => this.emitLogout.emit() },\n      { title: 'Feedback', cssClass: 'user-menu-item', templateRef: this.feedbackTemplate, separator: true, command: () => this.emitFeedback.emit() },\n      {\n        title: 'Hide Search',\n        cssClass: 'user-menu-item',\n        templateRef: this.aisearchTemplate,\n        separator: true,\n        disableClick: true,\n      },\n      {\n        title: 'Notifications',\n        cssClass: 'user-menu-item',\n        templateRef: this.notificationsTemplate,\n        disableClick: true,\n      },\n    ];\n    this.cdr.markForCheck();\n    this.refreshHasNewNotifications();\n  }\n\n  private refreshHasNewNotifications(): void {\n    this.hasNewNotifications = this.computeHasNewNotifications();\n  }\n\n  private computeHasNewNotifications(): boolean {\n    const notificationList = this.notifications.find((notificationsList) => notificationsList.status === NotificationStatuses.NEW);\n    if (!notificationList) return false;\n    return notificationList.items.length > 0;\n  }\n\n  public enableMoreNotifications(): void {\n    this.moreNotificationsEnabled = true;\n    this.isLoadingNotifications = true;\n    // Add small delay to avoid potential duplicate calls from scroll events\n    setTimeout(() => {\n      if (this.moreNotificationsEnabled) {\n        this.onScrollNotifications();\n      }\n    }, 100);\n  }\n\n  public onScrollNotifications(): void {\n    this.getNotifications.emit(true);\n  }\n\n  public notificationClicked(e: INotificationItem): void {\n    this.handleNotificationClick.emit(e);\n  }\n\n  public toggleNotifications(): void {\n    this.notificationsOpened = !this.notificationsOpened;\n    if (this.notificationsOpened && this.hasNewNotifications) {\n      this.hasNewNotifications = false;\n      this.notificationsPanelOpened.emit();\n    }\n  }\n\n  public handleNotificationActivity(event: INotificationActivity): void {\n    if (event.swipe === NotificationSwipes.LEFT || event.swipe === NotificationSwipes.RIGHT) {\n      this.handleNotificationDelete.emit({\n        id: event.id,\n        isButtonClick: event.isButtonClick || false,\n      });\n    }\n  }\n\n  public onNotificationAccepted(item: INotificationItem): void {\n    this.handleNotificationAccepted.emit(item);\n  }\n\n  public toggleSearchVisibility(): void {\n    this.searchVisible = !this.searchVisible;\n    this.searchBarVisibility.setVisible(this.searchVisible);\n    this.emitToggleSearch.emit(this.searchVisible);\n    this.cdr.markForCheck();\n  }\n}\n","<lib-menu-btn\n  [menuBtnImgUrl]=\"userImageUrl\"\n  [hasNotification]=\"hasNewNotifications\"\n  [menuBtnNotificationIconUrl]=\"'assets/icons/notification-pop.svg'\"\n  [menuDirection]=\"'rtl'\"\n  [menuItems]=\"menuItems\"\n  [overlayClass]=\"'user-menu-overlay'\"\n  [isUserMenu]=\"true\"\n  id=\"user-menu-btn\"\n>\n</lib-menu-btn>\n\n<!-- Settings -->\n<ng-template #settingsTemplate>\n  <div class=\"basic-user-menu-template\">\n    <div class=\"body-template\">\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\">\n        <path\n          d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\n          stroke=\"white\"\n          stroke-opacity=\"0.5\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M19.4 15C19.1277 15.6171 19.2583 16.3378 19.73 16.82L19.79 16.88C20.1656 17.2551 20.3766 17.7642 20.3766 18.295C20.3766 18.8258 20.1656 19.3349 19.79 19.71C19.4149 20.0856 18.9058 20.2966 18.375 20.2966C17.8442 20.2966 17.3351 20.0856 16.96 19.71L16.9 19.65C16.4178 19.1783 15.6971 19.0477 15.08 19.32C14.4755 19.5791 14.0826 20.1724 14.07 20.83V21C14.07 22.1046 13.1746 23 12.07 23C10.9654 23 10.07 22.1046 10.07 21V20.91C10.0436 20.2327 9.61032 19.6339 8.97 19.4C8.35286 19.1277 7.63215 19.2583 7.15 19.73L7.09 19.79C6.71486 20.1656 6.20579 20.3766 5.675 20.3766C5.14421 20.3766 4.63514 20.1656 4.26 19.79C3.88437 19.4149 3.67339 18.9058 3.67339 18.375C3.67339 17.8442 3.88437 17.3351 4.26 16.96L4.32 16.9C4.79168 16.4178 4.92231 15.6971 4.65 15.08C4.39086 14.4755 3.79757 14.0826 3.14 14.07H3C1.89543 14.07 1 13.1746 1 12.07C1 10.9654 1.89543 10.07 3 10.07H3.09C3.76727 10.0436 4.36614 9.61032 4.6 8.97C4.87231 8.35286 4.74168 7.63215 4.27 7.15L4.21 7.09C3.83437 6.71486 3.62339 6.20579 3.62339 5.675C3.62339 5.14421 3.83437 4.63514 4.21 4.26C4.58514 3.88437 5.09421 3.67339 5.625 3.67339C6.15579 3.67339 6.66486 3.88437 7.04 4.26L7.1 4.32C7.58215 4.79168 8.30286 4.92231 8.92 4.65H9C9.60457 4.39086 9.99757 3.79757 10.01 3.14V3C10.01 1.89543 10.9054 1 12.01 1C13.1146 1 14.01 1.89543 14.01 3V3.09C14.0226 3.74757 14.4155 4.34086 15.02 4.6C15.6371 4.87231 16.3578 4.74168 16.84 4.27L16.9 4.21C17.2751 3.83437 17.7842 3.62339 18.315 3.62339C18.8458 3.62339 19.3549 3.83437 19.73 4.21C20.1056 4.58514 20.3166 5.09421 20.3166 5.625C20.3166 6.15579 20.1056 6.66486 19.73 7.04L19.67 7.1C19.1983 7.58215 19.0677 8.30286 19.34 8.92V9C19.5991 9.60457 20.1924 9.99757 20.85 10.01H21C22.1046 10.01 23 10.9054 23 12.01C23 13.1146 22.1046 14.01 21 14.01H20.91C20.2524 14.0226 19.6591 14.4155 19.4 15.02V15Z\"\n          stroke=\"white\"\n          stroke-opacity=\"0.5\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n      <div>{{ 'CLIENT.LAYOUT.SETTINGS' | translate }}</div>\n    </div>\n  </div>\n</ng-template>\n<!-- end-Settings -->\n\n<!-- Logout -->\n<ng-template #logoutTemplate>\n  <div class=\"basic-user-menu-template\">\n    <div class=\"body-template\">\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\n        <path\n          d=\"M10.0814 12.1361C10.4279 12.1361 10.7246 12.0126 10.9715 11.7656C11.2185 11.5187 11.3417 11.2222 11.3413 10.8762V2.05679C11.3413 1.71031 11.2178 1.4136 10.9709 1.16666C10.724 0.919717 10.4275 0.796456 10.0814 0.796876H6.30167C5.95375 0.796876 5.67171 1.07892 5.67171 1.42683C5.67171 1.77475 5.95375 2.05679 6.30167 2.05679H10.0814V10.8762H6.30167C5.95375 10.8762 5.67171 11.1582 5.67171 11.5061C5.67171 11.854 5.95375 12.1361 6.30167 12.1361H10.0814ZM2.69502 9.15937C2.94536 9.40971 3.35288 9.4043 3.59648 9.14741C3.83111 8.89998 3.82595 8.51067 3.58483 8.26956L2.4117 7.09642H6.93162C7.27954 7.09642 7.56158 6.81438 7.56158 6.46647C7.56158 6.11856 7.27954 5.83651 6.93162 5.83651H2.4117L3.58483 4.66338C3.82595 4.42226 3.83111 4.03296 3.59648 3.78553C3.35288 3.52864 2.94536 3.52323 2.69502 3.77357L0.552421 5.91617C0.248498 6.22009 0.248498 6.71285 0.552421 7.01677L2.69502 9.15937Z\"\n          fill=\"white\"\n          fill-opacity=\"0.5\"\n        />\n      </svg>\n      <div>{{ 'AUTH.LOGOUT' | translate }}</div>\n    </div>\n  </div>\n</ng-template>\n<!-- end-Logout -->\n\n<!-- Info -->\n<ng-template #infoTemplate>\n  <div class=\"basic-user-menu-template\">\n    <div class=\"body-template\">\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n        <mask id=\"path-1-inside-1_864_966\" fill=\"white\">\n          <path\n            d=\"M6.84132 6.28125C7.14901 6.28125 7.39847 6.5307 7.39847 6.83839V10.5527C7.39847 10.8604 7.14901 11.1098 6.84132 11.1098C6.53363 11.1098 6.28418 10.8604 6.28418 10.5527V6.83839C6.28418 6.5307 6.53363 6.28125 6.84132 6.28125Z\"\n          />\n        </mask>\n        <path\n          d=\"M6.84132 7.48125C6.48627 7.48125 6.19847 7.19344 6.19847 6.83839H8.59847C8.59847 5.86796 7.81176 5.08125 6.84132 5.08125V7.48125ZM6.19847 6.83839V10.5527H8.59847V6.83839H6.19847ZM6.19847 10.5527C6.19847 10.1976 6.48627 9.90982 6.84132 9.90982V12.3098C7.81176 12.3098 8.59847 11.5231 8.59847 10.5527H6.19847ZM6.84132 9.90982C7.19637 9.90982 7.48418 10.1976 7.48418 10.5527H5.08418C5.08418 11.5231 5.87089 12.3098 6.84132 12.3098V9.90982ZM7.48418 10.5527V6.83839H5.08418V10.5527H7.48418ZM7.48418 6.83839C7.48418 7.19344 7.19637 7.48125 6.84132 7.48125V5.08125C5.87089 5.08125 5.08418 5.86796 5.08418 6.83839H7.48418Z\"\n          fill=\"white\"\n          fill-opacity=\"0.5\"\n          mask=\"url(#path-1-inside-1_864_966)\"\n        />\n        <path\n          d=\"M6.9841 4.24286C6.9841 4.32176 6.92015 4.38571 6.84125 4.38571C6.76234 4.38571 6.69839 4.32176 6.69839 4.24286C6.69839 4.16396 6.76234 4.1 6.84125 4.1C6.92015 4.1 6.9841 4.16396 6.9841 4.24286Z\"\n          stroke=\"white\"\n          stroke-opacity=\"0.5\"\n          stroke-width=\"1.2\"\n        />\n        <mask id=\"path-4-inside-2_864_966\" fill=\"white\">\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M0.341309 7.21094C0.341309 3.62109 3.25146 0.710938 6.84131 0.710938C10.4312 0.710938 13.3413 3.62109 13.3413 7.21094C13.3413 10.8008 10.4312 13.7109 6.84131 13.7109C3.25146 13.7109 0.341309 10.8008 0.341309 7.21094ZM6.84131 1.82522C3.86686 1.82522 1.45559 4.23649 1.45559 7.21094C1.45559 10.1854 3.86686 12.5967 6.84131 12.5967C9.81578 12.5967 12.227 10.1854 12.227 7.21094C12.227 4.23649 9.81578 1.82522 6.84131 1.82522Z\"\n          />\n        </mask>\n        <path\n          d=\"M1.54131 7.21094C1.54131 4.28383 3.9142 1.91094 6.84131 1.91094V-0.489063C2.58872 -0.489063 -0.858691 2.95835 -0.858691 7.21094H1.54131ZM6.84131 1.91094C9.76842 1.91094 12.1413 4.28383 12.1413 7.21094H14.5413C14.5413 2.95835 11.0939 -0.489063 6.84131 -0.489063V1.91094ZM12.1413 7.21094C12.1413 10.1381 9.76842 12.5109 6.84131 12.5109V14.9109C11.0939 14.9109 14.5413 11.4635 14.5413 7.21094H12.1413ZM6.84131 12.5109C3.9142 12.5109 1.54131 10.1381 1.54131 7.21094H-0.858691C-0.858691 11.4635 2.58872 14.9109 6.84131 14.9109V12.5109ZM6.84131 0.625223C3.20412 0.625223 0.255594 3.57375 0.255594 7.21094H2.65559C2.65559 4.89923 4.52961 3.02522 6.84131 3.02522V0.625223ZM0.255594 7.21094C0.255594 10.8482 3.20413 13.7967 6.84131 13.7967V11.3967C4.5296 11.3967 2.65559 9.52267 2.65559 7.21094H0.255594ZM6.84131 13.7967C10.4785 13.7967 13.427 10.8482 13.427 7.21094H11.027C11.027 9.52267 9.15304 11.3967 6.84131 11.3967V13.7967ZM13.427 7.21094C13.427 3.57376 10.4785 0.625223 6.84131 0.625223V3.02522C9.15304 3.02522 11.027 4.89923 11.027 7.21094H13.427Z\"\n          fill=\"white\"\n          fill-opacity=\"0.5\"\n          mask=\"url(#path-4-inside-2_864_966)\"\n        />\n      </svg>\n      <div>{{ 'CLIENT.LAYOUT.INFO' | translate }}</div>\n    </div>\n  </div>\n</ng-template>\n<!-- end-Info -->\n\n<!-- Feedback -->\n<ng-template #feedbackTemplate>\n  <div class=\"basic-user-menu-template\">\n    <div class=\"body-template\">\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"13\" viewBox=\"0 0 14 13\" fill=\"none\">\n        <path\n          d=\"M6.87029 8.613C7.04605 8.613 7.21461 8.54443 7.33888 8.42235C7.46316 8.30028 7.53298 8.13472 7.53298 7.96208V4.9478C7.53298 4.77516 7.46316 4.6096 7.33888 4.48753C7.21461 4.36545 7.04605 4.29688 6.87029 4.29688C6.69453 4.29688 6.52597 4.36545 6.4017 4.48753C6.27742 4.6096 6.2076 4.77516 6.2076 4.9478V7.95207C6.20625 8.03839 6.22239 8.12411 6.25509 8.20424C6.28778 8.28437 6.33638 8.35732 6.39805 8.41883C6.45973 8.48034 6.53324 8.52918 6.61431 8.56252C6.69539 8.59585 6.7824 8.61301 6.87029 8.613Z\"\n          fill=\"white\"\n          fill-opacity=\"0.5\"\n        />\n        <path\n          d=\"M6.84497 10.8459C7.26727 10.8459 7.60961 10.5096 7.60961 10.0948C7.60961 9.68001 7.26727 9.34375 6.84497 9.34375C6.42267 9.34375 6.08032 9.68001 6.08032 10.0948C6.08032 10.5096 6.42267 10.8459 6.84497 10.8459Z\"\n          fill=\"white\"\n          fill-opacity=\"0.5\"\n        />\n        <path\n          d=\"M13.1564 10.7277L8.1913 1.74498C8.05984 1.50775 7.86571 1.30972 7.62932 1.17174C7.39293 1.03376 7.12304 0.960938 6.84807 0.960938C6.57309 0.960938 6.3032 1.03376 6.06682 1.17174C5.83043 1.30972 5.63629 1.50775 5.50484 1.74498L0.534647 10.7277C0.404558 10.9571 0.337942 11.2159 0.34144 11.4785C0.344937 11.741 0.418426 11.998 0.55458 12.224C0.690735 12.4499 0.8848 12.6368 1.11743 12.7661C1.35006 12.8954 1.61313 12.9626 1.88042 12.9609H11.8106C12.0757 12.9611 12.3363 12.8937 12.5669 12.7652C12.7974 12.6366 12.99 12.4514 13.1257 12.2278C13.2614 12.0041 13.3356 11.7496 13.341 11.4892C13.3464 11.2289 13.2828 10.9717 13.1564 10.7428V10.7277ZM12.249 11.6991C12.2039 11.7739 12.1398 11.8358 12.0629 11.8788C11.986 11.9218 11.8991 11.9444 11.8106 11.9445H1.88042C1.79181 11.9447 1.70467 11.9222 1.62759 11.8793C1.55051 11.8364 1.48616 11.7745 1.44087 11.6997C1.39558 11.6248 1.37093 11.5397 1.36935 11.4527C1.36776 11.3657 1.3893 11.2798 1.43183 11.2034L6.39693 2.22065C6.44061 2.14116 6.50536 2.07476 6.58434 2.02848C6.66331 1.9822 6.75356 1.95777 6.84552 1.95777C6.93748 1.95777 7.02773 1.9822 7.1067 2.02848C7.18568 2.07476 7.25043 2.14116 7.29411 2.22065L12.2592 11.2034C12.3015 11.2798 12.3227 11.3657 12.321 11.4526C12.3192 11.5395 12.2944 11.6245 12.249 11.6991Z\"\n          fill=\"white\"\n          fill-opacity=\"0.5\"\n        />\n      </svg>\n      <div>{{ 'CLIENT.FEEDBACK' | translate }}</div>\n    </div>\n  </div>\n</ng-template>\n<!-- end Feedback -->\n\n<!-- Hide Search -->\n<ng-template #aisearchTemplate>\n  <div class=\"basic-user-menu-template\" (click)=\"toggleSearchVisibility(); $event.stopPropagation()\">\n    <div class=\"body-template hide-search-toggle\">\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"12\" viewBox=\"0 0 13 12\" fill=\"none\">\n        <path\n          d=\"M11.3786 11.9603L7.55804 8.1397C7.2142 8.41478 6.81878 8.63254 6.37178 8.793C5.92478 8.95346 5.44913 9.0337 4.94483 9.0337C3.69553 9.0337 2.63832 8.60091 1.77321 7.73534C0.908097 6.86977 0.475312 5.81256 0.474854 4.56372C0.474854 3.31442 0.907639 2.25722 1.77321 1.3921C2.63878 0.526993 3.69598 0.0942085 4.94483 0.09375C6.19413 0.09375 7.25133 0.526535 8.11644 1.3921C8.98155 2.25767 9.41434 3.31488 9.4148 4.56372C9.4148 5.06803 9.33457 5.54368 9.17411 5.99067C9.01365 6.43767 8.79588 6.83309 8.5208 7.17694L12.3414 10.9975L11.3786 11.9603ZM4.94483 7.65832C5.80444 7.65832 6.53522 7.35734 7.13718 6.75538C7.73913 6.15343 8.03988 5.42287 8.03942 4.56372C8.03942 3.70411 7.73844 2.97333 7.13649 2.37137C6.53453 1.76942 5.80398 1.46867 4.94483 1.46913C4.08522 1.46913 3.35443 1.7701 2.75248 2.37206C2.15052 2.97402 1.84977 3.70457 1.85023 4.56372C1.85023 5.42333 2.15121 6.15412 2.75316 6.75607C3.35512 7.35803 4.08567 7.65878 4.94483 7.65832Z\"\n          fill=\"white\"\n          fill-opacity=\"0.5\"\n        />\n      </svg>\n      <div>{{ 'USER_MENU.HIDE_SEARCH' | translate }}</div>\n      <div class=\"search-toggle-checkbox\" [class.checked]=\"!searchVisible\">\n        <svg *ngIf=\"!searchVisible\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"8\" viewBox=\"0 0 10 8\" fill=\"none\">\n          <path d=\"M1 3.5L3.5 6.5L9 1\" stroke=\"#FE3C72\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n        </svg>\n      </div>\n    </div>\n  </div>\n</ng-template>\n<!-- end-Hide Search -->\n\n<!-- Notifications -->\n<ng-template #notificationsTemplate let-data>\n  <div class=\"basic-user-menu-template\">\n    <div class=\"body-template\" (click)=\"toggleNotifications()\">\n      <div class=\"notifications-icon\">\n        @if (hasNewNotifications) {\n          <div class=\"notification-alert\"></div>\n        }\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"13\" viewBox=\"0 0 11 13\" fill=\"none\">\n          <g opacity=\"0.5\">\n            <path\n              d=\"M10.0684 8.61395C9.38887 7.78401 8.90915 7.36151 8.90915 5.07343C8.90915 2.97811 7.837 2.23161 6.95456 1.86905C6.83734 1.82099 6.727 1.71062 6.69128 1.59047C6.53649 1.06472 6.10255 0.601562 5.52572 0.601562C4.94889 0.601562 4.51468 1.06499 4.36148 1.591C4.32576 1.71246 4.21542 1.82099 4.0982 1.86905C3.21471 2.23214 2.14361 2.97599 2.14361 5.07343C2.14228 7.36151 1.66257 7.78401 0.983074 8.61395C0.70154 8.95775 0.948147 9.47399 1.44057 9.47399H9.61352C10.1033 9.47399 10.3483 8.95617 10.0684 8.61395Z\"\n              stroke=\"white\"\n              stroke-width=\"0.937743\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            />\n            <path\n              d=\"M7.21915 9.47656V9.89906C7.21915 10.3473 7.04073 10.7771 6.72315 11.0941C6.40557 11.411 5.97484 11.589 5.52571 11.589C5.07659 11.589 4.64585 11.411 4.32827 11.0941C4.01069 10.7771 3.83228 10.3473 3.83228 9.89906V9.47656\"\n              stroke=\"white\"\n              stroke-width=\"0.937743\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            />\n          </g>\n        </svg>\n      </div>\n      <div>{{ 'CLIENT.SETTINGS_SCREEN.NOTIFICATIONS' | translate }}</div>\n      @if (!notificationsOpened) {\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"7\" height=\"5\" viewBox=\"0 0 7 5\" fill=\"none\">\n          <path d=\"M0.679443 0.78125L3.45602 3.61691L6.2326 0.78125\" stroke=\"#FE3C72\" stroke-width=\"1.11063\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n        </svg>\n      } @else {\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"7\" height=\"5\" viewBox=\"0 0 7 5\" fill=\"none\">\n          <path d=\"M6.23267 3.61719L3.45609 0.78153L0.679505 3.61719\" stroke=\"#FE3C72\" stroke-width=\"1.11063\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n        </svg>\n      }\n    </div>\n    <div\n      class=\"notifications-container\"\n      [ngClass]=\"{ notificationsOpened: notificationsOpened, notificationsBase: !notificationsOpened, moreNotifications: moreNotificationsEnabled }\"\n      #scrollableContainer\n      infiniteScroll\n      [infiniteScrollDistance]=\"distance\"\n      [infiniteScrollThrottle]=\"throttle\"\n      [scrollWindow]=\"false\"\n      (scrolled)=\"moreNotificationsEnabled ? onScrollNotifications() : null\"\n    >\n      <lib-notifications-list\n        [notifications]=\"notifications\"\n        (notificationClicked)=\"notificationClicked($event)\"\n        (notificationAccepted)=\"onNotificationAccepted($any($event))\"\n        (notificationSwipe)=\"handleNotificationActivity($event)\"\n      />\n      <lib-notifications-list [isLoading]=\"true\" [ngClass]=\"{ hideNotificationsLoader: !isLoadingNotifications, showNotificationsLoader: isLoadingNotifications }\" />\n      @if (notifications.length > 0 && !moreNotificationsEnabled) {\n        <div class=\"more-notifications\" (click)=\"enableMoreNotifications()\">{{ 'USER_MENU.SEE_MORE_NOTIFICATIONS' | translate }}</div>\n      } @else if (notifications.length < 1) {\n        <div class=\"no-notifications\">{{ 'USER_MENU.NO_NOTIFICATIONS' | translate }}</div>\n      }\n    </div>\n  </div>\n</ng-template>\n<!-- end-Notifications -->\n","export const INIT_DELAY = 0;\nexport const AFTER_VIEW_INIT_DELAY = 100;\nexport const SET_REFERENCE_DELAY = 150;\nexport const OPEN_ON_INIT_DELAY = 200;\nexport const CLICK_OUTSIDE_LISTENER_DELAY = 0;\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport * as Popper from '@popperjs/core';\nimport { AFTER_VIEW_INIT_DELAY, INIT_DELAY, SET_REFERENCE_DELAY } from '../../constants/popper.constants';\nimport { IPopperInstance } from '../../interfaces/popper-instance.interface';\n\n@Component({\n  selector: 'lib-popper-content',\n  templateUrl: './lib-popper.component.html',\n  styleUrls: ['./lib-popper.component.scss'],\n  standalone: false,\n})\nexport class LibPopperContentComponent implements OnInit, AfterViewInit, OnDestroy {\n  @Input() public arrowClass: string = '';\n  @Input() public popperClass: string = '';\n  @Input() public openOnInit: boolean = false;\n  @Output() public visibilityChange = new EventEmitter<boolean>();\n\n  @ViewChild('popperContent', { read: ElementRef }) public popperContent!: ElementRef;\n\n  private popperInstance: IPopperInstance | null = null;\n  private referenceElement: HTMLElement | null = null;\n  public isVisible: boolean = false;\n\n  constructor(private hostElement: ElementRef) {}\n\n  public ngOnInit(): void {\n    if (this.openOnInit) {\n      setTimeout((): void => {\n        this.show();\n      }, INIT_DELAY);\n    }\n  }\n\n  public ngOnDestroy(): void {\n    if (this.popperInstance) {\n      this.popperInstance.destroy();\n      this.popperInstance = null;\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    this.initializePopper();\n    if (this.openOnInit && !this.isVisible) {\n      setTimeout((): void => {\n        this.show();\n      }, AFTER_VIEW_INIT_DELAY);\n    }\n  }\n\n  public setReferenceElement(element: HTMLElement): void {\n    this.referenceElement = element;\n    this.initializePopper();\n\n    if (this.openOnInit && !this.isVisible) {\n      setTimeout((): void => {\n        this.show();\n      }, SET_REFERENCE_DELAY);\n    }\n  }\n\n  public show(): void {\n    if (this.hostElement) {\n      this.hostElement.nativeElement.style.display = 'block';\n      this.isVisible = true;\n      this.visibilityChange.emit(true);\n      // Ensure popper is initialized before updating\n      if (!this.popperInstance) {\n        this.initializePopper();\n      }\n      // Use requestAnimationFrame to ensure the element is rendered before updating popper\n      // This provides more predictable timing than setTimeout(0) by aligning with the browser's rendering cycle\n      requestAnimationFrame(() => {\n        this.updatePopper();\n      });\n    }\n  }\n\n  public hide(): void {\n    if (this.hostElement) {\n      this.hostElement.nativeElement.style.display = 'none';\n      this.isVisible = false;\n      this.visibilityChange.emit(false);\n    }\n  }\n\n  public toggle(): void {\n    this.isVisible ? this.hide() : this.show();\n  }\n\n  private initializePopper(): void {\n    if (!this.referenceElement || !this.popperContent) return;\n\n    // Destroy existing instance if it exists\n    if (this.popperInstance) {\n      this.popperInstance.destroy();\n      this.popperInstance = null;\n    }\n\n    this.popperInstance = Popper.createPopper(this.referenceElement, this.popperContent.nativeElement, {\n      placement: 'bottom',\n      modifiers: [\n        {\n          name: 'offset',\n          options: {\n            offset: [0, 8],\n          },\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: '.popper-arrow',\n          },\n        },\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: ['bottom'],\n          },\n        },\n      ],\n    }) as unknown as IPopperInstance;\n  }\n\n  private updatePopper(): void {\n    if (this.popperInstance) {\n      this.popperInstance.update();\n    }\n  }\n}\n","<lib-base-card #popperContent class=\"popper-container\" [class]=\"popperClass\" role=\"tooltip\">\n  <div class=\"popper-inner\">\n    <ng-content></ng-content>\n  </div>\n  <div class=\"popper-arrow\" [class]=\"arrowClass\"></div>\n</lib-base-card>\n","import { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\nimport { CLICK_OUTSIDE_LISTENER_DELAY, OPEN_ON_INIT_DELAY } from '../../constants/popper.constants';\nimport { LibPopperContentComponent } from './popper-content.component';\n\n@Directive({\n  selector: '[libPopper]',\n  exportAs: 'libPopper',\n  standalone: false,\n})\nexport class PopperDirective implements OnInit, OnDestroy {\n  @Input('libPopper') public popper!: LibPopperContentComponent;\n  @Input() public popperTrigger: string = 'click';\n  @Input() public popperHideOnClickOutside: boolean = true;\n  @Input() public openOnInit: boolean = false;\n\n  private isPopperVisible: boolean = false;\n  private clickOutsideListener!: (event: MouseEvent) => void;\n\n  constructor(private elementRef: ElementRef) {}\n\n  @HostListener('click')\n  public onClick(): void {\n    if (this.popperTrigger === 'click') {\n      this.togglePopper();\n    }\n  }\n\n  @HostListener('mouseenter')\n  public onMouseEnter(): void {\n    if (this.popperTrigger === 'hover') {\n      this.showPopper();\n    }\n  }\n\n  @HostListener('mouseleave')\n  public onMouseLeave(): void {\n    if (this.popperTrigger === 'hover') {\n      this.hidePopper();\n    }\n  }\n\n  public ngOnInit(): void {\n    if (!this.popper) {\n      console.error('Popper component is required for libPopper directive');\n      return;\n    }\n\n    this.popper.setReferenceElement(this.elementRef.nativeElement);\n\n    this.popper.visibilityChange.subscribe((isVisible: boolean) => {\n      this.isPopperVisible = isVisible;\n\n      if (isVisible && this.popperHideOnClickOutside) {\n        this.addClickOutsideListener();\n      } else {\n        this.removeClickOutsideListener();\n      }\n    });\n\n    if (this.openOnInit) {\n      setTimeout((): void => {\n        this.showPopper();\n      }, OPEN_ON_INIT_DELAY);\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.hidePopper();\n    this.removeClickOutsideListener();\n  }\n\n  public showPopper(): void {\n    if (this.popper && !this.isPopperVisible) {\n      this.popper.show();\n    }\n  }\n\n  public hidePopper(): void {\n    if (this.popper && this.isPopperVisible) {\n      this.popper.hide();\n    }\n  }\n\n  public togglePopper(): void {\n    this.isPopperVisible ? this.hidePopper() : this.showPopper();\n  }\n\n  private addClickOutsideListener(): void {\n    this.removeClickOutsideListener();\n\n    this.clickOutsideListener = (event: MouseEvent): void => {\n      if (this.popperHideOnClickOutside && this.isPopperVisible) {\n        const target = event.target as HTMLElement;\n        if (!this.elementRef.nativeElement.contains(target) && !this.popper.popperContent?.nativeElement.contains(target)) {\n          this.hidePopper();\n        }\n      }\n    };\n\n    setTimeout((): void => {\n      document.addEventListener('click', this.clickOutsideListener);\n    }, CLICK_OUTSIDE_LISTENER_DELAY);\n  }\n\n  private removeClickOutsideListener(): void {\n    if (this.clickOutsideListener) {\n      document.removeEventListener('click', this.clickOutsideListener);\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BaseCardModule } from '../../components/base-card/base-card.module';\nimport { LibPopperContentComponent } from './popper-content.component';\nimport { PopperDirective } from './popper.directive';\n\n@NgModule({\n  declarations: [PopperDirective, LibPopperContentComponent],\n  imports: [CommonModule, BaseCardModule],\n  exports: [PopperDirective, LibPopperContentComponent],\n})\nexport class PopperModule {}\n","export enum NotificationBannerType {\r\n  Success = 'success',\r\n  Error = 'error',\r\n  Warn = 'warn',\r\n}\r\n","export enum NsfwClasses {\n  NEUTRAL = 'Neutral',\n  SEXY = 'Sexy',\n  PORN = 'PORN',\n  HENTAI = 'Hentai',\n  DRAWING = 'Drawing',\n}\n","export class FormActionConfig {\r\n  action: (...args: any[]) => void;\r\n\r\n  constructor(action: (...args: any[]) => void) {\r\n    this.action = action;\r\n  }\r\n}\r\n","import { StatusTypes } from '../../enums/status-types';\r\n\r\nexport class FormBannerConfig {\r\n  constructor(\r\n    public statusType: StatusTypes,\r\n    public actionLink?: string,\r\n    public actionLinkText?: string,\r\n  ) {}\r\n}\r\n","/**\n * Used to configure the functionality of the card expiry form field.\n * Currently no specific configuration needed, but kept for consistency.\n */\nexport class FormCardExpiryConfig {\n  constructor(config?: Partial<FormCardExpiryConfig>) {\n    if (config) {\n      Object.assign(this, config);\n    }\n  }\n}\n","import { ICardBrand } from '../input-field-card.models';\n\n/**\n * Used to configure the functionality of the card number form field.\n */\nexport class FormCardNumberConfig {\n  public cardBrands?: ICardBrand[] = [];\n  public amExpressMask?: string = 'dddd dddddd ddddd';\n  public mask4?: string = 'dddd dddd dddd dddd';\n\n  constructor(config?: Partial<FormCardNumberConfig>) {\n    if (config) {\n      Object.assign(this, config);\n    }\n  }\n}\n","import { SelectOption } from '../select-option';\r\n\r\n/**\r\n * Used for configuring the functionality for the radio form field.\r\n */\r\nexport class FormCheckboxConfig {\r\n  public options: SelectOption<any>[];\r\n\r\n  constructor(options: SelectOption<any>[]) {\r\n    this.options = options;\r\n  }\r\n}\r\n","import { UntypedFormControl } from '@angular/forms';\r\nimport { SafeHtml, SafeUrl } from '@angular/platform-browser';\r\nimport { Observable } from 'rxjs';\r\nimport { FormFieldType } from '../../enums/form-field-type';\r\nimport { SelectOption } from '../select-option';\r\nimport { FormActionConfig } from './form-action-config';\r\nimport { FormBannerConfig } from './form-banner-config';\r\nimport { FormCardExpiryConfig } from './form-card-expiry-config';\r\nimport { FormCardNumberConfig } from './form-card-number-config';\r\nimport { FormIncrementerConfig } from './form-incrementer-config';\r\nimport { FormInjectableFormFieldConfig } from './form-injectable-form-field-config';\r\nimport { FormMultifieldConfig } from './form-multifield-config';\r\nimport { FormMultiselectConfig } from './form-multiselect-config';\r\nimport { FormNumberConfig } from './form-number-config';\r\nimport { FormRatingConfig } from './form-rating-config';\r\nimport { FormSelectEnhancedConfig } from './form-select-enhanced-config';\r\nimport { FormSelectableConfig } from './form-selectable-config';\r\nimport { FormTelInputConfig } from './form-tel-input-config';\r\nimport { FormTextlistConfig } from './form-textlist-config';\r\nimport { FormTypeaheadConfig } from './form-typeahead-config';\r\n\r\n/**\r\n * Used to store the variables necessary for displaying a form field.\r\n *\r\n * These variables are used to config all the types of components form-generator supports.\r\n */\r\nexport class FormFieldVariables {\r\n  public control: UntypedFormControl = new UntypedFormControl();\r\n  public controlName: string = '';\r\n  public type: FormFieldType = FormFieldType.text;\r\n  public id: number = 0;\r\n  public selectOptions: SelectOption<any>[] = [];\r\n  public labelIcon?: SafeHtml;\r\n  public placeholder?: string;\r\n  public isHidden?: boolean;\r\n  public isInlineField?: boolean;\r\n  public maxLength?: number;\r\n  public required?: boolean;\r\n  public label?: string;\r\n  public patternErrorMessage?: string;\r\n  public typeaheadConfig?: FormTypeaheadConfig;\r\n  public dateOptions?: object;\r\n  public multiselectOptions?: { groupName: string; options: SelectOption<any>[] }[];\r\n  public multiselectDefaultOptions?: SelectOption<any>[];\r\n  public textlist?: string[];\r\n  public textlistConfig?: FormTextlistConfig;\r\n  public flexBasisPct?: number;\r\n  public flexGrow?: number;\r\n  public descriptionText?: string;\r\n  public fullLength?: boolean;\r\n  public trackId: string = '';\r\n  public multifieldConfig?: FormMultifieldConfig;\r\n  public multiselectConfig?: FormMultiselectConfig;\r\n  public imageUrl?: SafeUrl;\r\n  public actionConfig?: FormActionConfig;\r\n  public bannerConfig?: FormBannerConfig;\r\n  public message?: string;\r\n  public disabled = false;\r\n  public isEditable?: boolean;\r\n  public confirmationObsv?: Observable<any>;\r\n  public handleConfirmation?: (event: any) => void;\r\n  public injectableConfig?: FormInjectableFormFieldConfig;\r\n  public hyperlinkTarget?: string;\r\n  public numberConfig?: FormNumberConfig;\r\n  public showLabelInRequiredErrorMessage?: boolean;\r\n  public readOnly?: boolean;\r\n  public ratingConfig?: FormRatingConfig;\r\n  public incrementerConfig?: FormIncrementerConfig;\r\n  public telInputConfig?: FormTelInputConfig;\r\n  public cardNumberConfig?: FormCardNumberConfig;\r\n  public cardExpiryConfig?: FormCardExpiryConfig;\r\n  public selectEnhancedConfig?: FormSelectEnhancedConfig;\r\n  public selectableConfig?: FormSelectableConfig;\r\n}\r\n","import { UntypedFormControl, ValidatorFn, Validators } from '@angular/forms';\r\nimport { SafeHtml } from '@angular/platform-browser';\r\nimport { Observable } from 'rxjs';\r\nimport { FormFieldType } from '../../enums/form-field-type';\r\nimport { FormActionConfig } from './form-action-config';\r\nimport { FormBannerConfig } from './form-banner-config';\r\nimport { FormCardExpiryConfig } from './form-card-expiry-config';\r\nimport { FormCardNumberConfig } from './form-card-number-config';\r\nimport { FormCheckboxConfig } from './form-checkbox-config';\r\nimport { FormFieldVariables } from './form-field-variables';\r\nimport { FormIncrementerConfig } from './form-incrementer-config';\r\nimport { FormInjectableFormFieldConfig } from './form-injectable-form-field-config';\r\nimport { FormMultifieldConfig } from './form-multifield-config';\r\nimport { FormMultiselectConfig } from './form-multiselect-config';\r\nimport { FormNumberConfig } from './form-number-config';\r\nimport { FormRadioConfig } from './form-radio-config';\r\nimport { FormRatingConfig } from './form-rating-config';\r\nimport { FormSelectConfig } from './form-select-config';\r\nimport { FormSelectEnhancedConfig } from './form-select-enhanced-config';\r\nimport { FormSelectableConfig } from './form-selectable-config';\r\nimport { FormTelInputConfig } from './form-tel-input-config';\r\nimport { FormTextlistConfig } from './form-textlist-config';\r\nimport { FormTimePickerConfig } from './form-time-picker-config';\r\nimport { FormTypeaheadConfig } from './form-typeahead-config';\r\n\r\n/**\r\n * This class is used by the a to easily pass configuration info about form fields.\r\n * A convenience class, FormFieldStructureBuilder, is provided.\r\n */\r\nexport class FormFieldStructure {\r\n  public inputType: FormFieldType;\r\n  public fieldName: string;\r\n  public placeholder?: string;\r\n  public labelIcon?: SafeHtml;\r\n  public label?: string;\r\n  public required?: boolean;\r\n  public isHidden?: boolean;\r\n  public isInlineField?: boolean;\r\n  public maxLength?: number;\r\n  public validationPattern?: RegExp;\r\n  public patternErrorMessage?: string;\r\n  public selectConfig?: FormSelectConfig;\r\n  public typeaheadConfig?: FormTypeaheadConfig;\r\n  public multiselectConfig?: FormMultiselectConfig;\r\n  public radioConfig?: FormRadioConfig;\r\n  public checkboxConfig?: FormCheckboxConfig;\r\n  public textlistConfig?: FormTextlistConfig;\r\n  public timePickerConfig?: FormTimePickerConfig;\r\n  public multifieldConfig?: FormMultifieldConfig;\r\n  public actionConfig?: FormActionConfig;\r\n  public controlOptions?: any;\r\n  public flexBasisPct?: number;\r\n  public flexGrow = 1;\r\n  public descriptionText?: string;\r\n  public fullLength?: boolean;\r\n  public message?: string;\r\n  public bannerConfig?: FormBannerConfig;\r\n  public disabled = false;\r\n  public isEditable?: boolean;\r\n  public confirmationObsv?: Observable<any>;\r\n  public handleConfirmation?: (event: any) => void;\r\n  public injectableFormFieldConfig?: FormInjectableFormFieldConfig;\r\n  public hyperlinkTarget?: string;\r\n  public numberConfig?: FormNumberConfig;\r\n  public showLabelInRequiredErrorMessage?: boolean = true;\r\n  public readOnly?: boolean;\r\n  public ratingConfig?: FormRatingConfig;\r\n  public incrementerConfig?: FormIncrementerConfig;\r\n  public telInputConfig?: FormTelInputConfig;\r\n  public cardNumberConfig?: FormCardNumberConfig;\r\n  public cardExpiryConfig?: FormCardExpiryConfig;\r\n  public selectEnhancedConfig?: FormSelectEnhancedConfig;\r\n  public selectableConfig?: FormSelectableConfig;\r\n\r\n  constructor(\r\n    inputType: FormFieldType,\r\n    fieldName: string,\r\n    placeholder?: string,\r\n    labelIcon?: SafeHtml,\r\n    label?: string,\r\n    required = true,\r\n    isHidden = false,\r\n    isInlineField = false,\r\n    maxLength?: number,\r\n    selectConfig?: FormSelectConfig,\r\n    typeaheadConfig?: FormTypeaheadConfig,\r\n    multiselectConfig?: FormMultiselectConfig,\r\n    radioConfig?: FormRadioConfig,\r\n    textlistConfig?: FormTextlistConfig,\r\n    actionConfig?: FormActionConfig,\r\n    validationPattern?: RegExp,\r\n    patternErrorMessage?: string,\r\n    controlOptions?: any,\r\n    flexBasisPct?: number,\r\n    flexGrow?: number,\r\n    descriptionText?: string,\r\n    fullLength?: boolean,\r\n    multifieldConfig?: FormMultifieldConfig,\r\n    message?: string,\r\n    bannerConfig?: FormBannerConfig,\r\n    disabled = false,\r\n    isEditable = true,\r\n    confirmationObsv?: Observable<any>,\r\n    handleConfirmation?: (event: any) => void,\r\n    injectableConfig?: FormInjectableFormFieldConfig,\r\n    hyperlinkTarget?: string,\r\n    checkboxConfig?: FormCheckboxConfig,\r\n    numberConfig?: FormNumberConfig,\r\n    showLabelInRequiredErrorMessage?: boolean,\r\n    readOnly?: boolean,\r\n    ratingConfig?: FormRatingConfig,\r\n    incrementerConfig?: FormIncrementerConfig,\r\n    telInputConfig?: FormTelInputConfig,\r\n    cardNumberConfig?: FormCardNumberConfig,\r\n    cardExpiryConfig?: FormCardExpiryConfig,\r\n    selectEnhancedConfig?: FormSelectEnhancedConfig,\r\n    selectableConfig?: FormSelectableConfig,\r\n  ) {\r\n    this.inputType = inputType;\r\n    this.fieldName = fieldName;\r\n    this.placeholder = placeholder;\r\n    this.labelIcon = labelIcon;\r\n    this.label = label;\r\n    this.required = required;\r\n    this.isHidden = isHidden;\r\n    this.isInlineField = isInlineField;\r\n    this.maxLength = maxLength;\r\n    this.selectConfig = selectConfig;\r\n    this.typeaheadConfig = typeaheadConfig;\r\n    this.multiselectConfig = multiselectConfig;\r\n    this.radioConfig = radioConfig;\r\n    this.validationPattern = validationPattern;\r\n    this.patternErrorMessage = patternErrorMessage;\r\n    this.controlOptions = controlOptions;\r\n    this.textlistConfig = textlistConfig;\r\n    this.flexBasisPct = flexBasisPct;\r\n    this.flexGrow = flexGrow ?? 1;\r\n    this.descriptionText = descriptionText;\r\n    this.fullLength = fullLength;\r\n    this.multifieldConfig = multifieldConfig;\r\n    this.actionConfig = actionConfig;\r\n    this.message = message;\r\n    this.bannerConfig = bannerConfig;\r\n    this.disabled = disabled;\r\n    this.isEditable = isEditable;\r\n    this.confirmationObsv = confirmationObsv;\r\n    this.handleConfirmation = handleConfirmation;\r\n    this.injectableFormFieldConfig = injectableConfig;\r\n    this.hyperlinkTarget = hyperlinkTarget;\r\n    this.checkboxConfig = checkboxConfig;\r\n    this.numberConfig = numberConfig;\r\n    this.showLabelInRequiredErrorMessage = showLabelInRequiredErrorMessage;\r\n    this.readOnly = readOnly;\r\n    this.ratingConfig = ratingConfig;\r\n    this.incrementerConfig = incrementerConfig;\r\n    this.telInputConfig = telInputConfig;\r\n    this.cardNumberConfig = cardNumberConfig;\r\n    this.cardExpiryConfig = cardExpiryConfig;\r\n    this.selectEnhancedConfig = selectEnhancedConfig;\r\n    this.selectableConfig = selectableConfig;\r\n  }\r\n\r\n  /**\r\n   * Converts this FormFieldStructure to FormFieldVariables, which can be consumed\r\n   * by FormGenerator or MultiField.\r\n   */\r\n  public convertStructureToVariables(): FormFieldVariables {\r\n    const fieldInfo = this.initFieldInfo();\r\n    switch (this.inputType) {\r\n      case FormFieldType.radio:\r\n        this.convertRadioStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.checkbox:\r\n        this.convertCheckboxStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.select:\r\n        this.convertSelectStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.multiselect:\r\n        this.convertMultiselectStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.typeahead:\r\n        this.convertTypeaheadStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.textlist:\r\n        this.convertTextlistStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.multifield:\r\n        this.convertMultifieldStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.action:\r\n        this.convertActionStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.banner:\r\n        this.convertBannerStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.injectable:\r\n        this.convertInjectableStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.rating:\r\n        this.convertRatingStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.incrementer:\r\n        this.convertIncrementerStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.tel:\r\n        this.convertTelInputStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.cardNumber:\r\n        this.convertCardNumberStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.cardExpiry:\r\n        this.convertCardExpiryStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.selectEnhanced:\r\n        this.convertSelectEnhancedStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.selectable:\r\n        this.convertSelectableStructureToVariables(fieldInfo);\r\n        break;\r\n      case FormFieldType.currency:\r\n      case FormFieldType.percentage:\r\n      case FormFieldType.number:\r\n        this.convertNumberStructureToVariables(fieldInfo);\r\n        break;\r\n    }\r\n    return fieldInfo;\r\n  }\r\n\r\n  private initFieldInfo(): FormFieldVariables {\r\n    const validators: ValidatorFn[] = [];\r\n    if (this.required) {\r\n      validators.push(Validators.required);\r\n    }\r\n    if (this.validationPattern && this.inputType !== FormFieldType.date) {\r\n      validators.push(Validators.pattern(this.validationPattern));\r\n    }\r\n    const controlOptions = this.controlOptions ? this.controlOptions : {};\r\n    controlOptions.validators = validators;\r\n\r\n    const fieldInfo: FormFieldVariables = new FormFieldVariables();\r\n    fieldInfo.controlName = this.fieldName;\r\n    fieldInfo.required = this.required;\r\n    fieldInfo.maxLength = this.maxLength;\r\n    fieldInfo.isHidden = this.isHidden;\r\n    fieldInfo.isEditable = this.isEditable;\r\n    fieldInfo.label = this.label;\r\n    fieldInfo.isInlineField = this.isInlineField;\r\n    fieldInfo.patternErrorMessage = this.patternErrorMessage;\r\n    fieldInfo.control = new UntypedFormControl(null, controlOptions);\r\n    if (this.disabled) {\r\n      fieldInfo.control.disable();\r\n    }\r\n    fieldInfo.placeholder = this.placeholder;\r\n    fieldInfo.type = this.inputType;\r\n    fieldInfo.labelIcon = this.labelIcon;\r\n    fieldInfo.flexBasisPct = this.flexBasisPct;\r\n    fieldInfo.flexGrow = this.flexGrow;\r\n    fieldInfo.descriptionText = this.descriptionText;\r\n    fieldInfo.fullLength = this.fullLength;\r\n    fieldInfo.message = this.message;\r\n    fieldInfo.disabled = this.disabled;\r\n    fieldInfo.confirmationObsv = this.confirmationObsv;\r\n    fieldInfo.handleConfirmation = this.handleConfirmation;\r\n    fieldInfo.hyperlinkTarget = this.hyperlinkTarget;\r\n    fieldInfo.showLabelInRequiredErrorMessage = this.showLabelInRequiredErrorMessage;\r\n    fieldInfo.readOnly = this.readOnly;\r\n    return fieldInfo;\r\n  }\r\n\r\n  private convertTextlistStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.textlist = this.textlistConfig ? this.textlistConfig.textlist : [];\r\n    fieldInfo.textlistConfig = this.textlistConfig;\r\n    fieldInfo.control.setValue(fieldInfo.textlist);\r\n  }\r\n\r\n  private convertSelectStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.selectOptions = this.selectConfig ? this.selectConfig.options : [];\r\n  }\r\n\r\n  private convertMultiselectStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.multiselectConfig = this.multiselectConfig;\r\n    fieldInfo.control.setValue(fieldInfo.multiselectConfig?.defaultOptions ?? []);\r\n  }\r\n\r\n  private convertRadioStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.selectOptions = this.radioConfig?.options ?? [];\r\n  }\r\n\r\n  private convertCheckboxStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.selectOptions = this.checkboxConfig?.options ?? [];\r\n  }\r\n\r\n  private convertTypeaheadStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.typeaheadConfig = this.typeaheadConfig;\r\n  }\r\n\r\n  private convertMultifieldStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.multifieldConfig = this.multifieldConfig;\r\n  }\r\n\r\n  private convertActionStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.actionConfig = this.actionConfig;\r\n  }\r\n\r\n  private convertBannerStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.bannerConfig = this.bannerConfig;\r\n  }\r\n\r\n  private convertInjectableStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.injectableConfig = this.injectableFormFieldConfig;\r\n  }\r\n\r\n  private convertRatingStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.ratingConfig = this.ratingConfig;\r\n  }\r\n\r\n  private convertIncrementerStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.incrementerConfig = this.incrementerConfig;\r\n    fieldInfo.control.setValue(0);\r\n  }\r\n\r\n  private convertNumberStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.numberConfig = this.numberConfig;\r\n  }\r\n\r\n  private convertTelInputStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.telInputConfig = this.telInputConfig;\r\n  }\r\n\r\n  private convertCardNumberStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.cardNumberConfig = this.cardNumberConfig;\r\n  }\r\n\r\n  private convertCardExpiryStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.cardExpiryConfig = this.cardExpiryConfig;\r\n  }\r\n\r\n  private convertSelectEnhancedStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.selectEnhancedConfig = this.selectEnhancedConfig;\r\n  }\r\n\r\n  private convertSelectableStructureToVariables(fieldInfo: FormFieldVariables): void {\r\n    fieldInfo.selectableConfig = this.selectableConfig;\r\n    if (this.selectableConfig?.options) {\r\n      fieldInfo.selectOptions = this.selectableConfig.options;\r\n    }\r\n    // Initialize form control with empty array for multiple selection or empty string for single selection\r\n    if (this.selectableConfig?.singleSelectionOnly) {\r\n      fieldInfo.control.setValue('');\r\n    } else {\r\n      fieldInfo.control.setValue([]);\r\n    }\r\n  }\r\n}\r\n\r\nexport class FormFieldStructureBuilder {\r\n  private inputType: FormFieldType;\r\n  private fieldName: string;\r\n  private placeholder?: string;\r\n  private labelIcon?: SafeHtml;\r\n  private label?: string;\r\n  private required?: boolean;\r\n  private isHidden?: boolean;\r\n  private isEditable?: boolean;\r\n  private isInlineField?: boolean;\r\n  private maxLength?: number;\r\n  private selectConfig?: FormSelectConfig;\r\n  private typeaheadConfig?: FormTypeaheadConfig;\r\n  private multiselectConfig?: FormMultiselectConfig;\r\n  private radioConfig?: FormRadioConfig;\r\n  private textlistConfig?: FormTextlistConfig;\r\n  private multifieldConfig?: FormMultifieldConfig;\r\n  private actionConfig?: FormActionConfig;\r\n  private bannerConfig?: FormBannerConfig;\r\n  private validationPattern?: RegExp;\r\n  private patternErrorMessage?: string;\r\n  private controlOptions?: any;\r\n  private flexBasisPct?: number;\r\n  private flexGrow = 1;\r\n  private descriptionText?: string;\r\n  private fullLength?: boolean;\r\n  private message?: string;\r\n  private disabled = false;\r\n  public confirmationObsv?: Observable<any>;\r\n  public handleConfirmation?: (event: any) => void;\r\n  private injectableConfig?: FormInjectableFormFieldConfig;\r\n  private hyperlinkTarget?: string;\r\n  private checkboxConfig?: FormCheckboxConfig;\r\n  private numberConfig?: FormNumberConfig;\r\n  private showLabelInRequiredErrorMessage?: boolean = true;\r\n  private readOnly: boolean = false;\r\n  private ratingConfig?: FormRatingConfig;\r\n  private incrementerConfig?: FormIncrementerConfig;\r\n  private telInputConfig?: FormTelInputConfig;\r\n  private cardNumberConfig?: FormCardNumberConfig;\r\n  private cardExpiryConfig?: FormCardExpiryConfig;\r\n  private selectEnhancedConfig?: FormSelectEnhancedConfig;\r\n  private selectableConfig?: FormSelectableConfig;\r\n\r\n  constructor(inputType: FormFieldType, fieldName: string) {\r\n    this.inputType = inputType;\r\n    this.fieldName = fieldName;\r\n  }\r\n\r\n  public setPlaceholder(placeholder: string): FormFieldStructureBuilder {\r\n    this.placeholder = placeholder;\r\n    return this;\r\n  }\r\n\r\n  public setLabelIcon(labelIcon: SafeHtml): FormFieldStructureBuilder {\r\n    this.labelIcon = labelIcon;\r\n    return this;\r\n  }\r\n\r\n  public setLabel(label: string): FormFieldStructureBuilder {\r\n    this.label = label;\r\n    return this;\r\n  }\r\n\r\n  public setIsHidden(isHidden: boolean): FormFieldStructureBuilder {\r\n    this.isHidden = isHidden;\r\n    return this;\r\n  }\r\n\r\n  public setRequired(required: boolean): FormFieldStructureBuilder {\r\n    this.required = required;\r\n    return this;\r\n  }\r\n\r\n  public setMaxLength(maxLength: number): FormFieldStructureBuilder {\r\n    this.maxLength = maxLength;\r\n    return this;\r\n  }\r\n\r\n  public setSelectConfig(selectConfig: FormSelectConfig): FormFieldStructureBuilder {\r\n    this.selectConfig = selectConfig;\r\n    return this;\r\n  }\r\n\r\n  public setTypeaheadConfig(typeaheadConfig: FormTypeaheadConfig): FormFieldStructureBuilder {\r\n    this.typeaheadConfig = typeaheadConfig;\r\n    return this;\r\n  }\r\n\r\n  public setMultiselectConfig(multiselectConfig: FormMultiselectConfig): FormFieldStructureBuilder {\r\n    this.multiselectConfig = multiselectConfig;\r\n    return this;\r\n  }\r\n\r\n  public setRadioConfig(radioConfig: FormRadioConfig): FormFieldStructureBuilder {\r\n    this.radioConfig = radioConfig;\r\n    return this;\r\n  }\r\n\r\n  public setIncrementerConfig(incrementerConfig: FormIncrementerConfig): FormFieldStructureBuilder {\r\n    this.incrementerConfig = incrementerConfig;\r\n    return this;\r\n  }\r\n\r\n  public setTextlistConfig(textlistConfig: FormTextlistConfig): FormFieldStructureBuilder {\r\n    this.textlistConfig = textlistConfig;\r\n    return this;\r\n  }\r\n\r\n  public setMultifieldConfig(multifieldConfig: FormMultifieldConfig): FormFieldStructureBuilder {\r\n    this.multifieldConfig = multifieldConfig;\r\n    return this;\r\n  }\r\n\r\n  public setIsInlineField(isInlineField: boolean): FormFieldStructureBuilder {\r\n    this.isInlineField = isInlineField;\r\n    return this;\r\n  }\r\n\r\n  public setControlOptions(controlOptions: any): FormFieldStructureBuilder {\r\n    this.controlOptions = controlOptions;\r\n    return this;\r\n  }\r\n\r\n  public setValidationPattern(validationPattern: RegExp): FormFieldStructureBuilder {\r\n    this.validationPattern = validationPattern;\r\n    return this;\r\n  }\r\n\r\n  public setPatternErrorMessage(patternErrorMessage: string): FormFieldStructureBuilder {\r\n    this.patternErrorMessage = patternErrorMessage;\r\n    return this;\r\n  }\r\n\r\n  public setFlexGrow(flexGrow: number): FormFieldStructureBuilder {\r\n    this.flexGrow = flexGrow;\r\n    return this;\r\n  }\r\n\r\n  public setFlexBasis(flexBasisPct: number): FormFieldStructureBuilder {\r\n    this.flexBasisPct = flexBasisPct;\r\n    return this;\r\n  }\r\n\r\n  public setDescriptionText(descriptionText: string): FormFieldStructureBuilder {\r\n    this.descriptionText = descriptionText;\r\n    return this;\r\n  }\r\n\r\n  public setFullLength(fullLength: boolean): FormFieldStructureBuilder {\r\n    this.fullLength = fullLength;\r\n    return this;\r\n  }\r\n\r\n  public setActionConfig(actionConfig: FormActionConfig): FormFieldStructureBuilder {\r\n    this.actionConfig = actionConfig;\r\n    return this;\r\n  }\r\n\r\n  public setBannerConfig(bannerConfig: FormBannerConfig): FormFieldStructureBuilder {\r\n    this.bannerConfig = bannerConfig;\r\n    return this;\r\n  }\r\n\r\n  public setMessage(message: string): FormFieldStructureBuilder {\r\n    this.message = message;\r\n    return this;\r\n  }\r\n\r\n  public setDisabled(disabled: boolean): FormFieldStructureBuilder {\r\n    this.disabled = disabled;\r\n    return this;\r\n  }\r\n\r\n  public setConfirmationObsv(confirmationObsv: Observable<any>) {\r\n    this.confirmationObsv = confirmationObsv;\r\n    return this;\r\n  }\r\n\r\n  public setHandleConfirmation(handleConfirmation: (event: any) => void) {\r\n    this.handleConfirmation = handleConfirmation;\r\n    return this;\r\n  }\r\n\r\n  public setInjectableConfig(injectableConfig: FormInjectableFormFieldConfig) {\r\n    this.injectableConfig = injectableConfig;\r\n    return this;\r\n  }\r\n\r\n  public setHyperlinkTarget(hyperlinkTarget: string): FormFieldStructureBuilder {\r\n    this.hyperlinkTarget = hyperlinkTarget;\r\n    return this;\r\n  }\r\n\r\n  public setCheckboxConfig(checkboxConfig: FormCheckboxConfig): FormFieldStructureBuilder {\r\n    this.checkboxConfig = checkboxConfig;\r\n    return this;\r\n  }\r\n\r\n  public setNumberConfig(numberConfig: FormNumberConfig): FormFieldStructureBuilder {\r\n    this.numberConfig = numberConfig;\r\n    return this;\r\n  }\r\n\r\n  public setShowLabelInRequiredErrorMessage(showLabel: boolean): FormFieldStructureBuilder {\r\n    this.showLabelInRequiredErrorMessage = showLabel;\r\n    return this;\r\n  }\r\n\r\n  public setReadOnly(readOnly: boolean): FormFieldStructureBuilder {\r\n    this.readOnly = readOnly;\r\n    return this;\r\n  }\r\n\r\n  public setRatingConfig(ratingConfig: FormRatingConfig): FormFieldStructureBuilder {\r\n    this.ratingConfig = ratingConfig;\r\n    return this;\r\n  }\r\n\r\n  public buildFormStructure(): FormFieldStructure {\r\n    return new FormFieldStructure(\r\n      this.inputType,\r\n      this.fieldName,\r\n      this.placeholder,\r\n      this.labelIcon,\r\n      this.label,\r\n      this.required ? true : false,\r\n      this.isHidden ? true : false,\r\n      this.isInlineField ? true : false,\r\n      this.maxLength,\r\n      this.inputType === FormFieldType.select ? this.selectConfig : undefined,\r\n      this.inputType === FormFieldType.typeahead ? this.typeaheadConfig : undefined,\r\n      this.inputType === FormFieldType.multiselect ? this.multiselectConfig : undefined,\r\n      this.inputType === FormFieldType.radio ? this.radioConfig : undefined,\r\n      this.inputType === FormFieldType.textlist ? this.textlistConfig : undefined,\r\n      this.inputType === FormFieldType.action ? this.actionConfig : undefined,\r\n      this.validationPattern,\r\n      this.patternErrorMessage,\r\n      this.controlOptions,\r\n      this.flexBasisPct,\r\n      this.flexGrow,\r\n      this.descriptionText,\r\n      this.fullLength,\r\n      this.inputType === FormFieldType.multifield ? this.multifieldConfig : undefined,\r\n      this.message,\r\n      this.inputType === FormFieldType.banner ? this.bannerConfig : undefined,\r\n      this.disabled,\r\n      this.isEditable,\r\n      this.confirmationObsv,\r\n      this.handleConfirmation,\r\n      this.inputType === FormFieldType.injectable ? this.injectableConfig : undefined,\r\n      this.hyperlinkTarget,\r\n      this.checkboxConfig,\r\n      this.numberConfig,\r\n      this.showLabelInRequiredErrorMessage,\r\n      this.readOnly,\r\n      this.inputType === FormFieldType.rating ? this.ratingConfig : undefined,\r\n      this.inputType === FormFieldType.incrementer ? this.incrementerConfig : undefined,\r\n      this.inputType === FormFieldType.tel ? this.telInputConfig : undefined,\r\n      this.inputType === FormFieldType.cardNumber ? this.cardNumberConfig : undefined,\r\n      this.inputType === FormFieldType.cardExpiry ? this.cardExpiryConfig : undefined,\r\n      this.inputType === FormFieldType.selectEnhanced ? this.selectEnhancedConfig : undefined,\r\n      this.inputType === FormFieldType.selectable ? this.selectableConfig : undefined,\r\n    );\r\n  }\r\n\r\n  public setTelInputConfig(telInputConfig: FormTelInputConfig): FormFieldStructureBuilder {\r\n    this.telInputConfig = telInputConfig;\r\n    return this;\r\n  }\r\n\r\n  public setCardNumberConfig(cardNumberConfig: FormCardNumberConfig): FormFieldStructureBuilder {\r\n    this.cardNumberConfig = cardNumberConfig;\r\n    return this;\r\n  }\r\n\r\n  public setCardExpiryConfig(cardExpiryConfig: FormCardExpiryConfig): FormFieldStructureBuilder {\r\n    this.cardExpiryConfig = cardExpiryConfig;\r\n    return this;\r\n  }\r\n\r\n  public setSelectEnhancedConfig(selectEnhancedConfig: FormSelectEnhancedConfig): FormFieldStructureBuilder {\r\n    this.selectEnhancedConfig = selectEnhancedConfig;\r\n    return this;\r\n  }\r\n\r\n  public setSelectableConfig(selectableConfig: FormSelectableConfig): FormFieldStructureBuilder {\r\n    this.selectableConfig = selectableConfig;\r\n    return this;\r\n  }\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { InjectableFormField } from '../../interfaces/injectable-form-field';\r\n\r\nexport class FormInjectableFormFieldConfig {\r\n  public componentType: Type<InjectableFormField>;\r\n  public componentConfig: any;\r\n\r\n  constructor(componentType: Type<InjectableFormField>, componentConfig: any) {\r\n    this.componentType = componentType;\r\n    this.componentConfig = componentConfig;\r\n  }\r\n}\r\n","import { UntypedFormControl } from '@angular/forms';\r\nimport { FormSectionVariables } from './form-section-variables';\r\n\r\nexport class FormMultifieldConfig {\r\n  public config: FormSectionVariables;\r\n  public handleRowEdit?: (event: { rowFormControls: UntypedFormControl[][]; config: FormSectionVariables }) => void;\r\n  public handleValueChanged?: (event: { formControl: UntypedFormControl; config: FormSectionVariables }) => void;\r\n  public newRowText?: string;\r\n  public maxLength = 0;\r\n  public errorMessage? = '';\r\n\r\n  constructor(config: FormSectionVariables) {\r\n    this.config = config;\r\n  }\r\n}\r\n","import { SelectOption } from '../select-option';\r\n\r\nexport class FormMultiselectConfig {\r\n  options: { groupName: string; options: SelectOption<any>[] }[];\r\n  defaultOptions: SelectOption<any>[];\r\n\r\n  constructor(options: { groupName: string; options: SelectOption<any>[] }[], defaultOptions: SelectOption<any>[]) {\r\n    this.options = options;\r\n    this.defaultOptions = defaultOptions;\r\n  }\r\n}\r\n","export class FormNumberConfig {\r\n  public decimalPosition: number;\r\n\r\n  constructor(decimalPosition: number) {\r\n    this.decimalPosition = decimalPosition;\r\n  }\r\n}\r\n","import { SelectOption } from '../select-option';\r\n\r\n/**\r\n * Used for configuring the functionality for the radio form field.\r\n */\r\nexport class FormRadioConfig {\r\n  public options: SelectOption<any>[];\r\n\r\n  constructor(options: SelectOption<any>[]) {\r\n    this.options = options;\r\n  }\r\n}\r\n","import { SelectOption } from '../select-option';\r\n\r\nexport class FormRatingConfig {\r\n  options: SelectOption<any>[];\r\n\r\n  constructor(options: SelectOption<any>[]) {\r\n    this.options = options;\r\n  }\r\n}\r\n","import { UntypedFormGroup } from '@angular/forms';\r\nimport { ItemActionHandler } from '../item-action-handler';\r\nimport { FormFieldVariables } from './form-field-variables';\r\n\r\n/**\r\n * Variables used for displaying a form group within a form.\r\n * This includes support for creating the formgroup and adding field controls to that group.\r\n *\r\n * Section to place form fields within. If the form fields are inserted using class functions then the fields will be within formgroup.\r\n */\r\nexport class FormSectionVariables {\r\n  public fields: FormFieldVariables[][] = [];\r\n  public formGroup: UntypedFormGroup = new UntypedFormGroup({});\r\n  public title: string = '';\r\n  public expanded: boolean = false;\r\n  public useSlideToggle: boolean = false;\r\n  public trackId: string = '';\r\n  public isHidden: boolean = false;\r\n  public footerAction: ItemActionHandler | null = null;\r\n  public headerActions: ItemActionHandler[] = [];\r\n  public id: string = '';\r\n\r\n  /**\r\n   *\r\n   * @param items - list of field info to be added to the group.\r\n   *\r\n   * Adds all fields into the group and inserts their controls into the form group.\r\n   */\r\n  public addFieldInfo(controlAlreadyInForm: boolean, ...items: FormFieldVariables[]): void {\r\n    if (!controlAlreadyInForm) {\r\n      items.forEach((item) => this.addNewField(item));\r\n    } else {\r\n      items.forEach((item) => this.replaceOldField(item));\r\n    }\r\n\r\n    this.isHidden = this.allFieldsHidden();\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param item - item to be inserted\r\n   *\r\n   * Finds the matching existing form field and replaces it.\r\n   */\r\n  private replaceOldField(item: FormFieldVariables): void {\r\n    let found = false;\r\n    for (let i = 0; i < this.fields.length; i++) {\r\n      for (let j = 0; j < this.fields[i].length; j++) {\r\n        if (this.fields[i][j].controlName === item.controlName) {\r\n          this.fields[i][j] = item;\r\n          found = true;\r\n          break;\r\n        }\r\n      }\r\n      if (found) {\r\n        break;\r\n      }\r\n    }\r\n\r\n    this.isHidden = this.allFieldsHidden();\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param item - item to be attached\r\n   *\r\n   * Adds the new control to the group and adds the field to the list.\r\n   */\r\n  private addNewField(item: FormFieldVariables): void {\r\n    if (item.control) {\r\n      this.formGroup.addControl(item.controlName, item.control);\r\n    }\r\n    let addNewRow = true;\r\n    // Check last field of last row. If field is inline add new field to that row.\r\n    if (this.fields.length) {\r\n      const lastRow = this.fields[this.fields.length - 1];\r\n      if (lastRow.length) {\r\n        if (lastRow[lastRow.length - 1].isInlineField) {\r\n          lastRow.push(item);\r\n          addNewRow = false;\r\n        }\r\n      }\r\n    }\r\n    if (addNewRow) {\r\n      this.fields.push([item]);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * This method sets a flexBasisPct value on any fields that do not have one manually set.\r\n   * This is necessary in order to produce correct wrapping of form fields so that the\r\n   * form is responsive to changing width.\r\n   *\r\n   * @param groupInfo - FormSectionVariables to calculate flex basis values for\r\n   */\r\n  public calculateFlexBasis(): void {\r\n    this.fields.forEach((row: FormFieldVariables[]) => {\r\n      if (row.length > 1) {\r\n        const customFlexFields = row.filter((field) => !!field.flexBasisPct);\r\n        if (customFlexFields.length !== row.length) {\r\n          let customFlexPctUsed = 0;\r\n          customFlexFields.forEach((field) => (customFlexPctUsed += field.flexBasisPct || 0));\r\n          const autoFlexBasisFields = row.filter((field) => !field.flexBasisPct);\r\n          autoFlexBasisFields.forEach((field) => {\r\n            field.flexBasisPct = Math.floor((100 - customFlexPctUsed) / autoFlexBasisFields.length);\r\n          });\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  public allFieldsHidden(): boolean {\r\n    return this.fields.every((fieldSet) => {\r\n      return fieldSet.every((field) => field.isHidden);\r\n    });\r\n  }\r\n}\r\n","import { generateUniqueId } from '../../utils/id-generator';\r\nimport { ItemActionHandler } from '../item-action-handler';\r\nimport { FormFieldStructure } from './form-field-structure';\r\nimport { FormSectionVariables } from './form-section-variables';\r\n\r\n/**\r\n * Used to structure groups within forms. All group level configuration will go here.\r\n */\r\nexport class FormSectionStructure {\r\n  constructor(\r\n    public fieldStructures: FormFieldStructure[],\r\n    public groupName: string,\r\n    public expanded = true,\r\n    public footerAction: ItemActionHandler | null = null,\r\n    public useSlideToggle = false,\r\n    public headerActions: ItemActionHandler[] = [],\r\n    public id: string = groupName,\r\n  ) {}\r\n\r\n  public convertStructureToVariables(): FormSectionVariables {\r\n    const groupInfo = new FormSectionVariables();\r\n    groupInfo.trackId = generateUniqueId();\r\n    groupInfo.title = this.groupName;\r\n    groupInfo.footerAction = this.footerAction;\r\n    groupInfo.expanded = this.expanded;\r\n    groupInfo.useSlideToggle = this.useSlideToggle;\r\n    groupInfo.headerActions = this.headerActions;\r\n    groupInfo.id = this.id;\r\n    this.fieldStructures.forEach((fieldStructure) => {\r\n      const fieldInfo = fieldStructure.convertStructureToVariables();\r\n      groupInfo.addFieldInfo(false, fieldInfo);\r\n    });\r\n    groupInfo.calculateFlexBasis();\r\n    return groupInfo;\r\n  }\r\n}\r\n\r\nexport class FormSectionStructureBuilder {\r\n  private structure: FormSectionStructure;\r\n\r\n  constructor(groupName: string, ...formFieldStructures: FormFieldStructure[]) {\r\n    this.structure = new FormSectionStructure(formFieldStructures, groupName);\r\n  }\r\n\r\n  public buildStructure(): FormSectionStructure {\r\n    return this.structure;\r\n  }\r\n\r\n  public setExpanded(expanded: boolean): FormSectionStructureBuilder {\r\n    this.structure.expanded = expanded;\r\n    return this;\r\n  }\r\n\r\n  public setFooterAction(footerAction: ItemActionHandler): FormSectionStructureBuilder {\r\n    this.structure.footerAction = footerAction;\r\n    return this;\r\n  }\r\n\r\n  public setUseSlideToggle(useSlideToggle: boolean): FormSectionStructureBuilder {\r\n    this.structure.useSlideToggle = useSlideToggle;\r\n    return this;\r\n  }\r\n\r\n  public setHeaderActions(headerActions: ItemActionHandler[] = []): FormSectionStructureBuilder {\r\n    this.structure.headerActions = headerActions;\r\n    return this;\r\n  }\r\n\r\n  public setId(id: string): FormSectionStructureBuilder {\r\n    this.structure.id = id;\r\n    return this;\r\n  }\r\n}\r\n","import { SelectOption } from '../select-option';\r\n\r\n/**\r\n * Used to configure the functionality of the select form field.\r\n */\r\nexport class FormSelectConfig {\r\n  public options: SelectOption<any>[];\r\n\r\n  constructor(options: SelectOption<any>[]) {\r\n    this.options = options;\r\n  }\r\n}\r\n","import { TemplateRef } from '@angular/core';\n\n/**\n * Used to configure the functionality of the enhanced select form field.\n */\nexport class FormSelectEnhancedConfig {\n  public multiple?: boolean = false;\n  public optionLabel?: string = '';\n  public optionValue?: string = '';\n  public options: unknown[] = [];\n  public optionsTemplates?: TemplateRef<unknown>[] = [];\n  public filterBy?: string = '';\n  public enableFilter?: boolean = false;\n  public showClear?: boolean = false;\n  public editable?: boolean = false;\n  public withTemplate?: boolean = false;\n  public enableTranslation?: boolean = false;\n\n  constructor(config?: Partial<FormSelectEnhancedConfig>) {\n    if (config) {\n      Object.assign(this, config);\n    }\n  }\n}\n","import { SelectOption } from '../select-option';\n\n/**\n * Used to configure the functionality of the selectable form field.\n */\nexport class FormSelectableConfig {\n  public options: SelectOption<string>[] = [];\n  public singleSelectionOnly?: boolean = false;\n  public maxSelectionPossible?: number = 0;\n\n  constructor(config?: Partial<FormSelectableConfig>) {\n    if (config) {\n      Object.assign(this, config);\n    }\n  }\n}\n","import { FormGenStyle } from '../../enums/form-gen-style';\r\nimport { FormFieldStructure } from './form-field-structure';\r\nimport { FormSectionStructure } from './form-section-structure';\r\n\r\n/**\r\n * Structure for form with a list of child group structures. All overall form configurations will go here.\r\n */\r\nexport class FormStructure {\r\n  public groupStructures: FormSectionStructure[];\r\n  public formStyle: FormGenStyle;\r\n\r\n  constructor(groupStructures: FormSectionStructure[], formStyle: FormGenStyle = FormGenStyle.expander) {\r\n    this.groupStructures = groupStructures;\r\n    this.formStyle = formStyle;\r\n  }\r\n\r\n  /**\r\n   * @param groupName - The name of the FormSectionStructure to search within\r\n   * @param fieldName - The name of the FormFieldStructure\r\n   *\r\n   * @return - The FormFieldStructure with the given name in the given FormSectionStructure\r\n   */\r\n  public getFormFieldStructure(groupName: string, fieldName: string): FormFieldStructure | null {\r\n    let section: FormSectionStructure | null = null;\r\n\r\n    // Use for-loop or find with proper assignment\r\n    for (const group of this.groupStructures) {\r\n      if (group.groupName === groupName) {\r\n        section = group;\r\n        break;\r\n      }\r\n    }\r\n\r\n    if (section) {\r\n      let field: FormFieldStructure | null = null;\r\n\r\n      for (const fieldStructure of section.fieldStructures) {\r\n        if (fieldStructure.fieldName === fieldName) {\r\n          field = fieldStructure;\r\n          break;\r\n        }\r\n      }\r\n\r\n      return field;\r\n    }\r\n    return null;\r\n  }\r\n}\r\n","import { CountryISO } from '../../enums/country-iso.enum';\nimport { PhoneNumberFormat } from '../../enums/phone-number-format.enum';\nimport { SearchCountryField } from '../../enums/search-country-field.enum';\nimport { AuthIcons } from '../../types/auth-icons';\n\n/**\n * Used to configure the functionality of the tel-input form field.\n */\nexport class FormTelInputConfig {\n  public enablePlaceholder?: boolean = true;\n  public maskPhoneNumber?: boolean = true;\n  public eagerMask?: boolean = true;\n  public customPlaceholder?: string = '';\n  public numberFormat?: PhoneNumberFormat = PhoneNumberFormat.International;\n  public cssClass?: string = 'form-control';\n  public onlyCountries?: Array<string> = [];\n  public searchCountryFlag?: boolean = false;\n  public searchCountryField?: SearchCountryField[] = [SearchCountryField.All];\n  public searchCountryPlaceholder?: string = 'Search ICountry';\n  public maxLength?: number = 15;\n  public selectFirstCountry?: boolean = true;\n  public selectedCountryISO?: CountryISO = CountryISO.UnitedStates;\n  public phoneValidation?: boolean = true;\n  public inputId?: string = 'phone';\n  public separateDialCode?: boolean = false;\n  public showDropDownArrow?: boolean = false;\n  public icons?: AuthIcons | null = null;\n  public autocomplete?: string = 'tel';\n\n  constructor(config?: Partial<FormTelInputConfig>) {\n    if (config) {\n      Object.assign(this, config);\n    }\n  }\n}\n","export class FormTextlistConfig {\r\n  textlist: string[];\r\n  isUrlList = false;\r\n\r\n  constructor(textlist: string[], isUrlList = false) {\r\n    this.textlist = textlist;\r\n    this.isUrlList = isUrlList;\r\n  }\r\n}\r\n","import { SafeHtml } from '@angular/platform-browser';\r\nimport { Observable } from 'rxjs';\r\nimport { ItemSummary } from '../item-summary';\r\nimport { TypeaheadResultsGroup } from '../typeahead-results-group';\r\n\r\n/**\r\n * Used to configure the functionality of the typeahead form field.\r\n */\r\nexport class FormTypeaheadConfig {\r\n  public entity: {\r\n    searchFunction: (value: string) => Observable<any[]>;\r\n    mappingFunction: (entity: any) => Observable<ItemSummary<any>>;\r\n    filterFunction: (entity: any) => boolean;\r\n    sortFunction: (a: ItemSummary<any>, b: ItemSummary<any>) => number;\r\n    resultGroupFunction?: (results: ItemSummary<any>[]) => TypeaheadResultsGroup[];\r\n    entityMetadata?: { typeLabel: string; iconHtml: SafeHtml };\r\n  }[];\r\n  public selectionFunction?: (item: ItemSummary<any>) => void;\r\n  public alternateFunction?: (value: string) => any;\r\n  public alternateText?: string;\r\n  public defaultText?: string;\r\n  public defaultSearchString?: string;\r\n  public inputChangeFunction?: (value: string) => void;\r\n  public errorMessage?: string;\r\n  public suggestionText?: string;\r\n  public required?: boolean;\r\n\r\n  constructor(\r\n    entity: {\r\n      searchFunction: (value: string) => Observable<any[]>;\r\n      mappingFunction: (entity: any) => Observable<ItemSummary<any>>;\r\n      filterFunction: (entity: any) => boolean;\r\n      sortFunction: (a: ItemSummary<any>, b: ItemSummary<any>) => number;\r\n      resultGroupFunction?: (results: ItemSummary<any>[]) => TypeaheadResultsGroup[];\r\n      entityName?: string;\r\n    }[],\r\n    selectionFunction?: (item: ItemSummary<any>) => void,\r\n    alternateFunction?: (value: string) => any,\r\n    alternateText?: string,\r\n    defaultText?: string,\r\n    defaultSearchString?: string,\r\n    inputChangeFunction?: (value: string) => void,\r\n    errorMessage?: string,\r\n    suggestionText?: string,\r\n    required?: boolean,\r\n  ) {\r\n    this.entity = entity;\r\n    this.selectionFunction = selectionFunction;\r\n    this.alternateFunction = alternateFunction;\r\n    this.alternateText = alternateText;\r\n    this.defaultSearchString = defaultSearchString;\r\n    this.defaultText = defaultText;\r\n    this.inputChangeFunction = inputChangeFunction;\r\n    this.errorMessage = errorMessage;\r\n    this.suggestionText = suggestionText;\r\n    this.required = required;\r\n  }\r\n}\r\n","import { ItemSummary } from './item-summary';\r\n\r\nexport class TypeaheadResultsGroup {\r\n  public summaries: ItemSummary<any>[] = [];\r\n  public groupName?: string;\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { IonicModule } from '@ionic/angular';\nimport { FeedbackModule } from './components/feedback/feedback.module';\nimport { FormFieldModule } from './components/form-field/form-field.module';\nimport { GridFiltersModule } from './components/grid-filters/grid-filters.module';\nimport { GridModule } from './components/grid/grid.module';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    RouterModule,\n    IonicModule,\n    MatButtonModule,\n    MatCardModule,\n    MatDividerModule,\n    MatDialogModule,\n    MatIconModule,\n    MatInputModule,\n    MatMenuModule,\n    MatProgressSpinnerModule,\n    MatTooltipModule,\n    MatSnackBarModule,\n    MatSelectModule,\n    FormsModule,\n    ReactiveFormsModule,\n    MatProgressBarModule,\n    TranslateModule,\n    GridModule,\n    GridFiltersModule,\n    FormFieldModule,\n    FeedbackModule,\n  ],\n})\nexport class NextsapienComponentLibModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'sort',\n  standalone: false,\n})\nexport class ArraySortPipe implements PipeTransform {\n  transform(array: any, field: string, type: string = 'ASC'): any[] {\n    if (!Array.isArray(array)) {\n      return [];\n    }\n    const sortedArray = [...array];\n\n    switch (type.toUpperCase()) {\n      case 'ASC': {\n        sortedArray.sort((a: any, b: any) => {\n          if (a[field] < b[field]) {\n            return -1;\n          } else if (a[field] > b[field]) {\n            return 1;\n          } else {\n            return 0;\n          }\n        });\n        break;\n      }\n      case 'DSC': {\n        sortedArray.sort((a: any, b: any) => {\n          if (a[field] > b[field]) {\n            return -1;\n          } else if (a[field] < b[field]) {\n            return 1;\n          } else {\n            return 0;\n          }\n        });\n        break;\n      }\n    }\n    return sortedArray;\n  }\n}\n","// cv means computer vision\n// this is a computer vision service\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, catchError, of } from 'rxjs';\nimport { NsfwClasses } from '../enums/nsfw-classes.enum';\nimport { WorkerResponse } from '../types/woker-response.type';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NsfwWorkerService {\n  public canvas = document.createElement('canvas');\n  protected worker!: Worker;\n  protected _modelsLoaded$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  public modelsLoaded$: Observable<boolean> = this._modelsLoaded$.asObservable();\n\n  protected messageId = 0;\n  protected messageHandlers = new Map<\n    number,\n    {\n      handler: (data: WorkerResponse) => void;\n      observer: any;\n    }\n  >();\n\n  protected subscribeToWorkerMessagesAndLoadModels(): void {\n    this.worker.onmessage = ({ data }: MessageEvent<WorkerResponse>) => {\n      const handlerData = this.messageHandlers.get(data.messageId);\n\n      if (handlerData) {\n        handlerData.handler(data);\n        this.messageHandlers.delete(data.messageId);\n      }\n    };\n\n    this.loadModels().subscribe();\n  }\n\n  public faceDetector(image: string): Observable<boolean> {\n    return new Observable<boolean>((observer) => {\n      if (this.worker) {\n        const messageId = this.messageId++;\n\n        this.messageHandlers.set(messageId, {\n          handler: (data) => {\n            if (data.action === 'facesDetected') {\n              observer.next(data.faces.length > 0);\n              observer.complete();\n            }\n          },\n          observer,\n        });\n\n        this.worker.postMessage({\n          action: 'detectFaces',\n          imageUrl: image,\n          messageId,\n        });\n      } else {\n        observer.error('Web Workers are not supported in this environment.');\n      }\n    });\n  }\n\n  public nsfwDetector(image: string): Observable<boolean> {\n    return new Observable<boolean>((observer) => {\n      if (this.worker) {\n        const messageId = this.messageId++;\n\n        this.messageHandlers.set(messageId, {\n          handler: (data) => {\n            if (data.action === 'imageClassified') {\n              const nsfwClass = data.classifications[0].className;\n              observer.next(nsfwClass === NsfwClasses.NEUTRAL || nsfwClass === NsfwClasses.SEXY);\n              observer.complete();\n            }\n          },\n          observer,\n        });\n\n        this.worker.postMessage({\n          action: 'classifyImage',\n          imageUrl: image,\n          messageId,\n        });\n      } else {\n        observer.error('Web Workers are not supported in this environment.');\n      }\n    });\n  }\n\n  private loadModels(): Observable<boolean> {\n    return new Observable<boolean>((observer) => {\n      if (this.worker) {\n        const messageId = this.messageId++;\n\n        this.messageHandlers.set(messageId, {\n          handler: (data) => {\n            if (data.action === 'modelsLoaded') {\n              this._modelsLoaded$.next(true);\n              observer.next(true);\n              observer.complete();\n            }\n          },\n          observer,\n        });\n\n        this.worker.postMessage({ action: 'loadModels', messageId });\n      } else {\n        observer.error('Web Workers are not supported in this environment.');\n      }\n    }).pipe(catchError((err) => of(false)));\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PopperService {\n  private targetElement: Subject<HTMLElement> = new Subject<HTMLElement>();\n  public targetElement$: Observable<HTMLElement> = this.targetElement.asObservable();\n\n  private _togglePopper$: Subject<boolean> = new Subject<boolean>();\n  public togglePopper$: Observable<boolean> = this._togglePopper$.asObservable();\n\n  updateTargetElement(element: HTMLElement) {\n    this.targetElement.next(element);\n  }\n\n  togglePopper(isOpen: boolean = true): void {\n    this._togglePopper$.next(isOpen);\n  }\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { addDays, getTime, isBefore, startOfDay } from 'date-fns';\n\nexport function DateRangeValidator(fromDateControlName: string, toDateControlName: string): ValidatorFn {\n  return (group: AbstractControl) => {\n    const fromControl = group.get(fromDateControlName);\n    const toControl = group.get(toDateControlName);\n    if (!fromControl || !toControl || (toControl.errors && !toControl.errors['invalidDateRange'])) {\n      return null;\n    }\n    let invalid = false;\n    invalid = fromControl.value && toControl.value && isBefore(startOfDay(new Date(toControl.value)), startOfDay(new Date(fromControl.value)));\n    toControl.setErrors(invalid ? { invalidDateRange: true } : null);\n    return null;\n  };\n}\n\nexport function TimeRangeValidator(fromTimeControlName: string, toTimeControlName: string): ValidatorFn {\n  return (group: AbstractControl) => {\n    const fromControl = group.get(fromTimeControlName);\n    const toControl = group.get(toTimeControlName);\n    if (!fromControl || !toControl || (toControl.errors && !toControl.errors['invalidDateRange'])) {\n      return null;\n    }\n    let invalid = false;\n    invalid = fromControl.value && toControl.value && getTime(new Date(toControl.value)) < getTime(new Date(fromControl.value));\n    if (invalid) {\n      // SET STARTtIME DATE TO NEXT DAY WITH THE AME TIME\n      // THIS TO FIX ISSUE WHEN USER CREATE EVENT WITH START TIME IN (pm) AND END TIME IN (am)\n      toControl.setValue(addDays(new Date(fromControl.value), 1));\n      invalid = false;\n    }\n    toControl.setErrors(invalid ? { invalidTimeRange: true } : null);\n    return null;\n  };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { isThisWeek } from 'date-fns';\n\nexport const dateInCurrentWeek =\n  (): ValidatorFn =>\n  (control: AbstractControl): ValidationErrors | null => {\n    if (!control.value) {\n      return null;\n    }\n    const date = new Date(control.value);\n\n    return isThisWeek(date) ? null : { message: 'VALIDATIONS.DATE_MUST_FALL_INTO_CURRENT_WEEK' };\n  };\n","/**\n * Unified map color system for Cyrano's neomorphic dark theme.\n *\n * Design constraint: only THREE hues (pink-red, light-pink/teal, dark) plus\n * opacity and size variations. No rainbow scales.\n *\n * The grassroots/score scale uses opacity progression on the brand pink rather\n * than a multi-hue rainbow, maintaining visual coherence with the neumorphic UI.\n */\n\n// ─── Base Map Terrain Colors ────────────────────────────────────────────────\n\nexport const CYRANO_MAP_COLORS = {\n  background: '#120808',\n  land: '#2d0e0e',\n  water: '#0d0508',\n  vegetation: '#2a0f0f',\n  building: '#3a1414',\n  roadMajor: '#5a2040',\n  roadMinor: '#3d1212',\n  border: '#0d0508',\n  labels: '#aaaaaa',\n} as const;\n\n// ─── Brand Accent Palette ───────────────────────────────────────────────────\n\nexport const MAP_ACCENT = {\n  primary: '#FE3C72',\n  primaryLight: '#FFB5E9',\n  teal: '#00F6FF',\n  dark: '#28252D',\n} as const;\n\n// ─── Pin Colors ─────────────────────────────────────────────────────────────\n\nexport const MAP_PIN_COLORS = {\n  browse: 'rgba(255, 181, 233, 0.7)',\n  browseStroke: 'rgba(255, 255, 255, 0.8)',\n  added: '#FE3C72',\n  addedStroke: '#ffffff',\n  selected: '#FFB5E9',\n  selectedGlow: 'rgba(254, 60, 114, 0.4)',\n  saved: '#FFB5E9',\n  savedStroke: 'rgba(255, 255, 255, 0.9)',\n  routeStart: '#00E676',\n  routeEnd: '#FF1744',\n} as const;\n\n// ─── Score Visualization (Neomorphic: single-hue opacity + size) ────────────\n//\n// Instead of a rainbow, the score is conveyed through:\n// 1. Opacity: low scores are faint, high scores are saturated\n// 2. Size: high-scoring pins are slightly larger\n// 3. Explicit text label: the % number communicates the exact value\n//\n// This keeps the map visually cohesive with only pink/dark tones.\n\nexport interface ScoreTierConfig {\n  minScore: number;\n  color: string;\n  opacity: number;\n  sizeMultiplier: number;\n  glowColor: string;\n  strokeColor: string;\n}\n\nexport const SCORE_TIERS: ScoreTierConfig[] = [\n  { minScore: 0, color: MAP_ACCENT.primary, opacity: 0.3, sizeMultiplier: 0.7, glowColor: 'rgba(254,60,114,0.05)', strokeColor: 'rgba(254,60,114,0.20)' },\n  { minScore: 25, color: MAP_ACCENT.primary, opacity: 0.5, sizeMultiplier: 0.8, glowColor: 'rgba(254,60,114,0.10)', strokeColor: 'rgba(254,60,114,0.35)' },\n  { minScore: 50, color: MAP_ACCENT.primary, opacity: 0.7, sizeMultiplier: 0.9, glowColor: 'rgba(254,60,114,0.16)', strokeColor: 'rgba(254,60,114,0.50)' },\n  { minScore: 75, color: MAP_ACCENT.primary, opacity: 0.88, sizeMultiplier: 1.0, glowColor: 'rgba(254,60,114,0.22)', strokeColor: 'rgba(254,60,114,0.70)' },\n  { minScore: 90, color: MAP_ACCENT.primary, opacity: 1.0, sizeMultiplier: 1.15, glowColor: 'rgba(254,60,114,0.30)', strokeColor: '#FE3C72' },\n];\n\n/**\n * MapLibre interpolation expression for icon-color based on score.\n * Uses opacity variation on the brand pink rather than a color rainbow.\n */\nexport function scoreColorExpression(scoreProperty: string): any[] {\n  return [\n    'interpolate',\n    ['linear'],\n    ['coalesce', ['get', scoreProperty], 0],\n    0,\n    'rgba(254, 60, 114, 0.30)',\n    25,\n    'rgba(254, 60, 114, 0.50)',\n    50,\n    'rgba(254, 60, 114, 0.70)',\n    75,\n    'rgba(254, 60, 114, 0.88)',\n    90,\n    'rgba(254, 60, 114, 1.00)',\n  ];\n}\n\n/**\n * MapLibre interpolation expression for circle-radius/icon-size based on score.\n * Higher scores get larger pins (conveying importance through size).\n */\nexport function scoreSizeExpression(scoreProperty: string, baseSize: number): any[] {\n  return ['interpolate', ['linear'], ['coalesce', ['get', scoreProperty], 0], 0, baseSize * 0.7, 25, baseSize * 0.8, 50, baseSize * 0.9, 75, baseSize * 1.0, 90, baseSize * 1.15];\n}\n\n/**\n * MapLibre interpolation expression for the glow/shadow behind pins.\n */\nexport function scoreGlowExpression(scoreProperty: string): any[] {\n  return [\n    'interpolate',\n    ['linear'],\n    ['coalesce', ['get', scoreProperty], 0],\n    0,\n    'rgba(254, 60, 114, 0.05)',\n    25,\n    'rgba(254, 60, 114, 0.10)',\n    50,\n    'rgba(254, 60, 114, 0.16)',\n    75,\n    'rgba(254, 60, 114, 0.22)',\n    90,\n    'rgba(254, 60, 114, 0.30)',\n  ];\n}\n\n/**\n * MapLibre interpolation expression for stroke around pins.\n */\nexport function scoreStrokeExpression(scoreProperty: string): any[] {\n  return [\n    'interpolate',\n    ['linear'],\n    ['coalesce', ['get', scoreProperty], 0],\n    0,\n    'rgba(254, 60, 114, 0.20)',\n    25,\n    'rgba(254, 60, 114, 0.35)',\n    50,\n    'rgba(254, 60, 114, 0.50)',\n    75,\n    'rgba(254, 60, 114, 0.70)',\n    90,\n    'rgba(254, 60, 114, 1.00)',\n  ];\n}\n","/**\n * OBSERVATION: Both explore.component.ts (location-lib) and AwsMapStyleCacheService\n * (itinerary-lib) had identical sanitizeStyleNullNumbers and near-identical applyBrandTheme\n * implementations. This shared utility unifies them.\n *\n * OBSERVATION (2026-04, land layer coverage): The isLand regex MUST be case-insensitive\n * and checked BEFORE isVegetation in the if/else chain, because AWS map styles use\n * inconsistent casing (Land_use, landuse, Land/Not ice, Park, park) and \"Park\" layers\n * were being matched by isVegetation's Park check before isLand could catch them.\n * The regex must cover: Earth, Land.*, Landuse, Park.*, Nature.*, Beach, Island.\n *\n * OBSERVATION (patchNullGets - coalesce-only, no to-number):\n * sanitizeStyleNullNumbers wraps bare [\"get\", prop] in [\"coalesce\", ..., 0] for null\n * protection in paint and non-string layout properties. Using [\"to-number\", ...] was\n * initially tried but converted string property values to numbers, breaking string\n * comparisons in match/case/step expressions. Filter expressions are deliberately NOT\n * processed. STRING_LAYOUT_KEYS (text-field, icon-image, etc.) are skipped entirely.\n */\n\nimport { CYRANO_MAP_COLORS } from './cyrano-map-colors';\n\nconst STRING_LAYOUT_KEYS = new Set(['text-field', 'icon-image', 'text-font', 'text-transform', 'text-anchor', 'text-justify', 'icon-anchor', 'symbol-placement']);\n\nfunction patchNullGets(expr: any): any {\n  if (!Array.isArray(expr)) return expr;\n  const [op, ...args] = expr;\n  if (op === 'get' && args.length <= 2 && typeof args[0] === 'string') {\n    return ['coalesce', expr, 0];\n  }\n  if (op === 'coalesce' && args.length >= 2 && Array.isArray(args[0]) && args[0][0] === 'get') {\n    return expr;\n  }\n  return [op, ...args.map((a: any) => patchNullGets(a))];\n}\n\nexport function sanitizeStyleNullNumbers(style: any): void {\n  if (!style?.layers) return;\n  for (const layer of style.layers) {\n    if (layer.paint) {\n      for (const key of Object.keys(layer.paint)) {\n        const val = layer.paint[key];\n        if (Array.isArray(val)) layer.paint[key] = patchNullGets(val);\n      }\n    }\n    if (layer.layout) {\n      for (const key of Object.keys(layer.layout)) {\n        if (STRING_LAYOUT_KEYS.has(key)) continue;\n        const val = layer.layout[key];\n        if (Array.isArray(val)) layer.layout[key] = patchNullGets(val);\n      }\n    }\n  }\n}\n\nexport interface BrandThemeColors {\n  background: string;\n  water: string;\n  land: string;\n  vegetation: string;\n  building: string;\n  roadMajor: string;\n  roadMinor: string;\n  border: string;\n}\n\nconst DEFAULT_BRAND_COLORS: BrandThemeColors = {\n  background: CYRANO_MAP_COLORS.background,\n  water: CYRANO_MAP_COLORS.water,\n  land: CYRANO_MAP_COLORS.land,\n  vegetation: CYRANO_MAP_COLORS.vegetation,\n  building: CYRANO_MAP_COLORS.building,\n  roadMajor: CYRANO_MAP_COLORS.roadMajor,\n  roadMinor: CYRANO_MAP_COLORS.roadMinor,\n  border: CYRANO_MAP_COLORS.border,\n};\n\nfunction overridePaintColor(layer: any, prop: string, color: string): void {\n  if (!layer.paint) layer.paint = {};\n  layer.paint[prop] = color;\n}\n\nexport function applyBrandTheme(style: any, colors: BrandThemeColors = DEFAULT_BRAND_COLORS): void {\n  if (!style?.layers) return;\n  const C = colors;\n  for (const layer of style.layers as any[]) {\n    const id: string = (layer.id || '').toLowerCase();\n    const type: string = layer.type || '';\n    const sl: string = (layer['source-layer'] || '').toLowerCase();\n    const combined = `${id} ${sl}`;\n    if (type === 'background') {\n      layer.paint = { ...layer.paint, 'background-color': C.background };\n      continue;\n    }\n    const isWater = /water|ocean|sea|bathymetry|marine/.test(combined);\n    const isBuilding = /building|structure/.test(combined);\n    const isMajorRoad = /motorway|highway|trunk|freeway/.test(combined);\n    const isRoad = /road|street|path|track|transportation|transit|rail|ferry/.test(combined) || /primary|secondary|tertiary|service|link/.test(id);\n    const isBorder = /border|boundary|admin|disputed/.test(combined);\n    const landRegex = /^(Earth|Land.*|land.*|Landuse|landuse|Park.*|park.*|Nature.*|nature.*|Beach|beach|Island|island)$/;\n    const isLand = landRegex.test(layer.id || '') || landRegex.test(layer['source-layer'] || '');\n    const isVegetation = !isLand && /land.?cover|vegetation|wood|forest|grass|scrub|crop|wetland/.test(combined);\n    const isPlace = /place|city|town|village|locality|capital|populated|settlement/.test(combined);\n    const isCountry = /country|continent|state|region|province|sovereign/.test(combined);\n    const isRoadLabel = /road|street|poi|transit|address|transportation/.test(combined);\n    if (type === 'fill') {\n      if (isWater) {\n        overridePaintColor(layer, 'fill-color', C.water);\n        if (layer.paint?.['fill-outline-color']) layer.paint['fill-outline-color'] = C.water;\n      } else if (isLand) {\n        overridePaintColor(layer, 'fill-color', C.land);\n      } else if (isVegetation) {\n        overridePaintColor(layer, 'fill-color', C.vegetation);\n      } else if (isBuilding) {\n        overridePaintColor(layer, 'fill-color', C.building);\n      } else if (isRoad) {\n        overridePaintColor(layer, 'fill-color', C.roadMinor);\n      } else {\n        overridePaintColor(layer, 'fill-color', C.land);\n      }\n      continue;\n    }\n    if (type === 'line') {\n      if (isWater) {\n        overridePaintColor(layer, 'line-color', C.water);\n      } else if (isBorder) {\n        overridePaintColor(layer, 'line-color', C.border);\n        layer.paint = { ...layer.paint, 'line-opacity': 0.5 };\n      } else if (isMajorRoad) {\n        overridePaintColor(layer, 'line-color', C.roadMajor);\n      } else if (isRoad) {\n        overridePaintColor(layer, 'line-color', C.roadMinor);\n      } else if (isBuilding) {\n        overridePaintColor(layer, 'line-color', '#333333');\n      }\n      continue;\n    }\n    if (type === 'symbol') {\n      const paint = layer.paint || {};\n      if (isPlace) {\n        paint['text-color'] = '#00F6FF';\n        paint['text-halo-color'] = '#212121';\n        paint['text-halo-width'] = 1.5;\n      } else if (isCountry) {\n        paint['text-color'] = '#FFB5E9';\n        paint['text-halo-color'] = '#212121';\n        paint['text-halo-width'] = 1.5;\n      } else if (isRoadLabel) {\n        paint['text-color'] = '#777777';\n        paint['text-halo-color'] = '#212121';\n        paint['text-halo-width'] = 1;\n      } else {\n        if (typeof paint['text-color'] !== 'object') {\n          paint['text-color'] = paint['text-color'] || '#777777';\n        }\n        paint['text-halo-color'] = '#212121';\n        paint['text-halo-width'] = 1;\n      }\n      paint['icon-opacity'] = 0;\n      layer.paint = paint;\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BehaviorSubject, Observable, of, ReplaySubject } from 'rxjs';\nimport { catchError, map, shareReplay, take } from 'rxjs/operators';\nimport { sanitizeStyleNullNumbers, applyBrandTheme, BrandThemeColors } from './map-style-prep';\nimport { CYRANO_MAP_COLORS } from './cyrano-map-colors';\n\nexport interface IDefaultLocationConfig {\n  awsRegion: string;\n  awsApiKey: string;\n  styleName?: string;\n  colorScheme?: string;\n}\n\nexport interface IResolvedLocation {\n  center: [number, number];\n  zoom: number;\n  source: 'explicit' | 'user-profile' | 'geolocation' | 'ip-location' | 'fallback';\n}\n\nexport interface ICyranoMapOptions {\n  preserveDrawingBuffer: boolean;\n  attributionControl: boolean;\n  maxZoom: number;\n  minZoom: number;\n}\n\nconst DEFAULT_MAP_OPTIONS: ICyranoMapOptions = {\n  preserveDrawingBuffer: true,\n  attributionControl: false,\n  maxZoom: 20,\n  minZoom: 1,\n};\n\nconst BRAND_THEME: BrandThemeColors = {\n  background: CYRANO_MAP_COLORS.background,\n  water: CYRANO_MAP_COLORS.water,\n  land: CYRANO_MAP_COLORS.land,\n  vegetation: CYRANO_MAP_COLORS.vegetation,\n  building: CYRANO_MAP_COLORS.building,\n  roadMajor: CYRANO_MAP_COLORS.roadMajor,\n  roadMinor: CYRANO_MAP_COLORS.roadMinor,\n  border: CYRANO_MAP_COLORS.border,\n};\n\n/**\n * CyranoBaseMap - Unified foundation service for all map instances.\n *\n * Every map in the application uses this service for:\n * - Style loading (fetch + sanitize + brand theme)\n * - Default location resolution (priority chain)\n * - Shared color tokens\n * - Standard map instantiation options\n *\n * Location priority chain (enforced identically for every map):\n * 1. Explicitly provided location (from host component Input)\n * 2. User-provided location (registration/settings stored in profile)\n * 3. Browser geolocation (requires permission)\n * 4. IP-based geolocation (fallback, no permission needed)\n */\n@Injectable({ providedIn: 'root' })\nexport class CyranoBaseMapService {\n  private cachedStyle: any = null;\n  private styleObs$: Observable<any> | null = null;\n\n  private readonly _userProfileLocation$ = new BehaviorSubject<[number, number] | null>(null);\n  private readonly _resolvedLocation$ = new ReplaySubject<IResolvedLocation>(1);\n  private geoWatchId: number | null = null;\n\n  readonly resolvedLocation$ = this._resolvedLocation$.asObservable();\n\n  constructor(private readonly http: HttpClient) {}\n\n  // ---- Style Pipeline ----\n\n  getStyle(config: IDefaultLocationConfig): Observable<any> {\n    if (this.cachedStyle) return of(this.cachedStyle);\n    if (this.styleObs$) return this.styleObs$;\n\n    const { awsRegion, awsApiKey, styleName = 'Standard', colorScheme = 'Dark' } = config;\n    const url = `https://maps.geo.${awsRegion}.amazonaws.com/v2/styles/${styleName}/descriptor?key=${awsApiKey}&color-scheme=${colorScheme}`;\n\n    this.styleObs$ = this.http.get<any>(url).pipe(\n      map((json) => {\n        sanitizeStyleNullNumbers(json);\n        applyBrandTheme(json, BRAND_THEME);\n        this.cachedStyle = json;\n        return json;\n      }),\n      catchError(() => {\n        this.styleObs$ = null;\n        return of(null);\n      }),\n      shareReplay(1),\n    );\n\n    return this.styleObs$;\n  }\n\n  invalidateStyleCache(): void {\n    this.cachedStyle = null;\n    this.styleObs$ = null;\n  }\n\n  // ---- Default Map Options ----\n\n  getDefaultMapOptions(): ICyranoMapOptions {\n    return { ...DEFAULT_MAP_OPTIONS };\n  }\n\n  // ---- Location Priority Chain ----\n\n  /**\n   * Set the user's stored profile location (from registration or settings).\n   * Priority 2. Should be called on login/app-init.\n   */\n  setUserProfileLocation(lngLat: [number, number] | null): void {\n    this._userProfileLocation$.next(lngLat);\n  }\n\n  getUserProfileLocation(): [number, number] | null {\n    return this._userProfileLocation$.value;\n  }\n\n  /**\n   * Resolves the best initial location using the priority chain.\n   * Always returns a location (never hangs).\n   *\n   * @param explicitLocation Priority 1: explicitly provided by host component\n   * @param defaultZoom Zoom level to use (default 12)\n   */\n  resolveDefaultLocation(explicitLocation?: [number, number] | null, defaultZoom = 12): Observable<IResolvedLocation> {\n    if (explicitLocation && this.isValidCoord(explicitLocation)) {\n      const result: IResolvedLocation = { center: explicitLocation, zoom: defaultZoom, source: 'explicit' };\n      this._resolvedLocation$.next(result);\n      return of(result);\n    }\n\n    const userLoc = this._userProfileLocation$.value;\n    if (userLoc && this.isValidCoord(userLoc)) {\n      const result: IResolvedLocation = { center: userLoc, zoom: defaultZoom, source: 'user-profile' };\n      this._resolvedLocation$.next(result);\n      return of(result);\n    }\n\n    return new Observable<IResolvedLocation>((observer) => {\n      this.resolveGeoThenIp(defaultZoom).then((result) => {\n        this._resolvedLocation$.next(result);\n        observer.next(result);\n        observer.complete();\n      });\n    });\n  }\n\n  private async resolveGeoThenIp(zoom: number): Promise<IResolvedLocation> {\n    const geo = await this.tryGeolocation();\n    if (geo) {\n      return { center: geo, zoom, source: 'geolocation' };\n    }\n\n    const ip = await this.tryIpLocation();\n    if (ip) {\n      return { center: ip, zoom, source: 'ip-location' };\n    }\n\n    return { center: [0, 20], zoom: 2, source: 'fallback' };\n  }\n\n  private tryGeolocation(): Promise<[number, number] | null> {\n    if (!('geolocation' in navigator)) return Promise.resolve(null);\n\n    return new Promise((resolve) => {\n      const timer = setTimeout(() => resolve(null), 5000);\n\n      if (navigator.permissions) {\n        navigator.permissions\n          .query({ name: 'geolocation' })\n          .then((perm) => {\n            if (perm.state === 'denied') {\n              clearTimeout(timer);\n              resolve(null);\n              return;\n            }\n            this.doGetCurrentPosition(resolve, timer);\n          })\n          .catch(() => this.doGetCurrentPosition(resolve, timer));\n      } else {\n        this.doGetCurrentPosition(resolve, timer);\n      }\n    });\n  }\n\n  private doGetCurrentPosition(resolve: (val: [number, number] | null) => void, timer: ReturnType<typeof setTimeout>): void {\n    navigator.geolocation.getCurrentPosition(\n      (pos) => {\n        clearTimeout(timer);\n        resolve([pos.coords.longitude, pos.coords.latitude]);\n      },\n      () => {\n        clearTimeout(timer);\n        resolve(null);\n      },\n      { timeout: 4500, enableHighAccuracy: false },\n    );\n  }\n\n  private tryIpLocation(): Promise<[number, number] | null> {\n    return new Promise((resolve) => {\n      this.http\n        .get<{ lat: number; lon: number }>('http://ip-api.com/json/?fields=lat,lon')\n        .pipe(\n          take(1),\n          catchError(() => of(null)),\n        )\n        .subscribe((data) => {\n          if (data?.lat && data?.lon) {\n            resolve([data.lon, data.lat]);\n          } else {\n            resolve(null);\n          }\n        });\n    });\n  }\n\n  private isValidCoord(coord: [number, number]): boolean {\n    const [lng, lat] = coord;\n    return typeof lng === 'number' && typeof lat === 'number' && isFinite(lng) && isFinite(lat) && lng >= -180 && lng <= 180 && lat >= -90 && lat <= 90 && (lng !== 0 || lat !== 0);\n  }\n\n  // ---- Cleanup ----\n\n  clearGeoWatch(): void {\n    if (this.geoWatchId !== null) {\n      navigator.geolocation.clearWatch(this.geoWatchId);\n      this.geoWatchId = null;\n    }\n  }\n}\n","/**\n * Unified map configuration interfaces for the V2 modular map system.\n *\n * Each map context provides an ICyranoMapConfig that selects which modules\n * to activate and overrides defaults for its specific use case.\n */\n\nexport interface IDrawingModuleConfig {\n  enableDraw?: boolean;\n  enableRadius?: boolean;\n  drawColor?: string;\n  fillOpacity?: number;\n  maxRadius?: number;\n}\n\nexport interface IPinLayerModuleConfig {\n  maxPins?: number;\n  showOverflowDots?: boolean;\n  dotRadius?: number;\n  rankingFn?: (a: any, b: any) => number;\n}\n\nexport interface IGemPinModuleConfig {\n  scoreProperty?: string;\n  labelMinZoom?: number;\n  showSaved?: boolean;\n  showHeatmap?: boolean;\n  showScanDebug?: boolean;\n  gemsEndpointUrl?: string;\n}\n\nexport interface IGlobeSyncModuleConfig {\n  showGlobe?: boolean;\n  globePosition?: 'bottom-right' | 'bottom-left';\n  globeMaxSize?: number;\n}\n\nexport interface IRoutingModuleConfig {\n  showRoute?: boolean;\n  routePlaces?: number[][];\n  startPosition?: [number, number];\n  endPosition?: [number, number];\n  displayMode?: 'route' | 'route-buffer' | 'drawn-zone';\n  bufferRadiusKm?: number;\n}\n\nexport interface IEnrichmentModuleConfig {\n  enrichmentApiUrl?: string;\n  showPhotos?: boolean;\n  showReviews?: boolean;\n  showBusyness?: boolean;\n  skeletonCount?: number;\n}\n\nexport interface ICyranoMapModules {\n  drawing?: IDrawingModuleConfig;\n  pins?: IPinLayerModuleConfig;\n  gems?: IGemPinModuleConfig;\n  globe?: IGlobeSyncModuleConfig;\n  routing?: IRoutingModuleConfig;\n  enrichment?: IEnrichmentModuleConfig;\n}\n\nexport interface ICyranoMapConfig {\n  center?: [number, number];\n  zoom?: number;\n  fullHeight?: boolean;\n  enableInteraction?: boolean;\n  modules?: ICyranoMapModules;\n}\n\n/**\n * Default configuration values applied when a module is activated\n * but the host doesn't provide specific overrides.\n */\nexport const DEFAULT_MODULE_CONFIGS = {\n  drawing: {\n    enableDraw: false,\n    enableRadius: false,\n    drawColor: '#FE3C72',\n    fillOpacity: 0.15,\n    maxRadius: 50,\n  } satisfies Required<IDrawingModuleConfig>,\n\n  pins: {\n    maxPins: 50,\n    showOverflowDots: true,\n    dotRadius: 4,\n    rankingFn: undefined,\n  } satisfies IPinLayerModuleConfig,\n\n  gems: {\n    scoreProperty: 'grassroots',\n    labelMinZoom: 10,\n    showSaved: false,\n    showHeatmap: false,\n    showScanDebug: false,\n    gemsEndpointUrl: '',\n  } satisfies Required<IGemPinModuleConfig>,\n\n  globe: {\n    showGlobe: false,\n    globePosition: 'bottom-right' as const,\n    globeMaxSize: 200,\n  } satisfies Required<IGlobeSyncModuleConfig>,\n\n  routing: {\n    showRoute: false,\n    routePlaces: [],\n    startPosition: undefined,\n    endPosition: undefined,\n    displayMode: 'route' as const,\n    bufferRadiusKm: 5,\n  } satisfies IRoutingModuleConfig,\n\n  enrichment: {\n    enrichmentApiUrl: '',\n    showPhotos: true,\n    showReviews: true,\n    showBusyness: false,\n    skeletonCount: 4,\n  } satisfies Required<IEnrichmentModuleConfig>,\n} as const;\n","/**\n * OBSERVATION: Both explore.component.ts (location-lib) and aws-map.component.ts\n * (itinerary-lib) duplicate IGlobe interface, MAX_GLOBE_DIMENSION, canvas ID\n * randomization, and resize debouncing. This shared module unifies them.\n */\n\nexport interface IGlobe {\n  controls(): any;\n  pointOfView(options?: { lat: number; lng: number; altitude: number }): any;\n  htmlElementsData(data: any): any;\n  width(width: number): IGlobe;\n  height(height: number): IGlobe;\n  backgroundColor(color: string): IGlobe;\n  showGlobe(show: boolean): IGlobe;\n  showAtmosphere(show: boolean): IGlobe;\n  atmosphereColor(color: string): IGlobe;\n  atmosphereAltitude(alt: number): IGlobe;\n  globeImageUrl(url: string): IGlobe;\n  bumpImageUrl(url: string): IGlobe;\n  htmlElement(fn: (data: any) => HTMLElement): IGlobe;\n  globeMaterial: any;\n  polygonsData(data: any[]): IGlobe;\n  polygonCapColor(fn: (d: any) => string): IGlobe;\n  polygonSideColor(fn: (d: any) => string): IGlobe;\n  polygonStrokeColor(fn: (d: any) => string): IGlobe;\n  polygonsTransitionDuration(ms: number): IGlobe;\n  [key: string]: any;\n}\n\nexport interface IGlobeMarker {\n  color: string;\n  size: string | number;\n}\n\nexport interface IGlobeAssets {\n  globe: { loaded: boolean; image: HTMLImageElement };\n  earthTopology: { loaded: boolean; image: HTMLImageElement };\n  markerSvg: string;\n}\n\nexport const MAX_GLOBE_DIMENSION = 200;\nexport const GLOBE_DIMENSION_DIVISOR = 4;\nexport const DEFAULT_GLOBE_SIZE = 120;\nexport const GLOBE_SIZE_SCALE_FACTOR = 0.35;\n\nexport function generateGlobeCanvasId(): string {\n  return `globe-canvas-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nexport function calculateGlobeSize(containerWidth: number): number {\n  const raw = Math.round(containerWidth / GLOBE_DIMENSION_DIVISOR);\n  return Math.min(raw, MAX_GLOBE_DIMENSION);\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IBusynessData, IBusinessHoursData, IInsiderTip, IPlaceDetailConfig, IPlaceDetailData, IReviewItem, ISourceSummary } from '../../model/place-detail.model';\n\n// V2 plan A1: rename Info/Sources/Tips/etc. trio to the canonical Figma label\n// trio (Basic / Insider / Audit). 'info','tips','sources' are kept as aliases\n// for backward compatibility with config flags that still reference them.\nexport type PlaceDetailTab = 'basic' | 'insider' | 'audit' | 'info' | 'sources' | 'tips' | 'gem' | 'schedule' | 'members';\n\nexport const SOURCE_TYPE_COLORS: Record<string, { bg: string; short: string; label: string }> = {\n  youtube: { bg: '#ff0000', short: 'YT', label: 'YouTube' },\n  reddit: { bg: '#ff4500', short: 'Rd', label: 'Reddit' },\n  wikivoyage: { bg: '#339966', short: 'WV', label: 'Wikivoyage' },\n  tripadvisor: { bg: '#34e0a1', short: 'TA', label: 'TripAdvisor' },\n  google: { bg: '#4285f4', short: 'G', label: 'Google' },\n  foursquare: { bg: '#f94877', short: 'FS', label: 'Foursquare' },\n  yelp: { bg: '#af0606', short: 'Yl', label: 'Yelp' },\n  instagram: { bg: '#c13584', short: 'IG', label: 'Instagram' },\n  tiktok: { bg: '#69c9d0', short: 'TT', label: 'TikTok' },\n  blog: { bg: '#f7a046', short: 'Bl', label: 'Blog' },\n  local_forum: { bg: '#9c27b0', short: 'LF', label: 'Local Forum' },\n  news: { bg: '#1e88e5', short: 'Nw', label: 'News' },\n  quora: { bg: '#a82400', short: 'Qr', label: 'Quora' },\n};\n\n@Component({\n  selector: 'lib-place-detail-panel',\n  templateUrl: './place-detail-panel.component.html',\n  styleUrls: ['./place-detail-panel.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class PlaceDetailPanelComponent {\n  @Input() config!: IPlaceDetailConfig;\n  @Input() data!: IPlaceDetailData;\n  @Input() photoUrls: string[] = [];\n  @Input() photosLoading = false;\n  @Input() sources: ISourceSummary[] = [];\n  @Input() reviews: IReviewItem[] = [];\n  @Input() insiderTips: IInsiderTip[] = [];\n  @Input() busynessData: IBusynessData | null = null;\n  @Input() businessHours: IBusinessHoursData | null = null;\n  @Input() matchingInterests: string[] = [];\n  @Input() recommendedDishes: string[] = [];\n  @Input() loading = false;\n  @Input() error: string | null = null;\n  @Input() devModeUnlocked = false;\n\n  @Output() closePanel = new EventEmitter<void>();\n  @Output() savePlace = new EventEmitter<void>();\n  @Output() addToItinerary = new EventEmitter<void>();\n  @Output() removeFromItinerary = new EventEmitter<void>();\n  @Output() setAsStart = new EventEmitter<void>();\n  @Output() setAsEnd = new EventEmitter<void>();\n  @Output() photoClicked = new EventEmitter<number>();\n\n  activeTab: PlaceDetailTab = 'basic';\n  showHours = false;\n  expandedSourceIdx: number | null = null;\n  /**\n   * V2 plan A18 — per-activity pipeline-version override for the Audit tab.\n   * Mirrors the global `Activity.pipelineOverride` field. Future PR will wire\n   * a save handler that PATCHES the override into LocationDb; for now this is\n   * a UI-only state that lets the design match the Figma toggle.\n   */\n  auditPipelineVersion: 'v1' | 'v2' = 'v2';\n\n  setAuditPipelineVersion(version: 'v1' | 'v2'): void {\n    this.auditPipelineVersion = version;\n  }\n\n  readonly SOURCE_TYPE_COLORS = SOURCE_TYPE_COLORS;\n\n  /**\n   * V2 plan A1: Figma's Basic/Insider/Audit trio. Default behavior shows the\n   * full trio so the drawer matches the published Figma instantly. Audit is\n   * gated by devModeUnlocked (Konami) and the legacy showSourcesTab flag.\n   * Other historical tabs (gem/schedule/members) only appear if a caller\n   * still passes the corresponding config flag.\n   */\n  get tabs(): { key: PlaceDetailTab; label: string }[] {\n    const result: { key: PlaceDetailTab; label: string }[] = [\n      { key: 'basic', label: 'Basic' },\n      { key: 'insider', label: 'Insider' },\n    ];\n    if (this.devModeUnlocked || this.config?.showSourcesTab) {\n      result.push({ key: 'audit', label: 'Audit' });\n    }\n    if (this.config?.showGemTab) {\n      result.push({ key: 'gem', label: 'Gem' });\n    }\n    if (this.config?.showScheduleTab) {\n      result.push({ key: 'schedule', label: 'Schedule' });\n    }\n    if (this.config?.showMembersTab) {\n      result.push({ key: 'members', label: 'Members' });\n    }\n    return result;\n  }\n\n  get cyranoScore(): number {\n    return this.data?.compositeScore ?? this.data?.grassrootsScore ?? 0;\n  }\n\n  get grassrootsColor(): string {\n    const score = this.data?.grassrootsScore ?? 0;\n    if (score >= 85) return '#FE3C72';\n    if (score >= 70) return '#a855f7';\n    if (score >= 50) return '#22c55e';\n    if (score >= 30) return '#06b6d4';\n    return '#6b7280';\n  }\n\n  get grassrootsLabel(): string {\n    const score = this.data?.grassrootsScore ?? 0;\n    if (score >= 85) return 'Hidden Gem';\n    if (score >= 70) return 'Underrated';\n    if (score >= 50) return 'Local Fave';\n    if (score >= 30) return 'Known Spot';\n    return 'Tourist Spot';\n  }\n\n  get uniqueSourceTypes(): { type: string; bg: string; short: string; label: string }[] {\n    if (!this.sources?.length && !this.data?.confirmingSources?.length) return [];\n    const types = this.sources?.length ? [...new Set(this.sources.map((s) => s.type))] : (this.data?.confirmingSources ?? []);\n    return types.map((t) => ({\n      type: t,\n      bg: SOURCE_TYPE_COLORS[t]?.bg || '#666',\n      short: SOURCE_TYPE_COLORS[t]?.short || t.slice(0, 2).toUpperCase(),\n      label: SOURCE_TYPE_COLORS[t]?.label || t,\n    }));\n  }\n\n  get ratingStars(): string {\n    const r = this.data?.rating ?? 0;\n    const full = Math.floor(r);\n    const empty = 5 - full;\n    return '★'.repeat(full) + '☆'.repeat(empty);\n  }\n\n  get ratingSourceIcon(): string {\n    switch (this.data?.ratingSource?.toLowerCase()) {\n      case 'google':\n        return '🔍';\n      case 'foursquare':\n        return '📍';\n      case 'tripadvisor':\n        return '🦉';\n      default:\n        return '⭐';\n    }\n  }\n\n  get hasEventDates(): boolean {\n    return !!(this.data?.eventSchedule || this.data?.eventDateRange?.start || this.data?.eventDateRanges?.length);\n  }\n\n  get hasContactInfo(): boolean {\n    const c = this.data?.contactInfo;\n    return !!(c?.phone || c?.email || c?.website || c?.socialMedia);\n  }\n\n  get stalenessClass(): string {\n    const score = this.data?.stalenessScore ?? 0;\n    if (score >= 70) return 'stale-high';\n    if (score >= 40) return 'stale-medium';\n    return 'stale-low';\n  }\n\n  get tabIndicatorLeft(): string {\n    const idx = this.tabs.findIndex((t) => t.key === this.activeTab);\n    if (idx < 0) return '0%';\n    return `${(idx / this.tabs.length) * 100}%`;\n  }\n\n  get tabIndicatorWidth(): string {\n    return `${100 / this.tabs.length}%`;\n  }\n\n  setTab(tab: PlaceDetailTab): void {\n    this.activeTab = tab;\n  }\n\n  toggleSourceDetail(idx: number): void {\n    this.expandedSourceIdx = this.expandedSourceIdx === idx ? null : idx;\n  }\n\n  extractDomain(url: string): string {\n    try {\n      return new URL(url).hostname.replace('www.', '');\n    } catch {\n      return url;\n    }\n  }\n\n  hasAnyFriction(attrs?: string[]): boolean {\n    return !!(attrs && attrs.length > 0);\n  }\n\n  buildSearchUrl(srcType: string, name: string, city?: string): string {\n    const q = encodeURIComponent(`${name} ${city ?? ''} ${srcType}`);\n    return `https://www.google.com/search?q=${q}`;\n  }\n\n  /**\n   * V2 plan A10 (Figma 14691-93223). Popular Times curve derived from the\n   * busyness peak/quiet hour data. Aggregates intensity per day, builds an\n   * SVG polyline path + fill path, and returns the peak slot so the template\n   * can render a tooltip and marker dot.\n   */\n  get popularTimes(): {\n    days: string[];\n    points: Array<{ x: number; y: number; day: string; hour: number; intensity: number }>;\n    linePath: string;\n    fillPath: string;\n    peak: { x: number; y: number; day: string; hour: number; label: string } | null;\n  } {\n    const days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n    const empty = { days, points: [], linePath: '', fillPath: '', peak: null };\n    if (!this.busynessData) return empty;\n\n    // Aggregate intensity per day from peakHours + quietHours.\n    const dayMap: Record<string, { sum: number; count: number; peakHour: number; peakIntensity: number }> = {};\n    for (const d of days) dayMap[d] = { sum: 0, count: 0, peakHour: 12, peakIntensity: 0 };\n\n    const ingest = (entries?: { day: string; hour: number; intensity: number }[]) => {\n      if (!entries) return;\n      for (const e of entries) {\n        const key = e.day?.slice(0, 3);\n        if (!key || !dayMap[key]) continue;\n        dayMap[key].sum += e.intensity;\n        dayMap[key].count += 1;\n        if (e.intensity > dayMap[key].peakIntensity) {\n          dayMap[key].peakIntensity = e.intensity;\n          dayMap[key].peakHour = e.hour;\n        }\n      }\n    };\n    ingest(this.busynessData.peakHours);\n    ingest(this.busynessData.quietHours);\n\n    const totalCount = Object.values(dayMap).reduce((s, d) => s + d.count, 0);\n    if (totalCount === 0) return empty;\n\n    const intensities = days.map((d) => (dayMap[d].count > 0 ? dayMap[d].sum / dayMap[d].count : dayMap[d].peakIntensity));\n    const maxIntensity = Math.max(...intensities, 1);\n\n    const width = 280;\n    const height = 80;\n    const stepX = days.length > 1 ? width / (days.length - 1) : width;\n    const points = days.map((d, i) => {\n      const intensity = intensities[i];\n      const x = i * stepX;\n      const y = height - (intensity / maxIntensity) * (height - 6) - 4;\n      return { x, y, day: d, hour: dayMap[d].peakHour, intensity };\n    });\n\n    // Smooth curve via cubic bezier segments between successive points so the\n    // line matches the gentle waveform shown in the Figma reference.\n    let linePath = '';\n    points.forEach((p, i) => {\n      if (i === 0) {\n        linePath += `M ${p.x.toFixed(1)} ${p.y.toFixed(1)}`;\n        return;\n      }\n      const prev = points[i - 1];\n      const midX = (prev.x + p.x) / 2;\n      linePath += ` C ${midX.toFixed(1)} ${prev.y.toFixed(1)}, ${midX.toFixed(1)} ${p.y.toFixed(1)}, ${p.x.toFixed(1)} ${p.y.toFixed(1)}`;\n    });\n\n    const fillPath = `${linePath} L ${width} ${height} L 0 ${height} Z`;\n\n    const peakIdx = points.reduce((best, p, i) => (p.y < points[best].y ? i : best), 0);\n    const peakPoint = points[peakIdx];\n    const hour = peakPoint.hour;\n    const hourLabel = hour === 0 ? '12 am' : hour < 12 ? `${hour}:00 am` : hour === 12 ? '12 pm' : `${hour - 12}:00 pm`;\n    const peak = {\n      x: peakPoint.x,\n      y: peakPoint.y,\n      day: peakPoint.day,\n      hour,\n      label: `${peakPoint.day} ${hourLabel}`,\n    };\n\n    return { days, points, linePath, fillPath, peak };\n  }\n}\n","<div class=\"place-detail-panel\">\n  <div class=\"panel-drag-handle\" *ngIf=\"config?.showHandle\">\n    <div class=\"handle-bar\"></div>\n  </div>\n\n  <div class=\"loading-state\" *ngIf=\"loading\">\n    <ion-spinner name=\"crescent\" color=\"light\"></ion-spinner>\n  </div>\n\n  <div class=\"error-state\" *ngIf=\"!loading && error\">\n    <p>{{ error }}</p>\n  </div>\n\n  <div class=\"panel-content\" *ngIf=\"!loading && data && !error\">\n    <!-- Photo gallery -->\n    <div class=\"image-gallery\" *ngIf=\"photoUrls.length || photosLoading\" libDraggableScroll [slideWidth]=\"200\">\n      <div class=\"gallery-loading\" *ngIf=\"photosLoading && !photoUrls.length\">\n        <div class=\"photo-skeleton\" *ngFor=\"let _ of [1, 2, 3]\"></div>\n      </div>\n      <img *ngFor=\"let url of photoUrls; let i = index\" [src]=\"url\" [alt]=\"data.name\" class=\"gallery-image\" loading=\"lazy\" (click)=\"photoClicked.emit(i)\" />\n    </div>\n\n    <!-- Header -->\n    <div class=\"place-header\">\n      <div class=\"header-left\">\n        <div class=\"cyrano-score-badge\" [style.border-color]=\"grassrootsColor\">\n          <span class=\"score-value\">{{ cyranoScore }}%</span>\n          <span class=\"score-sub\">Cyrano</span>\n        </div>\n      </div>\n      <div class=\"header-info\">\n        <h2 class=\"place-name\">{{ data.name }}</h2>\n        <div class=\"place-meta\">\n          <span class=\"place-category\" *ngIf=\"data.vibeTags?.length\">{{ data.vibeTags![0] }}</span>\n          <span class=\"meta-dot\" *ngIf=\"data.vibeTags?.length && data.priceLevel\">&middot;</span>\n          <span class=\"place-price\" *ngIf=\"data.priceLevel\">{{ data.priceLevel }}</span>\n          <span class=\"meta-dot\" *ngIf=\"data.city\">&middot;</span>\n          <span class=\"place-city\" *ngIf=\"data.city\">{{ data.city }}</span>\n        </div>\n        <div class=\"data-age\" *ngIf=\"data.dataAge\"><span class=\"data-age-icon\">&#128337;</span> Data: {{ data.dataAge }}</div>\n        <div class=\"staleness-indicator\" *ngIf=\"data.stalenessLabel\" [class]=\"stalenessClass\">\n          <span class=\"staleness-dot\"></span>\n          <span class=\"staleness-text\">{{ data.stalenessLabel }}</span>\n          <span class=\"staleness-date\" *ngIf=\"data.lastModifiedDate\"> &middot; Last active: {{ data.lastModifiedDate }}</span>\n        </div>\n        <div class=\"commercialization-tag\" *ngIf=\"data.commercializationLabel\">\n          {{ data.commercializationLabel }}\n        </div>\n      </div>\n      <div class=\"header-actions\">\n        <button class=\"save-btn\" *ngIf=\"config?.showSaveHeart\" (click)=\"savePlace.emit()\" title=\"Save\">&#9829;</button>\n      </div>\n    </div>\n\n    <!-- Source badges (dev mode only) -->\n    <div class=\"source-badges\" *ngIf=\"devModeUnlocked && uniqueSourceTypes.length\" libDraggableScroll>\n      <span *ngFor=\"let src of uniqueSourceTypes\" class=\"source-badge\" [style.background]=\"src.bg\" [title]=\"src.label\">{{ src.short }}</span>\n    </div>\n\n    <!-- Interest match pills -->\n    <div class=\"interest-matches\" *ngIf=\"matchingInterests.length\">\n      <span class=\"match-label\">Matches your interests</span>\n      <div class=\"match-chips\" libDraggableScroll>\n        <span class=\"match-chip\" *ngFor=\"let tag of matchingInterests\">{{ tag }}</span>\n      </div>\n    </div>\n\n    <!-- Tabs -->\n    <div class=\"tab-bar\" *ngIf=\"tabs.length > 1\">\n      <button *ngFor=\"let tab of tabs\" class=\"tab\" [class.active]=\"activeTab === tab.key\" (click)=\"setTab(tab.key)\">{{ tab.label }}</button>\n    </div>\n    <div class=\"tab-indicator-track\" *ngIf=\"tabs.length > 1\">\n      <div class=\"tab-indicator\" [style.left]=\"tabIndicatorLeft\" [style.width]=\"tabIndicatorWidth\"></div>\n    </div>\n\n    <!-- Tab: Basic (V2 plan A1; legacy key 'info' kept for backwards compat) -->\n    <div class=\"tab-content\" *ngIf=\"activeTab === 'basic' || activeTab === 'info'\">\n      <p class=\"place-description\" *ngIf=\"data.description\">{{ data.description }}</p>\n      <p class=\"place-description place-description-fallback\" *ngIf=\"!data.description && data.longDescription\">\n        {{ data.longDescription }}\n      </p>\n\n      <!-- Key source snippets — exact intelligence fragments extracted during gem discovery.\n           Source names are intentionally withheld; the content speaks for itself. -->\n      <div class=\"key-snippets-section\" *ngIf=\"data.keySnippets?.length\">\n        <h4 class=\"section-label snippets-label-header\"><span class=\"snippets-icon\">&#128218;</span> Why This is a Gem</h4>\n        <ul class=\"snippets-list-panel\">\n          <li *ngFor=\"let snippet of data.keySnippets\" class=\"snippet-item-panel\">\n            <span class=\"snippet-quote\">&ldquo;</span>{{ snippet }}<span class=\"snippet-quote\">&rdquo;</span>\n          </li>\n        </ul>\n      </div>\n\n      <!-- Grassroots meter -->\n      <div class=\"grassroots-section\" *ngIf=\"data.grassrootsScore != null\">\n        <div class=\"grassroots-header\">\n          <span class=\"grassroots-title\">Grassroots</span>\n          <span class=\"grassroots-label\" [style.color]=\"grassrootsColor\">{{ grassrootsLabel }}</span>\n        </div>\n        <div class=\"grassroots-bar\">\n          <div class=\"grassroots-fill\" [style.width.%]=\"data.grassrootsScore\" [style.background]=\"grassrootsColor\"></div>\n        </div>\n      </div>\n\n      <!-- Scores row -->\n      <div class=\"scores-row\" *ngIf=\"data.scarcityScore != null || data.localRatio != null || data.frictionScore != null\">\n        <div class=\"score-item\" *ngIf=\"data.scarcityScore != null\">\n          <span class=\"score-label\">Scarcity</span>\n          <span class=\"score-number\">{{ data.scarcityScore }}%</span>\n        </div>\n        <div class=\"score-item\" *ngIf=\"data.localRatio != null\">\n          <span class=\"score-label\">Local Ratio</span>\n          <span class=\"score-number\">{{ data.localRatio }}</span>\n        </div>\n        <div class=\"score-item\" *ngIf=\"data.frictionScore != null\">\n          <span class=\"score-label\">Friction</span>\n          <span class=\"score-number\">{{ data.frictionScore }}</span>\n        </div>\n      </div>\n\n      <!-- Event dates -->\n      <div class=\"event-dates-section\" *ngIf=\"hasEventDates\">\n        <h4 class=\"section-label\">When to Go</h4>\n        <div class=\"event-type-badge\" [class]=\"data.gemType || 'permanent'\">\n          {{ data.gemType === 'recurring' ? 'Recurring' : data.gemType === 'one-time' ? 'One-time Event' : 'Permanent' }}\n        </div>\n        <div class=\"event-schedule\" *ngIf=\"data.eventSchedule\">\n          <span class=\"schedule-days\" *ngIf=\"data.eventSchedule.days?.length\">{{ data.eventSchedule.days!.join(', ') }}</span>\n          <span class=\"schedule-times\" *ngIf=\"data.eventSchedule.startTime\">\n            {{ data.eventSchedule.startTime }}<span *ngIf=\"data.eventSchedule.endTime\"> – {{ data.eventSchedule.endTime }}</span>\n          </span>\n        </div>\n        <div class=\"event-range\" *ngIf=\"data.eventDateRange?.start\">\n          {{ data.eventDateRange!.start }}\n          <span *ngIf=\"data.eventDateRange!.end\"> – {{ data.eventDateRange!.end }}</span>\n        </div>\n      </div>\n\n      <!-- Participation info -->\n      <div class=\"participation-section\" *ngIf=\"data.participationInfo\">\n        <h4 class=\"section-label\">How to Participate</h4>\n        <p class=\"participation-text\">{{ data.participationInfo }}</p>\n      </div>\n\n      <!-- Contact info -->\n      <div class=\"contact-section\" *ngIf=\"hasContactInfo\">\n        <h4 class=\"section-label\">Contact</h4>\n        <div class=\"contact-row\" *ngIf=\"data.contactInfo!.phone\">\n          <span class=\"contact-icon\">&#128222;</span>\n          <a [href]=\"'tel:' + data.contactInfo!.phone\">{{ data.contactInfo!.phone }}</a>\n        </div>\n        <div class=\"contact-row\" *ngIf=\"data.contactInfo!.email\">\n          <span class=\"contact-icon\">&#9993;</span>\n          <a [href]=\"'mailto:' + data.contactInfo!.email\">{{ data.contactInfo!.email }}</a>\n        </div>\n        <div class=\"contact-row\" *ngIf=\"data.contactInfo!.website\">\n          <span class=\"contact-icon\">&#127760;</span>\n          <a [href]=\"data.contactInfo!.website\" target=\"_blank\" rel=\"noopener noreferrer\">{{ extractDomain(data.contactInfo!.website) }}</a>\n        </div>\n      </div>\n\n      <!-- Business data -->\n      <div class=\"business-section\" *ngIf=\"data.rating || busynessData?.currentBusyness != null\">\n        <div class=\"business-rating-row\" *ngIf=\"data.rating\">\n          <span class=\"business-rating-stars\">{{ ratingStars }}</span>\n          <span class=\"business-rating-number\">{{ data.rating }}</span>\n          <span class=\"business-rating-source\" *ngIf=\"devModeUnlocked\">\n            <span class=\"source-icon\">{{ ratingSourceIcon }}</span>\n            {{ data.ratingSource }}\n          </span>\n          <span class=\"business-review-count\" *ngIf=\"data.reviewCount\">({{ data.reviewCount }} reviews)</span>\n        </div>\n\n        <div class=\"business-busyness\" *ngIf=\"busynessData?.currentBusyness != null\">\n          <span class=\"busyness-label\">Busyness</span>\n          <span class=\"busyness-value\">{{ busynessData!.currentBusyness }}%</span>\n          <span class=\"busyness-source\" *ngIf=\"devModeUnlocked && busynessData!.source\">{{ busynessData!.source }}</span>\n        </div>\n\n        <!--\n          V2 plan A10 (Figma 14691-93223). Popular Times chart - mirrors the\n          design's weekly intensity curve with a tooltip on the peak slot.\n          The component derives a hour-by-day intensity grid from\n          busynessData.peakHours/quietHours and renders an SVG polyline.\n        -->\n        <div class=\"popular-times-section\" *ngIf=\"popularTimes.points.length > 0\">\n          <div class=\"popular-times-header\">\n            <h4 class=\"section-label popular-times-title\">Popular Times</h4>\n          </div>\n          <div class=\"popular-times-chart\">\n            <div class=\"popular-times-tooltip\" *ngIf=\"popularTimes.peak\">\n              {{ popularTimes.peak.label }}\n            </div>\n            <svg class=\"popular-times-svg\" viewBox=\"0 0 280 96\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n              <path class=\"popular-times-fill\" [attr.d]=\"popularTimes.fillPath\"></path>\n              <path class=\"popular-times-line\" [attr.d]=\"popularTimes.linePath\"></path>\n              <line *ngIf=\"popularTimes.peak\" class=\"popular-times-peak-line\" [attr.x1]=\"popularTimes.peak.x\" y1=\"2\" [attr.x2]=\"popularTimes.peak.x\" y2=\"80\"></line>\n              <circle *ngIf=\"popularTimes.peak\" class=\"popular-times-peak-dot\" [attr.cx]=\"popularTimes.peak.x\" [attr.cy]=\"popularTimes.peak.y\" r=\"3\"></circle>\n            </svg>\n            <ul class=\"popular-times-axis\">\n              <li *ngFor=\"let d of popularTimes.days\" [class.is-peak]=\"popularTimes.peak?.day === d\">{{ d }}</li>\n            </ul>\n          </div>\n        </div>\n\n        <div class=\"business-hours\" *ngIf=\"businessHours?.openingHours?.length\">\n          <button type=\"button\" class=\"hours-toggle\" (click)=\"showHours = !showHours\">{{ showHours ? '▼' : '▶' }} Hours</button>\n          <div class=\"hours-list\" *ngIf=\"showHours\">\n            <div class=\"hour-row\" *ngFor=\"let h of businessHours!.openingHours\">{{ h }}</div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Reviews -->\n      <div class=\"branded-reviews-section\" *ngIf=\"reviews.length\">\n        <h4 class=\"section-label\">Reviews</h4>\n        <div class=\"branded-review\" *ngFor=\"let review of reviews\">\n          <div class=\"review-header\">\n            <span class=\"review-stars\">{{ '★'.repeat(review.rating) }}{{ '☆'.repeat(5 - review.rating) }}</span>\n            <span class=\"review-source-tag\" *ngIf=\"devModeUnlocked\">{{ review.source }}</span>\n          </div>\n          <p class=\"review-text\">{{ review.text }}</p>\n          <span class=\"review-author\" *ngIf=\"review.reviewerName\">— {{ review.reviewerName }}</span>\n        </div>\n      </div>\n\n      <!-- Recommended dishes -->\n      <div class=\"dishes-section\" *ngIf=\"recommendedDishes.length\">\n        <h4 class=\"section-label\">Recommended</h4>\n        <div class=\"dishes-scroll\" libDraggableScroll>\n          <div class=\"dish-chip\" *ngFor=\"let dish of recommendedDishes\">\n            <span class=\"dish-icon\">&#127860;</span>\n            <span class=\"dish-text\">{{ dish }}</span>\n          </div>\n        </div>\n      </div>\n\n      <!-- Vibe tags -->\n      <div class=\"vibe-section\" *ngIf=\"data.vibeTags?.length\">\n        <h4 class=\"section-label\">Vibe</h4>\n        <div class=\"tag-scroll\" libDraggableScroll>\n          <span class=\"vibe-chip\" *ngFor=\"let tag of data.vibeTags\" [class.matched]=\"matchingInterests.includes(tag)\">{{ tag }}</span>\n        </div>\n      </div>\n\n      <!-- Seasonality -->\n      <div class=\"season-section\" *ngIf=\"data.seasonality?.length\">\n        <h4 class=\"section-label\">Best Season</h4>\n        <div class=\"season-chips\" libDraggableScroll>\n          <span class=\"season-chip\" *ngFor=\"let s of data.seasonality\">{{ s }}</span>\n        </div>\n      </div>\n\n      <!-- Friction attributes -->\n      <div class=\"friction-section\" *ngIf=\"hasAnyFriction(data.frictionAttributes)\">\n        <h4 class=\"section-label\">Friction</h4>\n        <div class=\"friction-list\">\n          <span class=\"friction-chip\" *ngFor=\"let entry of data.frictionAttributes\">{{ entry }}</span>\n        </div>\n      </div>\n\n      <!-- Trending badge -->\n      <div class=\"trending-badge\" *ngIf=\"data.isTrending\">\n        <span class=\"trending-icon\">&#128293;</span>\n        <span>Trending</span>\n      </div>\n    </div>\n\n    <!-- Tab: Sources -->\n    <!-- Tab: Audit (V2 plan A1; legacy key 'sources' kept). Shows pipeline V1/V2 toggle. -->\n    <div class=\"tab-content audit-tab\" *ngIf=\"activeTab === 'audit' || activeTab === 'sources'\">\n      <!-- V2 plan A18 — per-activity pipeline override toggle + dev UI activation. -->\n      <div class=\"audit-pipeline-row\">\n        <span class=\"audit-row-label\">GEM PIPELINE VERSION:</span>\n        <span class=\"audit-pipeline-option\"\n          >V1\n          <span class=\"audit-radio\" [class.is-active]=\"auditPipelineVersion === 'v1'\" (click)=\"setAuditPipelineVersion('v1')\"></span>\n        </span>\n        <span class=\"audit-pipeline-option\"\n          >V2\n          <span class=\"audit-radio\" [class.is-active]=\"auditPipelineVersion === 'v2'\" (click)=\"setAuditPipelineVersion('v2')\"></span>\n        </span>\n      </div>\n      <div class=\"audit-devui-row\">\n        <span class=\"audit-row-label\">DEV UI ACTIVATED</span>\n        <span class=\"audit-check\" [class.is-active]=\"devModeUnlocked\">{{ devModeUnlocked ? '✓' : '' }}</span>\n      </div>\n      <p class=\"audit-placeholder\">THIS WILL HAVE THE PIPELINE INFORMATION</p>\n\n      <div class=\"cyrano-review-card\">\n        <div class=\"cyrano-review-header\">\n          <span class=\"cyrano-review-badge\" [style.border-color]=\"grassrootsColor\">{{ cyranoScore }}%</span>\n          <div class=\"cyrano-review-info\">\n            <span class=\"cyrano-review-title\">Cyrano Score</span>\n            <span class=\"cyrano-review-sub\">{{ grassrootsLabel }} &middot; {{ uniqueSourceTypes.length }} sources</span>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"source-card\" *ngFor=\"let s of sources; let si = index\">\n        <div class=\"source-card-header\" (click)=\"toggleSourceDetail(si)\">\n          <span class=\"source-type-badge\" [style.background]=\"SOURCE_TYPE_COLORS[s.type]?.bg || '#666'\">\n            {{ SOURCE_TYPE_COLORS[s.type]?.short || s.type.slice(0, 2) }}\n          </span>\n          <span class=\"source-type-label\">{{ SOURCE_TYPE_COLORS[s.type]?.label || s.type }}</span>\n          <span class=\"source-score\" *ngIf=\"s.credibilityScore\">{{ s.credibilityScore }}%</span>\n          <span class=\"source-expand-icon\">{{ expandedSourceIdx === si ? '&#9662;' : '&#9656;' }}</span>\n        </div>\n        <p class=\"source-tip\" *ngIf=\"s.insiderTip\">{{ s.insiderTip }}</p>\n        <div class=\"source-context\" *ngIf=\"expandedSourceIdx === si && s.rawText\">\n          <div class=\"context-label\">Mentioned in context:</div>\n          <blockquote class=\"context-quote\">{{ s.rawText }}</blockquote>\n        </div>\n        <a class=\"source-link-prominent\" *ngIf=\"s.originUrl\" [href]=\"s.originUrl\" target=\"_blank\" rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\n          <span class=\"source-link-domain\">{{ extractDomain(s.originUrl) }}</span>\n          <span class=\"source-link-arrow\">&#8599;</span>\n        </a>\n      </div>\n\n      <!-- Fallback: confirming sources as search links -->\n      <div class=\"confirming-sources-fallback\" *ngIf=\"!sources.length && data.confirmingSources?.length\">\n        <h4 class=\"section-label\">Mentioned By</h4>\n        <div class=\"fallback-source-card\" *ngFor=\"let srcType of data.confirmingSources\">\n          <span class=\"source-type-badge\" [style.background]=\"SOURCE_TYPE_COLORS[srcType]?.bg || '#666'\">\n            {{ SOURCE_TYPE_COLORS[srcType]?.short || srcType.slice(0, 2) }}\n          </span>\n          <span class=\"source-type-label\">{{ SOURCE_TYPE_COLORS[srcType]?.label || srcType }}</span>\n          <a class=\"source-search-link\" [href]=\"buildSearchUrl(srcType, data.name, data.city)\" target=\"_blank\" rel=\"noopener noreferrer\"> Search &#8599; </a>\n        </div>\n      </div>\n\n      <div class=\"empty-state\" *ngIf=\"!sources.length && !data.confirmingSources?.length\">\n        <p>No source information available.</p>\n      </div>\n    </div>\n\n    <!-- Tab: Insider Tips -->\n    <!-- Tab: Insider (V2 plan A1; legacy key 'tips' kept). Reviews + suggestions + location. -->\n    <div class=\"tab-content\" *ngIf=\"activeTab === 'insider' || activeTab === 'tips'\">\n      <div class=\"tip-card\" *ngFor=\"let tip of insiderTips\">\n        <span class=\"tip-icon\">&#128161;</span>\n        <p>{{ tip.text }}</p>\n        <span class=\"tip-source\" *ngIf=\"devModeUnlocked && tip.source\">{{ tip.source }}</span>\n      </div>\n      <div class=\"empty-state\" *ngIf=\"!insiderTips.length\">\n        <p>No insider tips available yet.</p>\n      </div>\n    </div>\n\n    <!-- Tab: Gem (itinerary mode) -->\n    <div class=\"tab-content\" *ngIf=\"activeTab === 'gem'\">\n      <div class=\"gem-tab-content\">\n        <div class=\"source-badges-large\" *ngIf=\"devModeUnlocked && uniqueSourceTypes.length\">\n          <span *ngFor=\"let src of uniqueSourceTypes\" class=\"source-badge large\" [style.background]=\"src.bg\">{{ src.label }}</span>\n        </div>\n        <div class=\"grassroots-section\" *ngIf=\"data.grassrootsScore != null\">\n          <div class=\"grassroots-header\">\n            <span class=\"grassroots-title\">Hidden Gem Score</span>\n            <span class=\"grassroots-label\" [style.color]=\"grassrootsColor\">{{ grassrootsLabel }}</span>\n          </div>\n          <div class=\"grassroots-bar\">\n            <div class=\"grassroots-fill\" [style.width.%]=\"data.grassrootsScore\" [style.background]=\"grassrootsColor\"></div>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <!-- Tab: Schedule (itinerary mode placeholder) -->\n    <div class=\"tab-content\" *ngIf=\"activeTab === 'schedule'\">\n      <div class=\"placeholder-tab\">\n        <p class=\"placeholder-text\">Schedule configuration coming soon.</p>\n      </div>\n    </div>\n\n    <!-- Tab: Members (itinerary mode placeholder) -->\n    <div class=\"tab-content\" *ngIf=\"activeTab === 'members'\">\n      <div class=\"placeholder-tab\">\n        <p class=\"placeholder-text\">Group members feature coming soon.</p>\n      </div>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { DirectiveModule } from '../../directives/directive.module';\nimport { PlaceDetailPanelComponent } from './place-detail-panel.component';\n\n@NgModule({\n  declarations: [PlaceDetailPanelComponent],\n  imports: [CommonModule, IonicModule, DirectiveModule],\n  exports: [PlaceDetailPanelComponent],\n})\nexport class PlaceDetailPanelModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport {\n  IDiscoveryLogEntry,\n  IGemJourney,\n  ILlmLogSummary,\n  INicheSynergyEntry,\n  IPersistLogSummary,\n  IPipelineLogEntry,\n  IScanJobSummary,\n  IScoringRow,\n  ISearchTermHit,\n} from '../../model/place-detail.model';\n\n@Component({\n  selector: 'lib-gem-discovery-debug-panel',\n  templateUrl: './gem-discovery-debug-panel.component.html',\n  styleUrls: ['./gem-discovery-debug-panel.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class GemDiscoveryDebugPanelComponent {\n  @Input() enabled = false;\n  @Input() scoringRows: IScoringRow[] = [];\n  @Input() scoringSummary: string | null = null;\n  @Input() scanJob: IScanJobSummary | null = null;\n  @Input() pipelineLog: IPipelineLogEntry[] = [];\n  @Input() llmLog: ILlmLogSummary | null = null;\n  @Input() nicheSynergyLog: INicheSynergyEntry[] = [];\n  @Input() persistLog: IPersistLogSummary | null = null;\n  @Input() searchTermHits: ISearchTermHit[] = [];\n  @Input() gemJourney: IGemJourney | null = null;\n  @Input() discoveryLog: IDiscoveryLogEntry[] = [];\n\n  expandedScoringRow: string | null = null;\n  expandedPipelineIdx: number | null = null;\n  panelCollapsed = false;\n\n  toggleScoringTooltip(label: string): void {\n    this.expandedScoringRow = this.expandedScoringRow === label ? null : label;\n  }\n\n  togglePipelineEntry(idx: number): void {\n    this.expandedPipelineIdx = this.expandedPipelineIdx === idx ? null : idx;\n  }\n\n  togglePanel(): void {\n    this.panelCollapsed = !this.panelCollapsed;\n  }\n}\n","<div class=\"debug-panel\" *ngIf=\"enabled\">\n  <div class=\"debug-panel-header\" (click)=\"togglePanel()\">\n    <span class=\"debug-flag\">&#9881; DEV</span>\n    <span class=\"debug-title\">Gem Discovery Debug Panel</span>\n    <span class=\"debug-chevron\">{{ panelCollapsed ? '&#9656;' : '&#9662;' }}</span>\n  </div>\n\n  <div class=\"debug-panel-body\" *ngIf=\"!panelCollapsed\">\n    <!-- Scoring Breakdown -->\n    <div class=\"debug-section\" *ngIf=\"scoringRows.length\">\n      <h4 class=\"debug-section-title\">Score Breakdown</h4>\n      <p class=\"scoring-summary\" *ngIf=\"scoringSummary\">{{ scoringSummary }}</p>\n      <div class=\"scoring-grid\">\n        <div class=\"scoring-row\" *ngFor=\"let row of scoringRows\" (click)=\"toggleScoringTooltip(row.label)\">\n          <div class=\"scoring-row-main\">\n            <span class=\"scoring-direction-icon\">\n              {{ row.direction === 'good' ? '&#9650;' : row.direction === 'penalty' ? '&#9660;' : '&#9644;' }}\n            </span>\n            <span class=\"scoring-label\">{{ row.label }}</span>\n            <span class=\"scoring-value\" [style.color]=\"row.color\">{{ row.normalized }}/100</span>\n            <span class=\"scoring-expand-icon\">{{ expandedScoringRow === row.label ? '&#9662;' : '&#9656;' }}</span>\n          </div>\n          <div class=\"scoring-bar-track\">\n            <div class=\"scoring-bar-fill\" [style.width.%]=\"row.normalized\" [style.background]=\"row.color\"></div>\n          </div>\n          <div class=\"scoring-tooltip\" *ngIf=\"expandedScoringRow === row.label\">\n            {{ row.explanation }}\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <!-- Discover Session -->\n    <div class=\"debug-section\" *ngIf=\"scanJob\">\n      <h4 class=\"debug-section-title\">Discover Session</h4>\n      <div class=\"session-meta\">\n        <span class=\"session-city\">{{ scanJob.cityName }}</span>\n        <span class=\"session-status\" [class.completed]=\"scanJob.status === 'COMPLETED'\" [class.failed]=\"scanJob.status === 'FAILED'\">\n          {{ scanJob.status }}\n        </span>\n        <span class=\"session-gems\">{{ scanJob.gemsFound }} gems</span>\n        <span class=\"session-cost\">${{ scanJob.costIncurred }}</span>\n      </div>\n\n      <div class=\"session-sources\" *ngIf=\"scanJob.enabledSources?.length\">\n        <span class=\"detail-label\">Enabled:</span>\n        <span class=\"detail-value\">{{ scanJob.enabledSources!.join(', ') }}</span>\n      </div>\n    </div>\n\n    <!-- Collection Pipeline -->\n    <div class=\"debug-section\" *ngIf=\"pipelineLog.length\">\n      <h4 class=\"debug-section-title\">Collection Pipeline</h4>\n      <div class=\"pipeline-log\">\n        <div\n          class=\"pipeline-entry\"\n          *ngFor=\"let entry of pipelineLog; let i = index\"\n          [class.expanded]=\"expandedPipelineIdx === i\"\n          [class.completed]=\"entry.status === 'completed'\"\n          [class.skipped]=\"entry.status === 'skipped'\"\n          [class.failed]=\"entry.status === 'failed'\"\n          [class.disabled]=\"entry.status === 'disabled'\"\n        >\n          <div class=\"pipeline-header\" (click)=\"togglePipelineEntry(i)\">\n            <span class=\"pipeline-status-dot\"></span>\n            <span class=\"pipeline-source\">{{ entry.sourceLabel }}</span>\n            <span class=\"pipeline-items\">{{ entry.itemsCollected }} items</span>\n            <span class=\"pipeline-duration\">{{ entry.durationMs }}ms</span>\n            <span class=\"pipeline-cost\">${{ entry.costUsd }}</span>\n            <span class=\"pipeline-chevron\">{{ expandedPipelineIdx === i ? '&#9662;' : '&#9656;' }}</span>\n          </div>\n          <div class=\"pipeline-details\" *ngIf=\"expandedPipelineIdx === i\">\n            <div class=\"pipeline-detail-row\">\n              <span class=\"detail-label\">Source ID:</span>\n              <span class=\"detail-value mono\">{{ entry.sourceId }}</span>\n            </div>\n            <div class=\"pipeline-detail-row\" *ngIf=\"entry.skipReason\">\n              <span class=\"detail-label\">Skip reason:</span>\n              <span class=\"detail-value\">{{ entry.skipReason }}</span>\n            </div>\n            <div class=\"pipeline-detail-row\" *ngIf=\"entry.errorMessage\">\n              <span class=\"detail-label\">Error:</span>\n              <span class=\"detail-value error\">{{ entry.errorMessage }}</span>\n            </div>\n            <div class=\"pipeline-log-lines\" *ngIf=\"entry.logLines?.length\">\n              <div class=\"log-line\" *ngFor=\"let line of entry.logLines\">{{ line }}</div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <!-- LLM Processing -->\n    <div class=\"debug-section\" *ngIf=\"llmLog\">\n      <h4 class=\"debug-section-title\">LLM Processing</h4>\n      <div class=\"detail-grid\">\n        <div class=\"pipeline-detail-row\">\n          <span class=\"detail-label\">Extracted:</span>\n          <span class=\"detail-value\">{{ llmLog.totalExtracted }} candidates</span>\n        </div>\n        <div class=\"pipeline-detail-row\">\n          <span class=\"detail-label\">Chain-filtered:</span>\n          <span class=\"detail-value\">{{ llmLog.chainFiltered }} removed</span>\n        </div>\n        <div class=\"pipeline-detail-row\">\n          <span class=\"detail-label\">LLM-verified:</span>\n          <span class=\"detail-value\">{{ llmLog.llmVerified }} passed</span>\n        </div>\n      </div>\n    </div>\n\n    <!-- Niche Synergy -->\n    <div class=\"debug-section\" *ngIf=\"nicheSynergyLog.length\">\n      <h4 class=\"debug-section-title\">Niche Synergy Bonuses</h4>\n      <div class=\"niche-synergy-list\">\n        <div class=\"niche-row\" *ngFor=\"let n of nicheSynergyLog\">\n          <span class=\"niche-name\">{{ n.gemName }}</span>\n          <span class=\"niche-sources\">{{ n.confirmingSources?.join(' + ') }}</span>\n          <span class=\"niche-bonus\" *ngIf=\"n.nicheBonus\">+{{ n.nicheBonus * 100 }}%</span>\n        </div>\n      </div>\n    </div>\n\n    <!-- Persist Log -->\n    <div class=\"debug-section\" *ngIf=\"persistLog\">\n      <h4 class=\"debug-section-title\">Persistence</h4>\n      <div class=\"detail-grid\">\n        <div class=\"pipeline-detail-row\">\n          <span class=\"detail-label\">Persisted:</span>\n          <span class=\"detail-value\">{{ persistLog.totalPersisted }}</span>\n        </div>\n        <div class=\"pipeline-detail-row\">\n          <span class=\"detail-label\">Duplicates skipped:</span>\n          <span class=\"detail-value\">{{ persistLog.duplicatesSkipped }}</span>\n        </div>\n        <div class=\"pipeline-detail-row\">\n          <span class=\"detail-label\">Geocode failed:</span>\n          <span class=\"detail-value\">{{ persistLog.geocodeFailed }}</span>\n        </div>\n      </div>\n    </div>\n\n    <!-- Search Term Hits -->\n    <div class=\"debug-section\" *ngIf=\"searchTermHits.length\">\n      <h4 class=\"debug-section-title\">Search Terms</h4>\n      <div class=\"search-terms-table\">\n        <div class=\"search-term-row\" *ngFor=\"let hit of searchTermHits\">\n          <span class=\"search-term-text\">{{ hit.term }}</span>\n          <span class=\"search-term-tier\">{{ hit.tier }}</span>\n          <span class=\"search-term-source\">{{ hit.source }}</span>\n          <span class=\"search-term-hits\">{{ hit.hitCount }} hits</span>\n        </div>\n      </div>\n    </div>\n\n    <!-- Gem Journey -->\n    <div class=\"debug-section\" *ngIf=\"gemJourney\">\n      <h4 class=\"debug-section-title\">This Gem's Journey</h4>\n      <div class=\"gem-journey\">\n        <div class=\"journey-meta\">\n          <span class=\"journey-provenance\">{{ gemJourney.provenance }}</span>\n          <span class=\"journey-outcome\" [class]=\"gemJourney.finalOutcome\">{{ gemJourney.finalOutcome }}</span>\n          <span class=\"journey-final-score\" *ngIf=\"gemJourney.finalScarcityScore != null\">Score: {{ gemJourney.finalScarcityScore }}%</span>\n        </div>\n        <div class=\"journey-stages\">\n          <div class=\"journey-stage\" *ngFor=\"let stage of gemJourney.stages\" [class]=\"stage.outcome\">\n            <span class=\"stage-dot\"></span>\n            <span class=\"stage-name\">{{ stage.stage }}</span>\n            <span class=\"stage-outcome\">{{ stage.outcome }}</span>\n            <span class=\"stage-reason\">{{ stage.reason }}</span>\n            <span class=\"stage-score\" *ngIf=\"stage.scoreAtStage != null\">{{ stage.scoreAtStage }}</span>\n            <span class=\"stage-change\" *ngIf=\"stage.scoreChange\">{{ stage.scoreChange }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <!-- Discovery Log -->\n    <div class=\"debug-section\" *ngIf=\"discoveryLog.length\">\n      <h4 class=\"debug-section-title\">Discovery Log</h4>\n      <div class=\"discovery-timeline\">\n        <div class=\"discovery-step\" *ngFor=\"let entry of discoveryLog; let last = last\">\n          <div class=\"step-connector\" [class.last]=\"last\">\n            <div class=\"step-dot\" [class.scored]=\"entry.scoreAtStep != null\"></div>\n            <div class=\"step-line\" *ngIf=\"!last\"></div>\n          </div>\n          <div class=\"step-content\">\n            <span class=\"step-name\">{{ entry.step }}</span>\n            <span class=\"step-source\">{{ entry.source }}</span>\n            <span class=\"step-score\" *ngIf=\"entry.scoreAtStep != null\">Score: {{ entry.scoreAtStep }}</span>\n            <p class=\"step-detail\">{{ entry.detail }}</p>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { GemDiscoveryDebugPanelComponent } from './gem-discovery-debug-panel.component';\n\n@NgModule({\n  declarations: [GemDiscoveryDebugPanelComponent],\n  imports: [CommonModule],\n  exports: [GemDiscoveryDebugPanelComponent],\n})\nexport class GemDiscoveryDebugPanelModule {}\n","/*\n * Public API Surface of nextsapien-component-lib\n */\n\nexport * from './lib/components/authentication/abstract-auth.service';\nexport * from './lib/components/authentication/auth-header/auth-header.component';\nexport * from './lib/components/authentication/auth-module-view';\nexport * from './lib/components/authentication/auth-social/auth-social.component';\nexport * from './lib/components/authentication/authentication.module';\nexport * from './lib/components/authentication/forgot-password/forgot-password.component';\nexport * from './lib/components/authentication/forgot-password/reset-password/reset-password.component';\nexport * from './lib/components/authentication/forgot-password/verification-code/verification-code.component';\nexport * from './lib/components/authentication/login/login.component';\nexport * from './lib/components/authentication/otp-input/otp-input.component';\nexport * from './lib/components/authentication/otp-input/otp-input.module';\nexport * from './lib/components/base-card/base-card.component';\nexport * from './lib/components/base-card/base-card.module';\nexport * from './lib/components/base-component/base.component';\nexport * from './lib/components/card-skeleton/card-skeleton.component';\nexport * from './lib/components/card-skeleton/card-skeleton.module';\nexport * from './lib/components/buttons/base-btn/base-btn.component';\nexport * from './lib/components/buttons/bubble-btn/bubble-btn.component';\nexport * from './lib/components/buttons/buttons.module';\nexport * from './lib/components/buttons/chip-btn/chip-btn.component';\nexport * from './lib/components/buttons/hover-btn/hover-btn.component';\nexport * from './lib/components/buttons/icon-btn/icon-btn.component';\nexport * from './lib/components/buttons/list-btn/list-btn.component';\nexport * from './lib/components/buttons/menu-btn/menu-btn.component';\nexport * from './lib/components/buttons/menu-btn/menu-item/menu-item.component';\nexport * from './lib/components/buttons/primary-btn/primary-btn.component';\nexport * from './lib/components/buttons/secondary-btn/secondary-btn.component';\nexport * from './lib/components/column-management-modal/column-management-modal.component';\nexport * from './lib/components/column-management-modal/column-management-modal.module';\nexport * from './lib/components/confirmation-modal/confirmation-modal.component';\nexport * from './lib/components/confirmation-modal/confirmation-modal.module';\nexport * from './lib/components/content-view-card/content-view-card.component';\nexport * from './lib/components/content-view-card/content-view-card.module';\nexport * from './lib/components/content-view-card/directives/content-card-first-column.directive';\nexport * from './lib/components/content-view-card/directives/content-card-heading.directive';\nexport * from './lib/components/content-view-card/directives/content-card-last-column.directive';\nexport * from './lib/components/content-view-card/directives/content-card-section.directive';\nexport * from './lib/components/content-view-card/directives/content-card-sub-headings.directive';\nexport * from './lib/components/content-view-card/directives/content-card-xlsubheadings.directive';\nexport * from './lib/components/content-view-card/directives/content-toggle.directive';\nexport * from './lib/components/dashed-checkbox/dashed-checkbox.component';\nexport * from './lib/components/dashed-checkbox/dashed-checkbox.module';\nexport * from './lib/components/drawer/drawer.component';\nexport * from './lib/components/drawer/drawer.module';\nexport * from './lib/components/error-message/error-message.component';\nexport * from './lib/components/expansion-panel/expansion-panel.component';\nexport * from './lib/components/expansion-panel/expansion-panel.module';\nexport * from './lib/components/feedback/enums/feedback-modal-variant.enum';\nexport * from './lib/components/feedback/feedback-modal/feedback-modal.component';\nexport * from './lib/components/feedback/feedback-screenshot/feedback-screenshot.component';\nexport * from './lib/components/feedback/feedback-send/feedback-send.component';\nexport * from './lib/components/feedback/feedback-success/feedback-success.component';\nexport * from './lib/components/feedback/feedback.module';\nexport * from './lib/components/feedback/interfaces';\nexport * from './lib/components/feedback/services/accelerometer.service';\nexport * from './lib/components/feedback/services/feedback.service';\nexport * from './lib/components/footer/components/footer-shared/footer-shared.component';\nexport * from './lib/components/footer/components/footer-tabs/footer-tabs.component';\nexport * from './lib/components/form-field/form-field.component';\nexport * from './lib/components/form-field/form-field.module';\nexport * from './lib/components/form-field/radio-button/radio-button.component';\nexport * from './lib/components/form-generator/form-generator.component';\nexport * from './lib/components/form-generator/form-generator.module';\nexport * from './lib/components/form-validator/error-message/error-message-config.interface';\nexport * from './lib/components/form-validator/error-message/error-message.component';\nexport * from './lib/components/grid-filters/date-filter/date-filter.component';\nexport * from './lib/components/grid-filters/filter-bar/filter-bar.component';\nexport * from './lib/components/grid-filters/grid-filters-modal/grid-filters-modal.component';\nexport * from './lib/components/grid-filters/grid-filters.module';\nexport * from './lib/components/grid-filters/manage-filters-modal/manage-filters-modal.component';\nexport * from './lib/components/grid-filters/select-filter/select-filter.component';\nexport * from './lib/components/grid-filters/services/grid-filter.service';\nexport * from './lib/components/grid-toolbar/grid-toolbar.component';\nexport * from './lib/components/grid-toolbar/grid-toolbar.module';\nexport * from './lib/components/grid/grid.component';\nexport * from './lib/components/grid/grid.module';\nexport * from './lib/components/grid/interfaces/grid-miscellaneous-data.interface';\nexport * from './lib/components/image-cropper/image-cropper.service';\nexport * from './lib/components/image-cropper/image-upload-modal.component';\nexport * from './lib/components/image-cropper/shared-image-cropper.module';\nexport * from './lib/components/image-deck/image-deck.component';\nexport * from './lib/components/info-card-list/info-card-list.component';\nexport * from './lib/components/info-card-list/info-card-list.module';\nexport * from './lib/components/info-card-placeholder/info-card-placeholder.component';\nexport * from './lib/components/info-card-placeholder/info-card-placeholder.module';\nexport * from './lib/components/info-card/info-card.component';\nexport * from './lib/components/info-card/info-card.module';\nexport * from './lib/components/duration-picker/duration-picker.component';\nexport * from './lib/components/duration-picker/duration-picker.module';\nexport * from './lib/components/input-date-field/input-date-field-inline/input-date-field-inline.component';\nexport * from './lib/components/input-date-field/input-date-field.component';\nexport * from './lib/components/input-date-field/input-date-field.module';\nexport * from './lib/components/scan-pill/scan-pill.component';\nexport * from './lib/components/scan-pill/scan-pill.module';\nexport * from './lib/components/input-field-card/input-field-card-expiry/input-field-card-expiry.component';\nexport * from './lib/components/input-field-card/input-field-card-number/input-field-card-number.component';\nexport * from './lib/components/input-field-card/input-field-card.module';\nexport * from './lib/components/input-field-card/input-field-card.service';\nexport * from './lib/components/input-field-select/input-field-select.component';\nexport * from './lib/components/input-field-select/input-field-select.module';\nexport * from './lib/components/input-field/input-field.component';\nexport * from './lib/components/input-field/input-field.module';\nexport * from './lib/components/input-time-field/input-time-field.component';\nexport * from './lib/components/input-time-field/input-time-field.module';\nexport * from './lib/components/json-editor/json-editor.component';\nexport * from './lib/components/json-editor/json-editor.module';\nexport * from './lib/components/list/list-item.model';\nexport * from './lib/components/list/list-toggle/list-toggle.component';\nexport * from './lib/components/list/list.component';\nexport * from './lib/components/list/list.module';\nexport * from './lib/components/location-suggestion-panel/location-suggestion-panel.component';\nexport * from './lib/components/login-input/login-input.component';\nexport * from './lib/components/login-input/login-input.module';\nexport * from './lib/components/map/enums/map-action-types.enum';\nexport * from './lib/components/map/enums/place-types.enum';\nexport * from './lib/components/map/interfaces/map-action-event.interface';\nexport * from './lib/components/map/map-address.type';\nexport * from './lib/components/map/interfaces/map-lib-config.interface';\nexport * from './lib/components/map/interfaces/lib-map-module-config.interface';\nexport * from './lib/components/map/map-lib.service';\nexport * from './lib/components/map/map-object-address.type';\nexport * from './lib/components/map/map.component';\nexport * from './lib/components/map/map.config';\nexport * from './lib/components/map/map.module';\nexport * from './lib/components/map/map.service';\nexport * from './lib/components/map/place-query-parameters.model';\nexport * from './lib/components/map/place.model';\nexport * from './lib/components/marquee/marquee.component';\nexport * from './lib/components/marquee/marquee.module';\nexport * from './lib/components/modal/bottom-modal/bottom-modal.component';\nexport * from './lib/components/modal/modal.module';\nexport { MODAL_DATA } from './lib/components/modal/popup-injection-tokens';\nexport * from './lib/components/modal/popup-modal/popup-modal.component';\nexport * from './lib/components/modal/popup-modal/popup-modal.service';\nexport * from './lib/components/multi-colored-text/multi-colored-text.component';\nexport * from './lib/components/multi-colored-text/multi-colored-text.module';\nexport * from './lib/components/multi-field/multi-field.component';\nexport * from './lib/components/multi-field/multi-field.module';\nexport * from './lib/components/multiselect/multiselect.component';\nexport * from './lib/components/multiselect/multiselect.module';\nexport * from './lib/components/notification-banner/notification-banner.component';\nexport * from './lib/components/notification-banner/notification-banner.module';\nexport * from './lib/components/notifications-list/enums/notification-statuses.enum';\nexport * from './lib/components/notifications-list/enums/notification-swipes.enum';\nexport * from './lib/components/notifications-list/interfaces';\nexport * from './lib/components/notifications-list/notifications-list/notifications-list.component';\nexport * from './lib/components/notifications-list/notifications.service';\nexport * from './lib/components/notifications/notifications.module';\nexport * from './lib/components/notifications/services/toast.service';\nexport * from './lib/components/notifications/status-banner/status-banner.component';\nexport * from './lib/components/notifications/status-icon/status-icon.component';\nexport * from './lib/components/notifications/toast/toast.component';\nexport * from './lib/components/percentage-bar/percentage-bar.component';\nexport * from './lib/components/percentage-bar/percentage-bar.module';\nexport * from './lib/components/photo-upload/drag-and-drop/drag-and-drop.component';\nexport * from './lib/components/photo-upload/drag-and-drop/drag-and-drop.module';\nexport * from './lib/components/photo-upload/image-card/image-card.component';\nexport * from './lib/components/photo-upload/image-card/image-card.module';\nexport * from './lib/components/photo-upload/photo-upload.module';\nexport * from './lib/components/photo-upload/picture-gallery.component';\nexport * from './lib/components/premium-chip/premium-chip-variants.enum';\nexport * from './lib/components/premium-chip/premium-chip.component';\nexport * from './lib/components/premium-chip/premium-chip.module';\nexport * from './lib/components/preview-window/preview-window.component';\nexport * from './lib/components/preview-window/preview-window.module';\nexport * from './lib/components/preview-window/route-params.interface';\nexport * from './lib/components/profile-header/profile-header.component';\nexport * from './lib/components/profile-header/profile-header.module';\nexport * from './lib/components/progress-bar/progress-bar.component';\nexport * from './lib/components/masonry-container/masonry-container.component';\nexport * from './lib/components/masonry-container/masonry-container.interface';\nexport * from './lib/components/masonry-container/masonry-container.module';\nexport * from './lib/components/page-layout/page-layout.component';\nexport * from './lib/components/page-layout/page-layout-filter-chip.interface';\nexport * from './lib/components/page-layout/page-layout.module';\nexport * from './lib/components/page-layout/scroll-position.service';\nexport * from './lib/components/page-layout/search-bar-visibility.service';\n\nexport * from './lib/components/insights/insights.component';\nexport * from './lib/components/insights/insights.module';\nexport * from './lib/components/insights/insights-routing.module';\nexport * from './lib/components/insights/content-card/card-expander/card-expander.component';\nexport * from './lib/components/insights/content-card/client-request-card/client-request-card.component';\nexport * from './lib/components/insights/content-card/client-matcher-card/client-matcher-card.component';\nexport * from './lib/components/insights/content-card/matcher-client-card/matcher-client-card.component';\nexport * from './lib/components/insights/content-card/client-prospect-card/client-prospect-card.component';\nexport * from './lib/components/insights/content-card/insights-progress-bars/insights-progress-bars.component';\nexport * from './lib/components/insights/content-card/pipes/content-card-name-age.pipe';\nexport * from './lib/components/insights/content-card/pipes/content-card-fee-per-meetup.pipe';\nexport * from './lib/components/insights/content-card/pipes/content-card-background-check.pipe';\nexport * from './lib/components/insights/content-card/pipes/content-card-lifetime-earn-per-meetup.pipe';\nexport * from './lib/components/insights/content-card/pipes/content-card-bwh.pipe';\nexport * from './lib/components/insights/content-card/pipes/content-card-weight-height-range.pipe';\nexport * from './lib/components/insights/content-card/pipes/content-card-string-array.pipe';\nexport * from './lib/components/insights/tab-routes/insights-requests-tab.component';\nexport * from './lib/components/insights/tab-routes/insights-matchers-tab.component';\nexport * from './lib/components/insights/tab-routes/insights-prospects-tab.component';\nexport * from './lib/components/insights/tab-routes/insights-clients-tab.component';\nexport * from './lib/components/insights/_services/insights-data-bridge';\nexport * from './lib/components/insights/_services/insights-layout-config';\nexport * from './lib/components/insights/_interfaces/pagination-response.model';\nexport * from './lib/components/insights/_interfaces/base-content-card.interface';\nexport * from './lib/components/insights/_interfaces/client-matcher.interface';\nexport * from './lib/components/insights/_interfaces/client-prospects.interface';\nexport * from './lib/components/insights/_interfaces/client-request.interface';\nexport * from './lib/components/insights/_interfaces/matcher-client.interface';\nexport * from './lib/components/insights/_interfaces/lower-upper.interface';\nexport * from './lib/components/insights/_interfaces/score-summary.interface';\nexport * from './lib/components/insights/_interfaces/preferences-summary.interface';\nexport * from './lib/components/insights/_enums/insights-tab.enum';\nexport * from './lib/components/insights/_enums/insights-view.enum';\nexport * from './lib/components/insights/_enums/matcher-insights-tab.enum';\nexport * from './lib/components/insights/_enums/polarity.enum';\nexport * from './lib/components/insights/_enums/ranks.enum';\nexport * from './lib/components/progress-bar/progress-bar.module';\nexport * from './lib/components/range-selector/range-selector.component';\nexport * from './lib/components/range-selector/range-selector.module';\nexport * from './lib/components/rating-field/rating-field.component';\nexport * from './lib/components/rating-field/rating-field.module';\nexport * from './lib/components/search-bar/search-bar.component';\nexport * from './lib/components/search-bar/search-bar.module';\nexport * from './lib/components/section-separator/section-separator.component';\nexport * from './lib/components/selectable/selectable.component';\nexport * from './lib/components/selectable/selectable.module';\nexport * from './lib/components/shared-verification-code/shared-verification-code.component';\nexport * from './lib/components/shared-verification-code/shared-verification-code.module';\nexport * from './lib/components/tab-menu/tab-menu.component';\nexport * from './lib/components/tab-menu/tab-menu.module';\nexport * from './lib/components/tel-input/data/country-code';\nexport * from './lib/components/tel-input/tel-errors/tel-errors.component';\nexport * from './lib/components/tel-input/tel-input.component';\nexport * from './lib/components/tel-input/tel-input.module';\nexport * from './lib/components/rich-textarea/rich-textarea.component';\nexport * from './lib/components/rich-textarea/rich-text.model';\nexport * from './lib/components/text-box/text-box.component';\nexport * from './lib/components/text-box/text.interface';\nexport * from './lib/components/text-list/text-list.component';\nexport * from './lib/components/text-list/text-list.module';\nexport * from './lib/components/toastr-stack/components/loading-bar/loading-bar.component';\nexport * from './lib/components/toastr-stack/components/toastr/toastr.component';\nexport * from './lib/components/toastr-stack/components/toastr/toastr.module';\nexport * from './lib/components/toastr-stack/enums/toastr-description.enum';\nexport * from './lib/components/toastr-stack/enums/toastr-position.enum';\nexport * from './lib/components/toastr-stack/enums/toastr-severity.enum';\nexport * from './lib/components/toastr-stack/models/toastr-stack.config';\nexport * from './lib/components/toastr-stack/toastr-stack.component';\nexport * from './lib/components/toastr-stack/toastr-stack.module';\nexport * from './lib/components/toggle/enums/toggle-variants.enum';\nexport * from './lib/components/toggle/interfaces/toggle-graphics.interface';\nexport * from './lib/components/toggle/toggle.component';\nexport * from './lib/components/toggle/toggle.module';\nexport * from './lib/components/tooltip/tooltip.component';\nexport * from './lib/components/tooltip/tooltip.module';\nexport * from './lib/components/typeahead-field/typeahead-field.component';\nexport * from './lib/components/typeahead-field/typeahead-field.module';\nexport * from './lib/components/user-menu/user-menu.component';\nexport * from './lib/directives/auto-focus/autoFocus.directive';\nexport * from './lib/directives/debounce-click/debounce-click.directive';\nexport * from './lib/directives/directive.module';\nexport * from './lib/directives/disable-control/disable-control.directive';\nexport * from './lib/directives/draggable-scroll/draggable-scroll.directive';\nexport * from './lib/directives/form-validator/focus-invalid/focus-invalid-input.directive';\nexport * from './lib/directives/form-validator/form-validator.module';\nexport * from './lib/directives/form-validator/invalid-input/invalid-input.directive';\nexport * from './lib/directives/lazy-image/lazy-image.directive';\nexport * from './lib/directives/list-box-element/list-box';\nexport * from './lib/directives/long-press/long-press.directive';\nexport * from './lib/directives/native-element-injector/native-element-injector.directive';\nexport * from './lib/directives/password/confirm-password-validator.directive';\nexport * from './lib/directives/password/custom-password-validator.directive';\nexport * from './lib/directives/password/password-validator.directive';\nexport * from './lib/directives/password/password-validator.module';\nexport * from './lib/directives/popper/popper-content.component';\nexport * from './lib/directives/popper/popper.directive';\nexport * from './lib/directives/popper/popper.module';\nexport * from './lib/directives/resized-observer/resized-observer.directive';\nexport * from './lib/directives/resized-observer/resized.event';\nexport * from './lib/directives/submit-form-on-enter/submit-on-enter.directive';\nexport * from './lib/directives/text-highlight/text-highlight.directive';\nexport * from './lib/directives/tooltip/tooltip.directive';\nexport * from './lib/enums/auth-providers.enum';\nexport * from './lib/enums/country-iso.enum';\nexport * from './lib/enums/direction.enum';\nexport * from './lib/enums/filter-type';\nexport * from './lib/enums/form-error-messages.enum';\nexport * from './lib/enums/form-field-type';\nexport * from './lib/enums/form-gen-style';\nexport * from './lib/enums/image-formats.enum';\nexport * from './lib/enums/login-input-form.enum';\nexport * from './lib/enums/notification-banner-type';\nexport * from './lib/enums/nsfw-classes.enum';\nexport * from './lib/enums/orientation.enum';\nexport * from './lib/enums/phone-number-format.enum';\nexport * from './lib/enums/search-country-field.enum';\nexport * from './lib/enums/status-position';\nexport * from './lib/enums/status-types';\nexport * from './lib/enums/tooltip-direction-preference';\nexport * from './lib/interfaces/footer-tab';\nexport * from './lib/interfaces/injectable-form-field';\nexport * from './lib/interfaces/position.interface';\nexport * from './lib/model/auth.models';\nexport * from './lib/model/change-data';\nexport * from './lib/model/country.model';\nexport * from './lib/model/edit-complete-event';\nexport * from './lib/model/emoji-picker-config';\nexport * from './lib/model/filter-data-request';\nexport * from './lib/model/filter-definition';\nexport * from './lib/model/filter-operator';\nexport * from './lib/model/form-generator/form-action-config';\nexport * from './lib/model/form-generator/form-banner-config';\nexport * from './lib/model/form-generator/form-card-expiry-config';\nexport * from './lib/model/form-generator/form-card-number-config';\nexport * from './lib/model/form-generator/form-checkbox-config';\nexport * from './lib/model/form-generator/form-field-structure';\nexport * from './lib/model/form-generator/form-group-expander-change';\nexport * from './lib/model/form-generator/form-injectable-form-field-config';\nexport * from './lib/model/form-generator/form-multifield-config';\nexport * from './lib/model/form-generator/form-multiselect-config';\nexport * from './lib/model/form-generator/form-number-config';\nexport * from './lib/model/form-generator/form-radio-config';\nexport * from './lib/model/form-generator/form-rating-config';\nexport * from './lib/model/form-generator/form-section-structure';\nexport * from './lib/model/form-generator/form-section-variables';\nexport * from './lib/model/form-generator/form-select-config';\nexport * from './lib/model/form-generator/form-select-enhanced-config';\nexport * from './lib/model/form-generator/form-selectable-config';\nexport * from './lib/model/form-generator/form-stucture';\nexport * from './lib/model/form-generator/form-tel-input-config';\nexport * from './lib/model/form-generator/form-textlist-config';\nexport * from './lib/model/form-generator/form-typeahead-config';\nexport * from './lib/model/grid-column';\nexport * from './lib/model/grid-column-change';\nexport * from './lib/model/grid-data-request';\nexport * from './lib/model/grid-filter-config';\nexport * from './lib/model/grid-row';\nexport * from './lib/model/grid-sort-direction';\nexport * from './lib/model/image-model';\nexport * from './lib/model/input-field-card.models';\nexport * from './lib/model/item-action-handler';\nexport * from './lib/model/item-info-line';\nexport * from './lib/model/item-summary';\nexport * from './lib/model/language';\nexport * from './lib/model/large-file-warning-params.interface';\nexport * from './lib/model/lib-menu-item';\nexport * from './lib/model/location.model';\nexport * from './lib/model/map.marker';\nexport * from './lib/model/maps-alert';\nexport * from './lib/model/popup-modal';\nexport * from './lib/model/profile';\nexport * from './lib/model/select-option';\nexport * from './lib/model/theme';\nexport * from './lib/model/typeahead-results-group';\nexport * from './lib/model/user-filter';\nexport * from './lib/nextsapien-component-lib.module';\nexport * from './lib/operations/operations';\nexport * from './lib/pipes/array-sort/array.sort.pipe';\nexport * from './lib/pipes/as-form-array/as-form-array.pipe';\nexport * from './lib/pipes/as-form-control/as-form-control.pipe';\nexport * from './lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe';\nexport * from './lib/pipes/date-localization/date-localization.pipe';\nexport * from './lib/pipes/fallback-translate/fallback-translate.pipe';\nexport * from './lib/pipes/field-type/field-type.pipe';\nexport * from './lib/pipes/get-display-value/get-display-value.pipe';\nexport * from './lib/pipes/get-filter-values/get-filter-values.pipe';\nexport * from './lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe';\nexport * from './lib/pipes/initials/initials.pipe';\nexport * from './lib/pipes/pipe.module';\nexport * from './lib/pipes/round/round.pipe';\nexport * from './lib/pipes/update-llm-preference/update-llm-preference.pipe';\nexport * from './lib/services/nsfw-worker.service';\nexport * from './lib/services/popper.service';\nexport * from './lib/shared/avatar.compoent';\nexport * from './lib/types/auth-icons';\nexport * from './lib/types/woker-response.type';\nexport * from './lib/validators/date/date-time-range-validators';\nexport * from './lib/validators/date/date.validator';\nexport * from './lib/legacy-exported-interface-aliases';\nexport * from './lib/_utils/map-style-prep';\nexport * from './lib/_utils/cyrano-map-colors';\nexport * from './lib/_utils/cyrano-base-map.service';\nexport * from './lib/_utils/cyrano-map-config.interface';\nexport * from './lib/_utils/mini-globe-host';\nexport * from './lib/model/place-detail.model';\nexport * from './lib/components/place-detail-panel/place-detail-panel.component';\nexport * from './lib/components/place-detail-panel/place-detail-panel.module';\nexport * from './lib/components/gem-discovery-debug-panel/gem-discovery-debug-panel.component';\nexport * from './lib/components/gem-discovery-debug-panel/gem-discovery-debug-panel.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4.ChipBtnComponent","i3","i4","i5.BaseBtnComponent","i6.MenuItemComponent","i7","i1.BaseBtnComponent","i1.AbstractAuthService","i4.MenuBtnComponent","i5.IconBtnComponent","i6","i2.LazyImageDirective","i3.IconBtnComponent","i1","takeUntil","i1.BaseCardComponent","i5.DashedCheckboxComponent","i6.ProgressBarComponent","i7.PrimaryBtnComponent","i8.SecondaryBtnComponent","i9.DynamicModalContainerDirective","i10","i1.PopupModalService","i2.BaseBtnComponent","i1.DateLocalizationPipe","i4.FallbackTranslatePipe","DEFAULT_MAP_OPTIONS","debounceTime","i1.MapService","i7.IconBtnComponent","i8.ImageTmpltComponent","i9","take","switchMap","map","catchError","i2.ImageCropperService","distinctUntilChanged","CustomPhoneNumberFormat","i1.CountryCode","i5.InputFieldComponent","i7.AppListbox","i7.AppOption","i8.ResizedDirective","i9.LazyImageDirective","i11.NativeElementInjectorDirective","i12","filter","i3.TelInputComponent","i4.NativeElementInjectorDirective","i5.ToggleComponent","i6.InputFieldComponent","i8.LibErrorMessageComponent","i2.OtpInputComponent","i4.PrimaryBtnComponent","i5.SecondaryBtnComponent","i3.LazyImageDirective","i4.SubmitOnEnterDirective","i5","i7.InputFieldComponent","i8.FocusInvalidInputDirective","i9.NativeElementInjectorDirective","i10.LibErrorMessageComponent","i11","i8","i9.InputFieldComponent","i10.FocusInvalidInputDirective","i12.ConfirmPasswordValidatorDirective","i13.CustomPasswordValidatorDirective","i14.LibErrorMessageComponent","i15","i5.SharedVerificationComponent","i8.InputFieldComponent","i9.FocusInvalidInputDirective","i10.PrimaryBtnComponent","i11.SecondaryBtnComponent","i12.DashedCheckboxComponent","i13.NativeElementInjectorDirective","i14.LoginInputComponent","i15.LibErrorMessageComponent","i16.AuthSocialComponent","i17","i2.BaseCardComponent","i3.SearchBarComponent","i5.TooltipDirective","i6.PrimaryBtnComponent","i7.SecondaryBtnComponent","i8.DashedCheckboxComponent","i3.PrimaryBtnComponent","i4.SecondaryBtnComponent","i1.ContentViewCardService","i3.TooltipDirective","i4.HoverBtnComponent","i5.ColorRangeComponent","i3.ChipBtnComponent","i6.MenuBtnComponent","i10.ToggleComponent","i11.InputFieldComponent","i12.ImageCardComponent","i13","i14.CountNonEmptyFieldsPipe","i6.IconBtnComponent","i7.SearchBarComponent","i8.TooltipDirective","i9.ToggleComponent","i10.DashedCheckboxComponent","i11.LazyImageDirective","i12.DisableControlDirective","i13.RangeSelectorComponent","i14","i15.IconBtnComponent","i16.LibRadioButtonComponent","i17.GetMultiSelectDisplayTextPipe","i18","i7.SectionSeparatorComponent","i3.DashedCheckboxComponent","i4.SearchBarComponent","i6.SectionSeparatorComponent","i1.StatusIconComponent","i1.ToastService","i3.StatusIconComponent","i1.InputFieldCardService","i2.MapService","i2.TooltipDirective","i2.InfoCardComponent","i3.InfoCardListComponent","i5.SearchBarComponent","i6.TooltipDirective","i2.FormFieldComponent","i3.TypeaheadFieldComponent","i4.TooltipDirective","i5.PrimaryBtnComponent","i6.SecondaryBtnComponent","i2.PrimaryBtnComponent","i3.SecondaryBtnComponent","i3.InputTimeFieldComponent","i4.InputFieldCardNumberComponent","i5.InputFieldCardExpiryComponent","i6.InputFieldSelectComponent","i7.MultiFieldComponent","i8.MultiselectComponent","i9.StatusBannerComponent","i11.SelectableComponent","i12.TelInputComponent","i14.TextListComponent","i15.TypeaheadFieldComponent","i16.TooltipDirective","i17.RatingFieldComponent","i18.InjectableFormFieldWrapperComponent","i2.ExpansionPanelComponent","i4.FormGroupComponent","tap","i1.GridService","i6.SearchBarComponent","i7.TooltipDirective","i7.FormFieldComponent","i8.PrimaryBtnComponent","i9.SecondaryBtnComponent","i10.SelectFilterComponent","i11.DateFilterComponent","i13.AsFormArrayPipe","i14.AsFormControlPipe","i15.GetFilterValuesPipe","i9.PrimaryBtnComponent","i10.SecondaryBtnComponent","i2.PrimaryChipComponent","i3.GlassChipComponent","i2.GridFilterService","i8.PremiumChipComponent","i2.FilterBarComponent","i3.GetDisplayValuePipe","i5.GridService","i6.FormFieldComponent","i10.TooltipDirective","i11.TypeaheadFieldComponent","i16.ToolbarComponent","i17.AvatarComponent","i18.TextHighlightDirective","i19","i4.ToggleComponent","i2.LibMapsComponent","i3.PremiumChipComponent","i4.InputFieldComponent","i2.TextHighlightDirective","i3.ImageBaseComponent","DragAndDropComponent","DragAndDropModule","i2.PopupModalService","i3.ImageCropperService","i5.ImageCardComponent","i6.DragAndDropComponent","i3.RoundPipe","i1.GridFilterService","i3.ScrollPositionService","i4.SearchBarVisibilityService","i5.DraggableScrollDirective","i6.LibTabMenuComponent","i7.FilterBarComponent","i1.InsightsDataBridge","i4.GridFilterService","i5.FormFieldComponent","i6.LibPageLayoutComponent","i7.MenuBtnComponent","i1.GridComponent","i2.ContentViewCardComponent","i3.ContentCardSectionDirective","i4.ContentCardHeadingDirective","i5.ContentCardSubHeadingsDirective","i6.ContentCardXLargeSubHeadingsDirective","i7.ContentCardFirstColumnDirective","i8.ContentCardLastColumnDirective","i9.ContentToggleDirective","i10.MarqueeComponent","i11.TextHighlightDirective","i12.CardExpanderComponent","i15.ContentCardNameAgePipe","i16.ContentCardFeePerMeetupPipe","i17.ContentCardStringArrayPipe","i2.CardSkeletonComponent","i3.LibMasonryContainerComponent","i4.AppClientGridComponent","i5.ClientRequestCardComponent","i11.CardExpanderComponent","i14.ContentCardNameAgePipe","i15.ContentCardBackgroundCheckPipe","i16.ContentCardLifetimeEarnPerMeetupPipe","i5.ClientMatcherCardComponent","i2.LibPercentageBarComponent","i13.InsightsProgressBarsComponent","i16.ContentCardBWHPipe","i17.ContentCardWeightHeightRangePipe","i18.ContentCardStringArrayPipe","i5.ClientProspectCardComponent","i15.ContentCardBWHPipe","i16.ContentCardWeightHeightRangePipe","i5.MatcherClientCardComponent","i2.LibMasonryContainerComponent","i3.ClientRequestCardComponent","i4.ClientMatcherCardComponent","i6.ClientProspectCardComponent","i1.LibToastrStackService","i1.LibToastrService","first","i4.LibLoadingBarComponent","i2.LibToastrComponent","i1.MenuBtnComponent","i4.DraggableScrollDirective"],"mappings":"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"}